1 S. cerevisiae differential expression, merged

2 Filter the raw data

In sample_estimation, I created sc_filt which is precisely what I want.

3 Start with batch in the model

keepers <- list(
    "mcwu_vs_wcwu" = c("mtc_wtu", "wtc_wtu")
    )

fsva <- all_pairwise(input=merged_filt, model_batch="fsva")
## The be method chose 3 surrogate variable(s).
## Attempting fsva surrogate estimation.
## Using fsva to test before/after batch correction.
## Finished running DE analyses, collecting outputs.
## Comparing analyses 1/6: mtc_wtu_vs_mtc_mtu
## Comparing analyses 2/6: wtc_mtu_vs_mtc_mtu
## Comparing analyses 3/6: wtc_wtu_vs_mtc_mtu
## Comparing analyses 4/6: wtc_mtu_vs_mtc_wtu
## Comparing analyses 5/6: wtc_wtu_vs_mtc_wtu
## Comparing analyses 6/6: wtc_wtu_vs_wtc_mtu

fsva_write <- combine_de_tables(all_pairwise_result=fsva,
                                keepers=keepers,
                                excel=paste0("excel/sva_in_model_differential_merged-v", ver, ".xlsx"))
## Deleting the file excel/sva_in_model_differential_merged-v20170515.xlsx before writing the tables.
## Writing a legend of columns.
## Working on 1/1: mcwu_vs_wcwu
## Found inverse table with wtc_wtu_vs_mtc_wtu
## Adding venn plots for mcwu_vs_wcwu.

## Limma expression coefficients for mcwu_vs_wcwu; R^2: 0.94; equation: y = 1.01x - 0.0273
## Edger expression coefficients for mcwu_vs_wcwu; R^2: 0.938; equation: y = 1.01x - 0.0115
## DESeq2 expression coefficients for mcwu_vs_wcwu; R^2: 0.966; equation: y = 0.996x - 0.0478
## Writing summary information.
## The sheet: pairwise_summary is in legend, mcwu_vs_wcwu, pairwise_summary.
## Attempting to add the comparison plot to pairwise_summary at row: 19 and column: 1
## Performing save of the workbook.

fsva_sig <- sm(extract_significant_genes(combined=fsva_write,
                                         excel=paste0("excel/sva_in_model_significant_merged-v", ver, ".xlsx")))
merged_nor <- subset_expt(merged_filt, subset="batch!='r'")
fsva_nor <- all_pairwise(input=merged_nor, model_batch="fsva")
## The be method chose 1 surrogate variable(s).
## Attempting fsva surrogate estimation.
## Using fsva to test before/after batch correction.
## Finished running DE analyses, collecting outputs.
## Comparing analyses 1/6: mtc_wtu_vs_mtc_mtu
## Comparing analyses 2/6: wtc_mtu_vs_mtc_mtu
## Comparing analyses 3/6: wtc_wtu_vs_mtc_mtu
## Comparing analyses 4/6: wtc_mtu_vs_mtc_wtu
## Comparing analyses 5/6: wtc_wtu_vs_mtc_wtu
## Comparing analyses 6/6: wtc_wtu_vs_wtc_mtu

fsva_nor_write <- combine_de_tables(all_pairwise_result=fsva_nor,
                                    keepers=keepers,
                                    excel=paste0("excel/nor_sva_in_model_differential_merged-v", ver, ".xlsx"))
## Deleting the file excel/nor_sva_in_model_differential_merged-v20170515.xlsx before writing the tables.
## Writing a legend of columns.
## Working on 1/1: mcwu_vs_wcwu
## Found inverse table with wtc_wtu_vs_mtc_wtu
## Adding venn plots for mcwu_vs_wcwu.

