This script was used to remove poor quality transcriptomes, likely multiplets and Leishmania mexicana transcriptes and transcriptomes.
WT_01_raw_object <- CreateSeuratObject(counts = cbind(WT_01_data), project = c("WT_01"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
WT_01_raw_object <- CreateSeuratObject(counts = cbind(WT_01_data), project = c("WT_01"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
WT_02_raw_object <- CreateSeuratObject(counts = cbind(WT_02_data), project = c("WT_02"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
WT_02_raw_object <- CreateSeuratObject(counts = cbind(WT_02_data), project = c("WT_02"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
ZC3H20_raw_object <- CreateSeuratObject(counts = cbind(ZC3H20_data), project = c("ZC3H20_KO"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
WT_02_raw_object <- CreateSeuratObject(counts = cbind(WT_02_data), project = c("WT_02"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
ZC3H20_raw_object <- CreateSeuratObject(counts = cbind(ZC3H20_data), project = c("ZC3H20_KO"), min.cells = 5, min.features = 3)
Feature names cannot have underscores ('_'), replacing with dashes ('-')
GEM_WT_01 <- as.data.frame(gem_classification_01)
GEM_WT_01 <- subset(GEM_WT_01, select = c("call"))
GEM_WT_01 <- subset(GEM_WT_01, select = c("call"))
WT_01_raw_object <- AddMetaData(WT_01_raw_object, GEM_WT_01)
WT_01_raw_object <- AddMetaData(WT_01_raw_object, GEM_WT_01)
WT_01_raw_object_Tbrucei_subset <- subset(WT_01_raw_object, subset = call == "Tbrucei")
WT_01_raw_object_Tbrucei_subset <- subset(WT_01_raw_object, subset = call == "Tbrucei")
GEM_WT_02 <- as.data.frame(gem_classification_02)
WT_01_raw_object <- AddMetaData(WT_01_raw_object, GEM_WT_01)
WT_01_raw_object_Tbrucei_subset <- subset(WT_01_raw_object, subset = call == "Tbrucei")
GEM_WT_02 <- as.data.frame(gem_classification_02)
GEM_WT_02 <- subset(GEM_WT_02, select = c("call"))
WT_01_raw_object <- AddMetaData(WT_01_raw_object, GEM_WT_01)
WT_01_raw_object_Tbrucei_subset <- subset(WT_01_raw_object, subset = call == "Tbrucei")
GEM_WT_02 <- as.data.frame(gem_classification_02)
GEM_WT_02 <- subset(GEM_WT_02, select = c("call"))
WT_02_raw_object <- AddMetaData(WT_02_raw_object, GEM_WT_02)



WT_01 <- subset(WT_01_raw_object, subset = nFeature_RNA > 250 & nFeature_RNA < 2500 & nCount_RNA > 1000 & nCount_RNA < 4000 & percent.MT < 2 & percent.rRNA < 8)
WT_02 <- subset(WT_02_raw_object, subset = nFeature_RNA > 250 & nFeature_RNA < 2500 & nCount_RNA > 1000 & nCount_RNA < 4000 & percent.MT < 2 & percent.rRNA < 8)
ZC3H20 <- subset(ZC3H20_raw_object, subset = nFeature_RNA > 250 & nFeature_RNA < 2500 & nCount_RNA > 1000 & nCount_RNA < 4000 & percent.MT < 2 & percent.rRNA < 8)
Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Cmd+Option+I.
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Cmd+Shift+K to preview the HTML file).
The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.
LS0tCnRpdGxlOiAiRmlsdGVyaW5nIHNjUk5BLXNlcSBkYXRhIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpUaGlzIHNjcmlwdCB3YXMgdXNlZCB0byByZW1vdmUgcG9vciBxdWFsaXR5IHRyYW5zY3JpcHRvbWVzLCBsaWtlbHkgbXVsdGlwbGV0cyBhbmQgTGVpc2htYW5pYSBtZXhpY2FuYSB0cmFuc2NyaXB0ZXMgYW5kIHRyYW5zY3JpcHRvbWVzLiAKCmBgYHtyfQojIExvYWQgaW4gVlNHcyBhbmQgclJOQSBnZW5lIGxpc3RzLiBUaGVzZSB3ZXJlIGdlbmVyYXRlZCBieSBzZWFyY2hpbmcgZm9yICJ2YXJpYW50IHN1cmZhY2UgZ2x5Y29wcm90ZWluIiBhbmQgInJSTkEiIGluIHRoZSBUUkVVOTI3IGdlbm9tZSBvbiBUcmlUcnlwREIuIFRoZXNlIHdpbGwgbmVlZCB0byBtYXRjaCB0aGUgZm9ybWF0IG9mIHRoZSBzY1JOQSBvYmplY3QgZmVhdHVyZSBuYW1lcy4KCnJpYm9zb21hbF9STkEgPC0gcmlib3NvbWFsX1JOQSA8LSByZWFkLnRhYmxlKCJyaWJvc29tYWxfUk5BIiwgcXVvdGU9IlwiIiwgY29tbWVudC5jaGFyPSIiKQoKIyBMb2FkIGluIGRhdGEgc2V0cyBhbmQgZ2VuZXJhdCBzZXVyYXQgb2JqZWN0cwoKV1RfMDFfZGF0YSA8LSBSZWFkMTBYKGRhdGEuZGlyID0gIldUXzAxL2ZpbHRlcmVkX2ZlYXR1cmVfYmNfbWF0cml4LyIpCldUXzAxX3Jhd19vYmplY3QgPC0gQ3JlYXRlU2V1cmF0T2JqZWN0KGNvdW50cyA9IGNiaW5kKFdUXzAxX2RhdGEpLCBwcm9qZWN0ID0gYygiV1RfMDEiKSwgbWluLmNlbGxzID0gNSwgbWluLmZlYXR1cmVzID0gMykKCldUXzAyX2RhdGEgPC0gUmVhZDEwWChkYXRhLmRpciA9ICJXVF8wMi9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC8iKQpXVF8wMl9yYXdfb2JqZWN0IDwtIENyZWF0ZVNldXJhdE9iamVjdChjb3VudHMgPSBjYmluZChXVF8wMl9kYXRhKSwgcHJvamVjdCA9IGMoIldUXzAyIiksIG1pbi5jZWxscyA9IDUsIG1pbi5mZWF0dXJlcyA9IDMpCgpaQzNIMjBfZGF0YSA8LSBSZWFkMTBYKGRhdGEuZGlyID0gIlpDM0gyMF9LTy9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC8iKQpaQzNIMjBfcmF3X29iamVjdCA8LSBDcmVhdGVTZXVyYXRPYmplY3QoY291bnRzID0gY2JpbmQoWkMzSDIwX2RhdGEpLCBwcm9qZWN0ID0gYygiWkMzSDIwX0tPIiksIG1pbi5jZWxscyA9IDUsIG1pbi5mZWF0dXJlcyA9IDMpCgojIEFkZCBHRU0gY2xhc3NpZmljYXRpb25zIHRvIG9iamVjdCBhbmQgc3Vic2V0LiBHRU0gY2xhc3NpZmljYXRpb3NuIHdlcmUgZ2VuZXJhdGVkIHdpdGggQ2VsbHJhbmdlciBjb3VudCBmdW5jdGlvbiBhbmQgY2FuIGJlIGZvdW5kIGluIFN1cHBsZW1lbnRhcnkgRGF0YSAxIChCcmlnZ3MgZXQgYWwgMjAyMSkKCiNSZWFkIGluIGFzIGRhdGFmcmFtZSwgd2VyZSByb3cgbmFtZXMgYXJlIGNlbGwgYmFyY29kZXMKCmdlbV9jbGFzc2lmaWNhdGlvbl8wMSA8LSByZWFkLmNzdigifi9Eb2N1bWVudHMvV29yay9EYXRhL3NjUk5BLXNlcS9Db21wbGV0ZV9kYXRhL0ZpbmFsX2FuYWx5c2lzX05hdHVyZUNvbW1zMjAyMS9XVF8wMS9nZW1fY2xhc3NpZmljYXRpb25fMDEuY3N2Iiwgcm93Lm5hbWVzPTEpCkdFTV9XVF8wMSA8LSBhcy5kYXRhLmZyYW1lKGdlbV9jbGFzc2lmaWNhdGlvbl8wMSkKR0VNX1dUXzAxIDwtIHN1YnNldChHRU1fV1RfMDEsIHNlbGVjdCA9IGMoImNhbGwiKSkKV1RfMDFfcmF3X29iamVjdCA8LSBBZGRNZXRhRGF0YShXVF8wMV9yYXdfb2JqZWN0LCBHRU1fV1RfMDEpCldUXzAxX3Jhd19vYmplY3RfVGJydWNlaV9zdWJzZXQgPC0gc3Vic2V0KFdUXzAxX3Jhd19vYmplY3QsIHN1YnNldCA9IGNhbGwgPT0gIlRicnVjZWkiKQpnZW1fY2xhc3NpZmljYXRpb25fMDIgPC0gcmVhZC5jc3YoIn4vRG9jdW1lbnRzL1dvcmsvRGF0YS9zY1JOQS1zZXEvQ29tcGxldGVfZGF0YS9GaW5hbF9hbmFseXNpc19OYXR1cmVDb21tczIwMjEvV1RfMDIvZ2VtX2NsYXNzaWZpY2F0aW9uXzAyLmNzdiIsIHJvdy5uYW1lcz0xKQpHRU1fV1RfMDIgPC0gYXMuZGF0YS5mcmFtZShnZW1fY2xhc3NpZmljYXRpb25fMDIpCkdFTV9XVF8wMiA8LSBzdWJzZXQoR0VNX1dUXzAyLCBzZWxlY3QgPSBjKCJjYWxsIikpCldUXzAyX3Jhd19vYmplY3QgPC0gQWRkTWV0YURhdGEoV1RfMDJfcmF3X29iamVjdCwgR0VNX1dUXzAyKQpXVF8wMl9yYXdfb2JqZWN0X1RicnVjZWlfc3Vic2V0IDwtIHN1YnNldChXVF8wMl9yYXdfb2JqZWN0LCBzdWJzZXQgPSBjYWxsID09ICJUYnJ1Y2VpIikKCmdlbV9jbGFzc2lmaWNhdGlvbl9aQzNIMjAgPC0gcmVhZC5jc3YoIn4vRG9jdW1lbnRzL1dvcmsvRGF0YS9zY1JOQS1zZXEvQ29tcGxldGVfZGF0YS9GaW5hbF9hbmFseXNpc19OYXR1cmVDb21tczIwMjEvWkMzSDIwX0tPL2dlbV9jbGFzc2lmaWNhdGlvbl9aQzNIMjAuY3N2Iiwgcm93Lm5hbWVzPTEpCkdFTV9aQzNIMjAgPC0gYXMuZGF0YS5mcmFtZShnZW1fY2xhc3NpZmljYXRpb25fWkMzSDIwKQpHRU1fWkMzSDIwIDwtIHN1YnNldChHRU1fWkMzSDIwLCBzZWxlY3QgPSBjKCJjYWxsIikpClpDM0gyMF9yYXdfb2JqZWN0IDwtIEFkZE1ldGFEYXRhKFpDM0gyMF9yYXdfb2JqZWN0LCBHRU1fWkMzSDIwKQpaQzNIMjBfcmF3X29iamVjdF9UYnJ1Y2VpX3N1YnNldCA8LSBzdWJzZXQoWkMzSDIwX3Jhd19vYmplY3QsIHN1YnNldCA9IGNhbGwgPT0gIlRicnVjZWkiKQoKCiMgUmVtb3ZlIGFueSB0cmFuc2NyaXB0cyBtYXBwaW5nIHRvIEwuIG1leGljYW5hIGluIGNhc2Ugb2YgY29udGFtaW5hdGlvbiAKCldUXzAxX3Jhd19vYmplY3QgPC0gV1RfMDFfcmF3X29iamVjdF9UYnJ1Y2VpX3N1YnNldFtncmVwKCJUYnJ1Y2VpIiwgcm93bmFtZXMoV1RfMDFfcmF3X29iamVjdF9UYnJ1Y2VpX3N1YnNldCkpLCBdCldUXzAyX3Jhd19vYmplY3QgPC0gV1RfMDJfcmF3X29iamVjdF9UYnJ1Y2VpX3N1YnNldFtncmVwKCJUYnJ1Y2VpIiwgcm93bmFtZXMoV1RfMDJfcmF3X29iamVjdF9UYnJ1Y2VpX3N1YnNldCkpLCBdClpDM0gyMF9yYXdfb2JqZWN0IDwtIFpDM0gyMF9yYXdfb2JqZWN0X1RicnVjZWlfc3Vic2V0W2dyZXAoIlRicnVjZWkiLCByb3duYW1lcyhaQzNIMjBfcmF3X29iamVjdF9UYnJ1Y2VpX3N1YnNldCkpLCBdCgoKIyBDYWxjdWxhdGUgJSBvZiB0cmFuc2NyaXB0cyBmcm9tIEtETkEKCm10X21hcmtlcl9nZW5lcyA8LSBjKCJUYnJ1Y2VpLS0tTkQ3IiwgIlRicnVjZWktLS1DT0lJSSIsICJUYnJ1Y2VpLS0tTVVSRjQiLCAiVGJydWNlaS0tLU1VUkYxIiwgIlRicnVjZWktLS1ORDEiLCAiVGJydWNlaS0tLU1VUkYyIiwgIlRicnVjZWktLS1DT0kiLCAiVGJydWNlaS0tLUNPSUkiLCAiVGJydWNlaS0tLU5ENCIsICJUYnJ1Y2VpLS0tUlBTMTIiLCAiVGJydWNlaS0tLU5ENSIsICJUYnJ1Y2VpLS0tQ3liIikKV1RfMDFfcmF3X29iamVjdFtbInBlcmNlbnQuTVQiXV0gPC0gUGVyY2VudGFnZUZlYXR1cmVTZXQoV1RfMDFfcmF3X29iamVjdCwgZmVhdHVyZXMgPSBtdF9tYXJrZXJfZ2VuZXMpCldUXzAyX3Jhd19vYmplY3RbWyJwZXJjZW50Lk1UIl1dIDwtIFBlcmNlbnRhZ2VGZWF0dXJlU2V0KFdUXzAyX3Jhd19vYmplY3QsIGZlYXR1cmVzID0gbXRfbWFya2VyX2dlbmVzKQpaQzNIMjBfcmF3X29iamVjdFtbInBlcmNlbnQuTVQiXV0gPC0gUGVyY2VudGFnZUZlYXR1cmVTZXQoWkMzSDIwX3Jhd19vYmplY3QsIGZlYXR1cmVzID0gbXRfbWFya2VyX2dlbmVzKQoKCiMgQ2FsY3VsYXRlICUgb2YgdHJhbnNjcmlwdHMgd2hpY2ggYXJlIHJSTkEgY29udGFtaW5hbnRzIChuZWVkIGxpc3Qgb2YgclJOQSBnZW5lcyBsb2FkZWQsIHNlZSBhYm92ZSkKI3JpYm9zb21hbF9STkEgPC0gcmVhZC50YWJsZSgifi9Eb2N1bWVudHMvV29yay9EYXRhL3NjUk5BLXNlcS9Db21wbGV0ZV9kYXRhL0ZpbmFsX2FuYWx5c2lzX05hdHVyZUNvbW1zMjAyMS9yaWJvc29tYWxfUk5BIiwgcXVvdGU9IlwiIiwgY29tbWVudC5jaGFyPSIiKQpyaWJvc29tYWxfUk5BIDwtIGFzLmNoYXJhY3RlcihyaWJvc29tYWxfUk5BJFYxKQoKV1RfMDFfZ2VuZXMgPC0gV1RfMDFfcmF3X29iamVjdEBhc3NheXNbWyJSTkEiXV1AY291bnRzCldUXzAxX2dlbmVzIDwtIGMoV1RfMDFfZ2VuZXNARGltbmFtZXNbWzFdXSkKV1RfMDFfclJOQV9nZW5lcyA8LSBzdWJzZXQocmlib3NvbWFsX1JOQSwgcmlib3NvbWFsX1JOQSAlaW4lIFdUXzAxX2dlbmVzKQpXVF8wMV9yYXdfb2JqZWN0W1sicGVyY2VudC5yUk5BIl1dIDwtIFBlcmNlbnRhZ2VGZWF0dXJlU2V0KFdUXzAxX3Jhd19vYmplY3QsIGZlYXR1cmVzID0gV1RfMDFfclJOQV9nZW5lcykKCldUXzAyX2dlbmVzIDwtIFdUXzAyX3Jhd19vYmplY3RAYXNzYXlzW1siUk5BIl1dQGNvdW50cwpXVF8wMl9nZW5lcyA8LSBjKFdUXzAyX2dlbmVzQERpbW5hbWVzW1sxXV0pCldUXzAyX3JSTkFfZ2VuZXMgPC0gc3Vic2V0KHJpYm9zb21hbF9STkEsIHJpYm9zb21hbF9STkEgJWluJSBXVF8wMl9nZW5lcykKV1RfMDJfcmF3X29iamVjdFtbInBlcmNlbnQuclJOQSJdXSA8LSBQZXJjZW50YWdlRmVhdHVyZVNldChXVF8wMl9yYXdfb2JqZWN0LCBmZWF0dXJlcyA9IFdUXzAyX3JSTkFfZ2VuZXMpCgpaQzNIMjBfZ2VuZXMgPC0gWkMzSDIwX3Jhd19vYmplY3RAYXNzYXlzW1siUk5BIl1dQGNvdW50cwpaQzNIMjBfZ2VuZXMgPC0gYyhaQzNIMjBfZ2VuZXNARGltbmFtZXNbWzFdXSkKWkMzSDIwX3JSTkFfZ2VuZXMgPC0gc3Vic2V0KHJpYm9zb21hbF9STkEsIHJpYm9zb21hbF9STkEgJWluJSBaQzNIMjBfZ2VuZXMpClpDM0gyMF9yYXdfb2JqZWN0W1sicGVyY2VudC5yUk5BIl1dIDwtIFBlcmNlbnRhZ2VGZWF0dXJlU2V0KFpDM0gyMF9yYXdfb2JqZWN0LCBmZWF0dXJlcyA9IFpDM0gyMF9yUk5BX2dlbmVzKQoKbWVyZ2UgPC0gbWVyZ2UoV1RfMDFfcmF3X29iamVjdCwgYyhXVF8wMl9yYXdfb2JqZWN0LCBaQzNIMjBfcmF3X29iamVjdCksIGFkZC5jZWxsLmlkID0gYygiV1RfMSIsICJXVF8yIiwgIlpDM0gyMF9LTyIpKQoKYGBgCgoKYGBge3J9CgpVTUlfYWxsIDwtIG1lcmdlQG1ldGEuZGF0YVtbIm5Db3VudF9STkEiXV0KZmVhdHVyZXNfYWxsIDwtIG1lcmdlQG1ldGEuZGF0YVtbIm5GZWF0dXJlX1JOQSJdXQppZGVudCA8LSBtZXJnZUBtZXRhLmRhdGFbWyJvcmlnLmlkZW50Il1dCnVuaXF1ZShpZGVudCkKZGF0YSA8LWFzLmRhdGEuZnJhbWUoVU1JX2FsbCkKZGF0YSRmZWF0dXJlIDwtZmVhdHVyZXNfYWxsCmRhdGEkaWRlbnQgPC0gaWRlbnQKCmdncGxvdChkYXRhLCBhZXMoVU1JX2FsbCwgZmVhdHVyZSkpICsgZ2VvbV9wb2ludChhZXMoY29sb3VyID0gaWRlbnQpLCBzaXplID0gMC4xKSArIGxhYnModGl0bGUgPSAiIikgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIkZlYXR1cmUgQ291bnQiKSArIHhsYWIoIlVNSSBDb3VudCIpICsgCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAiYm9sZCIpLCBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gOSksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gOSksIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gOSksIGF4aXMudGV4dC55ID0gIGVsZW1lbnRfdGV4dChzaXplID0gOCkpICsKICBnZW9tX3ZsaW5lKGFlcyh4aW50ZXJjZXB0PTQwMDApLCBjb2xvciA9ICJyZWQiLCBsaW5ldHlwZT0ibG9uZ2Rhc2giKSAgKwogIGdlb21faGxpbmUoYWVzKHlpbnRlcmNlcHQ9MjUwKSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGU9ImxvbmdkYXNoIikgKwogIGdlb21faGxpbmUoYWVzKHlpbnRlcmNlcHQ9MjUwMCksIGNvbG9yID0gInJlZCIsIGxpbmV0eXBlPSJsb25nZGFzaCIpICsKICBnZW9tX3ZsaW5lKGFlcyh4aW50ZXJjZXB0PSgxMDAwKSksIGNvbG9yID0gInJlZCIsIGxpbmV0eXBlPSJsb25nZGFzaCIpCgpgYGAKCmBgYHtyfQoKVU1JX2FsbCA8LSBtZXJnZUBtZXRhLmRhdGFbWyJuQ291bnRfUk5BIl1dCnJSTkFfYWxsIDwtIG1lcmdlQG1ldGEuZGF0YVtbInBlcmNlbnQuclJOQSJdXQppZGVudCA8LSBtZXJnZUBtZXRhLmRhdGFbWyJvcmlnLmlkZW50Il1dCmRhdGEgPC1hcy5kYXRhLmZyYW1lKFVNSV9hbGwpCmRhdGEkclJOQV9hbGwgPC1yUk5BX2FsbApkYXRhJGlkZW50IDwtIGlkZW50CgoKZ2dwbG90KGRhdGEsIGFlcyhVTUlfYWxsLCByUk5BX2FsbCkpICsgZ2VvbV9wb2ludChhZXMoY29sb3VyID0gaWRlbnQpLCBzaXplID0gMC4xKSArIGxhYnModGl0bGUgPSAiIikgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIiUgclJOQSBnZW5lcyIpICsgeGxhYigiVU1JIENvdW50IikgKyAKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICJib2xkIiksIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwgYXhpcy50ZXh0LnkgPSAgZWxlbWVudF90ZXh0KHNpemUgPSA4KSkgKwogIGdlb21fdmxpbmUoYWVzKHhpbnRlcmNlcHQ9NDAwMCksIGNvbG9yID0gInJlZCIsIGxpbmV0eXBlPSJsb25nZGFzaCIpICArCiAgZ2VvbV9obGluZShhZXMoeWludGVyY2VwdD04KSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGU9ImxvbmdkYXNoIikgKwogIGdlb21fdmxpbmUoYWVzKHhpbnRlcmNlcHQ9KDEwMDApKSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGU9ImxvbmdkYXNoIikKYGBgCgoKYGBge3J9ClVNSV9hbGwgPC0gbWVyZ2VAbWV0YS5kYXRhW1sibkNvdW50X1JOQSJdXQprRE5BX2FsbCA8LSBtZXJnZUBtZXRhLmRhdGFbWyJwZXJjZW50Lk1UIl1dCmlkZW50IDwtIG1lcmdlQG1ldGEuZGF0YVtbIm9yaWcuaWRlbnQiXV0KZGF0YSA8LWFzLmRhdGEuZnJhbWUoVU1JX2FsbCkKZGF0YSRrRE5BX2FsbCA8LWtETkFfYWxsCmRhdGEkaWRlbnQgPC0gaWRlbnQKCgoKZ2dwbG90KGRhdGEsIGFlcyhVTUlfYWxsLCBrRE5BX2FsbCkpICsgZ2VvbV9wb2ludChhZXMoY29sb3VyID0gaWRlbnQpLCBzaXplID0gMC4xKSArIGxhYnModGl0bGUgPSAiIikgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIiUga0ROQSBnZW5lcyIpICsgeGxhYigiVU1JIENvdW50IikgKyAKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICJib2xkIiksIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwgYXhpcy50ZXh0LnkgPSAgZWxlbWVudF90ZXh0KHNpemUgPSA4KSkgKwogIGdlb21fdmxpbmUoYWVzKHhpbnRlcmNlcHQ9NDAwMCksIGNvbG9yID0gInJlZCIsIGxpbmV0eXBlPSJsb25nZGFzaCIpICArCiAgZ2VvbV9obGluZShhZXMoeWludGVyY2VwdD0yKSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGU9ImxvbmdkYXNoIikgKwogIGdlb21fdmxpbmUoYWVzKHhpbnRlcmNlcHQ9KDEwMDApKSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGU9ImxvbmdkYXNoIikKYGBgCgoKYGBge3J9CldUXzAxIDwtIHN1YnNldChXVF8wMV9yYXdfb2JqZWN0LCBzdWJzZXQgPSBuRmVhdHVyZV9STkEgPiAyNTAgJiBuRmVhdHVyZV9STkEgPCAyNTAwICYgbkNvdW50X1JOQSA+IDEwMDAgJiBuQ291bnRfUk5BIDwgNDAwMCAmIHBlcmNlbnQuTVQgPCAyICYgcGVyY2VudC5yUk5BIDwgOCkKV1RfMDIgPC0gc3Vic2V0KFdUXzAyX3Jhd19vYmplY3QsIHN1YnNldCA9IG5GZWF0dXJlX1JOQSA+IDI1MCAmIG5GZWF0dXJlX1JOQSA8IDI1MDAgJiBuQ291bnRfUk5BID4gMTAwMCAmIG5Db3VudF9STkEgPCA0MDAwICYgcGVyY2VudC5NVCA8IDIgJiBwZXJjZW50LnJSTkEgPCA4KQoKWkMzSDIwIDwtIHN1YnNldChaQzNIMjBfcmF3X29iamVjdCwgc3Vic2V0ID0gbkZlYXR1cmVfUk5BID4gMjUwICYgbkZlYXR1cmVfUk5BIDwgMjUwMCAmIG5Db3VudF9STkEgPiAxMDAwICYgbkNvdW50X1JOQSA8IDQwMDAgJiBwZXJjZW50Lk1UIDwgMiAmIHBlcmNlbnQuclJOQSA8IDgpCmBgYAoKQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkNtZCtPcHRpb24rSSouCgpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkNtZCtTaGlmdCtLKiB0byBwcmV2aWV3IHRoZSBIVE1MIGZpbGUpLiAKClRoZSBwcmV2aWV3IHNob3dzIHlvdSBhIHJlbmRlcmVkIEhUTUwgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGVkaXRvci4gQ29uc2VxdWVudGx5LCB1bmxpa2UgKktuaXQqLCAqUHJldmlldyogZG9lcyBub3QgcnVuIGFueSBSIGNvZGUgY2h1bmtzLiBJbnN0ZWFkLCB0aGUgb3V0cHV0IG9mIHRoZSBjaHVuayB3aGVuIGl0IHdhcyBsYXN0IHJ1biBpbiB0aGUgZWRpdG9yIGlzIGRpc3BsYXllZC4KCg==