From c7315bacad7f418886d740b61c9ea6c72b9460b1 Mon Sep 17 00:00:00 2001 From: erex Date: Wed, 8 May 2024 16:32:01 +0100 Subject: [PATCH 1/8] pkgdown used to create a vignette, alter the description (author attribution) and NEWS (to conform to format). --- .Rbuildignore | 3 + .gitignore | 1 + DESCRIPTION | 24 +- NEWS => NEWS.md | 278 +++---- _pkgdown.yml | 37 + vignettes/apa.csl | 1539 +++++++++++++++++++++++++++++++++++ vignettes/golftees.bib | 35 + vignettes/mrds-golftees.Rmd | 330 ++++++++ 8 files changed, 2071 insertions(+), 176 deletions(-) rename NEWS => NEWS.md (71%) create mode 100644 _pkgdown.yml create mode 100644 vignettes/apa.csl create mode 100644 vignettes/golftees.bib create mode 100644 vignettes/mrds-golftees.Rmd diff --git a/.Rbuildignore b/.Rbuildignore index b4e86403..9b6ce103 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -11,3 +11,6 @@ LICENSE .github/ cran-comments.md ^CRAN-SUBMISSION$ +^_pkgdown\.yml$ +^docs$ +^pkgdown$ diff --git a/.gitignore b/.gitignore index a61728fd..8f51069d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ cran-comments.md .DS_Store inst/doc +docs diff --git a/DESCRIPTION b/DESCRIPTION index 237415ab..66b0f077 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -3,9 +3,27 @@ Maintainer: Laura Marshall License: GPL (>=2) Title: Mark-Recapture Distance Sampling LazyLoad: yes -Author: Jeff Laake , David Borchers - , Len Thomas , David - Miller , Jon Bishop and Jonah McArthur +Authors@R: + c(person(given="Jeff", + family="Laake", + role="aut"), + person(given="David", + family="Borchers", + role="aut", + email="dlb@st-and.ac.uk"), + person(given="Len", + family="Thomas", + role="aut", + email="len.thomas@st-and.ac.uk"), + person(given="David", + family="Miller", + role="aut"), + person(given="Jon", + family="Bishop", + role="aut"), + person(given="Jonah", + family="McArthur", + role="aut")) Description: Animal abundance estimation via conventional, multiple covariate and mark-recapture distance sampling (CDS/MCDS/MRDS). Detection function fitting is performed via maximum likelihood. Also included are diagnostics diff --git a/NEWS b/NEWS.md similarity index 71% rename from NEWS rename to NEWS.md index a1956649..7f6b68bd 100644 --- a/NEWS +++ b/NEWS.md @@ -1,5 +1,4 @@ -mrds 2.3.0 ----------- +# # mrds 2.3.0 New Features @@ -11,12 +10,11 @@ Bug Fixes * Ensure that the MCDS optimizer is not used for double observer models as this was generating errors. (Issue #89) * Improved the documentation on initial values, lower and upper bounds in both the ddf and mrds_opt documentation (mrds_opt was renamed from mrds-opt which was not accessible via ?mrds-opt). (Issue #90) -mrds 2.2.9 ----------- +# mrds 2.2.9 New Features -* Users can now download the fortran MCDS.exe optimiser used in Distance for Windows and fit single observer models with both the optimisers in R via mrds and also MCDS.exe. For some datasets the optimisation with MCDS.exe is superior (giving a better likelihood) than the optimiser in R used with mrds. See ?MCDS for more details. +* Users can now download the fortran MCDS.exe optimiser used in Distance for Windows and fit single observer models with both the optimisers in R via # mrds and also MCDS.exe. For some datasets the optimisation with MCDS.exe is superior (giving a better likelihood) than the optimiser in R used with mrds. See ?MCDS for more details. Bug Fixes @@ -25,8 +23,7 @@ Bug Fixes * Fix bug when a uniform model was fitted with no adjustments. This caused an error when looking for the hessian. It also required that the covariance set to 0 when estimating the cluster size standard errors (Issue #79). * fix bug with using binned data via cutpoints for prediction (#73) -mrds 2.2.8 ----------- +# mrds 2.2.8 * Fix bug where plotting rem.fi models when truncation was used would lead to an error being thrown. (#58) * Fix bugs when a uniform is fitted with no adjustments (#59) @@ -38,8 +35,7 @@ mrds 2.2.8 * Make dht output tables consistent. Now always refers to Region in the display (rather than Region in summary and Label in N/D tables). Note this is only a display change so won't break code which looks to extract these values based on column names from the dht object which is unchanged. * Fixed bug leading to erroneous zero totals in individuals N/D tables when there were no sightings in one or more strata. Bug was apparent when the data were sightings of clusters and the varflag 1 option (er_method = 1 in Distance ds function) was selected in the dht function. -mrds 2.2.7 ----------- +# mrds 2.2.7 * Fix bug in check for # parameters < # data. Thanks to Anne Provencher St-Pierre. * No longer display errors caused by solnp/gosolnp when doing constrained optimisation, these can be seen when showit>0 if necessary. @@ -48,20 +44,18 @@ mrds 2.2.7 * Expected.S element of dht return now a data.frame not a list * Fix total encounter rate and its variance in stratified analysis -mrds 2.2.6 ----------- +# mrds 2.2.6 * Individuals summary table for dht now includes k (number of transects) * Add effective detection radius (EDR) and its uncertainty to summary output * Change default rounding of chi-squared test tables. This can be customized using print(ddf.gof(...), digits=?) for e.g., printing with knitr::kable * New detection function: two-part normal ("tpn"), useful for aerial surveys in mountainous terrain, see Becker EF, Christ AM (2015) A Unimodal Model for Double Observer Distance Sampling Surveys. PLOS ONE 10(8): e0136403. https://doi.org/10.1371/journal.pone.0136403 and ?"two-part-normal". -* To improve consistency in functions and arguments in the package, some functions will change from . separation to _. For now both versions exist but will be removed in mrds 2.2.7. +* To improve consistency in functions and arguments in the package, some functions will change from . separation to _. For now both versions exist but will be removed in # mrds 2.2.7. - add_df_covar_line -> add.df.covar.line - p_dist_table -> p.dist.table * Variable strip widths are now supported in dht. Users should supply an additional column to the sample data.frame ("CoveredArea") giving the total area covered in the given transect and set options=list(areas.supplied=TRUE). Thanks to Megan Ferguson for providing an example, code and feedback. -mrds 2.2.5 ----------- +# mrds 2.2.5 * use "probabalists" definition of Hermite polynomials, as from Distance. More numerically stable * remove setting of Hermite parameter to 1 (unclear why this was the case!) @@ -80,30 +74,26 @@ mrds 2.2.5 * errors now thrown when more parameters than data (either unique distance values or bins) -mrds 2.2.4 ----------- +# mrds 2.2.4 * add_df_covar_line now plots probability density functions for the point transect case * warning is no longer raised when truncation is not set but bins are specified for binned data (it's assumed that the furthest cutpoint is the truncation) * AIC/logLik functions now work for all methods -mrds 2.2.3 ----------- +# mrds 2.2.3 * fix bug where region areas were not duplicated properly when density was estimated (using Area=0 in data) * fix a bug in getting starting values for hazard-rate detection functions when point transect data is used * fix issue with left truncation when estimating abundance/density in dht -mrds 2.2.2 ----------- +# mrds 2.2.2 * fix issue in predict() when uniform key functions are used with new data. * new function p_dist_table() to show the distribution of estimated probabilities of detection. Useful for covariate models to determine issues with very small ps. * new function add_df_covar_line(), which can be used to add lines plots showing the detection function for a given covariate combination. Thanks to various members of the distance sampling mailing list for this suggestion. * plots produced by plot.ds/plot.rem/plot.rem.fi/plot.trial/plot.trial.fi/plot.io/plot.io.fi/plot.det.tables now use same defaults as R 4.0.0 ("lightgrey" bars for histograms). Some deprecated arguments to plot.ds were removed. -mrds 2.2.1 ----------- +# mrds 2.2.1 * hessian now returned when solnp (constrained optimisation) is used to fit the detection function * Check for NA covariate values, thanks to Ana Cañadas for highlighting this issue. @@ -113,16 +103,14 @@ mrds 2.2.1 * Fixed a bug in dht when left truncation is used. Previously left truncation was ignored. See https://github.com/DistanceDevelopment/mrds/issues/22 thanks to Carl Schwarz for finding this bug. * Fix bug where two objects could have a missing observer and no error was thrown. Thanks to Ainars Aunins for reporting this bug and Eric Rexstad for diagnosing. -mrds 2.2.0 ------------ +# mrds 2.2.0 * fixed bug in calculation of Kolmogorov-Smirnov p-values. Previous methods did not take into account that parameters of the detection function were estimated, so a new bootstrap-based approach has been implemented. As this is time-consuming, the Kolmogorov-Smirnov test is no longer performed by default (use ks=TRUE to get the test). -* Encounter rate variance for point transects when points were not all sampled an equal number of times was incorrect. mrds now uses the P3 estimator from Fewster et al (2009) for point transect encounter rate variance. -* Bug in predicting when left truncation is used. Previously if the distance column in the new data was set to zero and left truncation was > 0 predictions were discarded, this was particularly problematic for io, etc MRDS models. Thanks to Natalie Kelly for spotting this and suggesting a fix. +* Encounter rate variance for point transects when points were not all sampled an equal number of times was incorrect. # mrds now uses the P3 estimator from Fewster et al (2009) for point transect encounter rate variance. +* Bug in predicting when left truncation is used. Previously if the distance column in the new data was set to zero and left truncation was > 0 predictions were discarded, this was particularly problematic for io, etc # mrds models. Thanks to Natalie Kelly for spotting this and suggesting a fix. * Add errors when "P3" is used as an encounter rate variance estimator with non-point transect data, throws a warning and switches to P3 for points when it's not specified. -mrds 2.1.18 ------------ +# mrds 2.1.18 * fixed bug in parameter rescaling where scales were incorrectly entered as 1 due to an indexing bug * Quantile-quantile plots now use an aspect ratio of 1 @@ -131,23 +119,20 @@ mrds 2.1.18 * Correctly specify distbegin/distend for predictions with binned data, thanks to Jason Roberts for spotting this bug. * Let the user know that int.range was set in summary() results -mrds 2.1.17 ------------ +# mrds 2.1.17 * fixed starting value bug for hazard-rate models when distances are binned. Thanks to Natalia Schroeder and Eric Rexstad for discovering this. * predict.ds now uses numerical integration to calculate integrals (rather than an approximation). Thanks to Eric Rexstad for spotting an issue with goodness of fit testing that highlighted this. * plot.ds() now accepts an xlab="" argument to change the x axis label. Thanks to Steve Ahlswede for suggesting this. -mrds 2.1.16 ------------ +# mrds 2.1.16 * improved predict() method now does the Right Thing with factors * Fixed bug in scaling of histograms for point transect pdf plots and points on those plots. Thanks to Erics Howe and Rexstad for reporting these issues. * You can now set y axis limits when using plot.ds, defaults should be more sensible for pt+point models. Thanks to Eric Howe for the suggestion. * Fixed bug when setting initial values that threw many errors. Thanks to Laura Marshall for spotting this. -mrds 2.1.15 ------------ +# mrds 2.1.15 * rescaling parameters were not correct, now fixed. Thanks to Laura Marshall for spotting this. * coefficients are called coefficients (not a mixture of coefficients and parameters) in summary() results @@ -156,194 +141,170 @@ mrds 2.1.15 * assign.par, create.ddfobj and detfct are now exported, so it can be used by dsm (though shouldn't be used by anything else!) * fixed bug in left truncation where probability of detection was not calculated correctly. Thanks to Jason Roberts for pointing this out! -mrds 2.1.14 ------------ +# mrds 2.1.14 - * updated initialvalues calculation for hazard-rate -- now uses Beavers & Ramsay method to scale parameters for hazard-rate - * automatic parameter rescaling for covariate models when covariates are poorly scaled. Now default for nlminb method - * minor speed-up to logistic code when distance is a covariate +* updated initialvalues calculation for hazard-rate -- now uses Beavers & Ramsay method to scale parameters for hazard-rate +* automatic parameter rescaling for covariate models when covariates are poorly scaled. Now default for nlminb method +* minor speed-up to logistic code when distance is a covariate -mrds 2.1.13 ------------ +# mrds 2.1.13 - * link to distance sampling Google Groups in help - * duplicate non-convergence warning/error removed - * warning of singular Hessian is now a warning() - * re-wrote the debug output to be easier to read - * dht now has an option (ci.width) to specify confidence interval width in output (thanks to David Pavlacky for the suggestion) - * monotonicity now operates over left->right truncation for models that are left truncated and will fail with an error message if many integration intervals are used. Thanks to Tiago Marques for highlighting this issue. +* link to distance sampling Google Groups in help +* duplicate non-convergence warning/error removed +* warning of singular Hessian is now a warning() +* re-wrote the debug output to be easier to read +* dht now has an option (ci.width) to specify confidence interval width in output (thanks to David Pavlacky for the suggestion) +* monotonicity now operates over left->right truncation for models that are left truncated and will fail with an error message if many integration intervals are used. Thanks to Tiago Marques for highlighting this issue. -mrds 2.1.12 ------------ +# mrds 2.1.12 - * \donttest{} examples are now \dontrun{}. +* \donttest{} examples are now \dontrun{}. -mrds 2.1.11 ------------ +# mrds 2.1.11 - * Bug in unif+cos(1) models when using monotonicity constraints and randomised starting points. Since the model only has 1 parameter, there is a bug in selecting columns in Rsolnp starting value code that makes the result be a vector, which then doesn't work with an apply later. Workaround of not using randomised starting values in mrds for that model. Thanks to Nathalie Cavada for finding this bug. +* Bug in unif+cos(1) models when using monotonicity constraints and randomised starting points. Since the model only has 1 parameter, there is a bug in selecting columns in Rsolnp starting value code that makes the result be a vector, which then doesn't work with an apply later. Workaround of not using randomised starting values in # mrds for that model. Thanks to Nathalie Cavada for finding this bug. +* Fixed bug in pdot.dsr.integrate.logistic which was giving incorrect AIC values for FI models with binned data for points or lines. +* Fixed issue where returned optimisation obejct got accessed without being checked to see if it's result was an error, causing problems when encapsulating ddf in other functions. - * Fixed bug in pdot.dsr.integrate.logistic which was giving incorrect AIC values for FI models with binned data for points or lines. - * Fixed issue where returned optimisation obejct got accessed without being checked to see if it's result was an error, causing problems when encapsulating ddf in other functions. +# mrds 2.1.10 +* added testing directory to .Rbuildignore, tests are now not included in built packages and are not run on CRAN. For tests use the source packages on github. -mrds 2.1.10 ------------ - * added testing directory to .Rbuildignore, tests are now not included in built packages and are not run on CRAN. For tests use the source packages on github. - - -mrds 2.1.9 ----------- +# mrds 2.1.9 BUG FIXES - * removed test that failed on CRAN's testing -mrds 2.1.8 ----------- +* removed test that failed on CRAN's testing + +# mrds 2.1.8 CHANGES - * removed doeachint/cgftab code, which used a spline approximation to the effective strip width/effective area when a half-normal detection function was used. This has been replaced with exact calculation via the error function (erf). - * tests updated accordingly - * monotonically constrained models now use a bunch of random start points -- uses gosolnp() from Rsolnp - * re-fitting by jiggling parameters refined to multiply by a uniform variable with limits set as the upper and lower bounds (+/-1) so jiggling can go either way, on approximately the same scale as the parameters - * corrected documentation for predict methods, which incorrectly stated what is returned for point transect models. Thanks to Thibault Dieuleveut for spotting this. +* removed doeachint/cgftab code, which used a spline approximation to the effective strip width/effective area when a half-normal detection function was used. This has been replaced with exact calculation via the error function (erf). +* tests updated accordingly +* monotonically constrained models now use a bunch of random start points -- uses gosolnp() from Rsolnp +* re-fitting by jiggling parameters refined to multiply by a uniform variable with limits set as the upper and lower bounds (+/-1) so jiggling can go either way, on approximately the same scale as the parameters +* corrected documentation for predict methods, which incorrectly stated what is returned for point transect models. Thanks to Thibault Dieuleveut for spotting this. BUG FIXES * fixed 2 bugs in create.varstructure; the first was for removal method which was being treated as a trial method. The second was when obs.table was not specified (Region and sample labels in dataframe for each obs) and there was dual observers. In that case it was doubling the number of observations. * fixed a bug in dht.deriv which had not been setup for removal; thanks to John Boulanger for noticing and reporting both of these bugs -mrds 2.1.7 ----------- +# mrds 2.1.7 BUG FIXES - * Standardisation was being applied to detection functions (such that g(0)=1) when there were no adjustments (which is uneccesary) but also caused issues when using gamma detection functions as this should be calculated at g(apex) instead. Standardisation code has been removed for when there are no adjustments and the correct scaling used for the gamma when there are. Thanks to Thomas Doniol-Valcroze for alerting us to this bug. - * Partial name-matching in dht was fixed. Produced warning but not error. +* Standardisation was being applied to detection functions (such that g(0)=1) when there were no adjustments (which is uneccesary) but also caused issues when using gamma detection functions as this should be calculated at g(apex) instead. Standardisation code has been removed for when there are no adjustments and the correct scaling used for the gamma when there are. Thanks to Thomas Doniol-Valcroze for alerting us to this bug. +* Partial name-matching in dht was fixed. Produced warning but not error. NEW FEATURES - * Tests for gamma detection functions - * Observations are automatically ordered by object and observer fields (if included) in ddf as expected by double observer analysis. A erroneous error message can be created if they are not ordered correctly or worse. Thanks to Ainars Aunins for bringing this to our attention. - * Added function create_document() which will run a shiny application interface to mrds and will create a knitr document from a template. The template currently is only for a single observer analysis and is behind on all of the features for the app which is fairly complete. +* Tests for gamma detection functions +* Observations are automatically ordered by object and observer fields (if included) in ddf as expected by double observer analysis. A erroneous error message can be created if they are not ordered correctly or worse. Thanks to Ainars Aunins for bringing this to our attention. +* Added function create_document() which will run a shiny application interface to # mrds and will create a knitr document from a template. The template currently is only for a single observer analysis and is behind on all of the features for the app which is fairly complete. - -mrds 2.1.6 ----------- +# mrds 2.1.6 BUG FIXES - * some key+adjustment models failed to converge due to bugs in the optimisation code (mainly unif+cosine models) + +* some key+adjustment models failed to converge due to bugs in the optimisation code (mainly unif+cosine models) NEW FEATURES - * optimisation tips help page at ?"mrds-opt" +* optimisation tips help page at ?"mrds-opt" -mrds 2.1.5 ------------- +# mrds 2.1.5 CHANGES - * models with both adjustment terms and covariates are now allowed - * mono.check function checks that a detection function is monotonic over its range (at the observed covariate combinations if covariates are included) - +* models with both adjustment terms and covariates are now allowed +* mono.check function checks that a detection function is monotonic over its range (at the observed covariate combinations if covariates are included) - -mrds 2.1.4-5 ------------- +# mrds 2.1.4-5 CHANGES - * new testthat changes test locations etc, this has been sorted out. - * which= argument in plot.* now sorts the which first, so plots will always be in order - * plot.ds is now more friendly to par() users, thanks to Jason Roberts for the pointer +* new `testthat` changes test locations etc, this has been sorted out. +* which= argument in plot.* now sorts the which first, so plots will always be in order +* plot.ds is now more friendly to par() users, thanks to Jason Roberts for the pointer BUG FIXES - * uniform+cosine detection functions were ignored when using monotonicity constraints, now they can be used together - * mono.strict=TRUE didn't automatically turn on mono=TRUE, extra logic to correct this - * montonicity constraints did not use standardised (g(x)/g(0) detection functions, so if g(x)>1 monotonicity constraints were voilated. Now standardised detection functions are used. Thanks to Len Thomas for noticing this bug. - - +* uniform+cosine detection functions were ignored when using monotonicity constraints, now they can be used together +* mono.strict=TRUE didn't automatically turn on mono=TRUE, extra logic to correct this +* montonicity constraints did not use standardised (g(x)/g(0) detection functions, so if g(x)>1 monotonicity constraints were voilated. Now standardised detection functions are used. Thanks to Len Thomas for noticing this bug. -mrds 2.1.4-3 ------------- +# mrds 2.1.4-3 BUG FIX - * predict.io.fi did not work for new data (thanks to Len Thomas and Phil Hammond for pointing this out) +* predict.io.fi did not work for new data (thanks to Len Thomas and Phil Hammond for pointing this out) CHANGES - * general documentation updates - * simplication and re-structuring of internals +* general documentation updates +* simplication and re-structuring of internals + +# mrds 2.1.4-3 -mrds 2.1.4-3 ------------- CHANGES - * internal re-structuring of summary methods - * more tests +* internal re-structuring of summary methods +* more tests + +# mrds 2.1.4-2 -mrds 2.1.4-2 ------------- CHANGES - * plot.ds now has a new argument, if TRUE (default) it will create a new window for each plot. - * general janitorial work inside plotting methods, removing and simplifying old code; (hopefully) no new features. +* plot.ds now has a new argument, if TRUE (default) it will create a new window for each plot. +* general janitorial work inside plotting methods, removing and simplifying old code; (hopefully) no new features. + +# mrds 2.1.4-1 -mrds 2.1.4-1 ------------- CHANGES - * Warning now issued when truncation is set to the largest distance by default. - - * updated dht documentation +* Warning now issued when truncation is set to the largest distance by default. +* updated dht documentation -mrds 2.1.4 ----------- +# mrds 2.1.4 + CHANGES * modified det.tables and plot.det.tables so it does not create and plot some tables depending on observer configuration (io,trial,removal). - * to plot functions (other than plot.ds) added argument subtitle=TRUE (default). It can be either TRUE, FALSE. If TRUE it shows sub-titles for plot type. If FALSE, no subtitles are shown. With this argument it is possible to get subtitles without main title. - * set iterlimit=1 in call to rem.glm from ddf.rem.fi to prevent convergence issues in getting starting values. +* created average.line.cond and it is now used in place of calcp.# mrds which was computing average line for conditional detection function by weighting values by estimated population proportions for each covariate value. It is now weighted by sample proportions (mean value). -* created average.line.cond and it is now used in place of calcp.mrds which was computing average line for conditional detection function by weighting values by estimated population proportions for each covariate value. It is now weighted by sample proportions (mean value). +# mrds 2.1.3-1 -mrds 2.1.3-1 ----------- BUG FIXES * patched dht.se so if vc1=NA it will not fail - * patched plot.ds to only issue dev.new when not using another graphics device so it plays nice with Distance. -mrds 2.1.3 ----------- +# mrds 2.1.3 + BUG FIXES * patched bug in dht which was returning incorrect values in bysample for sample.area and Dhat. - * patched code in dht.se so it would skip over variance component for p when key=unif and p=1. CHANGES * modified code in detfct.fit.opt and io and rem functions to adapt to changes in optimx - * removed old depends statements to optimx and Rsolnp; uses import -mrds 2.1.2 ------------- +# mrds 2.1.2 + BUG FIXES * fixed usage and example lines that were too long -mrds 2.1.1 ------------- +# mrds 2.1.1 + BUG FIXES * for full independence methods, the calculation for the distance sampling component was for unbinned data only. Code has been added to compute this component correctly for binned data. This required changes to each of the ddf.x.fi routines and for the logistic integration routines. @@ -351,26 +312,23 @@ BUG FIXES CHANGES * Modified flpt.lnl code to set integrals to 1E-25 if <=0 - * In integrate.pdf a vector argument for the integration range is converted to matrix if of length 2. - * ddf.gof will now use breaks set for binned data unless others are specified. NEW FEATURES * Added threshold detection functions ("th1" and "th2") which required some minor changes in other functions for summary/print. - * Added xlab and ylab arguments to plot functions to over-ride default labels -mrds 2.1.0 ------------- +# mrds 2.1.0 + CHANGES * Modified DESCRIPTION so only R 2.15 or greater is allowed. Needed for optimHess jll(12/10/2012) -mrds 2.0.9 ------------- +# mrds 2.0.9 + NEW FEATURES * New option plot=TRUE/FALSE in qqplot.ddf(), for when you only want the K-S and CvM test statistics, not plotting. dlm(11/13/2012) @@ -379,67 +337,48 @@ BUG FIXES * Fixed problem when obs dataframe in call to dht (which links observations to samples and regions) contained fields also in observation dataframe. Now only fields needed from obs are selected before merge. dlm(11/13/2012) -mrds 2.0.8 ------------- +# mrds 2.0.8 + * Unchanged version sent out with Distance in summer 2012 -mrds 2.0.7 ------------- +# mrds 2.0.7 NEW FEATURES * Restructured likelihood/integration code for fitting ds models - * Adjustment functions will now work with binned data. Code was added to assure that fields distbegin and distend are available if binned=TRUE and breaks are set as well. - * Added argument adj.exp which if set to TRUE will use key*exp(adj) rather than key*adj to keep f(x)>0 - * Added following restrictions for adjustments: if uniform key, adj.scale must be "width"; if non-uniform key and adj.scale="width", doeachint set to TRUE because scale integration will not work. - * Changed code in several functions so a uniform key with no adjustment functions could be used. - * New option plot=TRUE/FALSE in qqplot.ddf(), for when you only want the K-S and CvM test statistics, not plotting. BUG FIXES * Fixed inconsistencies in use and documentation of showit argument - * Fixed a bug where groups were not recognised in dht() when the size column occurred in both model data and observation table. (Thanks to Darren Kidney for spotting this.) -mrds 2.0.6 ------------- +# mrds 2.0.6 NEW FEATURES * Example code for binned point count data added to help for ddf - * Modified ddf.rem.fi and ddf.io.fi to use starting values from iterative offset glm to make optimization more robust - * Added a restriction so no one attempts fitting adjustment functions with covariates. - * Added some code to assure all of the necessary fields are available for binned data (binned=TRUE). - BUG FIXES * Patched create.ddfobj so that point counts with binned data would work properly - * Patched ddf.ds such that stored data in object$data has detected=1 - * Patched ddf.io.fi to throw an error when optimx() does not converge - * Patched ddf.io.fi and ddf.rem.fi so inclusion of factor(observer) will work in formula - * Patched dht, dht.se and covered.region.dht so it would handle 0 observations - * Suppress package messages from optimx - * Patched fpt.lnl, flt.lnl, print.ddf, model.description, summary.ds, print.summary.ds and coef.io, coef.trial, coef.rem, plot.io, plot.trial, and plot.rem to handle uniform key function. -mrds 2.0.5 ------------- +# mrds 2.0.5 NEW FEATURES @@ -448,22 +387,17 @@ NEW FEATURES BUG FIXES * Fixed code in dht.se such that it uses sample size from detection model in Satterthwaite approximation rather than size of selected subset of observations. - * Fixed coef functions so they would return parameter estimates for adjustment functions if any. -mrds 2.0.4 ------------- +# mrds 2.0.4 BUG FIXES * Changed flt.var to compute variance of average p correctly for point transects. - * Numerous changes by dlm to optimization code - * Changes to documentation to remove non-ASCII characters -mrds 2.0.3 ------------ +# mrds 2.0.3 NEW FEATURES @@ -472,11 +406,9 @@ NEW FEATURES BUG FIXES * Changes to det.tables and gof functions to use include.lowest=TRUE in calls to cut function - * Changed all usage of T and F to TRUE and FALSE -mrds 2.0.2 ------------ +# mrds 2.0.2 * For changes in 2.0.2 and earlier see ONEWS diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 00000000..e490caae --- /dev/null +++ b/_pkgdown.yml @@ -0,0 +1,37 @@ +url: ~ +template: + bootstrap: 5 + bslib: + bg: "#fcfaf2" + fg: "#14059e" + primary: "#0542a3" + base_font: {google: "Roboto"} + +reference: + +navbar: + bg: primary + structure: + right: [twitter, github] + components: + twitter: + icon: fa-twitter + href: https://twitter.com/distancesamp + aria-label: Twitter + left: + - text: Function reference + href: reference/index.html + - text: Articles + menu: + - text: Point and full independence + href: articles/mrds-golftees.html + - text: News + href: news/index.html + +footer: + structure: + right: donate + left: built_with + components: + donate: "If you wish to donate to development and maintenance" + diff --git a/vignettes/apa.csl b/vignettes/apa.csl new file mode 100644 index 00000000..3f2ccc8f --- /dev/null +++ b/vignettes/apa.csl @@ -0,0 +1,1539 @@ + + diff --git a/vignettes/golftees.bib b/vignettes/golftees.bib new file mode 100644 index 00000000..9394f63d --- /dev/null +++ b/vignettes/golftees.bib @@ -0,0 +1,35 @@ +@article{Buckland2010, + author = {Stephen T. Buckland and Jeffrey L. Laake and David L. Borchers}, + title = {Double-observer line transect methods: levels of independence}, + journal = {Biometrics}, + year = {2010}, + volume = {66}, + pages = {169--177}, + doi = {10.1111/j.1541-0420.2009.01239.x} +} +@article{Borchers2006, + author = {Borchers, D. L. and Laake, J. L. and Southwell, C. and Paxton, C. G. M.}, + title = {Accommodating unmodeled heterogeneity in double-observer distance sampling surveys}, + journal = {Biometrics}, + year = {2006}, + volume = {62}, + pages = {372--378} +} + +@article{burt_using_2014, + title = {Using mark-recapture distance sampling methods on line transect surveys}, + author = {Burt, Louise M. and Borchers, David L. and Jenkins, Kurt J. and Marques, Tigao A}, + year = {2014}, + volume = {5}, + pages = {1180--1191}, + doi = {10.1111/2041-210X.12294}, + journal = {Methods in Ecology and Evolution}, + number = {11} +} + +@Manual{Laake-mrds, + title = {mrds: Mark-Recapture Distance Sampling}, + author = {Jeff Laake and David Borchers and Len Thomas and David Miller and Jon Bishop}, + year = {2019}, + note = {R package version 2.2.2}, +} diff --git a/vignettes/mrds-golftees.Rmd b/vignettes/mrds-golftees.Rmd new file mode 100644 index 00000000..1cfa53da --- /dev/null +++ b/vignettes/mrds-golftees.Rmd @@ -0,0 +1,330 @@ +--- +title: "Double platform analysis" +description: | + Estimating g(0) comparing full and point independence models +author: + - name: Len Thomas + url: http://distancesampling.org + affiliation: CREEM, Univ of St Andrews + affiliation_url: https://creem.st-andrews.ac.uk +date: "`r format(Sys.time(), '%B %Y')`" +output: + bookdown::html_document2: + number_sections: false + toc: true + toc_depth: 2 + base_format: rmarkdown::html_vignette +pkgdown: + as_is: true +bibliography: golftees.bib +csl: apa.csl +vignette: > + %\VignetteIndexEntry{Incorporating covariates in the detection function} + %\VignetteEngine{knitr::rmarkdown} + \usepackage[utf8]{inputenc} +--- + +```{r include=FALSE} +knitr::opts_chunk$set(eval=TRUE, echo=TRUE, message=FALSE, warnings=FALSE) +``` + +This example looks at mark-recapture distance sampling (MRDS) models. The first part of this exercise involves analysis of a survey of a known number of golf tees. This is intended mainly to familiarise you with the double-platform data structure and analysis features in the R function `mrds` [@Laake-mrds]. + +To help understand the terminology using in MRDS and the output produced by `mrds`, there is a guide available [at this link](Interpreting MRDS output.pdf) called *Interpreting MRDS output: making sense of all the numbers*. + +# Aims + +The aims of this practical are to learn how to model + +- trial and independent-observer configuration +- full and point independence assumptions, +- include covariates in the detection function(s) and +- select between competing models. + +## Golf tee data + +These data come from a survey of golf tees which conducted by statistics students at the University of St Andrews. The data were collected along transect lines, 210 metres in total. A distance of 4 metres out from the centre line was searched and, for the purposes of this exercise, we assume that this comprised the total study area, which was divided into two strata. There were 250 clusters of tees in total and 760 individual tees in total. + +The population was independently surveyed by two observer teams. The following data were recorded for each detected group: perpendicular distance, cluster size, observer (team 1 or 2), 'sex' (males are yellow and females are green and golf tees occur in single-sex clusters) and 'exposure'. Exposure was a subjective judgment of whether the cluster was substantially obscured by grass (exposure=0) or not (exposure=1). The lengths of grass varied along the transect line and the grass was slightly more yellow along one part of the line compared to the rest. + +The golf tee dataset is provided as part of the `mrds` package. + +Open R and load the `mrds` package and golf tee dataset (called `book.tee.data`). The elements required for an MRDS analysis are contained within the object dataset. These data are in a hierarchical structure (rather than in a 'flat file' format) so that there are separate elements for observations, samples and regions. In the code below, each of these tables is extracted to avoid typing long names. + +```{r preliminaries, message=FALSE} +library(knitr) +library(mrds) +# Access the golf tee data +data(book.tee.data) +# Investigate the structure of the dataset +str(book.tee.data) +# Extract the list elements from the dataset into easy-to-access objects +detections <- book.tee.data$book.tee.dataframe # detection information +region <- book.tee.data$book.tee.region # region info +samples <- book.tee.data$book.tee.samples # transect info +obs <- book.tee.data$book.tee.obs # links detections to transects and regions +``` + +Examine the columns in the `detections` data because it has a particular structure. + +```{r headdet} +# Check detections +head(detections) +``` +The structure of the detection is as follows: + +- each detected object (in this case the object was a group or cluster of golf tees) is given a unique number in the `object` column, +- each `object` occurs twice - once for observer 1 and once for observer 2, +- the `detected` column indicates whether the object was seen (`detected=1`) or not seen (`detected=0`) by the observer, +- perpendicular distance is in the `distance` column and cluster size is in the `size` column (the same default names as for the `ds` function). + +To ensure that the variables `sex` and `exposure` are treated correctly, define them as factor variables. + +```{r} +# Define sex and exposure as factor variables +detections$sex <- as.factor(detections$sex) +detections$exposure <- as.factor(detections$exposure) +``` + +## Golf tee survey analyses + +### Estimation of $p(0)$: distance only + +We will start by analysing these data assuming that Observer 2 was generating trials for Observer 1 but not vice versa, i.e. trial configuration where Observer 1 is the primary and Observer 2 is the tracker. (The data could also be analysed in independent observer configuration - you are welcome to try this for yourself). We begin by assuming full independence (i.e. detections between observers are independent at all distances): this requires only a mark-recapture (MR) model and, to start with, perpendicular distance will be included as the only covariate. + +```{r, fitnocovar, message=FALSE, fig.cap="Goodness of fit (FI-trial) to golftee data.", fig.dim=c(7,5)} +# Fit trial configuration with full independence model +fi.mr.dist <- ddf(method='trial.fi', mrmodel=~glm(link='logit',formula=~distance), + data=detections, meta.data=list(width=4)) +``` + +#### Examining `mrds` output + +Having fitted the model, we can create tables summarizing the detection data. In the commands below, the tables are created using the `det.tables` function and saved to `detection.tables`. + +```{r} +# Create a set of tables summarizing the double observer data +detection.tables <- det.tables(fi.mr.dist) +# Print these detection tables +print(detection.tables) +``` + +The information in detection summary tables can be plotted, but, in the interest of space, only one (out of six possible plots) is shown (Figure \@ref(fig:dettabplot)). + +```{r dettabplot, fig.cap="Detection distances for observer 1", fig.dim=c(7,5)} +# Plot detection information, change number to see other plots +plot(detection.tables, which=1) +``` + +The plot numbers are: + +1. Histograms of distances for detections by either, or both, observers. The shaded regions show the number for observer 1. +1. Histograms of distances for detections by either, or both, observers. The shaded regions show the number for observer 2. +1. Histograms of distances for duplicates (detected by both observers). +1. Histogram of distances for detections by either, or both, observers. Not shown for trial configuration. +1. Histograms of distances for observer 2. The shaded regions indicate the number of duplicates - for example, the shaded region is the number of clusters in each distance bin that were detected by Observer 1 given that they were also detected by Observer 2 (the "|" symbol in the plot legend means "given that"). +1. Histograms of distances for observer 1. The shaded regions indicate the number of duplicates as for plot 5. Not shown for trial configuration. + +Note that if an independent observer configuration had been chosen, all plots would be available. + +A summary of the detection function model is available using the `summary` function. The Q-Q plot has the same interpretation as a Q-Q plot in a conventional, single platform analysis (Figure \@ref(fig:fisummary)). + +```{r fisummary, fig.cap="Fitted detection function for full independence, trial mode.", fig.dim=c(7,5)} +# Produce a summary of the fitted detection function object +summary(fi.mr.dist) +# Produce goodness of fit statistics and a qq plot +gof.result <- ddf.gof(fi.mr.dist, + main="Full independence, trial configuration\ngoodness of fit Golf tee data") +# Extract chi-square statistics for reporting +chi.distance <- gof.result$chisquare$chi1$chisq +chi.markrecap <- gof.result$chisquare$chi2$chisq +chi.total <- gof.result$chisquare$pooled.chi +``` + +Abbreviated $\chi^2$ goodness-of-fit assessment shows the $\chi^2$ contribution from the distance sampling model to be `r round(chi.distance,1)` and the $\chi^2$ contribution from the mark-recapture model to be `r round(chi.markrecap,1)`. The combination of these elements produces a total $\chi^2$ of `r round(chi.total$chisq,1)` with `r chi.total$df` degrees of freedom, resulting in a $p$-value of `r round(chi.total$p,3)` + +The (two) detection functions can be plotted (Figure \@ref(fig:plotdf)). + +```{r plotdf, fig.cap="Observer 1 detection function (left) and conditional detection probabilty plot (right).", fig.dim=c(7,5)} +par(mfrow=c(1,2)) +# Plot detection functions +plot(fi.mr.dist) +par(mfrow=c(1,1)) +``` + +The plot labelled + +- "Observer=1 detections" shows a histogram of Observer 1 detections with the estimated Observer 1 detection function overlaid on it and adjusted for *p(0)*. The dots show the estimated detection probability for all Observer 1 detections. +- "Conditional detection probability" shows the proportion of Obs 2's detections that were detected by Obs 1 (also see the detection tables). The fitted line is the estimated detection probability function for Obs 1 (given detection by Obs 2) - this is the MR model. Dots are estimated detection probabilities for each Obs 1 detection. + +There is some evidence of unmodelled heterogeneity in that the fitted line in the left-hand plot declines more slowly than the histogram as the distance increases. + +#### Estimating abundance + +Abundance is estimated using the `dht` function. In this function, we need to supply information about the transects and survey regions. + +```{r, abund-from-dist} +# Calculate density estimates using the dht function +tee.abund <- dht(model=fi.mr.dist, region.table=region, sample.table=samples, obs.table=obs) +# Print out results in a nice format +knitr::kable(tee.abund$individuals$summary, digits=2, + caption="Survey summary statistics for golftees") +knitr::kable(tee.abund$individuals$N, digits=2, + caption="Abundance estimates for golftee population with two strata") +``` + +The estimated abundance is `r round(tee.abund$individuals$N[3,2])` (recall that the true abundance is 760) and so this estimate is negatively biased. The 95\% confidence interval does not include the true value. + +### Estimation of *p(0)*: distance and other explanatory variables + +How about including the other covariates, `size`, `sex` and `exposure`, in the MR model? Which MR model would you use? In the command below, `distance` and `sex` are included in the detection function - remember `sex` was defined as a factor earlier on. + +In the code below, all possible models (excluding interaction terms) are fitted. + +```{r} +# Full independence model +# Set up list with possible models +mr.formula <- c("~distance","~distance+size","~distance+sex","~distance+exposure", + "~distance+size+sex","~distance+size+exposure","~distance+sex+exposure", + "~distance+size+sex+exposure") +num.mr.models <- length(mr.formula) +# Create dataframe to store results +fi.results <- data.frame(MRmodel=mr.formula, AIC=rep(NA,num.mr.models)) +# Loop through all MR models +for (i in 1:num.mr.models) { + fi.model <- ddf(method='trial.fi', + mrmodel=~glm(link='logit',formula=as.formula(mr.formula[i])), + data=detections, meta.data=list(width=4)) + fi.results$AIC[i] <- summary(fi.model)$aic +} +# Calculate delta AIC +fi.results$deltaAIC <- fi.results$AIC - min(fi.results$AIC) +# Order by delta AIC +fi.results <- fi.results[order(fi.results$deltaAIC), ] +# Print results in pretty way +knitr::kable(fi.results, digits=2) +``` + +```{r bestone} +# Fit chosen model +fi.mr.dist.sex.exp <- ddf(method='trial.fi', mrmodel=~glm(link='logit',formula=~distance+sex+exposure), + data=detections, meta.data=list(width=4)) +``` + +We see that the preferred model contains `distance + sex + exposure` so check the goodness-of-fit statistics (Figure \@ref(fig:bestfi)) and detection function plots (Figure \@ref(fig:fidetfn)). + +```{r, bestfi, fig.cap="Preferred model goodness of fit.", fig.dim=c(7,5)} +# Check goodness-of-fit +ddf.gof(fi.mr.dist.sex.exp, main="FI trial mode\nMR=dist+sex+exp") +``` + +```{r, fidetfn, fig.cap="Detection functions for full independence model with distance, sex and exposure in MR component.", fig.dim=c(7,5)} +par(mfrow=c(1,2)) +plot(fi.mr.dist.sex.exp) +``` + +And produce abundance estimates. + +```{r} +# Get abundance estimates +tee.abund.fi <- dht(model=fi.mr.dist.sex.exp, region.table=region, + sample.table=samples, obs.table=obs) +# Print results +print(tee.abund.fi) +``` + +This model incorporates the effect of more variables causing the heterogeneity. The estimated abundance is `r round(tee.abund.fi$individuals$N[3,2])` which is less biased than the previous estimate and the 95\% confidence interval (`r round(tee.abund.fi$individuals$N[3,5])`, `r round(tee.abund.fi$individuals$N[3,6])`) contains the true value. + +The model is a reasonable fit to the data (i.e. non-significant $\chi^2$ and Cramer von Mises tests). This model has a lower AIC (`r round(fi.mr.dist.sex.exp$criterion,1)`) than the model with only distance (`r round(fi.mr.dist$criterion,2)`) and so is to be preferred. + +### Point independence + +A less restrictive assumption than full independence is point independence, which assumes that detections are only independent on the transect centre line i.e. at perpendicular distance zero [@Buckland2010]. + +Determine if a simple point independence model is better than a simple full independence one. This requires that a distance sampling (DS) model is specified as well a MR model. Here we try a half-normal key function for the DS model (Figure \@ref(fig:pit-nocovar)). + +```{r pit-nocovar, fig.cap="Point independence model in trial configuration goodness of fit.", fig.dim=c(7,5)} +# Fit trial configuration with point independence model +pi.mr.dist <- ddf(method='trial', + mrmodel=~glm(link='logit', formula=~distance), + dsmodel=~cds(key='hn'), + data=detections, meta.data=list(width=4)) +# Summary pf the model +summary(pi.mr.dist) +# Produce goodness of fit statistics and a qq plot +gof.results <- ddf.gof(pi.mr.dist, + main="Point independence, trial configuration\n goodness of fit Golftee data") +``` + +The AIC for this point independence model is `r round(pi.mr.dist$criterion,2)` which is marginally smaller than the first full independence model that was fitted and hence is to be preferred. + +```{r,} +# Get abundance estimates +tee.abund.pi <- dht(model=pi.mr.dist, region.table=region, + sample.table=samples, obs.table=obs) +# Print results +print(tee.abund.pi) +``` + +This results in an estimated abundance of `r round(tee.abund.pi$individuals$N[3,2])`. Can we do better if more covariates are included in the DS model? + +#### Covariates in the DS model + +To include covariates in the DS detection function, we need to specify an MCDS model as follows: + +```{r pit-mod1, fig.dim=c(7,5)} +# Fit the PI-trial model - DS sex and MR distance +pi.mr.dist.ds.sex <- ddf(method='trial', + mrmodel=~glm(link='logit',formula=~distance), + dsmodel=~mcds(key='hn',formula=~sex), + data=detections, meta.data=list(width=4)) +``` + +Use the `summary` function to check the AIC and decide if you are going to include any additional covariates in the detection function. + +Now try a point independence model that has the preferred MR model from your full independence analyses. + + +```{r} +# Point independence model, Include covariates in DS model +# Use selected MR model, iterate across DS models +ds.formula <- c("~size","~sex","~exposure","~size+sex","~size+exposure","~sex+exposure", + "~size+sex+exposure") +num.ds.models <- length(ds.formula) +# Create dataframe to store results +pi.results <- data.frame(DSmodel=ds.formula, AIC=rep(NA,num.ds.models)) +# Loop through ds models - use selected MR model from earlier +for (i in 1:num.ds.models) { + pi.model <- ddf(method='trial', mrmodel=~glm(link='logit',formula=~distance+sex+exposure), + dsmodel=~mcds(key='hn',formula=as.formula(ds.formula[i])), + data=detections, meta.data=list(width=4)) + pi.results$AIC[i] <- summary(pi.model)$AIC +} +# Calculate delta AIC +pi.results$deltaAIC <- pi.results$AIC - min(pi.results$AIC) +# Order by delta AIC +pi.results <- pi.results[order(pi.results$deltaAIC), ] +knitr::kable(pi.results, digits = 2) +``` + +This indicates that `sex` should be included in the DS model. We do this and check the goodness of fit and obtain abundance (Figure \@ref(fig:pidssex)). + +```{r pidssex, fig.cap="Goodness of fit of point independence model with sex covariate in the distance sampling component and distance, sex and exposure in the mr component.", fig.dim=c(7,5)} +# Fit chosen model +pi.ds.sex <- ddf(method='trial', mrmodel=~glm(link='logit',formula=~distance+sex+exposure), + dsmodel=~mcds(key='hn',formula=~sex), data=detections, + meta.data=list(width=4)) +summary(pi.ds.sex) +# Check goodness-of-fit +ddf.gof(pi.ds.sex, main="PI trial configutation\nGolfTee DS model sex") +# Get abundance estimates +tee.abund.pi.ds.sex <- dht(model=pi.ds.sex, region.table=region, + sample.table=samples, obs.table=obs) +print(tee.abund.pi.ds.sex) +``` + +This model estimated an abundance of `r round(tee.abund.pi.ds.sex$individuals$N[3,2])`, which is closest to the true value of all the models - it is still less than the true value indicating, perhaps, some unmodelled heterogeneity on the trackline (or perhaps just bad luck - remember this was only one survey). + +Was this complex modelling worthwhile? In this case, the estimated $p(0)$ for the best model was `r round(summary(pi.ds.sex)$mr.summary$average.p0.1,3)` (which is very close to 1). If we ran a conventional distance sampling analysis, pooling the data from the two observers, we should get a very robust estimate of true abundance. + +## References From d4644caee303a91161c2d351ed0bb8a9d373d361 Mon Sep 17 00:00:00 2001 From: erex Date: Wed, 8 May 2024 16:36:19 +0100 Subject: [PATCH 2/8] change .gitignore so that "docs" directory, containing the pkgdown site is part of the commit --- .gitignore | 1 - docs/404.html | 101 + docs/LICENSE-text.html | 753 ++ docs/articles/Interpreting MRDS output.pdf | Bin 0 -> 282815 bytes docs/articles/index.html | 83 + docs/articles/mrds-golftees.html | 1042 ++ .../figure-html/bestfi-1.png | Bin 0 -> 6150 bytes .../figure-html/dettabplot-1.png | Bin 0 -> 5577 bytes .../figure-html/fidetfn-1.png | Bin 0 -> 10918 bytes .../figure-html/fisummary-1.png | Bin 0 -> 6866 bytes .../figure-html/pidssex-1.png | Bin 0 -> 6390 bytes .../figure-html/pit-nocovar-1.png | Bin 0 -> 6706 bytes .../figure-html/plotdf-1.png | Bin 0 -> 9248 bytes docs/authors.html | 122 + .../KFOmCnqEu92Fr1Mu4WxKOzY.woff2 | Bin 0 -> 7112 bytes .../Roboto-0.4.9/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 15744 bytes .../KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9628 bytes .../KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15344 bytes .../KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 11872 bytes .../KFOmCnqEu92Fr1Mu7WxKOzY.woff2 | Bin 0 -> 5560 bytes .../KFOmCnqEu92Fr1Mu7mxKOzY.woff2 | Bin 0 -> 1484 bytes docs/deps/Roboto-0.4.9/font.css | 63 + .../bootstrap-5.3.1/bootstrap.bundle.min.js | 7 + .../bootstrap.bundle.min.js.map | 1 + docs/deps/bootstrap-5.3.1/bootstrap.min.css | 5 + docs/deps/data-deps.txt | 5 + docs/deps/jquery-3.6.0/jquery-3.6.0.js | 10881 ++++++++++++++++ docs/deps/jquery-3.6.0/jquery-3.6.0.min.js | 2 + docs/deps/jquery-3.6.0/jquery-3.6.0.min.map | 1 + docs/index.html | 171 + docs/link.svg | 12 + docs/news/index.html | 426 + docs/pkgdown.js | 156 + docs/pkgdown.yml | 7 + docs/reference/AIC.ddf.html | 109 + docs/reference/DeltaMethod.html | 155 + docs/reference/NCovered.html | 118 + docs/reference/Rplot001.png | Bin 0 -> 13348 bytes docs/reference/Rplot002.png | Bin 0 -> 7289 bytes docs/reference/Rplot003.png | Bin 0 -> 13788 bytes docs/reference/Rplot004.png | Bin 0 -> 11086 bytes docs/reference/Rplot005.png | Bin 0 -> 28883 bytes docs/reference/Rplot006.png | Bin 0 -> 4535 bytes docs/reference/Rplot007.png | Bin 0 -> 22824 bytes docs/reference/Rplot008.png | Bin 0 -> 21604 bytes docs/reference/add.df.covar.line.html | 186 + docs/reference/adj.check.order.html | 135 + docs/reference/apex.gamma.html | 105 + docs/reference/assign.default.values.html | 116 + docs/reference/assign.par.html | 134 + docs/reference/average.line.cond.html | 132 + docs/reference/average.line.html | 136 + docs/reference/book.tee.data.html | 156 + docs/reference/calc.se.Np.html | 111 + docs/reference/cdf.ds.html | 135 + docs/reference/cds.html | 163 + docs/reference/check.bounds.html | 134 + docs/reference/check.mono.html | 155 + docs/reference/coef.ds.html | 143 + docs/reference/compute.Nht.html | 123 + docs/reference/covered.region.dht.html | 118 + docs/reference/create.bins.html | 110 + docs/reference/create.command.file.html | 115 + docs/reference/create.ddfobj.html | 159 + docs/reference/create.model.frame.html | 138 + docs/reference/create.varstructure.html | 154 + docs/reference/ddf.ds-1.png | Bin 0 -> 62638 bytes docs/reference/ddf.ds-2.png | Bin 0 -> 38371 bytes docs/reference/ddf.ds.html | 300 + docs/reference/ddf.gof.html | 191 + docs/reference/ddf.html | 465 + docs/reference/ddf.io.fi.html | 179 + docs/reference/ddf.io.html | 180 + docs/reference/ddf.rem.fi.html | 179 + docs/reference/ddf.rem.html | 178 + docs/reference/ddf.trial.fi.html | 178 + docs/reference/ddf.trial.html | 176 + docs/reference/det.tables-1.png | Bin 0 -> 48386 bytes docs/reference/det.tables.html | 153 + docs/reference/detfct.fit.html | 187 + docs/reference/detfct.fit.opt.html | 187 + docs/reference/dht.deriv.html | 139 + docs/reference/dht.html | 368 + docs/reference/dht.se.html | 225 + docs/reference/distpdf.html | 237 + docs/reference/ds.function.html | 151 + docs/reference/flnl.html | 166 + docs/reference/flt.var.html | 132 + docs/reference/g0.html | 109 + docs/reference/getpar.html | 143 + docs/reference/gof.ds.html | 117 + docs/reference/gstdint.html | 163 + docs/reference/histline.html | 160 + docs/reference/index.html | 713 + docs/reference/integratedetfct.logistic.html | 134 + .../reference/integratelogistic.analytic.html | 117 + docs/reference/integratepdf.html | 150 + docs/reference/io.glm.html | 178 + docs/reference/is.linear.logistic.html | 142 + docs/reference/is.logistic.constant.html | 116 + docs/reference/keyfct.th1.html | 109 + docs/reference/keyfct.th2.html | 109 + docs/reference/keyfct.tpn.html | 137 + docs/reference/lfbcvi.html | 215 + docs/reference/lfgcwa.html | 215 + docs/reference/logLik.ddf.html | 112 + docs/reference/logisticbyx.html | 127 + docs/reference/logisticbyz.html | 120 + docs/reference/logisticdetfct.html | 110 + docs/reference/logisticdupbyx.html | 131 + docs/reference/logisticdupbyx_fast.html | 126 + docs/reference/logit.html | 105 + docs/reference/mcds.html | 162 + docs/reference/mcds_dot_exe.html | 161 + docs/reference/mrds-package.html | 134 + docs/reference/mrds_opt.html | 172 + docs/reference/nlminb_wrapper.html | 156 + docs/reference/p.det.html | 120 + docs/reference/p.dist.table.html | 163 + docs/reference/parse.optimx.html | 109 + .../pdot.dsr.integrate.logistic.html | 164 + docs/reference/plot.det.tables-1.png | Bin 0 -> 53186 bytes docs/reference/plot.det.tables.html | 190 + docs/reference/plot.ds-1.png | Bin 0 -> 36397 bytes docs/reference/plot.ds-2.png | Bin 0 -> 46841 bytes docs/reference/plot.ds-3.png | Bin 0 -> 61706 bytes docs/reference/plot.ds-4.png | Bin 0 -> 29835 bytes docs/reference/plot.ds.html | 241 + docs/reference/plot.io-1.png | Bin 0 -> 66721 bytes docs/reference/plot.io-2.png | Bin 0 -> 68039 bytes docs/reference/plot.io-3.png | Bin 0 -> 66096 bytes docs/reference/plot.io-4.png | Bin 0 -> 68017 bytes docs/reference/plot.io-5.png | Bin 0 -> 64230 bytes docs/reference/plot.io-6.png | Bin 0 -> 72348 bytes docs/reference/plot.io-7.png | Bin 0 -> 72708 bytes docs/reference/plot.io-8.png | Bin 0 -> 69997 bytes docs/reference/plot.io.fi-1.png | Bin 0 -> 59508 bytes docs/reference/plot.io.fi-2.png | Bin 0 -> 66141 bytes docs/reference/plot.io.fi-3.png | Bin 0 -> 56125 bytes docs/reference/plot.io.fi-4.png | Bin 0 -> 67024 bytes docs/reference/plot.io.fi-5.png | Bin 0 -> 64230 bytes docs/reference/plot.io.fi-6.png | Bin 0 -> 72348 bytes docs/reference/plot.io.fi-7.png | Bin 0 -> 62677 bytes docs/reference/plot.io.fi-8.png | Bin 0 -> 69997 bytes docs/reference/plot.io.fi.html | 250 + docs/reference/plot.io.html | 250 + docs/reference/plot.rem.fi.html | 217 + docs/reference/plot.rem.html | 217 + docs/reference/plot.trial.fi.html | 217 + docs/reference/plot.trial.html | 217 + docs/reference/plot_cond.html | 202 + docs/reference/plot_layout.html | 113 + docs/reference/plot_uncond.html | 215 + docs/reference/predict.ds.html | 241 + docs/reference/print.ddf.gof.html | 121 + docs/reference/print.ddf.html | 107 + docs/reference/print.det.tables.html | 114 + docs/reference/print.dht.html | 129 + docs/reference/print.p_dist_table.html | 114 + docs/reference/print.summary.ds.html | 117 + docs/reference/print.summary.io.fi.html | 117 + docs/reference/print.summary.io.html | 117 + docs/reference/print.summary.rem.fi.html | 117 + docs/reference/print.summary.rem.html | 117 + docs/reference/print.summary.trial.fi.html | 117 + docs/reference/print.summary.trial.html | 117 + docs/reference/prob.deriv.html | 134 + docs/reference/prob.se.html | 143 + docs/reference/process.data.html | 151 + docs/reference/pronghorn.html | 135 + docs/reference/ptdata.distance-1.png | Bin 0 -> 62585 bytes docs/reference/ptdata.distance-2.png | Bin 0 -> 39310 bytes docs/reference/ptdata.distance.html | 170 + docs/reference/ptdata.dual-1.png | Bin 0 -> 62508 bytes docs/reference/ptdata.dual-2.png | Bin 0 -> 67106 bytes docs/reference/ptdata.dual-3.png | Bin 0 -> 62958 bytes docs/reference/ptdata.dual-4.png | Bin 0 -> 65023 bytes docs/reference/ptdata.dual-5.png | Bin 0 -> 63644 bytes docs/reference/ptdata.dual-6.png | Bin 0 -> 61946 bytes docs/reference/ptdata.dual.html | 162 + docs/reference/ptdata.removal-1.png | Bin 0 -> 67441 bytes docs/reference/ptdata.removal-2.png | Bin 0 -> 67740 bytes docs/reference/ptdata.removal-3.png | Bin 0 -> 64650 bytes docs/reference/ptdata.removal.html | 158 + docs/reference/ptdata.single-1.png | Bin 0 -> 62452 bytes docs/reference/ptdata.single.html | 127 + docs/reference/qqplot.ddf.html | 184 + docs/reference/rem.glm.html | 189 + docs/reference/rescale_pars.html | 116 + docs/reference/sample_ddf.html | 106 + docs/reference/setbounds.html | 136 + docs/reference/setcov.html | 139 + docs/reference/setinitial.ds.html | 142 + docs/reference/sim.mix.html | 132 + docs/reference/solvecov.html | 132 + docs/reference/stake77-1.png | Bin 0 -> 58813 bytes docs/reference/stake77-2.png | Bin 0 -> 37736 bytes docs/reference/stake77-3.png | Bin 0 -> 93482 bytes docs/reference/stake77.html | 316 + docs/reference/stake78-1.png | Bin 0 -> 21271 bytes docs/reference/stake78-2.png | Bin 0 -> 21743 bytes docs/reference/stake78-3.png | Bin 0 -> 48551 bytes docs/reference/stake78-4.png | Bin 0 -> 32004 bytes docs/reference/stake78-5.png | Bin 0 -> 90750 bytes docs/reference/stake78-6.png | Bin 0 -> 10461 bytes docs/reference/stake78.html | 337 + docs/reference/summary.ds.html | 141 + docs/reference/summary.io.fi.html | 150 + docs/reference/summary.io.html | 137 + docs/reference/summary.rem.fi.html | 146 + docs/reference/summary.rem.html | 137 + docs/reference/summary.trial.fi.html | 146 + docs/reference/summary.trial.html | 137 + docs/reference/survey.region.dht.html | 131 + docs/reference/test.breaks.html | 117 + docs/reference/varn.html | 194 + docs/search.json | 1 + docs/sitemap.xml | 411 + 218 files changed, 35179 insertions(+), 1 deletion(-) create mode 100644 docs/404.html create mode 100644 docs/LICENSE-text.html create mode 100644 docs/articles/Interpreting MRDS output.pdf create mode 100644 docs/articles/index.html create mode 100644 docs/articles/mrds-golftees.html create mode 100644 docs/articles/mrds-golftees_files/figure-html/bestfi-1.png create mode 100644 docs/articles/mrds-golftees_files/figure-html/dettabplot-1.png create mode 100644 docs/articles/mrds-golftees_files/figure-html/fidetfn-1.png create mode 100644 docs/articles/mrds-golftees_files/figure-html/fisummary-1.png create mode 100644 docs/articles/mrds-golftees_files/figure-html/pidssex-1.png create mode 100644 docs/articles/mrds-golftees_files/figure-html/pit-nocovar-1.png create mode 100644 docs/articles/mrds-golftees_files/figure-html/plotdf-1.png create mode 100644 docs/authors.html create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 create mode 100644 docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 create mode 100644 docs/deps/Roboto-0.4.9/font.css create mode 100644 docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js create mode 100644 docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map create mode 100644 docs/deps/bootstrap-5.3.1/bootstrap.min.css create mode 100644 docs/deps/data-deps.txt create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.js create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.min.js create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.min.map create mode 100644 docs/index.html create mode 100644 docs/link.svg create mode 100644 docs/news/index.html create mode 100644 docs/pkgdown.js create mode 100644 docs/pkgdown.yml create mode 100644 docs/reference/AIC.ddf.html create mode 100644 docs/reference/DeltaMethod.html create mode 100644 docs/reference/NCovered.html create mode 100644 docs/reference/Rplot001.png create mode 100644 docs/reference/Rplot002.png create mode 100644 docs/reference/Rplot003.png create mode 100644 docs/reference/Rplot004.png create mode 100644 docs/reference/Rplot005.png create mode 100644 docs/reference/Rplot006.png create mode 100644 docs/reference/Rplot007.png create mode 100644 docs/reference/Rplot008.png create mode 100644 docs/reference/add.df.covar.line.html create mode 100644 docs/reference/adj.check.order.html create mode 100644 docs/reference/apex.gamma.html create mode 100644 docs/reference/assign.default.values.html create mode 100644 docs/reference/assign.par.html create mode 100644 docs/reference/average.line.cond.html create mode 100644 docs/reference/average.line.html create mode 100644 docs/reference/book.tee.data.html create mode 100644 docs/reference/calc.se.Np.html create mode 100644 docs/reference/cdf.ds.html create mode 100644 docs/reference/cds.html create mode 100644 docs/reference/check.bounds.html create mode 100644 docs/reference/check.mono.html create mode 100644 docs/reference/coef.ds.html create mode 100644 docs/reference/compute.Nht.html create mode 100644 docs/reference/covered.region.dht.html create mode 100644 docs/reference/create.bins.html create mode 100644 docs/reference/create.command.file.html create mode 100644 docs/reference/create.ddfobj.html create mode 100644 docs/reference/create.model.frame.html create mode 100644 docs/reference/create.varstructure.html create mode 100644 docs/reference/ddf.ds-1.png create mode 100644 docs/reference/ddf.ds-2.png create mode 100644 docs/reference/ddf.ds.html create mode 100644 docs/reference/ddf.gof.html create mode 100644 docs/reference/ddf.html create mode 100644 docs/reference/ddf.io.fi.html create mode 100644 docs/reference/ddf.io.html create mode 100644 docs/reference/ddf.rem.fi.html create mode 100644 docs/reference/ddf.rem.html create mode 100644 docs/reference/ddf.trial.fi.html create mode 100644 docs/reference/ddf.trial.html create mode 100644 docs/reference/det.tables-1.png create mode 100644 docs/reference/det.tables.html create mode 100644 docs/reference/detfct.fit.html create mode 100644 docs/reference/detfct.fit.opt.html create mode 100644 docs/reference/dht.deriv.html create mode 100644 docs/reference/dht.html create mode 100644 docs/reference/dht.se.html create mode 100644 docs/reference/distpdf.html create mode 100644 docs/reference/ds.function.html create mode 100644 docs/reference/flnl.html create mode 100644 docs/reference/flt.var.html create mode 100644 docs/reference/g0.html create mode 100644 docs/reference/getpar.html create mode 100644 docs/reference/gof.ds.html create mode 100644 docs/reference/gstdint.html create mode 100644 docs/reference/histline.html create mode 100644 docs/reference/index.html create mode 100644 docs/reference/integratedetfct.logistic.html create mode 100644 docs/reference/integratelogistic.analytic.html create mode 100644 docs/reference/integratepdf.html create mode 100644 docs/reference/io.glm.html create mode 100644 docs/reference/is.linear.logistic.html create mode 100644 docs/reference/is.logistic.constant.html create mode 100644 docs/reference/keyfct.th1.html create mode 100644 docs/reference/keyfct.th2.html create mode 100644 docs/reference/keyfct.tpn.html create mode 100644 docs/reference/lfbcvi.html create mode 100644 docs/reference/lfgcwa.html create mode 100644 docs/reference/logLik.ddf.html create mode 100644 docs/reference/logisticbyx.html create mode 100644 docs/reference/logisticbyz.html create mode 100644 docs/reference/logisticdetfct.html create mode 100644 docs/reference/logisticdupbyx.html create mode 100644 docs/reference/logisticdupbyx_fast.html create mode 100644 docs/reference/logit.html create mode 100644 docs/reference/mcds.html create mode 100644 docs/reference/mcds_dot_exe.html create mode 100644 docs/reference/mrds-package.html create mode 100644 docs/reference/mrds_opt.html create mode 100644 docs/reference/nlminb_wrapper.html create mode 100644 docs/reference/p.det.html create mode 100644 docs/reference/p.dist.table.html create mode 100644 docs/reference/parse.optimx.html create mode 100644 docs/reference/pdot.dsr.integrate.logistic.html create mode 100644 docs/reference/plot.det.tables-1.png create mode 100644 docs/reference/plot.det.tables.html create mode 100644 docs/reference/plot.ds-1.png create mode 100644 docs/reference/plot.ds-2.png create mode 100644 docs/reference/plot.ds-3.png create mode 100644 docs/reference/plot.ds-4.png create mode 100644 docs/reference/plot.ds.html create mode 100644 docs/reference/plot.io-1.png create mode 100644 docs/reference/plot.io-2.png create mode 100644 docs/reference/plot.io-3.png create mode 100644 docs/reference/plot.io-4.png create mode 100644 docs/reference/plot.io-5.png create mode 100644 docs/reference/plot.io-6.png create mode 100644 docs/reference/plot.io-7.png create mode 100644 docs/reference/plot.io-8.png create mode 100644 docs/reference/plot.io.fi-1.png create mode 100644 docs/reference/plot.io.fi-2.png create mode 100644 docs/reference/plot.io.fi-3.png create mode 100644 docs/reference/plot.io.fi-4.png create mode 100644 docs/reference/plot.io.fi-5.png create mode 100644 docs/reference/plot.io.fi-6.png create mode 100644 docs/reference/plot.io.fi-7.png create mode 100644 docs/reference/plot.io.fi-8.png create mode 100644 docs/reference/plot.io.fi.html create mode 100644 docs/reference/plot.io.html create mode 100644 docs/reference/plot.rem.fi.html create mode 100644 docs/reference/plot.rem.html create mode 100644 docs/reference/plot.trial.fi.html create mode 100644 docs/reference/plot.trial.html create mode 100644 docs/reference/plot_cond.html create mode 100644 docs/reference/plot_layout.html create mode 100644 docs/reference/plot_uncond.html create mode 100644 docs/reference/predict.ds.html create mode 100644 docs/reference/print.ddf.gof.html create mode 100644 docs/reference/print.ddf.html create mode 100644 docs/reference/print.det.tables.html create mode 100644 docs/reference/print.dht.html create mode 100644 docs/reference/print.p_dist_table.html create mode 100644 docs/reference/print.summary.ds.html create mode 100644 docs/reference/print.summary.io.fi.html create mode 100644 docs/reference/print.summary.io.html create mode 100644 docs/reference/print.summary.rem.fi.html create mode 100644 docs/reference/print.summary.rem.html create mode 100644 docs/reference/print.summary.trial.fi.html create mode 100644 docs/reference/print.summary.trial.html create mode 100644 docs/reference/prob.deriv.html create mode 100644 docs/reference/prob.se.html create mode 100644 docs/reference/process.data.html create mode 100644 docs/reference/pronghorn.html create mode 100644 docs/reference/ptdata.distance-1.png create mode 100644 docs/reference/ptdata.distance-2.png create mode 100644 docs/reference/ptdata.distance.html create mode 100644 docs/reference/ptdata.dual-1.png create mode 100644 docs/reference/ptdata.dual-2.png create mode 100644 docs/reference/ptdata.dual-3.png create mode 100644 docs/reference/ptdata.dual-4.png create mode 100644 docs/reference/ptdata.dual-5.png create mode 100644 docs/reference/ptdata.dual-6.png create mode 100644 docs/reference/ptdata.dual.html create mode 100644 docs/reference/ptdata.removal-1.png create mode 100644 docs/reference/ptdata.removal-2.png create mode 100644 docs/reference/ptdata.removal-3.png create mode 100644 docs/reference/ptdata.removal.html create mode 100644 docs/reference/ptdata.single-1.png create mode 100644 docs/reference/ptdata.single.html create mode 100644 docs/reference/qqplot.ddf.html create mode 100644 docs/reference/rem.glm.html create mode 100644 docs/reference/rescale_pars.html create mode 100644 docs/reference/sample_ddf.html create mode 100644 docs/reference/setbounds.html create mode 100644 docs/reference/setcov.html create mode 100644 docs/reference/setinitial.ds.html create mode 100644 docs/reference/sim.mix.html create mode 100644 docs/reference/solvecov.html create mode 100644 docs/reference/stake77-1.png create mode 100644 docs/reference/stake77-2.png create mode 100644 docs/reference/stake77-3.png create mode 100644 docs/reference/stake77.html create mode 100644 docs/reference/stake78-1.png create mode 100644 docs/reference/stake78-2.png create mode 100644 docs/reference/stake78-3.png create mode 100644 docs/reference/stake78-4.png create mode 100644 docs/reference/stake78-5.png create mode 100644 docs/reference/stake78-6.png create mode 100644 docs/reference/stake78.html create mode 100644 docs/reference/summary.ds.html create mode 100644 docs/reference/summary.io.fi.html create mode 100644 docs/reference/summary.io.html create mode 100644 docs/reference/summary.rem.fi.html create mode 100644 docs/reference/summary.rem.html create mode 100644 docs/reference/summary.trial.fi.html create mode 100644 docs/reference/summary.trial.html create mode 100644 docs/reference/survey.region.dht.html create mode 100644 docs/reference/test.breaks.html create mode 100644 docs/reference/varn.html create mode 100644 docs/search.json create mode 100644 docs/sitemap.xml diff --git a/.gitignore b/.gitignore index 8f51069d..a61728fd 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,3 @@ cran-comments.md .DS_Store inst/doc -docs diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 00000000..aab00c05 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,101 @@ + + + + + + + +Page not found (404) • mrds + + + + + + + + + + Skip to contents + + +
+
+
+ +Content not found. Please use links in the navbar. + +
+
+ + +
+ + + +
+
+ + + + + + + diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html new file mode 100644 index 00000000..03354643 --- /dev/null +++ b/docs/LICENSE-text.html @@ -0,0 +1,753 @@ + +License • mrds + Skip to contents + + +
+
+
+ +
                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+ +