## Limma expression coefficients for mcwu_vs_wcwu; R^2: 0.956; equation: y = 0.971x + 0.186
## Edger expression coefficients for mcwu_vs_wcwu; R^2: 0.955; equation: y = 0.961x + 0.311
## DESeq2 expression coefficients for mcwu_vs_wcwu; R^2: 0.961; equation: y = 0.972x + 0.274
## Writing summary information.
## The sheet: pairwise_summary is in legend, mcwu_vs_wcwu, pairwise_summary.
## Attempting to add the comparison plot to pairwise_summary at row: 19 and column: 1
## Performing save of the workbook.

merged_nos <- subset_expt(merged_filt, subset="batch!='s'")
fsva_nos <- all_pairwise(input=merged_nos, model_batch="fsva")
## The be method chose 2 surrogate variable(s).
## Attempting fsva surrogate estimation.
## Using fsva to test before/after batch correction.
## Finished running DE analyses, collecting outputs.
## Comparing analyses 1/6: mtc_wtu_vs_mtc_mtu
## Comparing analyses 2/6: wtc_mtu_vs_mtc_mtu
## Comparing analyses 3/6: wtc_wtu_vs_mtc_mtu
## Comparing analyses 4/6: wtc_mtu_vs_mtc_wtu
## Comparing analyses 5/6: wtc_wtu_vs_mtc_wtu
## Comparing analyses 6/6: wtc_wtu_vs_wtc_mtu

fsva_nos_write <- combine_de_tables(all_pairwise_result=fsva_nos,
                                    keepers=keepers,
                                    excel=paste0("excel/nos_sva_in_model_differential_merged-v", ver, ".xlsx"))
## Deleting the file excel/nos_sva_in_model_differential_merged-v20170515.xlsx before writing the tables.
## Writing a legend of columns.
## Working on 1/1: mcwu_vs_wcwu
## Found inverse table with wtc_wtu_vs_mtc_wtu
## Adding venn plots for mcwu_vs_wcwu.

## Limma expression coefficients for mcwu_vs_wcwu; R^2: 0.909; equation: y = 1.01x - 0.0726
## Edger expression coefficients for mcwu_vs_wcwu; R^2: 0.911; equation: y = 1.01x - 0.0653
## DESeq2 expression coefficients for mcwu_vs_wcwu; R^2: 0.942; equation: y = 0.992x - 0.0413
## Writing summary information.
## The sheet: pairwise_summary is in legend, mcwu_vs_wcwu, pairwise_summary.
## Attempting to add the comparison plot to pairwise_summary at row: 19 and column: 1
## Performing save of the workbook.

v1_env <- new.env()
load(paste0("../scerevisiae_cbf5v1/savefiles/differential_expression-v", ver, ".rda.xz"),
     envir=v1_env)
v1_de <- v1_env$batch_write$data$mtc_vs_wtc
##v1_de <- nobatch_write$data$wtc_wtu_vs_mtc_wtu
##rm(list=c("v1_env"))

merged_de <- fsva$limma$all_tables$wtc_wtu_vs_mtc_wtu
merged_de$logFC <- merged_de$logFC * -1.0
v1v2_merged <- merge(v1_de, merged_de, by="row.names")
v1v2_merged <- v1v2_merged[, c("limma_logfc", "logFC")]
v1v2_scatter <- plot_linear_scatter(df=v1v2_merged, loess=TRUE)
## Used Bon Ferroni corrected t test(s) between columns.
v1v2_scatter$scatter

v1v2_scatter$correlation
## 
##  Pearson's product-moment correlation
## 
## data:  df[, 1] and df[, 2]
## t = 46, df = 5800, p-value <2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4941 0.5321
## sample estimates:
##    cor 
## 0.5134
cor.test(v1v2_merged[, 1], v1v2_merged[, 2], method="spearman")
## Warning in cor.test.default(v1v2_merged[, 1], v1v2_merged[, 2], method = "spearman"):
## Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  v1v2_merged[, 1] and v1v2_merged[, 2]
## S = 1.7e+10, p-value <2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##    rho 
## 0.4819
## Well at least the direction is correct...
merged_nor_de <- fsva_nor$limma$all_tables$wtc_wtu_vs_mtc_wtu
merged_nor_de$logFC <- merged_nor_de$logFC * -1.0
v1v2_merged <- merge(v1_de, merged_nor_de, by="row.names")
v1v2_merged <- v1v2_merged[, c("limma_logfc", "logFC")]
v1v2_scatter <- plot_linear_scatter(df=v1v2_merged, loess=TRUE)
## Used Bon Ferroni corrected t test(s) between columns.
v1v2_scatter$scatter

