This file contains statistics and figures from the paper, “Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution” by Max Hills Jr., Limei Ma, Ai Fang, Thelma Chiremba, Seth Malloy, Allison Scott, Anoja Perera, and C. Ron Yu.

The paper can be found here:

Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution



Receptor expression in the VNO

Distribution density plot showing relationship between similarity of transcription factor (TF) gene expression profiles and receptor sequence similarity

Heatmaps showing V1R-TF and V2R-TF associations. Heat shows average expression level for TF genes for a given receptor type

LS0tCnRpdGxlOiAiVk5PIEF0bGFzIEZpZ3VyZSBTOSIKYXV0aG9yOiAiTWF4IEhpbGxzIgpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY3NzOiBzdHlsZS5jc3MKLS0tCiAgCiAgCmBgYHtyLCByZXN1bHRzPSdhc2lzJ30KCmNhdCgiPGJ1dHRvbiBvbmNsaWNrPSdoaXN0b3J5LmJhY2soKScgc3R5bGU9J2ZvbnQtc2l6ZTogMjBweDsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMTBweCAyMHB4OyBib3JkZXI6IDNweCBzb2xpZCB5ZWxsb3c7IGJvcmRlci1yYWRpdXM6IDVweDsnPkNsaWNrIEhlcmUgdG8gUmV0dXJuIHRvIFByZXZpb3VzIFBhZ2U8L2J1dHRvbj4iKQoKYGBgCgoqKiogIAoKYGBge3IsIGVuZ2luZT0nY3NzJywgZWNobyA9IEZBTFNFfQoKYm9keSB7CiAgZm9udC1zaXplOiAxOHB4Owp9Ci5uYXYtcGlsbHMgPiBsaSA+IGEgewogIGNvbG9yOiBibGFjazsgLyogU2V0IGluYWN0aXZlIHRhYiB0ZXh0IGNvbG9yIHRvIGJsYWNrICovCiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7IC8qIEFkZCBibGFjayBib3JkZXIgdG8gaW5hY3RpdmUgdGFicyAqLwogIGJvcmRlci1yYWRpdXM6IDRweDsgLyogT3B0aW9uYWw6IFNsaWdodGx5IHJvdW5kIHRoZSBjb3JuZXJzICovCn0KCi5uYXYtcGlsbHMgPiBsaSA+IGE6aG92ZXIsIC5uYXYtcGlsbHMgPiBsaSA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OyAvKiBTZXQgaG92ZXIgYmFja2dyb3VuZCBjb2xvciB0byBhIGRhcmtlciBncmF5ICovCiAgY29sb3I6IHdoaXRlOyAvKiBTZXQgaG92ZXIgdGV4dCBjb2xvciB0byB3aGl0ZSBmb3IgYmV0dGVyIGNvbnRyYXN0ICovCn0KCi5uYXYtcGlsbHMgPiBsaS5hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgLyogU2V0IGFjdGl2ZSB0YWIgYmFja2dyb3VuZCBjb2xvciB0byBibGFjayAqLwogIGNvbG9yOiB3aGl0ZTsgLyogU2V0IGFjdGl2ZSB0YWIgdGV4dCBjb2xvciB0byB3aGl0ZSAqLwogIGJvcmRlcjogM3B4IHNvbGlkIHllbGxvdwp9CgoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogZGFya2dyYXk7IC8qIFNldCBhY3RpdmUgdGFiIGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2sgKi8KICBjb2xvcjogd2hpdGU7IC8qIFNldCBhY3RpdmUgdGFiIHRleHQgY29sb3IgdG8gd2hpdGUgKi8KICBib3JkZXI6IDNweCBzb2xpZCBibGFjawp9CgpgYGAgCiAgICAKICAKPlRoaXMgZmlsZSBjb250YWlucyBzdGF0aXN0aWNzIGFuZCBmaWd1cmVzIGZyb20gdGhlIHBhcGVyLCAiTW9sZWN1bGFyLCBDZWxsdWxhciwgYW5kIERldmVsb3BtZW50YWwgT3JnYW5pemF0aW9uIG9mIHRoZSBNb3VzZSBWb21lcm9uYXNhbCBvcmdhbiBhdCBTaW5nbGUgQ2VsbCBSZXNvbHV0aW9uIiBieSBNYXggSGlsbHMgSnIuLCBMaW1laSBNYSwgQWkgRmFuZywgVGhlbG1hIENoaXJlbWJhLCBTZXRoIE1hbGxveSwgQWxsaXNvbiBTY290dCwgQW5vamEgUGVyZXJhLCBhbmQgQy4gUm9uIFl1LiAgICAKClRoZSBwYXBlciBjYW4gYmUgZm91bmQgaGVyZTogIAoKW01vbGVjdWxhciwgQ2VsbHVsYXIsIGFuZCBEZXZlbG9wbWVudGFsIE9yZ2FuaXphdGlvbiBvZiB0aGUgTW91c2UgVm9tZXJvbmFzYWwgb3JnYW4gYXQgU2luZ2xlIENlbGwgUmVzb2x1dGlvbl0oaHR0cHM6Ly9lbGlmZXNjaWVuY2VzLm9yZy9yZXZpZXdlZC1wcmVwcmludHMvOTczNTYjdGFiLWNvbnRlbnQpCgoqKiogIAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CgojIFItTWFya2Rvd24gR2xvYmFsIFNldHRpbmdzICAKCiMgU2V0LXVwIGEgZGVmYXVsdCBpbWFnZSBzaXplIG9mIDEwIFggMTAgaW5jaGVzLiBTdXBwcmVzcyB3YXJuaW5nCiMgYW5kIGVycm9yIG1lc3NhZ2VzLiBIaWRlIGNvZGUuCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBjb21tZW50PSIiLAogICAgICAgICAgICAgICAgICAgICAgZXJyb3I9RkFMU0UsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD0xMiwgY2FjaGU9RkFMU0UpCgpgYGAKCmBgYHtyIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0KCiMgTGlicmFyeSBMb2FkaW5nICAKCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyh7CiAgbGlicmFyeShraXQpOyBsaWJyYXJ5KHRpZHl2ZXJzZSk7IGxpYnJhcnkoc3RyaW5ncik7IGxpYnJhcnkocGxvdDNEKSAKICBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KGRhdGEudGFibGUpOyBsaWJyYXJ5KG9yZy5NbS5lZy5kYikKICBsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeShTZXVyYXQpOyBsaWJyYXJ5KERCSSk7IGxpYnJhcnkoY293cGxvdCkKICBsaWJyYXJ5KE1hdHJpeCk7IGxpYnJhcnkoZ2xtR2FtUG9pKTsgbGlicmFyeShjaXJjbGl6ZSkKICBsaWJyYXJ5KHRpYmJsZSk7IGxpYnJhcnkoZ2dwdWJyKTsgbGlicmFyeShzdmdsaXRlKTsgbGlicmFyeShnZ3NpZ25pZikKICBsaWJyYXJ5KHN0YXRzKTsgbGlicmFyeSh2ZWdhbik7IGxpYnJhcnkoc2NhbGVzKTsgbGlicmFyeShjYXJldCkKICBsaWJyYXJ5KHBhdGNod29yayk7IGxpYnJhcnkocGxvdGx5KTsgbGlicmFyeShnZW9tdGV4dHBhdGgpCiAgbGlicmFyeShvcGVueGxzeCk7IGxpYnJhcnkoZ3JpZEV4dHJhKTsgbGlicmFyeShnZ3JlcGVsKQogIGxpYnJhcnkoR2VuZU92ZXJsYXApOyBsaWJyYXJ5KGJpb21hUnQpOyBsaWJyYXJ5KGdncG9pbnRkZW5zaXR5KQogIGxpYnJhcnkoc2xpbmdzaG90KTsgbGlicmFyeSh0cmFkZVNlcSk7IGxpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCiAgbGlicmFyeSh2aXJpZGlzKTsgbGlicmFyeShVcFNldFIpOyBsaWJyYXJ5KHBoZWF0bWFwKTsgbGlicmFyeShtc2lnZGJyKQogIGxpYnJhcnkoZmdzZWEpOyBsaWJyYXJ5KGdyaWQpOyBsaWJyYXJ5KElEUG1pc2MpOyBsaWJyYXJ5KE1BU1MpCiAgbGlicmFyeShSbWlzYyk7IGxpYnJhcnkoZ2dwbG90aWZ5KTsgbGlicmFyeShnZ3BtaXNjKTsgbGlicmFyeShzY2FsZXMpCiAgbGlicmFyeShoZWF0bWFwbHkpOyBsaWJyYXJ5KGRlbmRleHRlbmQpCn0pCgpgYGAKCmBgYHtyfQoKIyBHbG9iYWwgVmFyaWFibGVzCgojIFRoZSBob21lIGRpcmVjdG9yeQpob21lX2RpciA8LSAiL2wvWXUvWXVMYWIvQmlvaW5mb3JtYXRpY3MvcHJvamVjdHMvbWhoL3NjX1ZOTy8iCiMgRGlyZWN0b3J5IGZvciBzdG9yaW5nIGRhdGEgb2JqZWN0cyBhdCBjcnVjaWFsIHN0YWdlcwpvYmplY3RfZGlyIDwtIHBhc3RlMChob21lX2RpciwiZmluYWwuc2V1Lm9ianMvIikKIyBEaXJlY3RvcnkgZm9yIGltYWdlcyBmcm9tIHRoZSBmaW5hbCBhbmFseXNpcwppbWFnZV9kaXIgPC0gcGFzdGUwKGhvbWVfZGlyLCJmaW5hbF9pbWFnZXMvIikKYWRvYmVfaW1hZ2VzIDwtIHBhc3RlMChpbWFnZV9kaXIsICJhZG9iZV9pbGx1c3RyYXRvcl9zdmdfZmlsZXMvIikKIyBEaXJlY3RvcnkgZm9yIGltYWdlcyBmb3IgdGhlIGZpbmFsIHBhcGVyCmNsdXN0cmVlX2RpciA8LSBwYXN0ZTAoaW1hZ2VfZGlyLCJjbHVzdHJlZS8iKQojIEEgZGlyZWN0b3J5IGZvciBUcmFkZVNlcSBmaXRHQU0gb3V0cHV0CmZpdEdBTV9kaXIgPC0gcGFzdGUwKG9iamVjdF9kaXIsICJmaXRHQU0vIikKCmdsb2JhbC52YXJzIDwtIGMobHMoKSwiZ2xvYmFsLnZhcnMiKQoKYGBgCgoqKiogIAoKIyBSZWNlcHRvciBleHByZXNzaW9uIGluIHRoZSBWTk8gey50YWJzZXQgLnRhYnNldC1waWxsc30gIAoKYGBge3J9CgojIExvYWQgZGF0YSBmb3IgcGFuZWxzIEUgYW5kIEYKdnIuY29yLnRyYW5zY3JpcHRpb25fZmFjdG9yIDwtIHJlYWRSRFMoZmlsZT1wYXN0ZTAob2JqZWN0X2RpciwidnIuY29yLnRyYW5zY3JpcHRpb25fZmFjdG9yLnJkcyIpKQp2MXIuY29yLnRyYW5zY3JpcHRpb25fZmFjdG9yIDwtIHJlYWRSRFMoZmlsZT1wYXN0ZTAob2JqZWN0X2RpciwidjFyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3Rvci5yZHMiKSkKdjJyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3RvciA8LSByZWFkUkRTKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsInYyci5jb3IudHJhbnNjcmlwdGlvbl9mYWN0b3IucmRzIikpCnYxci50cmFuc2NyaXB0aW9uX2ZhY3Rvci5iX2luX2EubWF0IDwtIHJlYWRSRFMoZmlsZT1wYXN0ZTAob2JqZWN0X2RpciwidjFyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmJfaW5fYS5tYXQucmRzIikpCnYyci50cmFuc2NyaXB0aW9uX2ZhY3Rvci5iX2luX2EubWF0IDwtIHJlYWRSRFMoZmlsZT1wYXN0ZTAob2JqZWN0X2RpciwidjJyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmJfaW5fYS5tYXQucmRzIikpCnZuby5yZWNlcHRvci5pZGVudGl0eSA8LSByZWFkUkRTKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsInZuby5yZWNlcHRvci5pZGVudGl0eS5tYXRyaXgucmRzIikpCgpgYGAKCiMjIERpc3RyaWJ1dGlvbiBkZW5zaXR5IHBsb3Qgc2hvd2luZyByZWxhdGlvbnNoaXAgYmV0d2VlbiBzaW1pbGFyaXR5IG9mIHRyYW5zY3JpcHRpb24gZmFjdG9yIChURikgZ2VuZSBleHByZXNzaW9uIHByb2ZpbGVzIGFuZCByZWNlcHRvciBzZXF1ZW5jZSBzaW1pbGFyaXR5ICAKCmBgYHtyfQoKIyBGaW5kIHRoZSBpbmRleCBvZiBlYWNoIHNpZ25pZmljYW50IHJlY2VwdG9yIGNvLWV4cHJlc3NlZCB3aXRoIGEgdHJhbnNjcmlwdGlvbiBmYWN0b3IgZ2VuZSB3aXRoaW4gdGhlIHJlY2VwdG9yIHNlcXVlbmNlIGlkZW50aXR5IG1hdHJpeAptYXRjaC5pZHggPC0gbWF0Y2goeD1yb3duYW1lcyh2ci5jb3IudHJhbnNjcmlwdGlvbl9mYWN0b3IpLHRhYmxlPXJvd25hbWVzKHZuby5yZWNlcHRvci5pZGVudGl0eSkpCiMgUmVtb3ZlIE5BcyBmb3IgZ2VuZXMgbm90IHByZXNlbnQgaW4gdGhlIHNlcXVlbmNlIGlkZW50aXR5IG1hdHJpeAptYXRjaC5pZHggPC0gbmEub21pdChtYXRjaC5pZHgpCiMgU3Vic2V0IG91ciBzZXF1ZW5jZSBpZGVudGl0eSBtYXRyaXggdG8gbWF0Y2ggb3VyIHZyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3RvciBtYXRyaXgKdm5vLnJlY2VwdG9yLmlkZW50aXR5IDwtIHZuby5yZWNlcHRvci5pZGVudGl0eVttYXRjaC5pZHgsbWF0Y2guaWR4XQojIE1pc3NpbmcgcmVjZXB0b3JzCm1pc3NpbmcucmVjZXB0b3JzIDwtIHNldGRpZmYocm93bmFtZXModnIuY29yLnRyYW5zY3JpcHRpb25fZmFjdG9yKSwgcm93bmFtZXModm5vLnJlY2VwdG9yLmlkZW50aXR5KSkKIyBSZW1vdmUgbWlzc2luZyByZWNlcHRvcnMKdnIuY29yLnRyYW5zY3JpcHRpb25fZmFjdG9yLmZpbHRlcmVkIDwtIAogIHZyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3RvclshKHJvd25hbWVzKHZyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3RvcikgJWluJSBtaXNzaW5nLnJlY2VwdG9ycyksIShjb2xuYW1lcyh2ci5jb3IudHJhbnNjcmlwdGlvbl9mYWN0b3IpICVpbiUgbWlzc2luZy5yZWNlcHRvcnMpXQoKYGBgCgpgYGB7cn0KCnJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiA8LSBleHBhbmQuZ3JpZChyb3duYW1lcyh2ci5jb3IudHJhbnNjcmlwdGlvbl9mYWN0b3IuZmlsdGVyZWQpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWVzKHZyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3Rvci5maWx0ZXJlZCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nc0FzRmFjdG9ycz1GQUxTRSkKCnZyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmNvci52ZWMgPC0gc2FwcGx5KDE6bnJvdyhyZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGYpLCBmdW5jdGlvbihpKXsKICByb3cuZ2VuZSA8LSByZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGZbaSwxXQogIGNvbC5nZW5lIDwtIHJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZltpLDJdCiAgdmFsIDwtIHZyLmNvci50cmFuc2NyaXB0aW9uX2ZhY3Rvci5maWx0ZXJlZFtyb3cuZ2VuZSxjb2wuZ2VuZV0KICByZXR1cm4odmFsKQp9KQp2ci5zZXF1ZW5jZS5jb3IudmVjIDwtIHNhcHBseSgxOm5yb3cocmVjZXB0b3Iuc2VxX3NpbS5jb3IudGZfc2ltLmRmKSwgZnVuY3Rpb24oaSl7CiAgcm93LmdlbmUgPC0gcmVjZXB0b3Iuc2VxX3NpbS5jb3IudGZfc2ltLmRmW2ksMV0KICBjb2wuZ2VuZSA8LSByZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGZbaSwyXQogIHZhbCA8LSB2bm8ucmVjZXB0b3IuaWRlbnRpdHlbcm93LmdlbmUsY29sLmdlbmVdCiAgcmV0dXJuKHZhbCkKfSkKCnJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiR0Zl9leHBfY29yIDwtIHZyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmNvci52ZWMKcmVjZXB0b3Iuc2VxX3NpbS5jb3IudGZfc2ltLmRmJHZyX3NlcV9zaW0gPC0gdnIuc2VxdWVuY2UuY29yLnZlYwoKIyBDcmVhdGUgcm93bmFtZXMgYmFzZWQgb24gZ2VuZUFfZ2VuZUIKbmV3X3JuIDwtIHBhc3RlKHJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiRWYXIxLHJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiRWYXIyLHNlcD0iXyIpCnJvd25hbWVzKHJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZikgPC0gbmV3X3JuCgojIFJlbW92ZSBzZWxmLWlkZW50aXR5IHJvd3MsIGkuZS4sIFZtbjFyMSBhbmQgVm1uMXIxCnJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiA8LSByZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGZbIShyZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGYkVmFyMSA9PSByZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGYkVmFyMiksIF0KIyBSZW1vdmUgZ2VuZSBuYW1lcyBmcm9tIGRhdGFmcmFtZQpyZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGYgPC0gcmVjZXB0b3Iuc2VxX3NpbS5jb3IudGZfc2ltLmRmWyAsLWMoMToyKV0KCiMgUmVtb3ZlIGR1cGxpY2F0ZSByb3dzCnJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiA8LSByZWNlcHRvci5zZXFfc2ltLmNvci50Zl9zaW0uZGYgJT4lIGRpc3RpbmN0KCkKCnNhdmVSRFMocmVjZXB0b3Iuc2VxX3NpbS5jb3IudGZfc2ltLmRmLGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsInJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZi5yZHMiKSkKCmBgYAoKYGBge3J9CgpmaWdTXzlBIDwtIGdncGxvdChkYXRhPXJlY2VwdG9yLnNlcV9zaW0uY29yLnRmX3NpbS5kZiwgYWVzKHg9dnJfc2VxX3NpbSwgeT10Zl9leHBfY29yKSkgKyAKICBnZW9tX3BvaW50KHNpemU9MC41KSArIHRoZW1lX2NsYXNzaWMoKSArCiAgZ2VvbV9wb2ludGRlbnNpdHkoKSArIHNjYWxlX2NvbG9yX3ZpcmlkaXMoKSArIAogIGxhYnMoeT0iVHJhbnNjcmlwdGlvbiBGYWN0b3IgU2ltaWxhcml0eSIseD0iVlIgU2ltaWxhcml0eSIpICsKICBzdGF0X3N1bW1hcnlfYmluKGZ1bi55PSdtZWFuJywgYmlucz0xMDAsIGNvbG9yPSdvcmFuZ2UnLCAKICAgICAgICAgICAgICAgICAgIGdlb209J2xpbmUnLCBvcmllbnRhdGlvbj0neCcsIHNpemU9MS41LCBzaG93LmxlZ2VuZD1UUlVFKSArIAogIHN0YXRfc3VtbWFyeV9iaW4oZnVuLnk9J21lZGlhbicsIGJpbnM9MTAwLCBjb2xvciA9ICdibHVlJywgCiAgICAgICAgICAgICAgICAgICBnZW9tPSdsaW5lJywgbGluZXR5cGU9J2Rhc2hlZCcsIG9yaWVudGF0aW9uPSd4Jywgc2l6ZT0xLjUsIHNob3cubGVnZW5kPVRSVUUpICsKICBzdGF0X3N1bW1hcnlfYmluKGZ1bi55PSdtZWFuJywgYmlucz0xMDAsIAogICAgICAgICAgICAgICAgICAgY29sb3I9J21hZ2VudGEnLCBnZW9tPSdsaW5lJywgb3JpZW50YXRpb249J3knLCBzaXplPTEuNSwgc2hvdy5sZWdlbmQ9VFJVRSkgKyAKICBzdGF0X3N1bW1hcnlfYmluKGZ1bi55PSdtZWRpYW4nLCBiaW5zPTEwMCwgY29sb3IgPSAnY3lhbicsIAogICAgICAgICAgICAgICAgICAgZ2VvbT0nbGluZScsIGxpbmV0eXBlPSdkYXNoZWQnLCBvcmllbnRhdGlvbj0neScsIHNpemU9MS41LCBzaG93LmxlZ2VuZD1UUlVFKSArCiAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gIHVuaXQoMC41LCAiaW4iKSxheGlzLnRpdGxlPWVsZW1lbnRfdGV4dChzaXplPTI0KSwKICAgICAgICBheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLGxlZ2VuZC50aXRsZT1lbGVtZW50X3RleHQoc2l6ZT0yMCksCiAgICAgICAgbGVnZW5kLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLCBhc3BlY3QucmF0aW89MSkKCmZpZ1NfOUEKICAKYGBgCgojIyBIZWF0bWFwcyBzaG93aW5nIFYxUi1URiBhbmQgVjJSLVRGIGFzc29jaWF0aW9ucy4gSGVhdCBzaG93cyBhdmVyYWdlIGV4cHJlc3Npb24gbGV2ZWwgZm9yIFRGIGdlbmVzIGZvciBhIGdpdmVuIHJlY2VwdG9yIHR5cGUgIAoKYGBge3IsZmlnLndpZHRoPTgsZmlnLmhlaWdodD0xNn0KCiMgVGhlIGRlbmRyb2dyYW0gZm9yIHJvd3MKZHN0IDwtIGRpc3QodjFyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmJfaW5fYS5tYXQpCmhjX3JvdyA8LSBoY2x1c3QoZHN0KQpyb3dfZGVuZCA8LSBhcy5kZW5kcm9ncmFtKGhjX3JvdykKcm93X2RlbmQgPC0gc2VyaWF0ZV9kZW5kcm9ncmFtKHJvd19kZW5kLCBkc3QsIG1ldGhvZD0iT0xPIikKCiMgVGhlIGRlbmRyb2dyYW0gZm9yIGNvbHVtbnMKZHN0IDwtIGRpc3QodCh2MXIudHJhbnNjcmlwdGlvbl9mYWN0b3IuYl9pbl9hLm1hdCkpCmhjX3JvdyA8LSBoY2x1c3QoZHN0KQpjb2xfZGVuZCA8LSBhcy5kZW5kcm9ncmFtKGhjX3JvdykKY29sX2RlbmQgPC0gc2VyaWF0ZV9kZW5kcm9ncmFtKGNvbF9kZW5kLCBkc3QsIG1ldGhvZD0iT0xPIikKCmZpZ1NfOUIgPC0gcGhlYXRtYXAodjFyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmJfaW5fYS5tYXQsZm9udHNpemU9MTUsdHJlZWhlaWdodF9yb3c9MjUsdHJlZWhlaWdodF9jb2w9MjUsCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzPWFzLmhjbHVzdChyb3dfZGVuZCksIGNsdXN0ZXJfY29scz1hcy5oY2x1c3QoY29sX2RlbmQpKQoKZ3JpZC5kcmF3KHJlY3RHcm9iKGdwPWdwYXIoZmlsbD0id2hpdGUiLCBsd2Q9MCkpKQpncmlkLmRyYXcoZmlnU185QltbNF1dKQoKYGBgCgpgYGB7cixmaWcuaGVpZ2h0PTE2LGZpZy53aWR0aD0xN30KCiMgVGhlIGRlbmRyb2dyYW0gZm9yIHJvd3MKZHN0IDwtIGRpc3QodjJyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmJfaW5fYS5tYXQpCmhjX3JvdyA8LSBoY2x1c3QoZHN0KQpyb3dfZGVuZCA8LSBhcy5kZW5kcm9ncmFtKGhjX3JvdykKcm93X2RlbmQgPC0gc2VyaWF0ZV9kZW5kcm9ncmFtKHJvd19kZW5kLCBkc3QsIG1ldGhvZD0iT0xPIikKCiMgVGhlIGRlbmRyb2dyYW0gZm9yIGNvbHVtbnMKZHN0IDwtIGRpc3QodCh2MnIudHJhbnNjcmlwdGlvbl9mYWN0b3IuYl9pbl9hLm1hdCkpCmhjX3JvdyA8LSBoY2x1c3QoZHN0KQpjb2xfZGVuZCA8LSBhcy5kZW5kcm9ncmFtKGhjX3JvdykKY29sX2RlbmQgPC0gc2VyaWF0ZV9kZW5kcm9ncmFtKGNvbF9kZW5kLCBkc3QsIG1ldGhvZD0iT0xPIikKCmZpZ1NfOUMgPC0gcGhlYXRtYXAodjJyLnRyYW5zY3JpcHRpb25fZmFjdG9yLmJfaW5fYS5tYXQsZm9udHNpemU9MTAsdHJlZWhlaWdodF9yb3c9MjUsdHJlZWhlaWdodF9jb2w9MjUsCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzPWFzLmhjbHVzdChyb3dfZGVuZCksIGNsdXN0ZXJfY29scz1hcy5oY2x1c3QoY29sX2RlbmQpKQoKZ3JpZC5kcmF3KHJlY3RHcm9iKGdwPWdwYXIoZmlsbD0id2hpdGUiLCBsd2Q9MCkpKQpncmlkLmRyYXcoZmlnU185Q1tbNF1dKQoKYGBgCgo=