And now the full code…

plotGroupEllipses(siber.example, n = 100, p.interval = 0.95,
                  ci.mean = TRUE, lty = 1, lwd = 2)


# Calculate sumamry statistics for each group: TA, SEA and SEAc
group.ML <- groupMetricsML(siber.example)
print(group.ML)
           1.1      1.2      1.3      1.4      2.1
TA   1.5555360 14.86029 84.20837 43.81102 4.552414
SEA  0.5412062  5.35464 33.73813 15.87191 2.526144
SEAc 0.5712732  5.65212 35.61247 16.75368 2.947168
          2.2      2.3      2.4
TA   2.952808 4.434037 2.889293
SEA  1.666699 2.733655 1.873229
SEAc 1.944482 3.189264 2.185434

Using Bayesian Inference to calculate uncertainty around ellipses

So far these still just point-metrics that describe the width of the isotopic niche. That is, they are single numbers for each group, which means that we can’t compare one group to another in a statisical sense as we lack a measure of the uncertainty around each estimate. This is where we can use Bayesian Inference to quantify the error associated with fitting these ellipses to each group, that arises from both the number of samples we have, and also their distribution.

Essentially, what the MCMC algorithm does is generate a distribution of covariance matrices that to a greater or lesser extent (in terms of likelihood) describe the observed data. It does so, as is the general case in Bayesian Inference, by combing the prior probability with the likelihood of the data for a given covariance matrix.

SIBER uses the jags package to fit the Bayesian model and so we need to specify the parameters of the simulation run, including: run length, burn-in period, number of chains etc…

# fit the ellipses which uses an Inverse Wishart prior
# on the covariance matrix Sigma, and a vague normal prior on the 
# means. Fitting is via the JAGS method.
ellipses.posterior <- siberMVN(siber.example, parms, priors)
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 20
   Unobserved stochastic nodes: 3
   Total graph size: 35

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 20
   Unobserved stochastic nodes: 3
   Total graph size: 35

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 20
   Unobserved stochastic nodes: 3
   Total graph size: 35

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 20
   Unobserved stochastic nodes: 3
   Total graph size: 35

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 8
   Unobserved stochastic nodes: 3
   Total graph size: 23

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 8
   Unobserved stochastic nodes: 3
   Total graph size: 23

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 8
   Unobserved stochastic nodes: 3
   Total graph size: 23

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%
Compiling model graph
   Resolving undeclared variables
   Allocating nodes
Graph information:
   Observed stochastic nodes: 8
   Unobserved stochastic nodes: 3
   Total graph size: 23

Initializing model


  |                                                        
  |                                                  |   0%
  |                                                        
  |*                                                 |   2%
  |                                                        
  |**                                                |   4%
  |                                                        
  |***                                               |   6%
  |                                                        
  |****                                              |   8%
  |                                                        
  |*****                                             |  10%
  |                                                        
  |******                                            |  12%
  |                                                        
  |*******                                           |  14%
  |                                                        
  |********                                          |  16%
  |                                                        
  |*********                                         |  18%
  |                                                        
  |**********                                        |  20%
  |                                                        
  |***********                                       |  22%
  |                                                        
  |************                                      |  24%
  |                                                        
  |*************                                     |  26%
  |                                                        
  |**************                                    |  28%
  |                                                        
  |***************                                   |  30%
  |                                                        
  |****************                                  |  32%
  |                                                        
  |*****************                                 |  34%
  |                                                        
  |******************                                |  36%
  |                                                        
  |*******************                               |  38%
  |                                                        
  |********************                              |  40%
  |                                                        
  |*********************                             |  42%
  |                                                        
  |**********************                            |  44%
  |                                                        
  |***********************                           |  46%
  |                                                        
  |************************                          |  48%
  |                                                        
  |*************************                         |  50%
  |                                                        
  |**************************                        |  52%
  |                                                        
  |***************************                       |  54%
  |                                                        
  |****************************                      |  56%
  |                                                        
  |*****************************                     |  58%
  |                                                        
  |******************************                    |  60%
  |                                                        
  |*******************************                   |  62%
  |                                                        
  |********************************                  |  64%
  |                                                        
  |*********************************                 |  66%
  |                                                        
  |**********************************                |  68%
  |                                                        
  |***********************************               |  70%
  |                                                        
  |************************************              |  72%
  |                                                        
  |*************************************             |  74%
  |                                                        
  |**************************************            |  76%
  |                                                        
  |***************************************           |  78%
  |                                                        
  |****************************************          |  80%
  |                                                        
  |*****************************************         |  82%
  |                                                        
  |******************************************        |  84%
  |                                                        
  |*******************************************       |  86%
  |                                                        
  |********************************************      |  88%
  |                                                        
  |*********************************************     |  90%
  |                                                        
  |**********************************************    |  92%
  |                                                        
  |***********************************************   |  94%
  |                                                        
  |************************************************  |  96%
  |                                                        
  |************************************************* |  98%
  |                                                        
  |**************************************************| 100%

