Please update the below path to the diagnostics folder on your computer

library(dplyr)
library(data.table)
library(testthat)
library(ggplot2)
library(scales)
package 㤼㸱scales㤼㸲 was built under R version 4.0.5
path_to_diagnostics_folder <- "C:/Projects/moirai/moirai/diagnostics/"
setwd(path_to_diagnostics_folder)
#Load all required scripts 


#Load land test functions 
source("Compare_LDS_area_outputs.R")

#Load carbon plot functions
source("Carbon_diagnostic_functions.R")
Loading required package: sp

Attaching package: 㤼㸱raster㤼㸲

The following object is masked from 㤼㸱package:data.table㤼㸲:

    shift

The following object is masked from 㤼㸱package:dplyr㤼㸲:

    select

The following object is masked from 㤼㸱package:tidyr㤼㸲:

    extract

rgdal: version: 1.5-23, (SVN revision 1121)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 3.2.1, released 2020/12/29
Path to GDAL shared files: C:/Users/nara836/OneDrive - PNNL/Documents/R/win-library/4.0/rgdal/gdal
GDAL binary built with GEOS: TRUE 
Loaded PROJ runtime: Rel. 7.2.1, January 1st, 2021, [PJ_VERSION: 721]
Path to PROJ shared files: C:/Users/nara836/OneDrive - PNNL/Documents/R/win-library/4.0/rgdal/proj
PROJ CDN enabled: FALSE
Linking to sp version:1.4-5
To mute warnings of possible GDAL/OSR exportToProj4() degradation,
use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
Overwritten PROJ_LIB was C:/Users/nara836/OneDrive - PNNL/Documents/R/win-library/4.0/rgdal/proj
package 㤼㸱reldist㤼㸲 was built under R version 4.0.5Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
reldist: Relative Distribution Methods
Version 1.6-6 created on 2016-10-07.
copyright (c) 2003, Mark S. Handcock, University of California-Los Angeles
 For citation information, type citation("reldist").
 Type help(package="reldist") to get started.

In the examples below we have set the path_to_Original_LDS_Data & path_to_old_mapping to the new example_outputs. Please change this to the desired land outputs that you would like to compare against.

#Compare at the highest level (iso,year)

compare_iso_land_data(path_to_Original_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_Updated_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_old_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                  path_to_new_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                  error_tolerance= 0.01,
                                  create_land_plot=TRUE
                      )

#Compare at iso_glu_data

compare_iso_glu_land_data(path_to_Original_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_Updated_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_old_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                  path_to_new_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                     error_tolerance= 0.01)

  
#Compare at the iso,glu,year level

compare_iso_glu_land_data(path_to_Original_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_Updated_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_old_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                  path_to_new_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                     error_tolerance= 0.01,
                     create_land_plot=TRUE)
#Compare at the hyde level

compare_iso_glu_hyde_land_data(path_to_Original_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_Updated_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_old_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                  path_to_new_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                          error_tolerance= 0.01,
                                         create_land_plot=TRUE,
                                         print_difference_stats=TRUE,
                                         absolute_diff_tolerance=3,
                                         percent_diff_tolerance=0.5)
#Compare at iso, glu_sage level

compare_iso_glu_sage_land_data(path_to_Original_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_Updated_LDS_Data = "../example_outputs/basins235/Land_type_area_ha.csv",
                                  path_to_old_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                  path_to_new_mapping = "../example_outputs/basins235/MOIRAI_land_types.csv",
                                         error_tolerance= 0.01,
                                         create_land_plot=TRUE,
                                         print_difference_stats=TRUE,
                                         absolute_diff_tolerance=3,
                                         percent_diff_tolerance=0.5)


scheme_basic <- theme_bw() +
  theme(legend.text = element_text(size = 15)) +
  theme(legend.title = element_text(size = 15)) +
  theme(axis.text = element_text(size = 18)) +
  theme(axis.title = element_text(size = 18, face = "bold")) +
  theme(plot.title = element_text(size = 15, face = "bold", vjust = 1)) +
  theme(plot.subtitle = element_text(size = 9, face = "bold", vjust = 1))+ 
  theme(strip.text = element_text(size = 7))+
  theme(strip.text.x = element_text(size = 18, face = "bold"))+
  theme(strip.text.y = element_text(size = 15, face = "bold"))+
  theme(legend.position = "bottom")+
  theme(legend.text = element_text(size = 12))+
  theme(legend.title = element_text(size = 12,color = "black",face="bold"))+
  theme(axis.text.x= element_text(hjust=1))+
  theme(legend.background = element_blank(),
        legend.box.background = element_rect(colour = "black"))