v1v2_scatter$correlation
## 
##  Pearson's product-moment correlation
## 
## data:  df[, 1] and df[, 2]
## t = 140, df = 5800, p-value <2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8674 0.8796
## sample estimates:
##    cor 
## 0.8737
cor.test(v1v2_merged[, 1], v1v2_merged[, 2])
## 
##  Pearson's product-moment correlation
## 
## data:  v1v2_merged[, 1] and v1v2_merged[, 2]
## t = 140, df = 5800, p-value <2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8674 0.8796
## sample estimates:
##    cor 
## 0.8737
## Well at least the direction is correct...
merged_nos_de <- fsva_nos$limma$all_tables$wtc_wtu_vs_mtc_wtu
merged_nos_de$logFC <- merged_nos_de$logFC * -1.0
v1v2_merged <- merge(v1_de, merged_nos_de, by="row.names")
v1v2_merged <- v1v2_merged[, c("limma_logfc", "logFC")]
v1v2_scatter <- plot_linear_scatter(df=v1v2_merged, loess=TRUE)
## Used Bon Ferroni corrected t test(s) between columns.
v1v2_scatter$scatter

v1v2_scatter$correlation
## 
##  Pearson's product-moment correlation
## 
## data:  df[, 1] and df[, 2]
## t = 42, df = 5800, p-value <2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4643 0.5037
## sample estimates:
##    cor 
## 0.4843
cor.test(v1v2_merged[, 1], v1v2_merged[, 2])
## 
##  Pearson's product-moment correlation
## 
## data:  v1v2_merged[, 1] and v1v2_merged[, 2]
## t = 42, df = 5800, p-value <2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4643 0.5037
## sample estimates:
##    cor 
## 0.4843
## Well at least the direction is correct...
LS0tCnRpdGxlOiAiUy4gY2VyZXZpc2lhZSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiwgbWVyZ2VkIHNhbXBsZSBlZGl0aW9uLiIKYXV0aG9yOiAiYXRiIGFiZWxld0BnbWFpbC5jb20iCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OgogaHRtbF9kb2N1bWVudDoKICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgY29kZV9mb2xkaW5nOiBzaG93CiAgZmlnX2NhcHRpb246IHRydWUKICBmaWdfaGVpZ2h0OiA3CiAgZmlnX3dpZHRoOiA3CiAgaGlnaGxpZ2h0OiBkZWZhdWx0CiAga2VlcF9tZDogZmFsc2UKICBtb2RlOiBzZWxmY29udGFpbmVkCiAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgc2VsZl9jb250YWluZWQ6IHRydWUKICB0aGVtZTogcmVhZGFibGUKICB0b2M6IHRydWUKICB0b2NfZmxvYXQ6CiAgICBjb2xsYXBzZWQ6IGZhbHNlCiAgICBzbW9vdGhfc2Nyb2xsOiBmYWxzZQotLS0KCjxzdHlsZT4KICA8IS0tIERvY3VtZW50IHByZWx1ZGUgcmV2aXNpb24gMjAxNy0wMiAtLT4KICBib2R5IC5tYWluLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDE2MDBweDsKfQo8L3N0eWxlPgoKYGBge3Igb3B0aW9ucywgaW5jbHVkZT1GQUxTRX0KIyMgVGhlc2UgYXJlIHRoZSBvcHRpb25zIEkgdGVuZCB0byBmYXZvcgpsaWJyYXJ5KCJocGdsdG9vbHMiKQp0dCA8LSBkZXZ0b29sczo6bG9hZF9hbGwoIn4vaHBnbHRvb2xzIikKa25pdHI6Om9wdHNfa25pdCRzZXQoCiAgICBwcm9ncmVzcyA9IFRSVUUsCiAgICB2ZXJib3NlID0gVFJVRSwKICAgIHdpZHRoID0gOTAsCiAgICBlY2hvID0gVFJVRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KAogICAgZXJyb3IgPSBUUlVFLAogICAgZmlnLndpZHRoID0gOCwKICAgIGZpZy5oZWlnaHQgPSA4LAogICAgZHBpID0gOTYpCm9wdGlvbnMoCiAgICBkaWdpdHMgPSA0LAogICAgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFLAogICAga25pdHIuZHVwbGljYXRlLmxhYmVsID0gImFsbG93IikKZ2dwbG90Mjo6dGhlbWVfc2V0KGdncGxvdDI6OnRoZW1lX2J3KGJhc2Vfc2l6ZT0xMCkpCnNldC5zZWVkKDEpCnZlciA8LSAiMjAxNzA1MTUiCnByZXZpb3VzX2ZpbGUgPC0gInNhbXBsZV9lc3RpbWF0aW9uX21lcmdlZC5SbWQiCmBgYAoKYGBge3IgbG9hZG1lLCBpbmNsdWRlPUZBTFNFfQp0bXAgPC0gdHJ5KHNtKGxvYWRtZShmaWxlbmFtZT1wYXN0ZTAoZ3N1YihwYXR0ZXJuPSJcXC5SbWQiLCByZXBsYWNlPSIiLCB4PXByZXZpb3VzX2ZpbGUpLCAiLXYiLCB2ZXIsICIucmRhLnh6IikpKSkKCnJtZF9maWxlIDwtICJkaWZmZXJlbnRpYWxfZXhwcmVzc2lvbl9tZXJnZWQuUm1kIgpgYGAKCmBgYHtyIHJlbmRlciwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0Kcm1hcmtkb3duOjpyZW5kZXIocm1kX2ZpbGUpCgojIyBBbiBleHRyYSByZW5kZXJlciBmb3IgcGRmIG91dHB1dApybWFya2Rvd246OnJlbmRlcihybWRfZmlsZSwgb3V0cHV0X2Zvcm1hdD0icGRmX2RvY3VtZW50Iiwgb3V0cHV0X29wdGlvbnM9Yygic2tpcF9odG1sIikpCmBgYAoKUy4gY2VyZXZpc2lhZSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiwgbWVyZ2VkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyBGaWx0ZXIgdGhlIHJhdyBkYXRhCgpJbiBzYW1wbGVfZXN0aW1hdGlvbiwgSSBjcmVhdGVkIHNjX2ZpbHQgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgSSB3YW50LgoKIyBTdGFydCB3aXRoIGJhdGNoIGluIHRoZSBtb2RlbAoKYGBge3IgYmF0Y2hfbW9kZWx9CmtlZXBlcnMgPC0gbGlzdCgKICAgICJtY3d1X3ZzX3djd3UiID0gYygibXRjX3d0dSIsICJ3dGNfd3R1IikKICAgICkKCmZzdmEgPC0gYWxsX3BhaXJ3aXNlKGlucHV0PW1lcmdlZF9maWx0LCBtb2RlbF9iYXRjaD0iZnN2YSIpCgpmc3ZhX3dyaXRlIDwtIGNvbWJpbmVfZGVfdGFibGVzKGFsbF9wYWlyd2lzZV9yZXN1bHQ9ZnN2YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwZXJzPWtlZXBlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWw9cGFzdGUwKCJleGNlbC9zdmFfaW5fbW9kZWxfZGlmZmVyZW50aWFsX21lcmdlZC12IiwgdmVyLCAiLnhsc3giKSkKZnN2YV9zaWcgPC0gc20oZXh0cmFjdF9zaWduaWZpY2FudF9nZW5lcyhjb21iaW5lZD1mc3ZhX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VsPXBhc3RlMCgiZXhjZWwvc3ZhX2luX21vZGVsX3NpZ25pZmljYW50X21lcmdlZC12IiwgdmVyLCAiLnhsc3giKSkpCmBgYAoKYGBge3Igbm9yfQptZXJnZWRfbm9yIDwtIHN1YnNldF9leHB0KG1lcmdlZF9maWx0LCBzdWJzZXQ9ImJhdGNoIT0nciciKQpmc3ZhX25vciA8LSBhbGxfcGFpcndpc2UoaW5wdXQ9bWVyZ2VkX25vciwgbW9kZWxfYmF0Y2g9ImZzdmEiKQpmc3ZhX25vcl93cml0ZSA8LSBjb21iaW5lX2RlX3RhYmxlcyhhbGxfcGFpcndpc2VfcmVzdWx0PWZzdmFfbm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwZXJzPWtlZXBlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VsPXBhc3RlMCgiZXhjZWwvbm9yX3N2YV9pbl9tb2RlbF9kaWZmZXJlbnRpYWxfbWVyZ2VkLXYiLCB2ZXIsICIueGxzeCIpKQoKbWVyZ2VkX25vcyA8LSBzdWJzZXRfZXhwdChtZXJnZWRfZmlsdCwgc3Vic2V0PSJiYXRjaCE9J3MnIikKZnN2YV9ub3MgPC0gYWxsX3BhaXJ3aXNlKGlucHV0PW1lcmdlZF9ub3MsIG1vZGVsX2JhdGNoPSJmc3ZhIikKZnN2YV9ub3Nfd3JpdGUgPC0gY29tYmluZV9kZV90YWJsZXMoYWxsX3BhaXJ3aXNlX3Jlc3VsdD1mc3ZhX25vcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcGVycz1rZWVwZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlbD1wYXN0ZTAoImV4Y2VsL25vc19zdmFfaW5fbW9kZWxfZGlmZmVyZW50aWFsX21lcmdlZC12IiwgdmVyLCAiLnhsc3giKSkKCmBgYAoKYGBge3IgY29tcGFyZV92MV9tZXJnZWR9CnYxX2VudiA8LSBuZXcuZW52KCkKbG9hZChwYXN0ZTAoIi4uL3NjZXJldmlzaWFlX2NiZjV2MS9zYXZlZmlsZXMvZGlmZmVyZW50aWFsX2V4cHJlc3Npb24tdiIsIHZlciwgIi5yZGEueHoiKSwKICAgICBlbnZpcj12MV9lbnYpCnYxX2RlIDwtIHYxX2VudiRiYXRjaF93cml0ZSRkYXRhJG10Y192c193dGMKIyN2MV9kZSA8LSBub2JhdGNoX3dyaXRlJGRhdGEkd3RjX3d0dV92c19tdGNfd3R1CiMjcm0obGlzdD1jKCJ2MV9lbnYiKSkKCm1lcmdlZF9kZSA8LSBmc3ZhJGxpbW1hJGFsbF90YWJsZXMkd3RjX3d0dV92c19tdGNfd3R1Cm1lcmdlZF9kZSRsb2dGQyA8LSBtZXJnZWRfZGUkbG9nRkMgKiAtMS4wCnYxdjJfbWVyZ2VkIDwtIG1lcmdlKHYxX2RlLCBtZXJnZWRfZGUsIGJ5PSJyb3cubmFtZXMiKQp2MXYyX21lcmdlZCA8LSB2MXYyX21lcmdlZFssIGMoImxpbW1hX2xvZ2ZjIiwgImxvZ0ZDIildCnYxdjJfc2NhdHRlciA8LSBwbG90X2xpbmVhcl9zY2F0dGVyKGRmPXYxdjJfbWVyZ2VkLCBsb2Vzcz1UUlVFKQp2MXYyX3NjYXR0ZXIkc2NhdHRlcgp2MXYyX3NjYXR0ZXIkY29ycmVsYXRpb24KY29yLnRlc3QodjF2Ml9tZXJnZWRbLCAxXSwgdjF2Ml9tZXJnZWRbLCAyXSwgbWV0aG9kPSJzcGVhcm1hbiIpCiMjIFdlbGwgYXQgbGVhc3QgdGhlIGRpcmVjdGlvbiBpcyBjb3JyZWN0Li4uCmBgYAoKYGBge3IgY29tcGFyZV92MV9ub3J9Cm1lcmdlZF9ub3JfZGUgPC0gZnN2YV9ub3IkbGltbWEkYWxsX3RhYmxlcyR3dGNfd3R1X3ZzX210Y193dHUKbWVyZ2VkX25vcl9kZSRsb2dGQyA8LSBtZXJnZWRfbm9yX2RlJGxvZ0ZDICogLTEuMAp2MXYyX21lcmdlZCA8LSBtZXJnZSh2MV9kZSwgbWVyZ2VkX25vcl9kZSwgYnk9InJvdy5uYW1lcyIpCnYxdjJfbWVyZ2VkIDwtIHYxdjJfbWVyZ2VkWywgYygibGltbWFfbG9nZmMiLCAibG9nRkMiKV0KdjF2Ml9zY2F0dGVyIDwtIHBsb3RfbGluZWFyX3NjYXR0ZXIoZGY9djF2Ml9tZXJnZWQsIGxvZXNzPVRSVUUpCnYxdjJfc2NhdHRlciRzY2F0dGVyCnYxdjJfc2NhdHRlciRjb3JyZWxhdGlvbgpjb3IudGVzdCh2MXYyX21lcmdlZFssIDFdLCB2MXYyX21lcmdlZFssIDJdKQojIyBXZWxsIGF0IGxlYXN0IHRoZSBkaXJlY3Rpb24gaXMgY29ycmVjdC4uLgpgYGAKCmBgYHtyIGNvbXBhcmVfdjFfbm9zfQptZXJnZWRfbm9zX2RlIDwtIGZzdmFfbm9zJGxpbW1hJGFsbF90YWJsZXMkd3RjX3d0dV92c19tdGNfd3R1Cm1lcmdlZF9ub3NfZGUkbG9nRkMgPC0gbWVyZ2VkX25vc19kZSRsb2dGQyAqIC0xLjAKdjF2Ml9tZXJnZWQgPC0gbWVyZ2UodjFfZGUsIG1lcmdlZF9ub3NfZGUsIGJ5PSJyb3cubmFtZXMiKQp2MXYyX21lcmdlZCA8LSB2MXYyX21lcmdlZFssIGMoImxpbW1hX2xvZ2ZjIiwgImxvZ0ZDIildCnYxdjJfc2NhdHRlciA8LSBwbG90X2xpbmVhcl9zY2F0dGVyKGRmPXYxdjJfbWVyZ2VkLCBsb2Vzcz1UUlVFKQp2MXYyX3NjYXR0ZXIkc2NhdHRlcgp2MXYyX3NjYXR0ZXIkY29ycmVsYXRpb24KY29yLnRlc3QodjF2Ml9tZXJnZWRbLCAxXSwgdjF2Ml9tZXJnZWRbLCAyXSkKIyMgV2VsbCBhdCBsZWFzdCB0aGUgZGlyZWN0aW9uIGlzIGNvcnJlY3QuLi4KYGBgCgpgYGB7ciBzYXZlbWUsIGluY2x1ZGU9RkFMU0V9CnRoaXNfc2F2ZSA8LSBwYXN0ZTAoZ3N1YihwYXR0ZXJuPSJcXC5SbWQiLCByZXBsYWNlPSIiLCB4PXJtZF9maWxlKSwgIi12IiwgdmVyLCAiLnJkYS54eiIpCm1lc3NhZ2UocGFzdGUwKCJTYXZpbmcgdG86ICIsIHRoaXNfc2F2ZSkpCnRtcCA8LSBzbShzYXZlbWUoZmlsZW5hbWU9dGhpc19zYXZlKSkKbGlicmFyeSgicGFuZGVyIikKcGFuZGVyKHNlc3Npb25JbmZvKCkpCmBgYAo=