What we end up with is a range of ellipses that could explain the data, with more of them clustered around the most likely solution. However, one cannot simply take an average across these covariance matrices, as there are strict mathematical properties that must be maintained. The result of this is that it is not possible to plot a mean, median or modal Bayesian Standard Ellipse; instead we must calculate each one of the ellipse’s area, and then present summary statistics of this derived measurement. SIBER contains a function that will automatically loop over all the groups and do this.

The plots below represent the posterior distribution of the SEA_B fitted to each of the 4 groups in our dataset.


Comparing the posterior distributions

In order to test whether one group’s ellipse is smaller or larger than another, we can simply calculate the probability that its posterior distribution is smaller (or larger). This is acheived by comparing each pair of posterior draws for both groups, and dtermining which is smaller in magnitude. We then find the proportion of draws that are smaller, and this is a direct proxy for the probability that one group’s posterior distribution (of ellipse size in this case) is smaller than the other.

Here, we first calculate the proportion, and hence probability, of the SEA.B for group 1 being smaller than the SEA.B for group 2.

print(Pg1.lt.g2)
[1] 1

So, in this case, all of the estimates for groups 1’s ellipse are smaller than for group 2; although we could probably guess at this given that there appears to be no overlap between then 95% credible intervals of the two groups (see the figure above).

Then we can do exactly the same for groups 1 and 3.

Pg1.lt.g3 <- sum( SEA.B[,1] < SEA.B[,3] ) / nrow(SEA.B)
print(Pg1.lt.g3 )
[1] 1

And then for the other pairings:

Pg5.lt.g7 <- sum( SEA.B[,5] < SEA.B[,7] ) / nrow(SEA.B)
print(Pg5.lt.g7)
[1] 0.56325

Overlap Between Ellipses

One can calculate the overlap between two (or more) ellipses. In the first instance, this overlap is simply the area, in units of per mil squared, contained by the shape that lies within the overlapping region. This overlap is most easily calculated by using the SEAc of each ellipse.

The overlap between the SEAc for groups 3 and 4 in Community 1 is given by:


overlap.G3.G4 <- maxLikOverlap("1.3", "1.4", siber.example, p = 0.95, n =100)

And the overlap between SEAc of groups 1.2 and 2.1 is given by:

overlap.C1G2.C2G1 <- maxLikOverlap("1.2", "2.1", siber.example, p = 0.95, n = 100)

One might then wish to calculate the proportion overlap; athough one then runs into a choice as to what the demoninator will be in the equation. You could for instance calculate the proportion of A that overlaps with B, the proporiton of B that overlaps with A, or the proportion of A and B that overlap with each other.

prop.of.first <- as.numeric(overlap.G3.G4["overlap"] / overlap.G3.G4["area.1"])
print(prop.of.first)
[1] 0.1506049
prop.of.second <- as.numeric(overlap.G3.G4["overlap"] / overlap.G3.G4["area.2"])
print(prop.of.second)
[1] 0.3201333
prop.of.both <- as.numeric(overlap.G3.G4["overlap"] / (overlap.G3.G4["area.1"] + overlap.G3.G4["area.2"]))
print(prop.of.both)
[1] 0.1024213
prop.of.both.less.overlap <- as.numeric(overlap.G3.G4["overlap"] / (overlap.G3.G4["area.1"] + overlap.G3.G4["area.2"] - overlap.G3.G4["overlap"]))
print(prop.of.both.less.overlap)
[1] 0.1141085

A problem with this simple overlap calculation is that it yields a point-estimate of overlap based on the maximum likelihood estimated SEA_c. One can instead calculate a distribution of overlap based on the posterior distirbutions of the fitted ellipses. It can be a bit slow to calculate this overlap, so you may want to drop the number of draws if your computer is slow.

bayes.overlap.G3.G4 <- bayesianOverlap("1.3", "1.4",
                                       ellipses.posterior, 
                                       draws = 100, 
                                       p.interval = 0.95,
                                       n = 360)
print(bayes.overlap.G3.G4)
NA
NA

And summarise the credible intervals of the Bayesian overlap output. Note that this code does not work well on the small number of posterior draws we are using for this basic example - for one it returns negative values which is not possible, but is arising as the smoother has not got enough information to stay close to or within the positive number range.

# and we can calculate the corresponding credible intervals using
# our code from above again
# call to hdrcde:hdr using lapply()
overlap.credibles <- lapply(
  as.data.frame(bayes.overlap.G3.G4), 
  function(x,...){tmp<-hdrcde::hdr(x)$hdr},
  prob = cr.p)

print(overlap.credibles)
$area1
         [,1]     [,2]
99%  86.48869 326.7752
95% 119.41736 287.8108
50% 167.58476 234.0323

$area2
        [,1]     [,2]
99% 44.72448 157.4440
95% 57.70316 138.4100
50% 80.55859 108.0818

$overlap
         [,1]     [,2]