moirai_land_classes <- read.csv("../ancillary/carbon_harmonization/input_files/ESA_moirai_classes.csv")


for (i in c("TropicalEvergreenForest/Woodland",
            "Savanna",
            "Grassland/Steppe")){

  c_type <- "AG"
g <- compare_carbon_distribution_ESA(carbon_type = c_type,
                            basin_for_testing = "Amazon",
                            moirai_LC = i,
                            harmonized_carbon_raster_file_names = c("AG_carbon_q1.envi",
                                                                    "AG_carbon_q3.envi",
                                                                    "AG_carbon_median.envi",
                                                                    "AG_carbon_min.envi",
                                                                    "AG_carbon_max.envi",
                                                                    "AG_carbon_weighted_average.envi"),
                            plot_lim = 8000,
                            produce_ESA_distribution = FALSE)
name_for_plot <- gsub("/","_",i)  
ggsave(plot= g+ scheme_basic ,filename= paste0("carbon_plots/",c_type,name_for_plot,"Amazon", ".jpeg"), width = 10, height = 6, device= "jpeg")
    }
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -Infattributes are not identical across measure variables;
they will be droppedDiscarded datum D_Unknown_based_on_WGS84_ellipsoid in Proj4 definition: +proj=longlat +ellps=WGS84 +no_defsDiscarded datum Unknown based on WGS84 ellipsoid in Proj4 definitionError in .local(.Object, ...) : 

Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'as.data.frame': error in evaluating the argument 'x' in selecting a method for function 'nlayers': Cannot create a RasterLayer object from this file.
LS0tDQp0aXRsZTogIm1vaXJhaSBsYW5kIGRpYWdub3N0aWNzIg0Kb3V0cHV0Og0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KLS0tDQpQbGVhc2UgdXBkYXRlIHRoZSBiZWxvdyBwYXRoIHRvIHRoZSBkaWFnbm9zdGljcyBmb2xkZXIgb24geW91ciBjb21wdXRlcg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KbGlicmFyeSh0ZXN0dGhhdCkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoc2NhbGVzKQ0KDQoNCnBhdGhfdG9fZGlhZ25vc3RpY3NfZm9sZGVyIDwtICJDOi9Qcm9qZWN0cy9tb2lyYWkvbW9pcmFpL2RpYWdub3N0aWNzLyINCnNldHdkKHBhdGhfdG9fZGlhZ25vc3RpY3NfZm9sZGVyKQ0KYGBgDQoNCmBgYHtyfQ0KI0xvYWQgYWxsIHJlcXVpcmVkIHNjcmlwdHMgDQoNCg0KI0xvYWQgbGFuZCB0ZXN0IGZ1bmN0aW9ucyANCnNvdXJjZSgiQ29tcGFyZV9MRFNfYXJlYV9vdXRwdXRzLlIiKQ0KDQojTG9hZCBjYXJib24gcGxvdCBmdW5jdGlvbnMNCnNvdXJjZSgiQ2FyYm9uX2RpYWdub3N0aWNfZnVuY3Rpb25zLlIiKQ0KDQpgYGANCg0KDQpJbiB0aGUgZXhhbXBsZXMgYmVsb3cgd2UgaGF2ZSBzZXQgdGhlIGBwYXRoX3RvX09yaWdpbmFsX0xEU19EYXRhYCAmIGBwYXRoX3RvX29sZF9tYXBwaW5nYCB0byB0aGUgbmV3IGV4YW1wbGVfb3V0cHV0cy4gUGxlYXNlIGNoYW5nZSB0aGlzIHRvIHRoZSBkZXNpcmVkIGxhbmQgb3V0cHV0cyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGNvbXBhcmUgYWdhaW5zdC4NCmBgYHtyLGZpZy5oZWlnaHQ9NSxmaWcud2lkdGg9MTB9DQojQ29tcGFyZSBhdCB0aGUgaGlnaGVzdCBsZXZlbCAoaXNvLHllYXIpDQoNCmNvbXBhcmVfaXNvX2xhbmRfZGF0YShwYXRoX3RvX09yaWdpbmFsX0xEU19EYXRhID0gIi4uL2V4YW1wbGVfb3V0cHV0cy9iYXNpbnMyMzUvTGFuZF90eXBlX2FyZWFfaGEuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX3RvX1VwZGF0ZWRfTERTX0RhdGEgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9MYW5kX3R5cGVfYXJlYV9oYS5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fb2xkX21hcHBpbmcgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9NT0lSQUlfbGFuZF90eXBlcy5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fbmV3X21hcHBpbmcgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9NT0lSQUlfbGFuZF90eXBlcy5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3RvbGVyYW5jZT0gMC4wMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfbGFuZF9wbG90PVRSVUUNCiAgICAgICAgICAgICAgICAgICAgICApDQoNCmBgYA0KYGBge3IsZmlnLmhlaWdodD01LGZpZy53aWR0aD0xMH0NCg0KI0NvbXBhcmUgYXQgaXNvX2dsdV9kYXRhDQoNCmNvbXBhcmVfaXNvX2dsdV9sYW5kX2RhdGEocGF0aF90b19PcmlnaW5hbF9MRFNfRGF0YSA9ICIuLi9leGFtcGxlX291dHB1dHMvYmFzaW5zMjM1L0xhbmRfdHlwZV9hcmVhX2hhLmNzdiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90b19VcGRhdGVkX0xEU19EYXRhID0gIi4uL2V4YW1wbGVfb3V0cHV0cy9iYXNpbnMyMzUvTGFuZF90eXBlX2FyZWFfaGEuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX3RvX29sZF9tYXBwaW5nID0gIi4uL2V4YW1wbGVfb3V0cHV0cy9iYXNpbnMyMzUvTU9JUkFJX2xhbmRfdHlwZXMuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX3RvX25ld19tYXBwaW5nID0gIi4uL2V4YW1wbGVfb3V0cHV0cy9iYXNpbnMyMzUvTU9JUkFJX2xhbmRfdHlwZXMuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgIGVycm9yX3RvbGVyYW5jZT0gMC4wMSkNCg0KICANCmBgYA0KDQpgYGB7cixmaWcuaGVpZ2h0PTUsZmlnLndpZHRoPTEwfQ0KI0NvbXBhcmUgYXQgdGhlIGlzbyxnbHUseWVhciBsZXZlbA0KDQpjb21wYXJlX2lzb19nbHVfbGFuZF9kYXRhKHBhdGhfdG9fT3JpZ2luYWxfTERTX0RhdGEgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9MYW5kX3R5cGVfYXJlYV9oYS5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fVXBkYXRlZF9MRFNfRGF0YSA9ICIuLi9leGFtcGxlX291dHB1dHMvYmFzaW5zMjM1L0xhbmRfdHlwZV9hcmVhX2hhLmNzdiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90b19vbGRfbWFwcGluZyA9ICIuLi9leGFtcGxlX291dHB1dHMvYmFzaW5zMjM1L01PSVJBSV9sYW5kX3R5cGVzLmNzdiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90b19uZXdfbWFwcGluZyA9ICIuLi9leGFtcGxlX291dHB1dHMvYmFzaW5zMjM1L01PSVJBSV9sYW5kX3R5cGVzLmNzdiIsDQogICAgICAgICAgICAgICAgICAgICBlcnJvcl90b2xlcmFuY2U9IDAuMDEsDQogICAgICAgICAgICAgICAgICAgICBjcmVhdGVfbGFuZF9wbG90PVRSVUUpDQpgYGANCg0KYGBge3IsZmlnLmhlaWdodD01LGZpZy53aWR0aD0xMH0NCiNDb21wYXJlIGF0IHRoZSBoeWRlIGxldmVsDQoNCmNvbXBhcmVfaXNvX2dsdV9oeWRlX2xhbmRfZGF0YShwYXRoX3RvX09yaWdpbmFsX0xEU19EYXRhID0gIi4uL2V4YW1wbGVfb3V0cHV0cy9iYXNpbnMyMzUvTGFuZF90eXBlX2FyZWFfaGEuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX3RvX1VwZGF0ZWRfTERTX0RhdGEgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9MYW5kX3R5cGVfYXJlYV9oYS5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fb2xkX21hcHBpbmcgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9NT0lSQUlfbGFuZF90eXBlcy5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fbmV3X21hcHBpbmcgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9NT0lSQUlfbGFuZF90eXBlcy5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdG9sZXJhbmNlPSAwLjAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfbGFuZF9wbG90PVRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2RpZmZlcmVuY2Vfc3RhdHM9VFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVfZGlmZl90b2xlcmFuY2U9MywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudF9kaWZmX3RvbGVyYW5jZT0wLjUpDQpgYGANCg0KYGBge3J9DQojQ29tcGFyZSBhdCBpc28sIGdsdV9zYWdlIGxldmVsDQoNCmNvbXBhcmVfaXNvX2dsdV9zYWdlX2xhbmRfZGF0YShwYXRoX3RvX09yaWdpbmFsX0xEU19EYXRhID0gIi4uL2V4YW1wbGVfb3V0cHV0cy9iYXNpbnMyMzUvTGFuZF90eXBlX2FyZWFfaGEuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX3RvX1VwZGF0ZWRfTERTX0RhdGEgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9MYW5kX3R5cGVfYXJlYV9oYS5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fb2xkX21hcHBpbmcgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9NT0lSQUlfbGFuZF90eXBlcy5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fbmV3X21hcHBpbmcgPSAiLi4vZXhhbXBsZV9vdXRwdXRzL2Jhc2luczIzNS9NT0lSQUlfbGFuZF90eXBlcy5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90b2xlcmFuY2U9IDAuMDEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9sYW5kX3Bsb3Q9VFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZGlmZmVyZW5jZV9zdGF0cz1UUlVFLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZV9kaWZmX3RvbGVyYW5jZT0zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50X2RpZmZfdG9sZXJhbmNlPTAuNSkNCmBgYA0KDQoNCg0KDQoNCg0KYGBge3J9DQoNCg0Kc2NoZW1lX2Jhc2ljIDwtIHRoZW1lX2J3KCkgKw0KICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSArDQogIHRoZW1lKGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSArDQogIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpKSArDQogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBmYWNlID0gImJvbGQiKSkgKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSwgZmFjZSA9ICJib2xkIiwgdmp1c3QgPSAxKSkgKw0KICB0aGVtZShwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gImJvbGQiLCB2anVzdCA9IDEpKSsgDQogIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDcpKSsNCiAgdGhlbWUoc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgZmFjZSA9ICJib2xkIikpKw0KICB0aGVtZShzdHJpcC50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1LCBmYWNlID0gImJvbGQiKSkrDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSsNCiAgdGhlbWUobGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSkrDQogIHRoZW1lKGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsY29sb3IgPSAiYmxhY2siLGZhY2U9ImJvbGQiKSkrDQogIHRoZW1lKGF4aXMudGV4dC54PSBlbGVtZW50X3RleHQoaGp1c3Q9MSkpKw0KICB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgbGVnZW5kLmJveC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIpKQ0KDQptb2lyYWlfbGFuZF9jbGFzc2VzIDwtIHJlYWQuY3N2KCIuLi9hbmNpbGxhcnkvY2FyYm9uX2hhcm1vbml6YXRpb24vaW5wdXRfZmlsZXMvRVNBX21vaXJhaV9jbGFzc2VzLmNzdiIpDQoNCg0KZm9yIChpIGluIGMoIlRyb3BpY2FsRXZlcmdyZWVuRm9yZXN0L1dvb2RsYW5kIiwNCiAgICAgICAgICAgICJTYXZhbm5hIiwNCiAgICAgICAgICAgICJHcmFzc2xhbmQvU3RlcHBlIikpew0KDQogIGNfdHlwZSA8LSAiYWJvdmUgZ3JvdW5kIGJpb21hc3MiDQpnIDwtIGNvbXBhcmVfY2FyYm9uX2Rpc3RyaWJ1dGlvbl9FU0EoY2FyYm9uX3R5cGUgPSBjX3R5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaW5fZm9yX3Rlc3RpbmcgPSAiQW1hem9uIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2lyYWlfTEMgPSBpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcm1vbml6ZWRfY2FyYm9uX3Jhc3Rlcl9maWxlX25hbWVzID0gYygiQUdfY2FyYm9uX3ExLmVudmkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUdfY2FyYm9uX3EzLmVudmkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUdfY2FyYm9uX21lZGlhbi5lbnZpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFHX2NhcmJvbl9taW4uZW52aSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBR19jYXJib25fbWF4LmVudmkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUdfY2FyYm9uX3dlaWdodGVkX2F2ZXJhZ2UuZW52aSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RfbGltID0gODAwMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlX0VTQV9kaXN0cmlidXRpb24gPSBGQUxTRSkNCm5hbWVfZm9yX3Bsb3QgPC0gZ3N1YigiLyIsIl8iLGkpICANCmdnc2F2ZShwbG90PSBnKyBzY2hlbWVfYmFzaWMgLGZpbGVuYW1lPSBwYXN0ZTAoImNhcmJvbl9wbG90cy8iLGNfdHlwZSxuYW1lX2Zvcl9wbG90LCJBbWF6b24iLCAiLmpwZWciKSwgd2lkdGggPSAxMCwgaGVpZ2h0ID0gNiwgZGV2aWNlPSAianBlZyIpDQogICAgfQ0KYGBgDQoNCg==