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



Axon guidance molecules associated with receptor genes

Correlation heatmap between receptor types calculated from co-expressed AG and TF genes

3D Heatmap showing the Jaccard Indices between AG and TF genes for each of the VRs in the dataset

Interactive 3D Heatmap VR-AG-TF Jaccard Indices

Heatmaps showing Jaccard Indices of TF-AG associations for V1R and V2R types. The lists of TF and AG genes here are abridged from the full list to enhance visualization

Vmn1r185 - Vmn1r34 - Vmn1r69

Vmn1r56 - Vmn1r60 - Vmn1r61

Vmn2r1 - Vmn2r3 - Vmn2r7

Vmn2r8 - Vmn2r73 - Vmn2r88

Vmn2r91 - Vmn2r118

LS0tCnRpdGxlOiAiVk5PIEF0bGFzIEZpZ3VyZSA3IgphdXRob3I6ICJNYXggSGlsbHMiCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjc3M6IHN0eWxlLmNzcwotLS0KCmBgYHtyLCByZXN1bHRzPSdhc2lzJ30KCmNhdCgiPGJ1dHRvbiBvbmNsaWNrPSdoaXN0b3J5LmJhY2soKScgc3R5bGU9J2ZvbnQtc2l6ZTogMjBweDsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMTBweCAyMHB4OyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDVweDsnPkNsaWNrIEhlcmUgdG8gUmV0dXJuIHRvIFByZXZpb3VzIFBhZ2U8L2J1dHRvbj4iKQoKYGBgCgpgYGB7ciwgZW5naW5lPSdjc3MnLCBlY2hvID0gRkFMU0V9CgoubmF2LXBpbGxzID4gbGkgPiBhIHsKICBjb2xvcjogYmxhY2s7IC8qIFNldCBpbmFjdGl2ZSB0YWIgdGV4dCBjb2xvciB0byBibGFjayAqLwp9CgoubmF2LXBpbGxzID4gbGkgPiBhOmhvdmVyLCAubmF2LXBpbGxzID4gbGkgPiBhOmZvY3VzLCAubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYSwKLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIsIC5uYXYtcGlsbHMgPiBsaS5hY3RpdmUgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgLyogU2V0IGhvdmVyIGJhY2tncm91bmQgY29sb3IgdG8gYSBkYXJrZXIgZ3JheSAqLwogIGNvbG9yOiB3aGl0ZTsgLyogU2V0IGhvdmVyIHRleHQgY29sb3IgdG8gd2hpdGUgZm9yIGJldHRlciBjb250cmFzdCAqLwp9CiAgICAgCmBgYCAgICAKICAKICAKICAKPlRoaXMgZmlsZSBjb250YWlucyBzdGF0aXN0aWNzIGFuZCBmaWd1cmVzIGZyb20gdGhlIHBhcGVyLCAiTW9sZWN1bGFyLCBDZWxsdWxhciwgYW5kIERldmVsb3BtZW50YWwgT3JnYW5pemF0aW9uIG9mIHRoZSBNb3VzZSBWb21lcm9uYXNhbCBvcmdhbiBhdCBTaW5nbGUgQ2VsbCBSZXNvbHV0aW9uIiBieSBNYXggSGlsbHMgSnIuLCBMaW1laSBNYSwgQWkgRmFuZywgVGhlbG1hIENoaXJlbWJhLCBTZXRoIE1hbGxveSwgQWxsaXNvbiBTY290dCwgQW5vamEgUGVyZXJhLCBhbmQgQy4gUm9uIFl1LiAgICAKClRoZSBwYXBlciBjYW4gYmUgZm91bmQgaGVyZTogIAoKW01vbGVjdWxhciwgQ2VsbHVsYXIsIGFuZCBEZXZlbG9wbWVudGFsIE9yZ2FuaXphdGlvbiBvZiB0aGUgTW91c2UgVm9tZXJvbmFzYWwgb3JnYW4gYXQgU2luZ2xlIENlbGwgUmVzb2x1dGlvbl0oaHR0cHM6Ly9lbGlmZXNjaWVuY2VzLm9yZy9yZXZpZXdlZC1wcmVwcmludHMvOTczNTYjdGFiLWNvbnRlbnQpICAKCioqKiAgCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCiMgUi1NYXJrZG93biBHbG9iYWwgU2V0dGluZ3MgIAoKIyBTZXQtdXAgYSBkZWZhdWx0IGltYWdlIHNpemUgb2YgMTAgWCAxMCBpbmNoZXMuIFN1cHByZXNzIHdhcm5pbmcKIyBhbmQgZXJyb3IgbWVzc2FnZXMuIEhpZGUgY29kZS4Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGNvbW1lbnQ9IiIsCiAgICAgICAgICAgICAgICAgICAgICBlcnJvcj1GQUxTRSwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTEyLCBjYWNoZT1GQUxTRSkKCmBgYAoKYGBge3IgbGlicmFyaWVzLCBpbmNsdWRlPUZBTFNFfQoKIyBMaWJyYXJ5IExvYWRpbmcgIAoKc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KGtpdCk7IGxpYnJhcnkodGlkeXZlcnNlKTsgbGlicmFyeShzdHJpbmdyKTsgbGlicmFyeShwbG90M0QpIAogIGxpYnJhcnkoZ2dwbG90Mik7IGxpYnJhcnkoZGF0YS50YWJsZSk7IGxpYnJhcnkob3JnLk1tLmVnLmRiKQogIGxpYnJhcnkoZHBseXIpOyBsaWJyYXJ5KFNldXJhdCk7IGxpYnJhcnkoREJJKTsgbGlicmFyeShjb3dwbG90KQogIGxpYnJhcnkoTWF0cml4KTsgbGlicmFyeShnbG1HYW1Qb2kpOyBsaWJyYXJ5KGNpcmNsaXplKQogIGxpYnJhcnkodGliYmxlKTsgbGlicmFyeShnZ3B1YnIpOyBsaWJyYXJ5KHN2Z2xpdGUpOyBsaWJyYXJ5KGdnc2lnbmlmKQogIGxpYnJhcnkoc3RhdHMpOyBsaWJyYXJ5KHZlZ2FuKTsgbGlicmFyeShzY2FsZXMpOyBsaWJyYXJ5KGNhcmV0KQogIGxpYnJhcnkocGF0Y2h3b3JrKTsgbGlicmFyeShwbG90bHkpOyBsaWJyYXJ5KGdlb210ZXh0cGF0aCkKICBsaWJyYXJ5KG9wZW54bHN4KTsgbGlicmFyeShncmlkRXh0cmEpOyBsaWJyYXJ5KGdncmVwZWwpCiAgbGlicmFyeShHZW5lT3ZlcmxhcCk7IGxpYnJhcnkoYmlvbWFSdCk7IGxpYnJhcnkoZ2dwb2ludGRlbnNpdHkpCiAgbGlicmFyeShzbGluZ3Nob3QpOyBsaWJyYXJ5KHRyYWRlU2VxKTsgbGlicmFyeShTaW5nbGVDZWxsRXhwZXJpbWVudCkKICBsaWJyYXJ5KHZpcmlkaXMpOyBsaWJyYXJ5KFVwU2V0Uik7IGxpYnJhcnkocGhlYXRtYXApOyBsaWJyYXJ5KG1zaWdkYnIpCiAgbGlicmFyeShmZ3NlYSk7IGxpYnJhcnkoZ3JpZCk7IGxpYnJhcnkoSURQbWlzYyk7IGxpYnJhcnkoTUFTUykKICBsaWJyYXJ5KFJtaXNjKTsgbGlicmFyeShnZ3Bsb3RpZnkpOyBsaWJyYXJ5KGdncG1pc2MpOyBsaWJyYXJ5KHNjYWxlcykKICBsaWJyYXJ5KGhlYXRtYXBseSk7IGxpYnJhcnkoZGVuZGV4dGVuZCkKfSkKCmBgYAoKYGBge3J9CgojIEdsb2JhbCBWYXJpYWJsZXMKCiMgVGhlIGhvbWUgZGlyZWN0b3J5CmhvbWVfZGlyIDwtICIvbC9ZdS9ZdUxhYi9CaW9pbmZvcm1hdGljcy9wcm9qZWN0cy9taGgvc2NfVk5PLyIKIyBEaXJlY3RvcnkgZm9yIHN0b3JpbmcgZGF0YSBvYmplY3RzIGF0IGNydWNpYWwgc3RhZ2VzCm9iamVjdF9kaXIgPC0gcGFzdGUwKGhvbWVfZGlyLCJmaW5hbC5zZXUub2Jqcy8iKQojIERpcmVjdG9yeSBmb3IgaW1hZ2VzIGZyb20gdGhlIGZpbmFsIGFuYWx5c2lzCmltYWdlX2RpciA8LSBwYXN0ZTAoaG9tZV9kaXIsImZpbmFsX2ltYWdlcy8iKQphZG9iZV9pbWFnZXMgPC0gcGFzdGUwKGltYWdlX2RpciwgImFkb2JlX2lsbHVzdHJhdG9yX3N2Z19maWxlcy8iKQojIERpcmVjdG9yeSBmb3IgaW1hZ2VzIGZvciB0aGUgZmluYWwgcGFwZXIKY2x1c3RyZWVfZGlyIDwtIHBhc3RlMChpbWFnZV9kaXIsImNsdXN0cmVlLyIpCiMgQSBkaXJlY3RvcnkgZm9yIFRyYWRlU2VxIGZpdEdBTSBvdXRwdXQKZml0R0FNX2RpciA8LSBwYXN0ZTAob2JqZWN0X2RpciwgImZpdEdBTS8iKQptb2VfZGlyIDwtICIvbC9ZdS9ZdUxhYi9CaW9pbmZvcm1hdGljcy9wcm9qZWN0cy9taGgvbW9sbmdfMjQwN18yNDUzL1Jfb2JqLyIKCiMgT1BFTiBgYGB2bm8uc2V1LmludGVncmF0ZWRgYGAKbG9hZChmaWxlID0gcGFzdGUwKG9iamVjdF9kaXIsInZuby5pbnRlZ3JhdGVkLnBvc3RDZWxsSUQiKSkKI0xvYWQgTmV1cm9uYWwgTGluZWFnZSBTZXVyYXQgT2JqZWN0ICAKbG9hZChmaWxlID0gcGFzdGUwKG9iamVjdF9kaXIsIm5ldXJvbi5pbnRlZ3JhdGVkLnBvc3RDZWxsSUQiKSkKCiMgUmVuYW1lIHVua25vd25fbVZTTiB0byBzVlNOCmxldmVscyh2bm8uc2V1LmludGVncmF0ZWRAYWN0aXZlLmlkZW50KVtsZXZlbHModm5vLnNldS5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudClbbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKbGV2ZWxzKHZuby5zZXUuaW50ZWdyYXRlZCRjZWxsX3R5cGUpW2xldmVscyh2bm8uc2V1LmludGVncmF0ZWQkY2VsbF90eXBlKT09InVua25vd25fbVZTTiJdIDwtICJzVlNOIgpsZXZlbHMobmV1cm9uLmludGVncmF0ZWQkY2VsbF90eXBlKVtsZXZlbHMobmV1cm9uLmludGVncmF0ZWQkY2VsbF90eXBlKT09InVua25vd25fbVZTTiJdIDwtICJzVlNOIgoKIyBHZXQgY29sb3Igc2NoZW1lIGZvciB0aGUgd2hvbGUgdm5vIGRhdGFzZXQKdm5vLmNlbGxfdHlwZS5jb2xvcnMgPC0gaHVlX3BhbCgpKGxlbmd0aChsZXZlbHModm5vLnNldS5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCkpKQpuYW1lcyh2bm8uY2VsbF90eXBlLmNvbG9ycykgPC0gbGV2ZWxzKHZuby5zZXUuaW50ZWdyYXRlZEBhY3RpdmUuaWRlbnQpCgojIEtlZXAgbmV1cm9uIGRhdGFzZXQgY29sb3Igc2NoZW1lIGNvbnNpc3RlbnQgd2l0aCB0aGUgd2hvbGUgdm5vIGNvbG9yIHNjaGVtZSwgd2hlcmUgcG9zc2libGUgIApuZXVyb24uY2VsbF90eXBlLmNvbG9ycyA8LSB2bm8uY2VsbF90eXBlLmNvbG9yc1tjKCJWMVJfbVZTTiIsIlYyUl9tVlNOIiwibU9TTiIsInNWU04iLCJWMVJfaVZTTiIsIlYyUl9pVlNOIiwiR0JDIildCm5ldXJvbi5jZWxsX3R5cGUuY29sb3JzIDwtIHNldE5hbWVzKGMobmV1cm9uLmNlbGxfdHlwZS5jb2xvcnMsIiMwMEIwRjYiLCIjOTU5MEZGIiwiI0U3NkJGMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKG5hbWVzKG5ldXJvbi5jZWxsX3R5cGUuY29sb3JzKSwiaU9TTiIsImxhdGVfSU5QIiwiZWFybHlfSU5QIikpCgptYXR1cmUubmV1cm9ucyA8LSBzdWJzZXQobmV1cm9uLmludGVncmF0ZWQsaWRlbnRzPWMoIlYxUl9tVlNOIiwiVjJSX21WU04iLCJtT1NOIiwic1ZTTiIpKQptYXR1cmUuY2VsbF90eXBlLmNvbG9ycyA8LSBuZXVyb24uY2VsbF90eXBlLmNvbG9yc1tjKCJWMVJfbVZTTiIsIlYyUl9tVlNOIiwibU9TTiIsInNWU04iKV0KCmdsb2JhbC52YXJzIDwtIGMobHMoKSwiZ2xvYmFsLnZhcnMiKQoKYGBgCgoqKiogIAoKIyBBeG9uIGd1aWRhbmNlIG1vbGVjdWxlcyBhc3NvY2lhdGVkIHdpdGggcmVjZXB0b3IgZ2VuZXMgey50YWJzZXQgLnRhYnNldC1waWxsc30gIAoKYGBge3J9CgojIExvYWQgdGhlIHNpZ25pZmljYW50IGNvLWV4cHJlc3Npb24gZGF0YSBmcmFtZXMKc2lnLnZyLmNvZXhwcmVzc2lvbiA8LSBvcGVueGxzeDo6cmVhZC54bHN4KHhsc3hGaWxlPXBhc3RlMChvYmplY3RfZGlyLCJzaWcubVZTTi5jby54bHN4IikpCnJvd25hbWVzKHNpZy52ci5jb2V4cHJlc3Npb24pIDwtIHBhc3RlKHNpZy52ci5jb2V4cHJlc3Npb24kc2V0QSxzaWcudnIuY29leHByZXNzaW9uJHNldEIsc2VwPSJfIikKc2lnLnZyLmFnLmNvZXhwcmVzc2lvbiA8LSBvcGVueGxzeDo6cmVhZC54bHN4KHhsc3hGaWxlPXBhc3RlMChvYmplY3RfZGlyLCJzaWcudnIuYWcuY29leHByZXNzaW9uLnhsc3giKSkKcm93bmFtZXMoc2lnLnZyLmFnLmNvZXhwcmVzc2lvbikgPC0gcGFzdGUoc2lnLnZyLmFnLmNvZXhwcmVzc2lvbiRzZXRBLHNpZy52ci5hZy5jb2V4cHJlc3Npb24kc2V0QixzZXA9Il8iKQpzaWcudnIudGYuY29leHByZXNzaW9uIDwtIG9wZW54bHN4OjpyZWFkLnhsc3goeGxzeEZpbGU9cGFzdGUwKG9iamVjdF9kaXIsInNpZy52ci50Zi5jb2V4cHJlc3Npb24ueGxzeCIpKQpyb3duYW1lcyhzaWcudnIudGYuY29leHByZXNzaW9uKSA8LSBwYXN0ZShzaWcudnIudGYuY29leHByZXNzaW9uJHNldEEsc2lnLnZyLnRmLmNvZXhwcmVzc2lvbiRzZXRCLHNlcD0iXyIpCnZyLmFnX3RmLnJlc3VsdHMgPC0gb3Blbnhsc3g6OnJlYWQueGxzeCh4bHN4RmlsZT1wYXN0ZTAob2JqZWN0X2RpciwidnIuYWdfdGYucmVzdWx0cy54bHN4IikpCnJvd25hbWVzKHZyLmFnX3RmLnJlc3VsdHMpIDwtIHBhc3RlKHZyLmFnX3RmLnJlc3VsdHMkc2V0QSx2ci5hZ190Zi5yZXN1bHRzJHNldEIsc2VwPSJfIikKCiMgTG9hZCB0aGUgZ2VuZSBuYW1lcyBmb3IgZWFjaCBjYXRlZ29yeQp2ci5uYW1lcyA8LSByZWFkUkRTKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsImZpbmFsLnJlY2VwdG9yLm5hbWVzLnJkcyIpKQphZy5uYW1lcyA8LSByZWFkUkRTKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsImZpbmFsLm1lbWJyYW5lX2FnLm5hbWVzLnJkcyIpKQp0Zi5uYW1lcyA8LSByZWFkUkRTKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsImZpbmFsLmRuYV9iaW5kaW5nX3RmLm5hbWVzLnJkcyIpKQoKYGBgCgpgYGB7cn0KClZScyA8LSB1bmlxdWUoc29ydCh2ci5hZ190Zi5yZXN1bHRzJFZSKSkKQUdzIDwtIHVuaXF1ZShzb3J0KHZyLmFnX3RmLnJlc3VsdHMkQUcpKQpURnMgPC0gdW5pcXVlKHNvcnQodnIuYWdfdGYucmVzdWx0cyRURikpCgpgYGAKCmBgYHtyfQoKIyBDcmVhdGUgYSBsaXN0IG9mIG1hdHJpY2VzIHdpdGggdGhlIEphY2NhcmQgSW5kZXggZm9yIEFHLVRGIGNvLWV4cHJlc3Npb24sIGZvciBlYWNoIFZSCnZuby5tYXQubGlzdCA8LSBsYXBwbHkoVlJzLCBmdW5jdGlvbih2cil7ICAgICMgTG9vcCB0aHJvdWdoIHVuaXF1ZSBWUnMKICAjIENyZWF0ZSBhbiBlbXB0eSBtYXRyaXggZm9yIHRoaXMgVlIgd2l0aCBBR3Mgb24gY29sdW1ucyBhbmQgVEZzIG9uIHJvd3MKICBlbXB0eV9tYXQgPC0gbWF0cml4KGRhdGE9MCxuY29sPWxlbmd0aChBR3MpLG5yb3c9bGVuZ3RoKFRGcykpCiAgcm93bmFtZXMoZW1wdHlfbWF0KSA8LSBURnMKICBjb2xuYW1lcyhlbXB0eV9tYXQpIDwtIEFHcwogICMgU3Vic2V0IG91ciByZXN1bHRzIGZvciByb3dzIHRoYXQgY29udGFpbiB0aGlzIFZSCiAgc3ViLmRmIDwtIHZyLmFnX3RmLnJlc3VsdHNbdnIuYWdfdGYucmVzdWx0cyRWUj09dnIsIF0KICAjIEZvciBvdXIgcmVzdWx0cyBkYXRhIGZyYW1lLCBpdGVyYXRlIG92ZXIgcm93cwogIGZvcihpIGluIDE6bnJvdyhzdWIuZGYpKXsKICAgICMgVGhlIEFHIGZvciB0aGlzIHJvdwogICAgYWcubmFtZSA8LSBzdWIuZGZbaSwgXSRBRwogICAgIyBUaGUgVEYgZm9yIHRoaXMgcm93CiAgICB0Zi5uYW1lIDwtIHN1Yi5kZltpLCBdJFRGCiAgICAjIFRoZSBKYWNjYXJkIEluZGV4IGZvciB0aGlzIEFHIGFuZCB0aGlzIFRGIGZvciB0aGlzIFZSCiAgICBlbXB0eV9tYXRbdGYubmFtZSxhZy5uYW1lXSA8LSBzdWIuZGZbaSwgXSRqYWNjYXJkLmluZGV4CiAgfQogIHJldHVybihlbXB0eV9tYXQpICAgICMgUmV0dXJuIHRoZSBtYXRyaXggZm9yIHRoaXMgVlIKfSkKIyBOYW1lIG1hdHJpY2VzIGZvciB0aGVpciBWUgpuYW1lcyh2bm8ubWF0Lmxpc3QpIDwtIFZScwoKYGBgCgpgYGB7cn0KCiMgQ29udmVydCBhbGwgbWF0cmljZXMgdG8gdmVjdG9ycyBhbmQgY2hlY2sgdGhlaXIgcGVhcnNvbiBjb3JyZWxhdGlvbgp2bm8udmVjLm1hdCA8LSBzYXBwbHkodm5vLm1hdC5saXN0LCBhcy52ZWN0b3IpCnZuby5jb3IubWF0IDwtIGNvcih2bm8udmVjLm1hdCkKCmBgYAoKYGBge3J9CgpmaWc3X2EuY29sb3JzIDwtIHdlc2FuZGVyc29uOjp3ZXNfcGFsZXR0ZSgiRGFyamVlbGluZzEiKQojIENyZWF0ZSBhIHJvdyBhbm5vdGF0aW9uIGRhdGEgZnJhbWUgZm9yIGZpZ3VyZSA3QQpmaWc3X2Eucm93X2Fubm90YXRpb25zIDwtIHNhcHBseShyb3duYW1lcyh2bm8uY29yLm1hdCksIGZ1bmN0aW9uKHJlYyl7CiAgaWYoc3RhcnRzV2l0aCh4PXJlYyxwcmVmaXg9IkZwciIpKXsKICAgIHJldHVybigiRnByIikKICB9IGVsc2UgaWYoc3RhcnRzV2l0aCh4PXJlYyxwcmVmaXg9Ik9sZnIiKSl7CiAgICByZXR1cm4oIk9sZnIiKQogIH0gZWxzZSBpZihzdGFydHNXaXRoKHg9cmVjLHByZWZpeD0iVm1uMXIiKSl7CiAgICByZXR1cm4oIlYxUiIpCiAgfSBlbHNlIGlmKHN0YXJ0c1dpdGgoeD1yZWMscHJlZml4PSJWbW4yciIpKXsKICAgIHJldHVybigiVjJSIikKICB9Cn0pCgpmaWc3X2Eucm93X2Fubm90YXRpb25zIDwtIGFzLmRhdGEuZnJhbWUoZmlnN19hLnJvd19hbm5vdGF0aW9ucykKY29sbmFtZXMoZmlnN19hLnJvd19hbm5vdGF0aW9ucykgPC0gInR5cGUiCgpmaWc3X2EuYW5uX2NvbG9ycyA8LSBsaXN0KHR5cGU9YyhGcHI9ZmlnN19hLmNvbG9yc1s1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2xmcj1maWc3X2EuY29sb3JzWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMVI9ZmlnN19hLmNvbG9yc1szXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjJSPWZpZzdfYS5jb2xvcnNbNF0pKQoKYGBgCgojIyBDb3JyZWxhdGlvbiBoZWF0bWFwIGJldHdlZW4gcmVjZXB0b3IgdHlwZXMgY2FsY3VsYXRlZCBmcm9tIGNvLWV4cHJlc3NlZCBBRyBhbmQgVEYgZ2VuZXMgIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9MTZ9CgojIFBsb3QgdGhlIGNyb3NzIFZSLXNwZWNpZmljIGNvcnJlbGF0aW9uIG9mIEFHeFRGIGNvLWV4cHJlc3Npb24KZmlnN19hIDwtCiAgcGhlYXRtYXAodm5vLmNvci5tYXQsZm9udHNpemU9Nixhbm5vdGF0aW9uX3Jvdz1maWc3X2Eucm93X2Fubm90YXRpb25zLCAKICAgICAgICAgICBzaG93X3Jvd25hbWVzPVRSVUUsc2hvd19jb2xuYW1lcz1UUlVFLGFubm90YXRpb25fY29sb3JzPWZpZzdfYS5hbm5fY29sb3JzKQoKYGBgCgojIyAzRCBIZWF0bWFwIHNob3dpbmcgdGhlIEphY2NhcmQgSW5kaWNlcyBiZXR3ZWVuIEFHIGFuZCBURiBnZW5lcyBmb3IgZWFjaCBvZiB0aGUgVlJzIGluIHRoZSBkYXRhc2V0ICAKCmBgYHtyfQoKdnIub3JkZXIuM2QgPC0gcmVhZFJEUyhmaWxlPXBhc3RlMChvYmplY3RfZGlyLCJ2ci5vcmRlci4zZC5yZHMiKSkKYWcub3JkZXIuM2QgPC0gcmVhZFJEUyhmaWxlPXBhc3RlMChvYmplY3RfZGlyLCJhZy5vcmRlci4zZC5yZHMiKSkKdGYub3JkZXIuM2QgPC0gcmVhZFJEUyhmaWxlPXBhc3RlMChvYmplY3RfZGlyLCJ0Zi5vcmRlci4zZC5yZHMiKSkKCmBgYAoKYGBge3J9CgojIE1pbWljIHRoZSBjb2xvciBzY2hlbWUgb2YgcGhlYXRtYXAKZmlnN19wYWxldHRlIDwtIGNvbG9yUmFtcFBhbGV0dGUocmV2KFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuPTcsIG5hbWU9IlJkWWxCdSIpKSkoMTAwKQojIFN1YnNldCBvdXIgcmVzdWx0cyBkYXRhIGZyYW1lCmZpZzdfYi5zY2F0dGVyLmRmIDwtIHZyLmFnX3RmLnJlc3VsdHNbICxjKCJWUiIsIkFHIiwiVEYiLCJqYWNjYXJkLmluZGV4IildCgpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTYsIGZpZy5oZWlnaHQ9MTZ9CgojIENvbnZlcnQgY2F0ZWdvcmljYWwgdmFyaWFibGVzIHRvIGZhY3RvcnMKZmlnN19iLnNjYXR0ZXIuZGYkQUcgPC0gZmFjdG9yKGZpZzdfYi5zY2F0dGVyLmRmJEFHLCBsZXZlbHMgPSByZXYoYWcub3JkZXIuM2QpKQpmaWc3X2Iuc2NhdHRlci5kZiRURiA8LSBmYWN0b3IoZmlnN19iLnNjYXR0ZXIuZGYkVEYsIGxldmVscyA9IHJldih0Zi5vcmRlci4zZCkpCmZpZzdfYi5zY2F0dGVyLmRmJFZSIDwtIGZhY3RvcihmaWc3X2Iuc2NhdHRlci5kZiRWUiwgbGV2ZWxzID0gcmV2KHZyLm9yZGVyLjNkKSkKCiMgQ29udmVydCBmYWN0b3JzIHRvIHVuZGVybHlpbmcgbnVtZXJpYyByZXByZXNlbnRhdGlvbgpmaWc3X2Iuc2NhdHRlci5kZiRBR19udW1lcmljIDwtIGFzLm51bWVyaWMoZmlnN19iLnNjYXR0ZXIuZGYkQUcpCmZpZzdfYi5zY2F0dGVyLmRmJFRGX251bWVyaWMgPC0gYXMubnVtZXJpYyhmaWc3X2Iuc2NhdHRlci5kZiRURikKZmlnN19iLnNjYXR0ZXIuZGYkVlJfbnVtZXJpYyA8LSBhcy5udW1lcmljKGZpZzdfYi5zY2F0dGVyLmRmJFZSKQoKIyBQbG90dGluZyB0aGUgM0Qgc2NhdHRlcnBsb3QKc2NhdHRlcjNEKAogIHggPSBmaWc3X2Iuc2NhdHRlci5kZiRBR19udW1lcmljLAogIHkgPSBmaWc3X2Iuc2NhdHRlci5kZiRURl9udW1lcmljLAogIHogPSBmaWc3X2Iuc2NhdHRlci5kZiRWUl9udW1lcmljLAogIGNvbHZhciA9IGZpZzdfYi5zY2F0dGVyLmRmJGphY2NhcmQuaW5kZXgsICAjIENvbG9yIGJ5IGphY2NhcmQuaW5kZXgKICBjb2w9ZmlnN19wYWxldHRlLAogIHBjaCA9IDE5LCAgIyBQb2ludCBzaGFwZQogIHRoZXRhID0gNDUsIHBoaSA9IDMwLCAgIyBWaWV3aW5nIGFuZ2xlCiAgeGxhYiA9ICJBRyIsIHlsYWIgPSAiVEYiLCB6bGFiID0gIlZSIiwgICMgQXhpcyBsYWJlbHMKICBjbGFiID0gIkphY2NhcmQgSW5kZXgiLAogIGNleCA9IDAuMjUgICAgIyBTaHJpbmsgdGhlIHNpemUgb2YgdGhlIGRhdGEgcG9pbnRzCikKCmBgYAoKIyMgSW50ZXJhY3RpdmUgM0QgSGVhdG1hcCBWUi1BRy1URiBKYWNjYXJkIEluZGljZXMgIAoKYGBge3J9CgpwYWxldHRlIDwtIGNvbG9yUmFtcFBhbGV0dGUod2VzYW5kZXJzb246Ondlc19wYWxldHRlKCJaaXNzb3UxIikpCgpzY2F0dGVyM2QuY29sb3JzIDwtIHBhbGV0dGUobj0xMDApCgpgYGAKCgpgYGB7cn0KCnBsb3RseS5zY2F0dGVyLmRmIDwtIHZyLmFnX3RmLnJlc3VsdHNbICxjKCJWUiIsIkFHIiwiVEYiLCJqYWNjYXJkLmluZGV4IildCgp2ci5hZy50Zi5zY2F0dGVyM2QgPC0gcGxvdF9seShkYXRhID0gcGxvdGx5LnNjYXR0ZXIuZGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB+VEYsIHkgPSB+QUcsIHogPSB+VlIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gfmphY2NhcmQuaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICJtYXJrZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gc2NhdHRlcjNkLmNvbG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gMSwgd2lkdGg9MSksICMgY29udHJvbHMgc2l6ZSBvZiBwb2ludHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJpbmZvPSJhbGwiKSAlPiUgbGF5b3V0KHRpdGxlPSJWUi1BRy1URiBDby1leHByZXNzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lPWxpc3QoeGF4aXM9bGlzdCh0aXRsZT0nVEYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5b3JkZXI9ImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeWFycmF5PXRmLm9yZGVyLjNkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM9bGlzdCh0aXRsZT0nQUcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5b3JkZXI9ImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeWFycmF5PWFnLm9yZGVyLjNkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemF4aXM9bGlzdCh0aXRsZT0nVlInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5b3JkZXI9ImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeWFycmF5PXZyLm9yZGVyLjNkKSkpCgpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTYsIGZpZy5oZWlnaHQ9MTZ9Cgp2ci5hZy50Zi5zY2F0dGVyM2QKCmBgYAoKIyMgSGVhdG1hcHMgc2hvd2luZyBKYWNjYXJkIEluZGljZXMgb2YgVEYtQUcgYXNzb2NpYXRpb25zIGZvciBWMVIgYW5kIFYyUiB0eXBlcy4gVGhlIGxpc3RzIG9mIFRGIGFuZCBBRyBnZW5lcyBoZXJlIGFyZSBhYnJpZGdlZCBmcm9tIHRoZSBmdWxsIGxpc3QgdG8gZW5oYW5jZSB2aXN1YWxpemF0aW9uIHsudGFic2V0IC50YWJzZXQtcGlsbHN9ICAKCmBgYHtyfQoKdnIuZ29pIDwtIGMoIlZtbjFyNjkiLCJWbW4xcjE4NSIsIlZtbjFyMzQiLCJWbW4xcjU2IiwiVm1uMXI2MCIsIlZtbjFyNjEiLCJWbW4ycjEiLAogICAgICAgICAiVm1uMnIzIiwiVm1uMnI3IiwiVm1uMnI3MyIsIlZtbjJyODgiLCJWbW4ycjgiLCJWbW4ycjkxIiwiVm1uMnIxMTgiKQoKYWcuZ29pIDwtIGMoIkZsb3QxIiwiTGdyNCIsIlBjZGg5IiwiS2lycmVsMiIsIkNkazVyMiIsIk5jYW0xIiwiRWZuYTUiLCJOcnAyIiwiQjNnbnQyIiwiUGNkaDEwIiwKICAgICAgICAgICAgIkVwaGE1IiwiUm9ibzIiLCJQY2RoMTciLCJUZW5tMiIsIkdhcDQzIiwiS2lycmVsMyIsIlBseG5kMSIsIkFwcCIsIkJzZyIsIkVmbmEzIikKCnRmLmdvaSA8LSBjKCJUcnBzMSIsIlBieDIiLCJNZWlzMiIsIk5maXgiLCJUZmFwMmUiLCJQb3UyZjEiLCJCYXRmMyIsIlRjZjQiLCJTcDgiLCJDZWJwYiIsCiAgICAgICAgICAgICJOaGxoMSIsIkZveGcxIiwiRm94cDEiLCJBdGY1IiwiSnVuZCIsIkViZjIiLCJFYmYzIiwiS2xmNyIsIkVteDIiLCJJa3pmNCIpCgpmaWx0ZXJlZC52ci5hZ190Zi5yZXN1bHRzIDwtIHZyLmFnX3RmLnJlc3VsdHNbdnIuYWdfdGYucmVzdWx0cyRWUiAlaW4lIHZyLmdvaSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZyLmFnX3RmLnJlc3VsdHMkQUcgJWluJSBhZy5nb2kgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ci5hZ190Zi5yZXN1bHRzJFRGICVpbiUgdGYuZ29pLCBdCgpgYGAKCmBgYHtyfQoKdnIub3JkZXIuM2QuZmlsdGVyZWQgPC0gdnIub3JkZXIuM2RbdnIub3JkZXIuM2QgJWluJSB2ci5nb2ldCmFnLm9yZGVyLjNkLmZpbHRlcmVkIDwtIGFnLm9yZGVyLjNkW2FnLm9yZGVyLjNkICVpbiUgYWcuZ29pXQp0Zi5vcmRlci4zZC5maWx0ZXJlZCA8LSB0Zi5vcmRlci4zZFt0Zi5vcmRlci4zZCAlaW4lIHRmLmdvaV0KCmBgYAoKYGBge3J9CgpmaWx0ZXJlZC52bm8ubWF0Lmxpc3QgPC0gbGFwcGx5KHZyLm9yZGVyLjNkLmZpbHRlcmVkLCBmdW5jdGlvbih2cil7CiAgZW1wdHlfbWF0IDwtIG1hdHJpeChkYXRhPTAsbmNvbD1sZW5ndGgoYWcub3JkZXIuM2QuZmlsdGVyZWQpLG5yb3c9bGVuZ3RoKHRmLm9yZGVyLjNkLmZpbHRlcmVkKSkKICByb3duYW1lcyhlbXB0eV9tYXQpIDwtIHRmLm9yZGVyLjNkLmZpbHRlcmVkCiAgY29sbmFtZXMoZW1wdHlfbWF0KSA8LSBhZy5vcmRlci4zZC5maWx0ZXJlZAogIHN1Yi5kZiA8LSBmaWx0ZXJlZC52ci5hZ190Zi5yZXN1bHRzW2ZpbHRlcmVkLnZyLmFnX3RmLnJlc3VsdHMkVlI9PXZyLCBdCiAgZm9yKGkgaW4gMTpucm93KHN1Yi5kZikpewogICAgYWcubmFtZSA8LSBzdWIuZGZbaSwgXSRBRwogICAgdGYubmFtZSA8LSBzdWIuZGZbaSwgXSRURgogICAgZW1wdHlfbWF0W3RmLm5hbWUsYWcubmFtZV0gPC0gc3ViLmRmW2ksIF0kamFjY2FyZC5pbmRleAogIH0KICByZXR1cm4oZW1wdHlfbWF0KQp9KQpuYW1lcyhmaWx0ZXJlZC52bm8ubWF0Lmxpc3QpIDwtIHZyLm9yZGVyLjNkLmZpbHRlcmVkCgpgYGAKCmBgYHtyfQoKIyBSZS1vcmRlciB0aGUgbWF0cmljZXMgYnkgb3VyIG5ldyBhZyBhbmQgdGYgb3JkZXJzCmZpbHRlcmVkLnZuby5tYXQubGlzdCA8LSBsYXBwbHkoZmlsdGVyZWQudm5vLm1hdC5saXN0LCBmdW5jdGlvbihtYXQpewogIG1hdCA8LSBtYXRbdGYub3JkZXIuM2QuZmlsdGVyZWQsYWcub3JkZXIuM2QuZmlsdGVyZWRdCiAgcmV0dXJuKG1hdCkKfSkKCmBgYAoKIyMjIFZtbjFyMTg1IC0gVm1uMXIzNCAtIFZtbjFyNjkgIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9NS4zMzMzM30KCiMgQ29ycmVsYXRlZCBWMVJzIChUaGVsbWEpClZtbjFyMTg1IDwtIHBoZWF0bWFwKGZpbHRlcmVkLnZuby5tYXQubGlzdCRWbW4xcjE4NSwgZm9udHNpemUgPSAxNCwgY2x1c3Rlcl9jb2xzID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwgbWFpbj0iVm1uMXIxODUiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4xcjM0IDwtIHBoZWF0bWFwKGZpbHRlcmVkLnZuby5tYXQubGlzdCRWbW4xcjM0LCBmb250c2l6ZSA9IDE0LCBjbHVzdGVyX2NvbHMgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gRkFMU0UsIG1haW49IlZtbjFyMzQiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4xcjY5IDwtIHBoZWF0bWFwKGZpbHRlcmVkLnZuby5tYXQubGlzdCRWbW4xcjY5LCBmb250c2l6ZSA9IDE0LCBjbHVzdGVyX2NvbHMgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gRkFMU0UsIG1haW49IlZtbjFyNjkiLCBzaWxlbnQ9VFJVRSkKCmdyaWQuYXJyYW5nZShWbW4xcjE4NVtbNF1dLCBWbW4xcjM0W1s0XV0sIFZtbjFyNjlbWzRdXSwgbmNvbCA9IDMsIHdpZHRocz1jKDEsMSwxLjE0KSkKCmBgYAoKIyMjIFZtbjFyNTYgLSBWbW4xcjYwIC0gVm1uMXI2MSAgCgpgYGB7cixmaWcud2lkdGg9MTYsZmlnLmhlaWdodD01LjMzMzMzfQoKVm1uMXI1NiA8LSBwaGVhdG1hcChmaWx0ZXJlZC52bm8ubWF0Lmxpc3QkVm1uMXI1NiwgZm9udHNpemUgPSAxNiwgY2x1c3Rlcl9jb2xzID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwgbWFpbj0iVm1uMXI1NiIsIHNob3dfcm93bmFtZXMgPSBGQUxTRSwgc2lsZW50PVRSVUUpClZtbjFyNjAgPC0gcGhlYXRtYXAoZmlsdGVyZWQudm5vLm1hdC5saXN0JFZtbjFyNjAsIGZvbnRzaXplID0gMTYsIGNsdXN0ZXJfY29scyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwgbWFpbj0iVm1uMXI2MCIsIHNob3dfcm93bmFtZXMgPSBGQUxTRSwgc2lsZW50PVRSVUUpClZtbjFyNjEgPC0gcGhlYXRtYXAoZmlsdGVyZWQudm5vLm1hdC5saXN0JFZtbjFyNjEsIGZvbnRzaXplID0gMTYsIGNsdXN0ZXJfY29scyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwgbWFpbj0iVm1uMXI2MSIsIHNpbGVudD1UUlVFKQoKCiNzdmdsaXRlKGZpbGVuYW1lID0gcGFzdGUwKGltYWdlX2RpciwiZmlnN19kLnN2ZyIpLHdpZHRoPTI0LGhlaWdodD04KQpncmlkLmFycmFuZ2UoVm1uMXI1NltbNF1dLCBWbW4xcjYwW1s0XV0sIFZtbjFyNjFbWzRdXSwgbmNvbCA9IDMsIHdpZHRocz1jKDEsMSwxLjE0KSkKI2ludmlzaWJsZShkZXYub2ZmKCkpCgpgYGAKCiMjIyBWbW4ycjEgLSBWbW4ycjMgLSBWbW4ycjcgIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9NS4zMzMzM30KClZtbjJyMSA8LSBwaGVhdG1hcChmaWx0ZXJlZC52bm8ubWF0Lmxpc3QkVm1uMnIxLCBmb250c2l6ZSA9IDE2LCBjbHVzdGVyX2NvbHMgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IEZBTFNFLCBtYWluPSJWbW4ycjEiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4ycjMgPC0gcGhlYXRtYXAoZmlsdGVyZWQudm5vLm1hdC5saXN0JFZtbjJyMywgZm9udHNpemUgPSAxNiwgY2x1c3Rlcl9jb2xzID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IEZBTFNFLCBtYWluPSJWbW4ycjMiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4ycjcgPC0gcGhlYXRtYXAoZmlsdGVyZWQudm5vLm1hdC5saXN0JFZtbjJyNywgZm9udHNpemUgPSAxNiwgY2x1c3Rlcl9jb2xzID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IEZBTFNFLCBtYWluPSJWbW4ycjciLCBzaWxlbnQ9VFJVRSkKCgojc3ZnbGl0ZShmaWxlbmFtZSA9IHBhc3RlMChpbWFnZV9kaXIsImZpZzdfZS5zdmciKSx3aWR0aD0yNCxoZWlnaHQ9OCkKZ3JpZC5hcnJhbmdlKFZtbjJyMVtbNF1dLCBWbW4ycjNbWzRdXSwgVm1uMnI3W1s0XV0sIG5jb2wgPSAzLCB3aWR0aHM9YygxLDEsMS4xNCkpCiNpbnZpc2libGUoZGV2Lm9mZigpKQoKYGBgCgojIyMgVm1uMnI4IC0gVm1uMnI3MyAtIFZtbjJyODggIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9NS4zMzMzM30KClZtbjJyOCA8LSBwaGVhdG1hcChmaWx0ZXJlZC52bm8ubWF0Lmxpc3QkVm1uMnI4LCBmb250c2l6ZSA9IDE2LCBjbHVzdGVyX2NvbHMgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IEZBTFNFLCBtYWluPSJWbW4ycjgiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4ycjczIDwtIHBoZWF0bWFwKGZpbHRlcmVkLnZuby5tYXQubGlzdCRWbW4ycjczLCBmb250c2l6ZSA9IDE2LCBjbHVzdGVyX2NvbHMgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gRkFMU0UsIG1haW49IlZtbjJyNzMiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4ycjg4IDwtIHBoZWF0bWFwKGZpbHRlcmVkLnZuby5tYXQubGlzdCRWbW4ycjg4LCBmb250c2l6ZSA9IDE2LCBjbHVzdGVyX2NvbHMgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gRkFMU0UsIG1haW49IlZtbjJyODgiLCBzaWxlbnQ9VFJVRSkKCgojc3ZnbGl0ZShmaWxlbmFtZSA9IHBhc3RlMChpbWFnZV9kaXIsImZpZzdfZi5zdmciKSx3aWR0aD0yNCxoZWlnaHQ9OCkKZ3JpZC5hcnJhbmdlKFZtbjJyOFtbNF1dLCBWbW4ycjczW1s0XV0sIFZtbjJyODhbWzRdXSwgbmNvbCA9IDMsIHdpZHRocz1jKDEsMSwxLjE0KSkKI2ludmlzaWJsZShkZXYub2ZmKCkpCgpgYGAKCiMjIyBWbW4ycjkxIC0gVm1uMnIxMTggIAoKYGBge3IsZmlnLndpZHRoPTEwLjY2NjY2LGZpZy5oZWlnaHQ9NS4zMzMzM30KClZtbjJyOTEgPC0gcGhlYXRtYXAoZmlsdGVyZWQudm5vLm1hdC5saXN0JFZtbjJyOTEsIGZvbnRzaXplID0gMTYsIGNsdXN0ZXJfY29scyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gRkFMU0UsIG1haW49IlZtbjJyOTEiLCBzaG93X3Jvd25hbWVzID0gRkFMU0UsIHNpbGVudD1UUlVFKQpWbW4ycjExOCA8LSBwaGVhdG1hcChmaWx0ZXJlZC52bm8ubWF0Lmxpc3QkVm1uMnIxMTgsIGZvbnRzaXplID0gMTYsIGNsdXN0ZXJfY29scyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwgbWFpbj0iVm1uMnIxMTgiLCBzaWxlbnQ9VFJVRSkKCiNzdmdsaXRlKGZpbGVuYW1lID0gcGFzdGUwKGltYWdlX2RpciwiZmlnN19nLnN2ZyIpLHdpZHRoPTE2LGhlaWdodD04KQpncmlkLmFycmFuZ2UoVm1uMnI5MVtbNF1dLCBWbW4ycjExOFtbNF1dLCBuY29sID0gMiwgd2lkdGhzPWMoMSwxLjE0KSkKI2ludmlzaWJsZShkZXYub2ZmKCkpCgpgYGAKCg==