+ + +
+ + + +
+ + + + + + + diff --git a/docs/articles/Interpreting MRDS output.pdf b/docs/articles/Interpreting MRDS output.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ef623387f71a7f5583e786b82379070d8c29df88 GIT binary patch literal 282815 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%0DMoGp<#z`jN7?ngNOD0MtNhTvk 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ë(yI6Nu_nB! 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

b-Ahn8}$eEntDUMqW+|Qr{2;W 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 literal 0 HcmV?d00001 diff --git a/docs/articles/index.html b/docs/articles/index.html new file mode 100644 index 00000000..c1376669 --- /dev/null +++ b/docs/articles/index.html @@ -0,0 +1,83 @@ + +Articles • mrds + Skip to contents + + +

+
+
+ +
+

All vignettes

+
+ +
Double platform analysis
+

Estimating g(0) comparing full and point independence models

+
+
+ + +
+ + + +
+ + + + + + + diff --git a/docs/articles/mrds-golftees.html b/docs/articles/mrds-golftees.html new file mode 100644 index 00000000..44ea8610 --- /dev/null +++ b/docs/articles/mrds-golftees.html @@ -0,0 +1,1042 @@ + + + + + + + + +Double platform analysis • mrds + + + + + + + + + + + Skip to contents + + +
+ + +
+
+ + + +

This example looks at mark-recapture distance sampling (MRDS) models. The first part of this exercise involves analysis of a survey of a known number of golf tees. This is intended mainly to familiarise you with the double-platform data structure and analysis features in the R function mrds (Laake, Borchers, Thomas, Miller, & Bishop, 2019).

+

To help understand the terminology using in MRDS and the output produced by mrds, there is a guide available at this link called Interpreting MRDS output: making sense of all the numbers.

+
+

Aims +

+

The aims of this practical are to learn how to model

+
    +
  • trial and independent-observer configuration
  • +
  • full and point independence assumptions,
  • +
  • include covariates in the detection function(s) and
  • +
  • select between competing models.
  • +
+
+

Golf tee data +

+

These data come from a survey of golf tees which conducted by statistics students at the University of St Andrews. The data were collected along transect lines, 210 metres in total. A distance of 4 metres out from the centre line was searched and, for the purposes of this exercise, we assume that this comprised the total study area, which was divided into two strata. There were 250 clusters of tees in total and 760 individual tees in total.

+

The population was independently surveyed by two observer teams. The following data were recorded for each detected group: perpendicular distance, cluster size, observer (team 1 or 2), ‘sex’ (males are yellow and females are green and golf tees occur in single-sex clusters) and ‘exposure’. Exposure was a subjective judgment of whether the cluster was substantially obscured by grass (exposure=0) or not (exposure=1). The lengths of grass varied along the transect line and the grass was slightly more yellow along one part of the line compared to the rest.

+

The golf tee dataset is provided as part of the mrds package.

+

Open R and load the mrds package and golf tee dataset (called book.tee.data). The elements required for an MRDS analysis are contained within the object dataset. These data are in a hierarchical structure (rather than in a ‘flat file’ format) so that there are separate elements for observations, samples and regions. In the code below, each of these tables is extracted to avoid typing long names.

+
+library(knitr)
+library(mrds)
+# Access the golf tee data
+data(book.tee.data)
+# Investigate the structure of the dataset
+str(book.tee.data)
+
## List of 4
+##  $ book.tee.dataframe:'data.frame':  324 obs. of  7 variables:
+##   ..$ object  : num [1:324] 1 1 2 2 3 3 4 4 5 5 ...
+##   ..$ observer: Factor w/ 2 levels "1","2": 1 2 1 2 1 2 1 2 1 2 ...
+##   ..$ detected: num [1:324] 1 0 1 0 1 0 1 0 1 0 ...
+##   ..$ distance: num [1:324] 2.68 2.68 3.33 3.33 0.34 0.34 2.53 2.53 1.46 1.46 ...
+##   ..$ size    : num [1:324] 2 2 2 2 1 1 2 2 2 2 ...
+##   ..$ sex     : num [1:324] 1 1 1 1 0 0 1 1 1 1 ...
+##   ..$ exposure: num [1:324] 1 1 0 0 0 0 1 1 0 0 ...
+##  $ book.tee.region   :'data.frame':  2 obs. of  2 variables:
+##   ..$ Region.Label: Factor w/ 2 levels "1","2": 1 2
+##   ..$ Area        : num [1:2] 1040 640
+##  $ book.tee.samples  :'data.frame':  11 obs. of  3 variables:
+##   ..$ Sample.Label: num [1:11] 1 2 3 4 5 6 7 8 9 10 ...
+##   ..$ Region.Label: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 2 2 2 2 ...
+##   ..$ Effort      : num [1:11] 10 30 30 27 21 12 23 23 15 12 ...
+##  $ book.tee.obs      :'data.frame':  162 obs. of  3 variables:
+##   ..$ object      : int [1:162] 1 2 3 21 22 23 24 59 60 61 ...
+##   ..$ Region.Label: int [1:162] 1 1 1 1 1 1 1 1 1 1 ...
+##   ..$ Sample.Label: int [1:162] 1 1 1 1 1 1 1 1 1 1 ...
+
+# Extract the list elements from the dataset into easy-to-access objects
+detections <- book.tee.data$book.tee.dataframe # detection information
+region <- book.tee.data$book.tee.region # region info
+samples <- book.tee.data$book.tee.samples # transect info
+obs <- book.tee.data$book.tee.obs # links detections to transects and regions
+

Examine the columns in the detections data because it has a particular structure.

+
+# Check detections
+head(detections)
+
##    object observer detected distance size sex exposure
+## 1       1        1        1     2.68    2   1        1
+## 21      1        2        0     2.68    2   1        1
+## 2       2        1        1     3.33    2   1        0
+## 22      2        2        0     3.33    2   1        0
+## 3       3        1        1     0.34    1   0        0
+## 23      3        2        0     0.34    1   0        0
+

The structure of the detection is as follows:

+
    +
  • each detected object (in this case the object was a group or cluster of golf tees) is given a unique number in the object column,
  • +
  • each object occurs twice - once for observer 1 and once for observer 2,
  • +
  • the detected column indicates whether the object was seen (detected=1) or not seen (detected=0) by the observer,
  • +
  • perpendicular distance is in the distance column and cluster size is in the size column (the same default names as for the ds function).
  • +
+

To ensure that the variables sex and exposure are treated correctly, define them as factor variables.

+
+# Define sex and exposure as factor variables 
+detections$sex <- as.factor(detections$sex)
+detections$exposure <- as.factor(detections$exposure)
+
+
+

Golf tee survey analyses +

+
+

Estimation of \(p(0)\): distance only +

+

We will start by analysing these data assuming that Observer 2 was generating trials for Observer 1 but not vice versa, i.e. trial configuration where Observer 1 is the primary and Observer 2 is the tracker. (The data could also be analysed in independent observer configuration - you are welcome to try this for yourself). We begin by assuming full independence (i.e. detections between observers are independent at all distances): this requires only a mark-recapture (MR) model and, to start with, perpendicular distance will be included as the only covariate.

+
+# Fit trial configuration with full independence model
+fi.mr.dist <- ddf(method='trial.fi', mrmodel=~glm(link='logit',formula=~distance),
+                  data=detections, meta.data=list(width=4))
+
+
Examining mrds output +
+

Having fitted the model, we can create tables summarizing the detection data. In the commands below, the tables are created using the det.tables function and saved to detection.tables.

+
+# Create a set of tables summarizing the double observer data 
+detection.tables <- det.tables(fi.mr.dist)
+# Print these detection tables
+print(detection.tables)
+
## 
+## Observer 1 detections
+##            Detected
+##             Missed Detected
+##   [0,0.4]        1       25
+##   (0.4,0.8]      2       16
+##   (0.8,1.2]      2       16
+##   (1.2,1.6]      6       22
+##   (1.6,2]        5        9
+##   (2,2.4]        2       10
+##   (2.4,2.8]      6       12
+##   (2.8,3.2]      6        9
+##   (3.2,3.6]      2        3
+##   (3.6,4]        6        2
+## 
+## Observer 2 detections
+##            Detected
+##             Missed Detected
+##   [0,0.4]        4       22
+##   (0.4,0.8]      1       17
+##   (0.8,1.2]      0       18
+##   (1.2,1.6]      2       26
+##   (1.6,2]        1       13
+##   (2,2.4]        2       10
+##   (2.4,2.8]      3       15
+##   (2.8,3.2]      4       11
+##   (3.2,3.6]      2        3
+##   (3.6,4]        1        7
+## 
+## Duplicate detections
+## 
+##   [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6]   (1.6,2]   (2,2.4] (2.4,2.8] (2.8,3.2] 
+##        21        15        16        20         8         8         9         5 
+## (3.2,3.6]   (3.6,4] 
+##         1         1 
+## 
+## Observer 1 detections of those seen by Observer 2
+##           Missed Detected Prop. detected
+## [0,0.4]        1       21      0.9545455
+## (0.4,0.8]      2       15      0.8823529
+## (0.8,1.2]      2       16      0.8888889
+## (1.2,1.6]      6       20      0.7692308
+## (1.6,2]        5        8      0.6153846
+## (2,2.4]        2        8      0.8000000
+## (2.4,2.8]      6        9      0.6000000
+## (2.8,3.2]      6        5      0.4545455
+## (3.2,3.6]      2        1      0.3333333
+## (3.6,4]        6        1      0.1428571
+

The information in detection summary tables can be plotted, but, in the interest of space, only one (out of six possible plots) is shown (Figure 1).

+
+# Plot detection information, change number to see other plots
+plot(detection.tables, which=1)
+
+ +Detection distances for observer 1

+Figure 1: Detection distances for observer 1 +

+
+

The plot numbers are:

+
    +
  1. Histograms of distances for detections by either, or both, observers. The shaded regions show the number for observer 1.
  2. +
  3. Histograms of distances for detections by either, or both, observers. The shaded regions show the number for observer 2.
  4. +
  5. Histograms of distances for duplicates (detected by both observers).
  6. +
  7. Histogram of distances for detections by either, or both, observers. Not shown for trial configuration.
  8. +
  9. Histograms of distances for observer 2. The shaded regions indicate the number of duplicates - for example, the shaded region is the number of clusters in each distance bin that were detected by Observer 1 given that they were also detected by Observer 2 (the “|” symbol in the plot legend means “given that”).
  10. +
  11. Histograms of distances for observer 1. The shaded regions indicate the number of duplicates as for plot 5. Not shown for trial configuration.
  12. +
+

Note that if an independent observer configuration had been chosen, all plots would be available.

+

A summary of the detection function model is available using the summary function. The Q-Q plot has the same interpretation as a Q-Q plot in a conventional, single platform analysis (Figure 2).

+
+# Produce a summary of the fitted detection function object
+summary(fi.mr.dist)
+
## 
+## Summary for trial.fi object 
+## Number of observations               :  162 
+## Number seen by primary               :  124 
+## Number seen by secondary (trials)    :  142 
+## Number seen by both (detected trials):  104 
+## AIC                                  :  452.8094 
+## 
+## 
+## Conditional detection function parameters:
+##              estimate        se
+## (Intercept)  2.900233 0.4876238
+## distance    -1.058677 0.2235722
+## 
+##                         Estimate          SE         CV
+## Average p              0.6423252  0.04069410 0.06335435
+## Average primary p(0)   0.9478579  0.06109656 0.06445750
+## N in covered region  193.0486185 15.84826582 0.08209469
+
+# Produce goodness of fit statistics and a qq plot
+gof.result <- ddf.gof(fi.mr.dist, 
+                      main="Full independence, trial configuration\ngoodness of fit Golf tee data")
+
+ +Fitted detection function for full independence, trial mode.

+Figure 2: Fitted detection function for full independence, trial mode. +

+
+
+# Extract chi-square statistics for reporting
+chi.distance <- gof.result$chisquare$chi1$chisq
+chi.markrecap <- gof.result$chisquare$chi2$chisq
+chi.total <- gof.result$chisquare$pooled.chi
+

Abbreviated \(\chi^2\) goodness-of-fit assessment shows the \(\chi^2\) contribution from the distance sampling model to be 11.5 and the \(\chi^2\) contribution from the mark-recapture model to be 3.4. The combination of these elements produces a total \(\chi^2\) of 14.9 with 17 degrees of freedom, resulting in a \(p\)-value of 0.604

+

The (two) detection functions can be plotted (Figure 3).

+
+par(mfrow=c(1,2))
+# Plot detection functions
+plot(fi.mr.dist)
+
+ +Observer 1 detection function (left) and conditional detection probabilty plot (right).

+Figure 3: Observer 1 detection function (left) and conditional detection probabilty plot (right). +

+
+
+par(mfrow=c(1,1))
+

The plot labelled

+
    +
  • “Observer=1 detections” shows a histogram of Observer 1 detections with the estimated Observer 1 detection function overlaid on it and adjusted for p(0). The dots show the estimated detection probability for all Observer 1 detections.
  • +
  • “Conditional detection probability” shows the proportion of Obs 2’s detections that were detected by Obs 1 (also see the detection tables). The fitted line is the estimated detection probability function for Obs 1 (given detection by Obs 2) - this is the MR model. Dots are estimated detection probabilities for each Obs 1 detection.
  • +
+

There is some evidence of unmodelled heterogeneity in that the fitted line in the left-hand plot declines more slowly than the histogram as the distance increases.

+
+
+
Estimating abundance +
+

Abundance is estimated using the dht function. In this function, we need to supply information about the transects and survey regions.

+
+# Calculate density estimates using the dht function
+tee.abund <- dht(model=fi.mr.dist, region.table=region, sample.table=samples, obs.table=obs)
+# Print out results in a nice format
+knitr::kable(tee.abund$individuals$summary, digits=2, 
+      caption="Survey summary statistics for golftees")
+ + +++++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Table 1: Survey summary statistics for golftees
RegionAreaCoveredAreaEffortnkERse.ERcv.ERmean.sizese.mean
11040104013022961.760.120.073.180.21
26406408015251.900.330.182.920.23
Total16801680210381111.810.150.083.070.15
+
+knitr::kable(tee.abund$individuals$N, digits=2, 
+      caption="Abundance estimates for golftee population with two strata")
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Table 1: Abundance estimates for golftee population with two strata
LabelEstimatesecvlclucldf
1356.5232.350.09294.54431.5317.13
2236.6444.140.19147.33380.095.06
Total593.1660.380.10478.32735.5716.06
+

The estimated abundance is 593 (recall that the true abundance is 760) and so this estimate is negatively biased. The 95% confidence interval does not include the true value.

+
+
+
+

Estimation of p(0): distance and other explanatory variables +

+

How about including the other covariates, size, sex and exposure, in the MR model? Which MR model would you use? In the command below, distance and sex are included in the detection function - remember sex was defined as a factor earlier on.

+

In the code below, all possible models (excluding interaction terms) are fitted.

+
+# Full independence model
+# Set up list with possible models
+mr.formula <- c("~distance","~distance+size","~distance+sex","~distance+exposure",
+                "~distance+size+sex","~distance+size+exposure","~distance+sex+exposure",
+                "~distance+size+sex+exposure")
+num.mr.models <- length(mr.formula)
+# Create dataframe to store results
+fi.results <- data.frame(MRmodel=mr.formula, AIC=rep(NA,num.mr.models))
+# Loop through all MR models
+for (i in 1:num.mr.models) {
+  fi.model  <- ddf(method='trial.fi', 
+                   mrmodel=~glm(link='logit',formula=as.formula(mr.formula[i])),
+                  data=detections, meta.data=list(width=4))
+  fi.results$AIC[i] <- summary(fi.model)$aic
+}
+# Calculate delta AIC
+fi.results$deltaAIC <- fi.results$AIC - min(fi.results$AIC)
+# Order by delta AIC
+fi.results <- fi.results[order(fi.results$deltaAIC), ]
+# Print results in pretty way
+knitr::kable(fi.results, digits=2)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MRmodelAICdeltaAIC
7~distance+sex+exposure405.680.00
8~distance+size+sex+exposure407.401.72
4~distance+exposure433.7228.04
3~distance+sex434.4128.74
6~distance+size+exposure435.3329.65
5~distance+size+sex436.0230.34
1~distance452.8147.13
2~distance+size454.5848.91
+
+# Fit chosen model
+fi.mr.dist.sex.exp  <- ddf(method='trial.fi', mrmodel=~glm(link='logit',formula=~distance+sex+exposure),
+                           data=detections, meta.data=list(width=4))
+

We see that the preferred model contains distance + sex + exposure so check the goodness-of-fit statistics (Figure 4) and detection function plots (Figure 5).

+
+# Check goodness-of-fit 
+ddf.gof(fi.mr.dist.sex.exp, main="FI trial mode\nMR=dist+sex+exp")
+
+ +Preferred model goodness of fit.

+Figure 4: Preferred model goodness of fit. +

+
+
## 
+## Goodness of fit results for ddf object
+## 
+## Chi-square tests
+## 
+## Distance sampling component:
+##           [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6] (1.6,2] (2,2.4] (2.4,2.8]
+## Observed   25.000    16.000    16.000    22.000   9.000  10.000    12.000
+## Expected   20.276    19.341    18.074    16.345  14.083  11.511     9.046
+## Chisquare   1.101     0.577     0.238     1.957   1.834   0.198     0.964
+##           (2.8,3.2] (3.2,3.6] (3.6,4]   Total
+## Observed      9.000     3.000   2.000 124.000
+## Expected      6.915     5.044   3.366 124.000
+## Chisquare     0.629     0.828   0.554   8.881
+## 
+## No degrees of freedom for test
+## 
+## Mark-recapture component:
+## Capture History 01
+##           [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6] (1.6,2] (2,2.4] (2.4,2.8]
+## Observed        1         2         2         6       5       2         6
+## Expected        1         2         2         6       4       4         6
+## Chisquare       0         0         0         0       0       1         0
+##           (2.8,3.2] (3.2,3.6] (3.6,4] Total
+## Observed          6         2       6    38
+## Expected          7         2       5    38
+## Chisquare         0         0       0     2
+## Capture History 11
+##           [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6] (1.6,2] (2,2.4] (2.4,2.8]
+## Observed       21        15        16        20       8       8         9
+## Expected       21        15        16        20       9       6         9
+## Chisquare       0         0         0         0       0       1         0
+##           (2.8,3.2] (3.2,3.6] (3.6,4] Total
+## Observed          5         1       1   104
+## Expected          4         1       2   104
+## Chisquare         0         0       1     2
+## 
+## 
+## Total chi-square = 12.205  P = 0.66344 with 15 degrees of freedom
+## 
+## Distance sampling Cramer-von Mises test (unweighted)
+## Test statistic = 0.0976947 p-value = 0.596294
+
+par(mfrow=c(1,2))
+plot(fi.mr.dist.sex.exp)
+
+ +Detection functions for full independence model with distance, sex and exposure in MR component.

+Figure 5: Detection functions for full independence model with distance, sex and exposure in MR component. +

+
+

And produce abundance estimates.

+
+# Get abundance estimates 
+tee.abund.fi <- dht(model=fi.mr.dist.sex.exp, region.table=region,
+                    sample.table=samples, obs.table=obs)
+# Print results
+print(tee.abund.fi)
+
## Abundance and density estimates from distance sampling
+## Variance       : R2, N/L 
+## 
+## Summary statistics
+## 
+##   Region Area CoveredArea Effort   n  k        ER      se.ER      cv.ER
+## 1      1 1040        1040    130  72  6 0.5538462 0.02926903 0.05284685
+## 2      2  640         640     80  52  5 0.6500000 0.08292740 0.12758061
+## 3  Total 1680        1680    210 124 11 0.5904762 0.03641856 0.06167659
+## 
+## Summary for clusters
+## 
+## Abundance:
+##   Region  Estimate       se        cv       lcl      ucl       df
+## 1      1 119.28976 14.18666 0.1189260  91.64685 155.2704 10.12494
+## 2      2  98.17731 18.59356 0.1893876  63.58200 151.5961  7.83844
+## 3  Total 217.46707 26.05226 0.1197987 169.90391 278.3451 23.21368
+## 
+## Density:
+##   Region  Estimate         se        cv        lcl       ucl       df
+## 1      1 0.1147017 0.01364102 0.1189260 0.08812198 0.1492985 10.12494
+## 2      2 0.1534020 0.02905244 0.1893876 0.09934687 0.2368689  7.83844
+## 3  Total 0.1294447 0.01550730 0.1197987 0.10113328 0.1656816 23.21368
+## 
+## Summary for individuals
+## 
+## Abundance:
+##   Region Estimate       se        cv      lcl      ucl        df
+## 1      1 371.0397 37.86856 0.1020607 297.1733 463.2666 11.904084
+## 2      2 279.7141 67.25221 0.2404320 154.4960 506.4208  5.482654
+## 3  Total 650.7538 82.72649 0.1271241 493.7469 857.6875 11.907393
+## 
+## Density:
+##   Region  Estimate         se        cv       lcl       ucl        df
+## 1      1 0.3567690 0.03641208 0.1020607 0.2857436 0.4454487 11.904084
+## 2      2 0.4370533 0.10508158 0.2404320 0.2414000 0.7912825  5.482654
+## 3  Total 0.3873535 0.04924196 0.1271241 0.2938970 0.5105283 11.907393
+## 
+## Expected cluster size
+##   Region Expected.S se.Expected.S cv.Expected.S
+## 1      1   3.110407     0.2740170    0.08809682
+## 2      2   2.849071     0.2211204    0.07761141
+## 3  Total   2.992425     0.1758058    0.05875027
+

This model incorporates the effect of more variables causing the heterogeneity. The estimated abundance is 651 which is less biased than the previous estimate and the 95% confidence interval (494, 858) contains the true value.

+

The model is a reasonable fit to the data (i.e. non-significant \(\chi^2\) and Cramer von Mises tests). This model has a lower AIC (405.7) than the model with only distance (452.81) and so is to be preferred.

+
+
+

Point independence +

+

A less restrictive assumption than full independence is point independence, which assumes that detections are only independent on the transect centre line i.e. at perpendicular distance zero (Buckland, Laake, & Borchers, 2010).

+

Determine if a simple point independence model is better than a simple full independence one. This requires that a distance sampling (DS) model is specified as well a MR model. Here we try a half-normal key function for the DS model (Figure 6).

+
+# Fit trial configuration with point independence model
+pi.mr.dist <- ddf(method='trial', 
+                  mrmodel=~glm(link='logit', formula=~distance),
+                  dsmodel=~cds(key='hn'), 
+                  data=detections, meta.data=list(width=4))
+# Summary pf the model 
+summary(pi.mr.dist)
+
## 
+## Summary for trial.fi object 
+## Number of observations               :  162 
+## Number seen by primary               :  124 
+## Number seen by secondary (trials)    :  142 
+## Number seen by both (detected trials):  104 
+## AIC                                  :  140.8887 
+## 
+## 
+## Conditional detection function parameters:
+##              estimate        se
+## (Intercept)  2.900233 0.4876238
+## distance    -1.058677 0.2235722
+## 
+##                       Estimate         SE         CV
+## Average primary p(0) 0.9478579 0.02409996 0.02542571
+## 
+## 
+## 
+## Summary for ds object
+## Number of observations :  124 
+## Distance range         :  0  -  4 
+## AIC                    :  311.1385 
+## Optimisation           :  mrds (nlminb) 
+## 
+## Detection function:
+##  Half-normal key function 
+## 
+## Detection function parameters 
+## Scale coefficient(s): 
+##              estimate         se
+## (Intercept) 0.6632435 0.09981249
+## 
+##            Estimate         SE         CV
+## Average p 0.5842744 0.04637627 0.07937412
+## 
+## 
+## Summary for trial object
+## 
+## Total AIC value =  452.0272 
+##                        Estimate          SE         CV
+## Average p             0.5538091  0.04615832 0.08334697
+## N in covered region 223.9038534 22.99246338 0.10268900
+
+# Produce goodness of fit statistics and a qq plot
+gof.results <- ddf.gof(pi.mr.dist, 
+                       main="Point independence, trial configuration\n goodness of fit Golftee data")
+
+ +Point independence model in trial configuration goodness of fit.

+Figure 6: Point independence model in trial configuration goodness of fit. +

+
+

The AIC for this point independence model is 452.03 which is marginally smaller than the first full independence model that was fitted and hence is to be preferred.

+
+# Get abundance estimates 
+tee.abund.pi <- dht(model=pi.mr.dist, region.table=region,
+                    sample.table=samples, obs.table=obs)
+# Print results
+print(tee.abund.pi)
+
## Abundance and density estimates from distance sampling
+## Variance       : R2, N/L 
+## 
+## Summary statistics
+## 
+##   Region Area CoveredArea Effort   n  k        ER      se.ER      cv.ER
+## 1      1 1040        1040    130  72  6 0.5538462 0.02926903 0.05284685
+## 2      2  640         640     80  52  5 0.6500000 0.08292740 0.12758061
+## 3  Total 1680        1680    210 124 11 0.5904762 0.03641856 0.06167659
+## 
+## Summary for clusters
+## 
+## Abundance:
+##   Region  Estimate       se         cv       lcl      ucl        df
+## 1      1 130.00869 12.83042 0.09868894 106.66570 158.4601 48.427773
+## 2      2  93.89516 14.30894 0.15239268  66.25307 133.0701  8.094137
+## 3  Total 223.90385 23.21562 0.10368567 181.78333 275.7840 44.038262
+## 
+## Density:
+##   Region  Estimate         se         cv       lcl       ucl        df
+## 1      1 0.1250084 0.01233694 0.09868894 0.1025632 0.1523655 48.427773
+## 2      2 0.1467112 0.02235771 0.15239268 0.1035204 0.2079220  8.094137
+## 3  Total 0.1332761 0.01381882 0.10368567 0.1082044 0.1641571 44.038262
+## 
+## Summary for individuals
+## 
+## Abundance:
+##   Region Estimate       se        cv      lcl      ucl        df
+## 1      1 413.4999 44.00744 0.1064267 332.9536 513.5313 30.289360
+## 2      2 274.4628 53.42626 0.1946576 171.1754 440.0740  5.987499
+## 3  Total 687.9626 79.79844 0.1159924 542.4532 872.5040 25.993175
+## 
+## Density:
+##   Region  Estimate         se        cv       lcl       ucl        df
+## 1      1 0.3975960 0.04231485 0.1064267 0.3201477 0.4937801 30.289360
+## 2      2 0.4288481 0.08347854 0.1946576 0.2674615 0.6876156  5.987499
+## 3  Total 0.4095016 0.04749907 0.1159924 0.3228888 0.5193476 25.993175
+## 
+## Expected cluster size
+##   Region Expected.S se.Expected.S cv.Expected.S
+## 1      1   3.180556     0.2114629    0.06648615
+## 2      2   2.923077     0.1750319    0.05987935
+## 3  Total   3.072581     0.1391365    0.04528327
+

This results in an estimated abundance of 688. Can we do better if more covariates are included in the DS model?

+
+
Covariates in the DS model +
+

To include covariates in the DS detection function, we need to specify an MCDS model as follows:

+
+# Fit the PI-trial model - DS sex and MR distance 
+pi.mr.dist.ds.sex <- ddf(method='trial', 
+                         mrmodel=~glm(link='logit',formula=~distance),
+                         dsmodel=~mcds(key='hn',formula=~sex), 
+                         data=detections, meta.data=list(width=4))
+

Use the summary function to check the AIC and decide if you are going to include any additional covariates in the detection function.

+

Now try a point independence model that has the preferred MR model from your full independence analyses.

+
+# Point independence model, Include covariates in DS model
+# Use selected MR model, iterate across DS models
+ds.formula <- c("~size","~sex","~exposure","~size+sex","~size+exposure","~sex+exposure",
+                "~size+sex+exposure")
+num.ds.models <- length(ds.formula)
+# Create dataframe to store results
+pi.results <- data.frame(DSmodel=ds.formula, AIC=rep(NA,num.ds.models))
+# Loop through ds models - use selected MR model from earlier
+for (i in 1:num.ds.models) {
+  pi.model <- ddf(method='trial', mrmodel=~glm(link='logit',formula=~distance+sex+exposure),
+                  dsmodel=~mcds(key='hn',formula=as.formula(ds.formula[i])), 
+                  data=detections, meta.data=list(width=4))
+  pi.results$AIC[i] <- summary(pi.model)$AIC
+}
+# Calculate delta AIC
+pi.results$deltaAIC <- pi.results$AIC - min(pi.results$AIC)
+# Order by delta AIC
+pi.results <- pi.results[order(pi.results$deltaAIC), ]
+knitr::kable(pi.results, digits = 2)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DSmodelAICdeltaAIC
2~sex399.260.00
6~sex+exposure400.281.02
4~size+sex401.061.80
7~size+sex+exposure401.942.69
1~size407.928.66
3~exposure407.978.72
5~size+exposure409.8910.63
+

This indicates that sex should be included in the DS model. We do this and check the goodness of fit and obtain abundance (Figure 7).

+
+# Fit chosen model
+pi.ds.sex <- ddf(method='trial', mrmodel=~glm(link='logit',formula=~distance+sex+exposure),
+                dsmodel=~mcds(key='hn',formula=~sex), data=detections,  
+                meta.data=list(width=4))
+summary(pi.ds.sex)
+
## 
+## Summary for trial.fi object 
+## Number of observations               :  162 
+## Number seen by primary               :  124 
+## Number seen by secondary (trials)    :  142 
+## Number seen by both (detected trials):  104 
+## AIC                                  :  94.89911 
+## 
+## 
+## Conditional detection function parameters:
+##               estimate        se
+## (Intercept)  0.7870962 0.6774633
+## distance    -1.9435496 0.3706866
+## sex1         2.8059863 0.6828331
+## exposure1    3.6094527 0.7332797
+## 
+##                       Estimate         SE         CV
+## Average primary p(0) 0.9697357 0.02018875 0.02081882
+## 
+## 
+## 
+## Summary for ds object
+## Number of observations :  124 
+## Distance range         :  0  -  4 
+## AIC                    :  304.3594 
+## Optimisation           :  mrds (nlminb) 
+## 
+## Detection function:
+##  Half-normal key function 
+## 
+## Detection function parameters 
+## Scale coefficient(s): 
+##              estimate        se
+## (Intercept) 0.2525377 0.1327279
+## sex1        0.5832341 0.2041094
+## 
+##            Estimate         SE        CV
+## Average p 0.5605421 0.04616356 0.0823552
+## 
+## 
+## Summary for trial object
+## 
+## Total AIC value =  399.2585 
+##                        Estimate          SE         CV
+## Average p             0.5435777  0.04643912 0.08543235
+## N in covered region 228.1182656 24.21303261 0.10614245
+
+# Check goodness-of-fit 
+ddf.gof(pi.ds.sex, main="PI trial configutation\nGolfTee DS model sex")
+
+ +Goodness of fit of point independence model with sex covariate in the distance sampling component and distance, sex and exposure in the mr component.

+Figure 7: Goodness of fit of point independence model with sex covariate in the distance sampling component and distance, sex and exposure in the mr component. +

+
+
## 
+## Goodness of fit results for ddf object
+## 
+## Chi-square tests
+## 
+## Distance sampling component:
+##           [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6] (1.6,2] (2,2.4] (2.4,2.8]
+## Observed   25.000    16.000    16.000    22.000   9.000  10.000    12.000
+## Expected   21.917    20.740    18.630    15.976  13.181  10.553     8.261
+## Chisquare   0.434     1.083     0.371     2.272   1.326   0.029     1.692
+##           (2.8,3.2] (3.2,3.6] (3.6,4]   Total
+## Observed      9.000     3.000   2.000 124.000
+## Expected      6.354     4.810   3.579 124.000
+## Chisquare     1.102     0.681   0.697   9.687
+## 
+## P = 0.20699 with 7 degrees of freedom
+## 
+## Mark-recapture component:
+## Capture History 01
+##           [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6] (1.6,2] (2,2.4] (2.4,2.8]
+## Observed        1         2         2         6       5       2         6
+## Expected        1         2         2         6       4       4         6
+## Chisquare       0         0         0         0       0       1         0
+##           (2.8,3.2] (3.2,3.6] (3.6,4] Total
+## Observed          6         2       6    38
+## Expected          7         2       5    38
+## Chisquare         0         0       0     2
+## Capture History 11
+##           [0,0.4] (0.4,0.8] (0.8,1.2] (1.2,1.6] (1.6,2] (2,2.4] (2.4,2.8]
+## Observed       21        15        16        20       8       8         9
+## Expected       21        15        16        20       9       6         9
+## Chisquare       0         0         0         0       0       1         0
+##           (2.8,3.2] (3.2,3.6] (3.6,4] Total
+## Observed          5         1       1   104
+## Expected          4         1       2   104
+## Chisquare         0         0       1     2
+## 
+## MR total chi-square = 3.3242  P = 0.76719 with 6 degrees of freedom
+## 
+## 
+## Total chi-square = 13.012  P = 0.44692 with 13 degrees of freedom
+## 
+## Distance sampling Cramer-von Mises test (unweighted)
+## Test statistic = 0.081285 p-value = 0.684457
+
+# Get abundance estimates 
+tee.abund.pi.ds.sex <- dht(model=pi.ds.sex, region.table=region,
+                    sample.table=samples, obs.table=obs)
+print(tee.abund.pi.ds.sex)
+
## Abundance and density estimates from distance sampling
+## Variance       : R2, N/L 
+## 
+## Summary statistics
+## 
+##   Region Area CoveredArea Effort   n  k        ER      se.ER      cv.ER
+## 1      1 1040        1040    130  72  6 0.5538462 0.02926903 0.05284685
+## 2      2  640         640     80  52  5 0.6500000 0.08292740 0.12758061
+## 3  Total 1680        1680    210 124 11 0.5904762 0.03641856 0.06167659
+## 
+## Summary for clusters
+## 
+## Abundance:
+##   Region Estimate       se        cv       lcl      ucl        df
+## 1      1 125.7678 12.50301 0.0994134 102.97968 153.5987 43.661605
+## 2      2 102.3504 17.53164 0.1712904  68.75816 152.3544  7.394232
+## 3  Total 228.1183 25.15313 0.1102635 182.12587 285.7252 28.045408
+## 
+## Density:
+##   Region  Estimate         se        cv        lcl       ucl        df
+## 1      1 0.1209306 0.01202212 0.0994134 0.09901892 0.1476911 43.661605
+## 2      2 0.1599226 0.02739319 0.1712904 0.10743463 0.2380538  7.394232
+## 3  Total 0.1357847 0.01497210 0.1102635 0.10840826 0.1700745 28.045408
+## 
+## Summary for individuals
+## 
+## Abundance:
+##   Region Estimate       se         cv      lcl      ucl        df
+## 1      1 395.0545 36.33887 0.09198445 329.0893 474.2422 79.293122
+## 2      2 299.7763 65.43246 0.21827099 175.5600 511.8809  5.685162
+## 3  Total 694.8307 84.25522 0.12126006 537.2149 898.6902 15.167148
+## 
+## Density:
+##   Region  Estimate         se         cv       lcl       ucl        df
+## 1      1 0.3798601 0.03494122 0.09198445 0.3164320 0.4560021 79.293122
+## 2      2 0.4684004 0.10223822 0.21827099 0.2743125 0.7998140  5.685162
+## 3  Total 0.4135897 0.05015192 0.12126006 0.3197708 0.5349347 15.167148
+## 
+## Expected cluster size
+##   Region Expected.S se.Expected.S cv.Expected.S
+## 1      1   3.141141     0.2081675    0.06627129
+## 2      2   2.928920     0.1866200    0.06371632
+## 3  Total   3.045923     0.1371508    0.04502767
+

This model estimated an abundance of 695, which is closest to the true value of all the models - it is still less than the true value indicating, perhaps, some unmodelled heterogeneity on the trackline (or perhaps just bad luck - remember this was only one survey).

+

Was this complex modelling worthwhile? In this case, the estimated \(p(0)\) for the best model was 0.97 (which is very close to 1). If we ran a conventional distance sampling analysis, pooling the data from the two observers, we should get a very robust estimate of true abundance.

+
+
+
+
+

References +

+
+
+Buckland, S. T., Laake, J. L., & Borchers, D. L. (2010). Double-observer line transect methods: Levels of independence. Biometrics, 66, 169–177. https://doi.org/10.1111/j.1541-0420.2009.01239.x +
+
+Laake, J., Borchers, D., Thomas, L., Miller, D., & Bishop, J. (2019). Mrds: Mark-recapture distance sampling. +
+
+
+
+
+
+ + + +
+ + + +
+
+ + + + + + + diff --git a/docs/articles/mrds-golftees_files/figure-html/bestfi-1.png b/docs/articles/mrds-golftees_files/figure-html/bestfi-1.png new file mode 100644 index 0000000000000000000000000000000000000000..696b148fbf4489abfbbf46f9f6fccf517ed45ff8 GIT binary patch literal 6150 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 Z4F=7(d$gT-Y5cpMZ>VdEE7QJC`VTm0l0pCg literal 0 HcmV?d00001 diff --git a/docs/articles/mrds-golftees_files/figure-html/dettabplot-1.png b/docs/articles/mrds-golftees_files/figure-html/dettabplot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd28964f48932ac8fdd1fafa2b479bfd7ba768d GIT binary patch literal 5577 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 bfE7s&0ZO>Pe@pE8D_K(`OT!ZVGvL1gu01@^ literal 0 HcmV?d00001 diff --git a/docs/articles/mrds-golftees_files/figure-html/fidetfn-1.png b/docs/articles/mrds-golftees_files/figure-html/fidetfn-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ca9cb71c1fdd5bd9a3369d326322035f93eaea GIT binary patch literal 10918 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 literal 0 HcmV?d00001 diff --git a/docs/articles/mrds-golftees_files/figure-html/pit-nocovar-1.png b/docs/articles/mrds-golftees_files/figure-html/pit-nocovar-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf6195eda089844923dbd0968837ccc38f843f3 GIT binary patch literal 6706 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 literal 0 HcmV?d00001 diff --git a/docs/articles/mrds-golftees_files/figure-html/plotdf-1.png b/docs/articles/mrds-golftees_files/figure-html/plotdf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..02837061664aa2a6b408c87bd05deab04bb01906 GIT binary patch literal 9248 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 literal 0 HcmV?d00001 diff --git a/docs/authors.html b/docs/authors.html new file mode 100644 index 00000000..7cebcad5 --- /dev/null +++ b/docs/authors.html @@ -0,0 +1,122 @@ + +Authors and Citation • mrds + Skip to contents + + +
+
+
+ +
+

Authors

+ +
  • +

    Jeff Laake. Author. +

    +
  • +
  • +

    David Borchers. Author. +

    +
  • +
  • +

    Len Thomas. Author. +

    +
  • +
  • +

    David Miller. Author. +

    +
  • +
  • +

    Jon Bishop. Author. +

    +
  • +
  • +

    Jonah McArthur. Author. +

    +
  • +
+ +
+

Citation

+

Source: DESCRIPTION

+ +

Laake J, Borchers D, Thomas L, Miller D, Bishop J, McArthur J (2024). +mrds: Mark-Recapture Distance Sampling. +R package version 2.3.0, https://github.com/DistanceDevelopment/mrds/. +

+
@Manual{,
+  title = {mrds: Mark-Recapture Distance Sampling},
+  author = {Jeff Laake and David Borchers and Len Thomas and David Miller and Jon Bishop and Jonah McArthur},
+  year = {2024},
+  note = {R package version 2.3.0},
+  url = {https://github.com/DistanceDevelopment/mrds/},
+}
+
+
+ + +
+ + + +
+ + + + + + + diff --git a/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 b/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fc71d944a5838fcf1a870298679652ccc81ee878 GIT binary patch literal 7112 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 literal 0 HcmV?d00001 diff --git a/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4mxK.woff2 b/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu4mxK.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..020729ef8d353ff843438008300bedee1f519380 GIT binary patch literal 15744 zcmV-`J%7S?Pew8T0RR9106l;J5&!@I0FHD306iK20RR9100000000000000000000 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 O=*P}hnT+8U0002VxO@Nr literal 0 HcmV?d00001 diff --git a/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 b/docs/deps/Roboto-0.4.9/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8a8de615eb2f70380f60b851f97814cdf1ccda94 GIT binary patch literal 11872 zcmV-mE}zkNPew8T0RR9104`tv5&!@I0COw=04@3e0RR9100000000000000000000 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

3C=zk= z=FT9oXFRlV-!M%QLW-d5Ng9qvNHPo0quuxCW|GVr^A<$++5gV&1XiGm#%`(nz;Cnn z`2|>rStm0SBVv(=nXq=ZVaL`+ow8(WS#d_LN|)s_@js_3%WEiWt7|)foeE&4T{;7p zD{d)x|7Rdv1WXX!`_8`G`>7PLfCM<2uB8+Jj%lnkyDepQ|8u(HkVx)2_&IbAk50;5 z|1+0D7~GCiudaB(G1cVYfP*d}TMqK;Yaz8vzfRePOk;-e*;2=ClCf7#b(Ux%M^EA% z%EM+V z($=lZB0VLNC0ik|KLkI4QzBbICxt)>r=CAdEhi;_vm?wr(YSTpVAz+MjqRQd%!x(R zncH4pPhgXz?OTJxiV+|K5AewN>`4(6F&v+60SX>Tlp&FVNvfNdW8I6J3*geM_#lyD#RojY1uuSZ-UzLQt77*o8|$U7`E<)M z-pGr(SC4IH>+$hn&Qy0Dues{Pgb+X(_KQ(% zDV*N>wZW0e7LR#Z#k{TQ?W05`-vTBQ6f=++288452JUj)HP$>{HNk^ysM5J%A{ukU z@qYwD3O)(~XoPDxrNYqTxo+St#|MORTos;AEa05Dh(cDp*5VRbRF@i3!y3c<5du!S z$Roirg}cF>iee1{5nOq9~@4fpm!|>x1qm-5>gUq*4%~5QdmYI?^czvO0A? z>V7soE9pGo(7&U9SO3j;*!0ljVZ;4<#2&~0z!J*Lv=OMb)-}l@EmI-hA`X)~ryNpm z1duf1L3!GVeltKuvr*1E7+r+&OdXZ@55<`Tc{>9EPy}ER23j;H2vRR8B7Nc!CNz}0 z)IcnV?8N|y*PvJcF;g0-1;s#(<31OKoW2X$JN=l>n>{dNsb{A-xTPfm%;(E|>IJOe zE&hGxL8PpK*`ipjTZ$&STA^2+%l$QQi^kL_tIIux!1(Ysw6juVA?Zdz5?5B^8iJ?p zuD)OLjDf5r%s5FUi4RQNo4aADtJbs^6$EC3?~G&@L2`vD0)3cwJ5XcWH3+)KxZvdY zQWLG4LVP7ggJ#jFY`4Z&w6g}?0w$I~22D>RYmv;$RFZ3Xf9picIWhH&Uj);*F~-t@>}G&-pg0DWcwLeN&diLEf(B>CHSC+{{JXQ^WazG+04()b45DOq?&x5iqzVzd4>goT!Z#YN5!_O+-M8*^ z5ZiXinv)^PKwWqDB>dIYGPYvywb2PulsU!w-=?WLYM9N*JMIuz zE9GOtx^zy(IE!T0b5yKx^@4tm@AiCmvKyT8KHg4Nsi7oeuc5waNMB&bk~SojYu%1x z$$G8AoJ*@s{tPmEfO}xoziiqGAs=_0xocbrR(|9OdzIKhrm5hc(cv<=3HZ^QXvzw} zeZ@HetKZ42dEA8}oJxd)7Pw#DkXTtbW;iMuFuX1rJ*4sO+rR=(O4mf}?)EmokFIUM zdTmY28VTS>uj)iM3vV=dlKn^b(gxPJAm>M3Y4V}(K6rpWu+sbb83etUbn@6GWy+VV zUsrSo#nbYX-)^COqI+;2{v_7mgBF53e0gTJec%4Bp1u3pZ+j$PE1aFxOKQ@S=s7#x zv2_(}ZQcH#($?vn?LdrQ7@0_EF@mzgo#&3!2toXQWMKlISCCYe6eNz}Z5dg-`s7tH z+Vgp{@nXj3+QmDU8V22KS}?wtpRgg$_{VFjvuARP90q}4|2#jpV(iqM{r3~ZiH#S_ zMbT{^Vz=$B+E^}p}b7hQd+f=1j$JC2W3Csst+`Q$IIxWwd7Bva&W_-gjgIM&1Tbex0}$(55uV7A<%quP|IbrseQ3S?*4r zzwDO8xb!fCWRo2Af2^iLmB!$~lJR<@(2>ihE>FajkMH}ysawOgo!fTG)o*cRXDePP zW{Y*Aip#aHJ+%IH9&q9Mckrg~Irx6Z4lc2xxU@fla38P-zMMuW7m`mG?kzhzrGYG5 z#_CxA`$2WX#fqvx(rd6_i_rzU;3}bNd*Pq^m5ul0?f#sY=2Uex|IH3Ejt6j~B|_<{arB5)|p_xO8Sm-e^j^hVhGS2E^#zc47ONodKqppw#ts zNWM5KY@4SUF~GM?SWr8TjK|xb>>e4!%MdEyr!Eyj@j5EZ^{c~{3(6LUxP|x}li{P{ zZTPDSEk2bDJ@Mpne4KIuO>{Uq;Y=@Xg11>=087tZyCR$qk~_1#XEZh5qE8gpSx{2i z$>TIThIoVogtm*_tTOxezqS=0gT&kt-QpDD6&&;g zooZ>J-1I>9>QD>AkE~ebFm7gmjUWO>54>@Fhh(c{)6O$S{q2r0adJUk4XbY$G1>h4 z&*Z(YitwHD{RQ(n^5E6)3?(Jyqo{VC2X4+Xd1yS24@RZ1z(9P+^ciu6D9g4(D6u>! z_XreKm?4Tlolg>MR0LahjF|+@xIB_yh?C0{Y#9Iyn3>fnf~=IG7Moxw-%22dbuBQ= z!Cb>(wZlU0{SQ@^XFNRS<~@^T`6fbZZvM+NyWpCim{st6`Ib;j(_}aaSB-8^^A!-r zWrbdaWm%zy`aV1d!gJOYdAsA9i?rC;#pDmbVnIPSMyYbKOBR>xygL`qEt5cZLP=-3FQ3F zkYJHP>qL@04I6<$E=7{P3@?E}Zbg#43LSw#?gUc5MyUpnTai>=hl|D40O6jtQPt&% zaaU|zHO-fdeNnVG9uVn$&Lq^ zS(3y@EdVCu%fr~(UYT3&I8akaE7u0p0Q?oTHJ7`6Ln>>o-7#}0fWF{6p*q4)kp+U$ zjq4Z@IinkWr6VZ?ag#08k>SNDvGwV*ZVDq-(O0vV5=Y%xie#UUBHyXlf_Qus#j+^O zyV$3@D$>1ADacQ2ZXq0du|Qk|N6q+zMM^*-$D~?JlnPdb_?+_Izt}59w%)xL%Cr*~ z5>+#2l3&+^5J!dhEZOI?i1eLD0A~X7^MQ8)d2Wm88GDe8xQMdWa!5Kp!sGIP@CmaMZhw$IZdYFn}0#)Zlr^p0k?lpwCRrDDNM$M-!UT>+mH#)^r2 z!Ain!Nn=O7rTEa$jy0m--Ya&}h)^9kD$?wh6~%6;5DcGynS(pdV|y)pjM(RPyYq;1 z3aocjQS-2&3$RB9Z&Tvy+s6}R5*s@hxwzcOQVN>VNyz$!y_SZJ;F;o(v0SlrnXboX zpbJETmOpVsMHC~H4*+V!0QUC%_ zpd43;-n(zMN~C>F++A(1&%5R(ukt#FV~e6QpHcFJwXm_!*_mekptJ?#7&BxXa2O09 z5Fx^bY-;=ZeEPoWSN*!b=_6z6oTeh7Y>E9rY;KrfYEM;9Q?H)sRXxA4JLZnLLVF-| zi4U>RwQI>Z&ZD*Uc>J6VFh2v>_zAx`5U=+G;b(E`zu{l^A>+7^n|BNL&JYRKhyTyB ze?isU0t!j2*C&llPbxyzI;}(AB8EVy@&rf$T4hU^0;$S_F&Q?I!&-lJ$k$+|jQ@VW zVoZJb?(e9<%eak048{M#qDLR)2yaI59Aemv@QTd@NyP~F9;`t}TLAHcmyBT_!^apd zFSJK`-e6Ip{|*&VvL_@$xaPzjO2Uw1)KnW~@Hpt8mlm-(B8Dl3izo#TV>pkp#p5Vf z6J!-*$PseF$3fDQng4mS2^M$UjhK=z10fR;_%R>!&z%tSzdWeWrbD2r2wBNIb$9H-!* zCwC0K;vf5-7DeMtwNt?2s~90tX8ka10DqAFRqxNLe?`;wrd*qiTc!z|9Xu zD*(6`v7dix{kcxF3F8A0jsifyAM;lh2=Cb-{SCbW5aeE#v|5sVM&%EHX+b+{5l)sI z?*dkL8*1|c3f?X-wGLc!8RTRM-1LAGAD}K9S)LhC*(On)iYd%-xbYKq_KlE|%`ESY z)aECsY$FI;CKR5w?`y?^D zCU#_kud!3yO(}R*o3>%hBemhYJ_NPk>1C1+e7MWdr4S zVlGp%2R*uMeiY0d3WhS5L-C07B#y_kZH%=TKrQEZ1iM)oDEqz6P?iL{m~<*M*3ZFM zRfWYxxSMOJaHk4G4FwfZzzMX|Qjtv)SFnv#)QxG;u9_;^f&eF$vWmVsKFmp{Tc%`4 zBvvImbG$mqT_vX+Crcw#^6qu>v=vnf-VUZZ%BvaCKFrR-p%od@{3!enXyzd=O@x1l zdqp;ZwX*V16v-nE1bO#^|f=L^E2ne1B zWt*O6%ejCs!jioDA|BxV>+{?P4VIda)qVKpF%OQLjP!0g| zmbPPH>RClx15;@Q!hv%xZ8%PkqES2|Y!PL*qhI*Jel^zW?!MN)^ih0gK6I(+?%ow~ znf?$WEnP({;gQ62N}x4Dh_K9!t^r2hehWdQ4Hyc`1VIp?iKc*n%0L$I?3ko1gn%;&hnVXR($|nn*^$U(z zAahAwc@@wSq9&eHy^y~b0h!%;0Xch#j-|`<((_o0?dbM8nPHUAQ?Ll2Ni+_Ec4m4%gc}8uEIkWaZ+Z{3?+T zW3%$tFMyLG7A_GBqtLf9lwk~y+9wtPW;tSH)3>7}ga+oy&oHI&?< z%)IERrjyNIthjpTITRYW%b_NB-%eq!vwoTBQW(VHkLsaoRzr(O9=|x{kUDHPJ^gq4|Kz=A8AuarWceV|?HoE~ZXR+t~kj%hY_g zzN_53etbAM_WkQ-RCnBUZ?(5&`bSR(>Yc$)JpAt9=9S&MEHN-Ub;;CWWxd@%e&dWoL6qcwf`|9xTPwy=@~J>p|+BGLAA1Qd<}3rUHC08lV! zIw%-vJ8m!@4<tA`t4 zQp?y}s=>FoYOYGh<=|w zsRBPBRFAkYV4|DEo+xYMf*rCSk+UO=;Jusm^@Lr3CHzOcbEV}tn mDy7jOQ>So*#`GSXMHgR6t8_&FAyjnpt&^@D+zAYKa3=u4bJ5NK literal 0 HcmV?d00001 diff --git a/docs/deps/Roboto-0.4.9/font.css b/docs/deps/Roboto-0.4.9/font.css new file mode 100644 index 00000000..171e30aa --- /dev/null +++ b/docs/deps/Roboto-0.4.9/font.css @@ -0,0 +1,63 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2'); + 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; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2'); + 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; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2'); + 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; +} diff --git a/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js b/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js new file mode 100644 index 00000000..e8f21f70 --- /dev/null +++ b/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map b/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map new file mode 100644 index 00000000..3863da8b --- /dev/null +++ b/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","_unused","defineProperty","configurable","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","DATA_API_KEY","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","forEach","styles","assign","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","attribute","requires","getBasePlacement","round","getUAString","uaData","userAgentData","brands","isArray","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","modifiers","visited","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","display","popperConfig","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","Offcanvas","blur","completeCallback","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_ACTIVATE","EVENT_CLICK","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","HOME_KEY","END_KEY","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/dom/data.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.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/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.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/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.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/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.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/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/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for
elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\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];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","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 };","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 { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","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 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 { 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}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\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 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 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 default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\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 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 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};","export default function getVariation(placement) {\n return placement.split('-')[1];\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};","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};","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 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}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If 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 \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 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 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}","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 `` and `` 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 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 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 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 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 { 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 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 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 { 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 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 { 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 { 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\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","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\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' +\n '
' +\n '
' +\n '
',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both