99% -9.264529 81.17949
95%  1.018277 60.51250
50% 17.235467 34.21211
LS0tCnRpdGxlOiAiQ29tcGFyaW5nIHBvcHVsYXRpb25zIHdpdGggU0lCRVIgZWxsaXBzZXMiCmF1dGhvcjogIkFuZHJldyBMIEphY2tzb24iCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKQW5kIG5vdyB0aGUgZnVsbCBjb2RlLi4uCgpgYGB7ciBpbXBvcnQtZGF0YSwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDZ9CgojIHJtKGxpc3QgPSBscygpKSAjIGNsZWFyIHRoZSBtZW1vcnkgb2Ygb2JqZWN0cwoKIyBsb2FkIHRoZSBzaWFyIHBhY2thZ2Ugb2YgZnVuY3Rpb25zCmxpYnJhcnkoU0lCRVIpCgojIHJlYWQgaW4gdGhlIGRhdGEKIyByZWFkIGluIHRoZSBkYXRhCm15ZGF0YSA8LSByZWFkLmNzdigiLi4vZGF0YS9leGFtcGxlX2xheW1hbl9kYXRhX2FsbC5jc3YiLAogICAgICAgICAgICAgICAgICAgaGVhZGVyPVRSVUUpCgojIGNyZWF0ZSB0aGUgc2liZXIgb2JqZWN0CnNpYmVyLmV4YW1wbGUgPC0gY3JlYXRlU2liZXJPYmplY3QobXlkYXRhKQoKIyBDcmVhdGUgbGlzdHMgb2YgcGxvdHRpbmcgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBvbndhcmRzIHRvIGVhY2ggCiMgb2YgdGhlIHRocmVlIHBsb3R0aW5nIGZ1bmN0aW9ucy4KY29tbXVuaXR5Lmh1bGxzLmFyZ3MgPC0gbGlzdChjb2wgPSAxLCBsdHkgPSAxLCBsd2QgPSAxKQpncm91cC5lbGxpcHNlcy5hcmdzICA8LSBsaXN0KG4gPSAxMDAsIHAuaW50ZXJ2YWwgPSAwLjk1LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdHkgPSAxLCBsd2QgPSAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbC5zYW1wbGUgPSBUUlVFKQpncm91cC5odWxsLmFyZ3MgICAgICA8LSBsaXN0KGx0eSA9IDIsIGNvbCA9ICJncmV5MjAiKQoKCiMgZWxsaXBzZXMgYW5kIGdyb3VwLmh1bGxzIGFyZSBzZXQgdG8gVFJVRSBvciBUIGZvciBzaG9ydCB0byBmb3JjZQojIHRoZWlyIHBsb3R0aW5nLiAKcGFyKG1mcm93PWMoMSwxKSkKcGxvdFNpYmVyT2JqZWN0KHNpYmVyLmV4YW1wbGUsCiAgICAgICAgICAgICAgICAgIGF4LnBhZCA9IDIsIAogICAgICAgICAgICAgICAgICBodWxscyA9IEZBTFNFLCBjb21tdW5pdHkuaHVsbHMuYXJncywgCiAgICAgICAgICAgICAgICAgIGVsbGlwc2VzID0gVFJVRSwgZ3JvdXAuZWxsaXBzZXMuYXJncywKICAgICAgICAgICAgICAgICAgZ3JvdXAuaHVsbHMgPSBUUlVFLCBncm91cC5odWxsLmFyZ3MsCiAgICAgICAgICAgICAgICAgIGJ0eSA9ICJMIiwKICAgICAgICAgICAgICAgICAgaXNvLm9yZGVyID0gYygxLDIpLAogICAgICAgICAgICAgICAgICB4bGFiID0gZXhwcmVzc2lvbih7ZGVsdGF9XjEzKkN+J1x1MjAzMCcpLAogICAgICAgICAgICAgICAgICB5bGFiID0gZXhwcmVzc2lvbih7ZGVsdGF9XjE1Kk5+J1x1MjAzMCcpCiAgICAgICAgICAgICAgICAgICkKCgojIFlvdSBjYW4gYWRkIG1vcmUgZWxsaXBzZXMgYnkgZGlyZWN0bHkgY2FsbGluZyBwbG90Lmdyb3VwLmVsbGlwc2VzKCkKIyBBZGQgYW4gYWRkaXRpb25hbCBwLmludGVydmFsICUgcHJlZGljdGlvbiBlbGxpbHBzZQpwbG90R3JvdXBFbGxpcHNlcyhzaWJlci5leGFtcGxlLCBuID0gMTAwLCBwLmludGVydmFsID0gMC41MCwKICAgICAgICAgICAgICAgICAgICBsdHkgPSAxLCBsd2QgPSAyLCBzbWFsbC5zYW1wbGUgPSBUUlVFKQoKIyBvciB5b3UgY2FuIGFkZCB0aGUgWFglIGNvbmZpZGVuY2UgaW50ZXJ2YWwgYXJvdW5kIHRoZSBiaXZhcmlhdGUgbWVhbnMKIyBieSBzcGVjaWZ5aW5nIGNpLm1lYW4gPSBUIGFsb25nIHdpdGggd2hhdGV2ZXIgcC5pbnRlcnZhbCB5b3Ugd2FudC4KcGxvdEdyb3VwRWxsaXBzZXMoc2liZXIuZXhhbXBsZSwgbiA9IDEwMCwgcC5pbnRlcnZhbCA9IDAuOTUsCiAgICAgICAgICAgICAgICAgIGNpLm1lYW4gPSBUUlVFLCBsdHkgPSAxLCBsd2QgPSAyKQoKCiMgQ2FsY3VsYXRlIHN1bWFtcnkgc3RhdGlzdGljcyBmb3IgZWFjaCBncm91cDogVEEsIFNFQSBhbmQgU0VBYwpncm91cC5NTCA8LSBncm91cE1ldHJpY3NNTChzaWJlci5leGFtcGxlKQpwcmludChncm91cC5NTCkKCiMgYWRkIGEgbGVnZW5kCmxlZ2VuZCgidG9wcmlnaHQiLCBjb2xuYW1lcyhncm91cC5NTCksIAogICAgICAgcGNoID0gYygxLDEsMSwxLDIsMiwyLDIpLCBjb2wgPSBjKDE6NCwgMTo0KSwgbHR5ID0gMSkKCmBgYAoKKioqCgojIyBVc2luZyBCYXllc2lhbiBJbmZlcmVuY2UgdG8gY2FsY3VsYXRlIHVuY2VydGFpbnR5IGFyb3VuZCBlbGxpcHNlcwpTbyBmYXIgdGhlc2Ugc3RpbGwganVzdCBwb2ludC1tZXRyaWNzIHRoYXQgZGVzY3JpYmUgdGhlIHdpZHRoIG9mIHRoZSBpc290b3BpYyBuaWNoZS4gVGhhdCBpcywgdGhleSBhcmUgc2luZ2xlIG51bWJlcnMgZm9yIGVhY2ggZ3JvdXAsIHdoaWNoIG1lYW5zIHRoYXQgd2UgY2FuJ3QgY29tcGFyZSBvbmUgZ3JvdXAgdG8gYW5vdGhlciBpbiBhIHN0YXRpc2ljYWwgc2Vuc2UgYXMgd2UgbGFjayBhIG1lYXN1cmUgb2YgdGhlIHVuY2VydGFpbnR5IGFyb3VuZCBlYWNoIGVzdGltYXRlLiBUaGlzIGlzIHdoZXJlIHdlIGNhbiB1c2UgQmF5ZXNpYW4gSW5mZXJlbmNlIHRvIHF1YW50aWZ5IHRoZSBlcnJvciBhc3NvY2lhdGVkIHdpdGggZml0dGluZyB0aGVzZSBlbGxpcHNlcyB0byBlYWNoIGdyb3VwLCB0aGF0IGFyaXNlcyBmcm9tIGJvdGggdGhlIG51bWJlciBvZiBzYW1wbGVzIHdlIGhhdmUsIGFuZCBhbHNvIHRoZWlyIGRpc3RyaWJ1dGlvbi4KCkVzc2VudGlhbGx5LCB3aGF0IHRoZSBNQ01DIGFsZ29yaXRobSBkb2VzIGlzIGdlbmVyYXRlIGEgZGlzdHJpYnV0aW9uIG9mIGNvdmFyaWFuY2UgbWF0cmljZXMgdGhhdCB0byBhIGdyZWF0ZXIgb3IgbGVzc2VyIGV4dGVudCAoaW4gdGVybXMgb2YgbGlrZWxpaG9vZCkgZGVzY3JpYmUgdGhlIG9ic2VydmVkIGRhdGEuIEl0IGRvZXMgc28sIGFzIGlzIHRoZSBnZW5lcmFsIGNhc2UgaW4gQmF5ZXNpYW4gSW5mZXJlbmNlLCBieSBjb21iaW5nIHRoZSBwcmlvciBwcm9iYWJpbGl0eSB3aXRoIHRoZSBsaWtlbGlob29kIG9mIHRoZSBkYXRhIGZvciBhIGdpdmVuIGNvdmFyaWFuY2UgbWF0cml4LgoKU0lCRVIgdXNlcyB0aGUgamFncyBwYWNrYWdlIHRvIGZpdCB0aGUgQmF5ZXNpYW4gbW9kZWwgYW5kIHNvIHdlIG5lZWQgdG8gc3BlY2lmeSB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2ltdWxhdGlvbiBydW4sIGluY2x1ZGluZzogcnVuIGxlbmd0aCwgYnVybi1pbiBwZXJpb2QsIG51bWJlciBvZiBjaGFpbnMgZXRjLi4uCgpgYGB7ciBmaXQtYmF5ZXN9CgojIG9wdGlvbnMgZm9yIHJ1bm5pbmcgamFncwpwYXJtcyA8LSBsaXN0KCkKcGFybXMkbi5pdGVyIDwtIDIgKiAxMF40ICAgIyBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW4gdGhlIG1vZGVsIGZvcgpwYXJtcyRuLmJ1cm5pbiA8LSAxICogMTBeMyAjIGRpc2NhcmQgdGhlIGZpcnN0IHNldCBvZiB2YWx1ZXMKcGFybXMkbi50aGluIDwtIDEwICAgICAjIHRoaW4gdGhlIHBvc3RlcmlvciBieSB0aGlzIG1hbnkKcGFybXMkbi5jaGFpbnMgPC0gMiAgICAgICAgIyBydW4gdGhpcyBtYW55IGNoYWlucwoKIyBkZWZpbmUgdGhlIHByaW9ycwpwcmlvcnMgPC0gbGlzdCgpCnByaW9ycyRSIDwtIDEgKiBkaWFnKDIpCnByaW9ycyRrIDwtIDIKcHJpb3JzJHRhdS5tdSA8LSAxLjBFLTMKCiMgZml0IHRoZSBlbGxpcHNlcyB3aGljaCB1c2VzIGFuIEludmVyc2UgV2lzaGFydCBwcmlvcgojIG9uIHRoZSBjb3ZhcmlhbmNlIG1hdHJpeCBTaWdtYSwgYW5kIGEgdmFndWUgbm9ybWFsIHByaW9yIG9uIHRoZSAKIyBtZWFucy4gRml0dGluZyBpcyB2aWEgdGhlIEpBR1MgbWV0aG9kLgplbGxpcHNlcy5wb3N0ZXJpb3IgPC0gc2liZXJNVk4oc2liZXIuZXhhbXBsZSwgcGFybXMsIHByaW9ycykKCmBgYAoKV2hhdCB3ZSBlbmQgdXAgd2l0aCBpcyBhIHJhbmdlIG9mIGVsbGlwc2VzIHRoYXQgY291bGQgZXhwbGFpbiB0aGUgZGF0YSwgd2l0aCBtb3JlIG9mIHRoZW0gY2x1c3RlcmVkIGFyb3VuZCB0aGUgbW9zdCBsaWtlbHkgc29sdXRpb24uIEhvd2V2ZXIsIG9uZSBjYW5ub3Qgc2ltcGx5IHRha2UgYW4gYXZlcmFnZSBhY3Jvc3MgdGhlc2UgY292YXJpYW5jZSBtYXRyaWNlcywgYXMgdGhlcmUgYXJlIHN0cmljdCBtYXRoZW1hdGljYWwgcHJvcGVydGllcyB0aGF0IG11c3QgYmUgbWFpbnRhaW5lZC4gVGhlIHJlc3VsdCBvZiB0aGlzIGlzIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHBsb3QgYSBtZWFuLCBtZWRpYW4gb3IgbW9kYWwgQmF5ZXNpYW4gU3RhbmRhcmQgRWxsaXBzZTsgaW5zdGVhZCB3ZSBtdXN0IGNhbGN1bGF0ZSBlYWNoIG9uZSBvZiB0aGUgZWxsaXBzZSdzIGFyZWEsIGFuZCB0aGVuIHByZXNlbnQgc3VtbWFyeSBzdGF0aXN0aWNzIG9mIHRoaXMgZGVyaXZlZCBtZWFzdXJlbWVudC4gU0lCRVIgY29udGFpbnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBsb29wIG92ZXIgYWxsIHRoZSBncm91cHMgYW5kIGRvIHRoaXMuCgpUaGUgcGxvdHMgYmVsb3cgcmVwcmVzZW50IHRoZSBwb3N0ZXJpb3IgZGlzdHJpYnV0aW9uIG9mIHRoZSBTRUFfQiBmaXR0ZWQgdG8gZWFjaCBvZiB0aGUgNCBncm91cHMgaW4gb3VyIGRhdGFzZXQuCgpgYGB7ciBwbG90LWRhdGEsIGZpZy53aWR0aCA9IDEwLCBmaWcuaGVpZ2h0ID0gNn0KIyAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUGxvdCBvdXQgc29tZSBvZiB0aGUgZGF0YSBhbmQgcmVzdWx0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgVGhlIHBvc3RlcmlvciBlc3RpbWF0ZXMgb2YgdGhlIGVsbGlwc2VzIGZvciBlYWNoIGdyb3VwIGNhbiBiZSB1c2VkIHRvCiMgY2FsY3VsYXRlIHRoZSBTRUEuQiBmb3IgZWFjaCBncm91cC4KU0VBLkIgPC0gc2liZXJFbGxpcHNlcyhlbGxpcHNlcy5wb3N0ZXJpb3IpCgpzaWJlckRlbnNpdHlQbG90KFNFQS5CLCB4dGlja2xhYmVscyA9IGNvbG5hbWVzKGdyb3VwLk1MKSwgCiAgICAgICAgICAgICAgICB4bGFiID0gYygiQ29tbXVuaXR5IHwgR3JvdXAiKSwKICAgICAgICAgICAgICAgIHlsYWIgPSBleHByZXNzaW9uKCJTdGFuZGFyZCBFbGxpcHNlIEFyZWEgIiAoJ1x1MjAzMCcgXjIpICksCiAgICAgICAgICAgICAgICBidHkgPSAiTCIsCiAgICAgICAgICAgICAgICBsYXMgPSAxLAogICAgICAgICAgICAgICAgbWFpbiA9ICJTSUJFUiBlbGxpcHNlcyBvbiBlYWNoIGdyb3VwIiwKICAgICAgICAgICAgICAgIGN0ID0gIm1lZGlhbiIKICAgICAgICAgICAgICAgICkKCiMgQWRkIHJlZCB4J3MgZm9yIHRoZSBNTCBlc3RpbWF0ZWQgU0VBLWMKcG9pbnRzKDE6bmNvbChTRUEuQiksIGdyb3VwLk1MWzMsXSwgY29sPSJyZWQiLCBwY2ggPSAieCIsIGx3ZCA9IDIpCgojIENhbGN1bGF0ZSBzb21lIGNyZWRpYmxlIGludGVydmFscyAKY3IucCA8LSBjKDAuNSwgMC45NSwgMC45OSkgIyB2ZWN0b3Igb2YgcXVhbnRpbGVzCgojIGNhbGwgdG8gaGRyY2RlOmhkciB1c2luZyBsYXBwbHkoKQpTRUEuQi5jcmVkaWJsZXMgPC0gbGFwcGx5KAogIGFzLmRhdGEuZnJhbWUoU0VBLkIpLCAKICBmdW5jdGlvbih4LC4uLil7dG1wPC1oZHJjZGU6Omhkcih4KSRoZHJ9LAogIHByb2IgPSBjci5wKQoKcHJpbnQoU0VBLkIuY3JlZGlibGVzKQoKIyBkbyBzaW1pbGFyIHRvIGdldCB0aGUgbW9kZXMsIHRha2luZyBjYXJlIHRvIHBpY2sgdXAgbXVsdGltb2RhbCBwb3N0ZXJpb3IKIyBkaXN0cmlidXRpb25zIGlmIHByZXNlbnQKU0VBLkIubW9kZXMgPC0gbGFwcGx5KAogIGFzLmRhdGEuZnJhbWUoU0VBLkIpLCAKICBmdW5jdGlvbih4LC4uLil7dG1wPC1oZHJjZGU6Omhkcih4KSRtb2RlfSwKICBwcm9iID0gY3IucCwgYWxsLm1vZGVzPVQpCgpwcmludChTRUEuQi5tb2RlcykKYGBgCgoqKioKCiMjIENvbXBhcmluZyB0aGUgcG9zdGVyaW9yIGRpc3RyaWJ1dGlvbnMKCkluIG9yZGVyIHRvIHRlc3Qgd2hldGhlciBvbmUgZ3JvdXAncyBlbGxpcHNlIGlzIHNtYWxsZXIgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciwgd2UgY2FuIHNpbXBseSBjYWxjdWxhdGUgdGhlIHByb2JhYmlsaXR5IHRoYXQgaXRzIHBvc3RlcmlvciBkaXN0cmlidXRpb24gaXMgc21hbGxlciAob3IgbGFyZ2VyKS4gVGhpcyBpcyBhY2hlaXZlZCBieSBjb21wYXJpbmcgZWFjaCBwYWlyIG9mIHBvc3RlcmlvciBkcmF3cyBmb3IgYm90aCBncm91cHMsIGFuZCBkdGVybWluaW5nIHdoaWNoIGlzIHNtYWxsZXIgaW4gbWFnbml0dWRlLiBXZSB0aGVuIGZpbmQgdGhlIHByb3BvcnRpb24gb2YgZHJhd3MgdGhhdCBhcmUgc21hbGxlciwgYW5kIHRoaXMgaXMgYSBkaXJlY3QgcHJveHkgZm9yIHRoZSBwcm9iYWJpbGl0eSB0aGF0IG9uZSBncm91cCdzIHBvc3RlcmlvciBkaXN0cmlidXRpb24gKG9mIGVsbGlwc2Ugc2l6ZSBpbiB0aGlzIGNhc2UpIGlzIHNtYWxsZXIgdGhhbiB0aGUgb3RoZXIuCgoKSGVyZSwgd2UgZmlyc3QgY2FsY3VsYXRlIHRoZSBwcm9wb3J0aW9uLCBhbmQgaGVuY2UgcHJvYmFiaWxpdHksIG9mIHRoZSBTRUEuQiBmb3IgZ3JvdXAgMSBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIFNFQS5CIGZvciBncm91cCAyLgoKYGBge3IgcHJvYi1kaWZmLWcxMn0KUGcxLmx0LmcyIDwtIHN1bSggU0VBLkJbLDFdIDwgU0VBLkJbLDJdICkgLyBucm93KFNFQS5CKQpwcmludChQZzEubHQuZzIpCmBgYAoKU28sIGluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSBlc3RpbWF0ZXMgZm9yIGdyb3VwcyAxJ3MgZWxsaXBzZSBhcmUgc21hbGxlciB0aGFuIGZvciBncm91cCAyOyBhbHRob3VnaCB3ZSBjb3VsZCBwcm9iYWJseSBndWVzcyBhdCB0aGlzIGdpdmVuIHRoYXQgdGhlcmUgYXBwZWFycyB0byBiZSBubyBvdmVybGFwIGJldHdlZW4gdGhlbiA5NSUgY3JlZGlibGUgaW50ZXJ2YWxzIG9mIHRoZSB0d28gZ3JvdXBzIChzZWUgdGhlIGZpZ3VyZSBhYm92ZSkuCgpUaGVuIHdlIGNhbiBkbyBleGFjdGx5IHRoZSBzYW1lIGZvciBncm91cHMgMSBhbmQgMy4KCmBgYHtyIHByb2ItZGlmZi1nMTN9ClBnMS5sdC5nMyA8LSBzdW0oIFNFQS5CWywxXSA8IFNFQS5CWywzXSApIC8gbnJvdyhTRUEuQikKcHJpbnQoUGcxLmx0LmczICkKYGBgCgpBbmQgdGhlbiBmb3IgdGhlIG90aGVyIHBhaXJpbmdzOgoKYGBge3IgcHJvYi1kaWZmLWFsbH0KUGcxLmx0Lmc0IDwtIHN1bSggU0VBLkJbLDFdIDwgU0VBLkJbLDRdICkgLyBucm93KFNFQS5CKQpwcmludChQZzEubHQuZzQpCgpQZzIubHQuZzMgPC0gc3VtKCBTRUEuQlssMl0gPCBTRUEuQlssM10gKSAvIG5yb3coU0VBLkIpCnByaW50KFBnMi5sdC5nMykKClBnMy5sdC5nNCA8LSBzdW0oIFNFQS5CWywzXSA8IFNFQS5CWyw0XSApIC8gbnJvdyhTRUEuQikKcHJpbnQoUGczLmx0Lmc0KQoKUGc1Lmx0Lmc3IDwtIHN1bSggU0VBLkJbLDVdIDwgU0VBLkJbLDddICkgLyBucm93KFNFQS5CKQpwcmludChQZzUubHQuZzcpCmBgYAoKKioqCgojIyBPdmVybGFwIEJldHdlZW4gRWxsaXBzZXMKT25lIGNhbiBjYWxjdWxhdGUgdGhlIG92ZXJsYXAgYmV0d2VlbiB0d28gKG9yIG1vcmUpIGVsbGlwc2VzLiBJbiB0aGUgZmlyc3QgaW5zdGFuY2UsIHRoaXMgb3ZlcmxhcCBpcyBzaW1wbHkgdGhlIGFyZWEsIGluIHVuaXRzIG9mIHBlciBtaWwgc3F1YXJlZCwgY29udGFpbmVkIGJ5IHRoZSBzaGFwZSB0aGF0IGxpZXMgd2l0aGluIHRoZSBvdmVybGFwcGluZyByZWdpb24uIFRoaXMgb3ZlcmxhcCBpcyBtb3N0IGVhc2lseSBjYWxjdWxhdGVkIGJ5IHVzaW5nIHRoZSBTRUFjIG9mIGVhY2ggZWxsaXBzZS4KClRoZSBvdmVybGFwIGJldHdlZW4gdGhlIFNFQWMgZm9yIGdyb3VwcyAzIGFuZCA0IGluIENvbW11bml0eSAxIGlzIGdpdmVuIGJ5OgoKYGBge3IgTUwtb3ZlcmxhcH0KCm92ZXJsYXAuRzMuRzQgPC0gbWF4TGlrT3ZlcmxhcCgiMS4zIiwgIjEuNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJlci5leGFtcGxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAwLjk1LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPTEwMCkKCmBgYAoKCkFuZCB0aGUgb3ZlcmxhcCBiZXR3ZWVuIFNFQWMgb2YgZ3JvdXBzIDEuMiBhbmQgMi4xIGlzIGdpdmVuIGJ5OgoKYGBge3J9Cm92ZXJsYXAuQzFHMi5DMkcxIDwtIG1heExpa092ZXJsYXAoIjEuMiIsICIyLjEiLCBzaWJlci5leGFtcGxlLCBwID0gMC45NSwgbiA9IDEwMCkKYGBgCgpPbmUgbWlnaHQgdGhlbiB3aXNoIHRvIGNhbGN1bGF0ZSB0aGUgcHJvcG9ydGlvbiBvdmVybGFwOyBhdGhvdWdoIG9uZSB0aGVuIHJ1bnMgaW50byBhIGNob2ljZSBhcyB0byB3aGF0IHRoZSBkZW1vbmluYXRvciB3aWxsIGJlIGluIHRoZSBlcXVhdGlvbi4gWW91IGNvdWxkIGZvciBpbnN0YW5jZSBjYWxjdWxhdGUgdGhlIHByb3BvcnRpb24gb2YgQSB0aGF0IG92ZXJsYXBzIHdpdGggQiwgdGhlIHByb3Bvcml0b24gb2YgQiB0aGF0IG92ZXJsYXBzIHdpdGggQSwgb3IgdGhlIHByb3BvcnRpb24gb2YgQSBhbmQgQiB0aGF0IG92ZXJsYXAgd2l0aCBlYWNoIG90aGVyLgoKYGBge3IgTUwtb3ZlcmxhcC1wcm9wb3J0aW9uc30KcHJvcC5vZi5maXJzdCA8LSBhcy5udW1lcmljKG92ZXJsYXAuRzMuRzRbIm92ZXJsYXAiXSAvIG92ZXJsYXAuRzMuRzRbImFyZWEuMSJdKQpwcmludChwcm9wLm9mLmZpcnN0KQoKcHJvcC5vZi5zZWNvbmQgPC0gYXMubnVtZXJpYyhvdmVybGFwLkczLkc0WyJvdmVybGFwIl0gLyBvdmVybGFwLkczLkc0WyJhcmVhLjIiXSkKcHJpbnQocHJvcC5vZi5zZWNvbmQpCgpwcm9wLm9mLmJvdGggPC0gYXMubnVtZXJpYyhvdmVybGFwLkczLkc0WyJvdmVybGFwIl0gLyAob3ZlcmxhcC5HMy5HNFsiYXJlYS4xIl0gKyBvdmVybGFwLkczLkc0WyJhcmVhLjIiXSkpCnByaW50KHByb3Aub2YuYm90aCkKCnByb3Aub2YuYm90aC5sZXNzLm92ZXJsYXAgPC0gYXMubnVtZXJpYyhvdmVybGFwLkczLkc0WyJvdmVybGFwIl0gLyAob3ZlcmxhcC5HMy5HNFsiYXJlYS4xIl0gKyBvdmVybGFwLkczLkc0WyJhcmVhLjIiXSAtIG92ZXJsYXAuRzMuRzRbIm92ZXJsYXAiXSkpCnByaW50KHByb3Aub2YuYm90aC5sZXNzLm92ZXJsYXApCmBgYAoKQSBwcm9ibGVtIHdpdGggdGhpcyBzaW1wbGUgb3ZlcmxhcCBjYWxjdWxhdGlvbiBpcyB0aGF0IGl0IHlpZWxkcyBhIHBvaW50LWVzdGltYXRlIG9mIG92ZXJsYXAgYmFzZWQgb24gdGhlIG1heGltdW0gbGlrZWxpaG9vZCBlc3RpbWF0ZWQgU0VBX2MuIE9uZSBjYW4gaW5zdGVhZCBjYWxjdWxhdGUgYSBkaXN0cmlidXRpb24gb2Ygb3ZlcmxhcCBiYXNlZCBvbiB0aGUgcG9zdGVyaW9yIGRpc3RpcmJ1dGlvbnMgb2YgdGhlIGZpdHRlZCBlbGxpcHNlcy4gSXQgY2FuIGJlIGEgYml0IHNsb3cgdG8gY2FsY3VsYXRlIHRoaXMgb3ZlcmxhcCwgc28geW91IG1heSB3YW50IHRvIGRyb3AgdGhlIG51bWJlciBvZiBgZHJhd3NgIGlmIHlvdXIgY29tcHV0ZXIgaXMgc2xvdy4KCmBgYHtyIGJheWVzaWFuLW92ZXJsYXB9CmJheWVzLm92ZXJsYXAuRzMuRzQgPC0gYmF5ZXNpYW5PdmVybGFwKCIxLjMiLCAiMS40IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxsaXBzZXMucG9zdGVyaW9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd3MgPSAxMDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmludGVydmFsID0gMC45NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDM2MCkKcHJpbnQoYmF5ZXMub3ZlcmxhcC5HMy5HNCkKCgpgYGAKCkFuZCBzdW1tYXJpc2UgdGhlIGNyZWRpYmxlIGludGVydmFscyBvZiB0aGUgQmF5ZXNpYW4gb3ZlcmxhcCBvdXRwdXQuIE5vdGUgdGhhdCB0aGlzIGNvZGUgZG9lcyBub3Qgd29yayB3ZWxsIG9uIHRoZSBzbWFsbCBudW1iZXIgb2YgcG9zdGVyaW9yIGRyYXdzIHdlIGFyZSB1c2luZyBmb3IgdGhpcyBiYXNpYyBleGFtcGxlIC0gZm9yIG9uZSBpdCByZXR1cm5zIG5lZ2F0aXZlIHZhbHVlcyB3aGljaCBpcyBub3QgcG9zc2libGUsIGJ1dCBpcyBhcmlzaW5nIGFzIHRoZSBzbW9vdGhlciBoYXMgbm90IGdvdCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RheSBjbG9zZSB0byBvciB3aXRoaW4gdGhlIHBvc2l0aXZlIG51bWJlciByYW5nZS4KCmBgYHtyfQojIGFuZCB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBjb3JyZXNwb25kaW5nIGNyZWRpYmxlIGludGVydmFscyB1c2luZwojIG91ciBjb2RlIGZyb20gYWJvdmUgYWdhaW4KIyBjYWxsIHRvIGhkcmNkZTpoZHIgdXNpbmcgbGFwcGx5KCkKb3ZlcmxhcC5jcmVkaWJsZXMgPC0gbGFwcGx5KAogIGFzLmRhdGEuZnJhbWUoYmF5ZXMub3ZlcmxhcC5HMy5HNCksIAogIGZ1bmN0aW9uKHgsLi4uKXt0bXA8LWhkcmNkZTo6aGRyKHgpJGhkcn0sCiAgcHJvYiA9IGNyLnApCgpwcmludChvdmVybGFwLmNyZWRpYmxlcykKYGBgCgoKCgo=