ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMzIzMWMKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMTQgQEAKKyMgRW1hY3MgdGVtcCBmaWxlcworKn4KKworIyBNYWMgT1NYCisuRFNfKgorCisjIHdhZiBidWlsZCBzeXN0ZW0KKy53YWYtMSoKKy53YWYzLSoKKy5sb2NrKgorYnVpbGQvCisKKyMgQ29tcGlsZWQgcHl0aG9uIGNvZGUKKyoqLyoucHljCmRpZmYgLS1naXQgYS8ud2FmLXRvb2xzL2Jvb3N0LnB5IGIvLndhZi10b29scy9ib29zdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzM2YjM0Ci0tLSAvZGV2L251bGwKKysrIGIvLndhZi10b29scy9ib29zdC5weQpAQCAtMCwwICsxLDM4MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiB1dGYtOAorIworIyBwYXJ0aWFsbHkgYmFzZWQgb24gYm9vc3QucHkgd3JpdHRlbiBieSBHZXJub3QgVm9ybWF5cgorIyB3cml0dGVuIGJ5IFJ1ZWRpZ2VyIFNvbmRlcmZlbGQgPHJ1ZWRpZ2VyQGMtcGx1c3BsdXMuZGU+LCAyMDA4CisjIG1vZGlmaWVkIGJ5IEJqb2VybiBNaWNoYWVsc2VuLCAyMDA4CisjIG1vZGlmaWVkIGJ5IEx1Y2EgRm9zc2F0aSwgMjAwOAorIyByZXdyaXR0ZW4gZm9yIHdhZiAxLjUuMSwgVGhvbWFzIE5hZ3ksIDIwMDgKKyMgcmV3cml0dGVuIGZvciB3YWYgMS42LjIsIFN5bHZhaW4gUm91cXVldHRlLCAyMDExCisKKycnJworCitUaGlzIGlzIGFuIGV4dHJhIHRvb2wsIG5vdCBidW5kbGVkIHdpdGggdGhlIGRlZmF1bHQgd2FmIGJpbmFyeS4KK1RvIGFkZCB0aGUgYm9vc3QgdG9vbCB0byB0aGUgd2FmIGZpbGU6CiskIC4vd2FmLWxpZ2h0IC0tdG9vbHM9Y29tcGF0MTUsYm9vc3QKKwlvciwgaWYgeW91IGhhdmUgd2FmID49IDEuNi4yCiskIC4vd2FmIHVwZGF0ZSAtLWZpbGVzPWJvb3N0CisKK1doZW4gdXNpbmcgdGhpcyB0b29sLCB0aGUgd3NjcmlwdCB3aWxsIGxvb2sgbGlrZToKKworCWRlZiBvcHRpb25zKG9wdCk6CisJCW9wdC5sb2FkKCdjb21waWxlcl9jeHggYm9vc3QnKQorCisJZGVmIGNvbmZpZ3VyZShjb25mKToKKwkJY29uZi5sb2FkKCdjb21waWxlcl9jeHggYm9vc3QnKQorCQljb25mLmNoZWNrX2Jvb3N0KGxpYj0nc3lzdGVtIGZpbGVzeXN0ZW0nKQorCisJZGVmIGJ1aWxkKGJsZCk6CisJCWJsZChzb3VyY2U9J21haW4uY3BwJywgdGFyZ2V0PSdhcHAnLCB1c2U9J0JPT1NUJykKKworT3B0aW9ucyBhcmUgZ2VuZXJhdGVkLCBpbiBvcmRlciB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBib29zdCBpbmNsdWRlcy9saWJyYXJpZXMuCitUaGUgYGNoZWNrX2Jvb3N0YCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIGFsbG93cyB0byBzcGVjaWZ5IHRoZSB1c2VkIGJvb3N0IGxpYnJhcmllcy4KK0l0IGNhbiBhbHNvIHByb3ZpZGUgZGVmYXVsdCBhcmd1bWVudHMgdG8gdGhlIC0tYm9vc3Qtc3RhdGljIGFuZCAtLWJvb3N0LW10IGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitFdmVyeXRoaW5nIHdpbGwgYmUgcGFja2FnZWQgdG9nZXRoZXIgaW4gYSBCT09TVCBjb21wb25lbnQgdGhhdCB5b3UgY2FuIHVzZS4KKworV2hlbiB1c2luZyBNU1ZDLCBhIGxvdCBvZiBjb21waWxhdGlvbiBmbGFncyBuZWVkIHRvIG1hdGNoIHlvdXIgQk9PU1QgYnVpbGQgY29uZmlndXJhdGlvbjoKKyAtIHlvdSBtYXkgaGF2ZSB0byBhZGQgL0VIc2MgdG8geW91ciBDWFhGTEFHUyBvciBkZWZpbmUgYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiBpZiBCT09TVF9OT19FWENFUFRJT05TIGlzIGRlZmluZWQuCisgICBFcnJvcnM6IEM0NTMwCisgLSBib29zdCBsaWJyYXJpZXMgd2lsbCB0cnkgdG8gYmUgc21hcnQgYW5kIHVzZSB0aGUgKHByZXR0eSBidXQgb2Z0ZW4gbm90IHVzZWZ1bCkgYXV0by1saW5raW5nIGZlYXR1cmUgb2YgTVNWQworICAgU28gYmVmb3JlIGNhbGxpbmcgYGNvbmYuY2hlY2tfYm9vc3RgIHlvdSBtaWdodCB3YW50IHRvIGRpc2FibGluZyBieSBhZGRpbmc6CisgICAJY29uZi5lbnYuREVGSU5FU19CT09TVCArPSBbJ0JPT1NUX0FMTF9OT19MSUInXQorICAgRXJyb3JzOgorIC0gYm9vc3QgbWlnaHQgYWxzbyBiZSBjb21waWxlZCB3aXRoIC9NVCwgd2hpY2ggbGlua3MgdGhlIHJ1bnRpbWUgc3RhdGljYWxseS4KKyAgIElmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggcmVkZWZpbmVkIHN5bWJvbHMsCisJCXNlbGYuZW52WydERUZJTkVTXyVzJyAlIHZhcl0gKz0gWydCT09TVF9BTExfTk9fTElCJ10KKwkJc2VsZi5lbnZbJ0NYWEZMQUdTXyVzJyAlIHZhcl0gKz0gWycvTUQnLCAnL0VIc2MnXQorUGFzc2luZyBgLS1ib29zdC1saW5rYWdlX2F1dG9kZXRlY3RgIG1pZ2h0IGhlbHAgZW5zdXJpbmcgaGF2aW5nIGEgY29ycmVjdCBsaW5rYWdlIGluIHNvbWUgYmFzaWMgY2FzZXMuCisKKycnJworCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2Zyb20gd2FmbGliIGltcG9ydCBVdGlscywgTG9ncywgRXJyb3JzCitmcm9tIHdhZmxpYi5Db25maWd1cmUgaW1wb3J0IGNvbmYKKworQk9PU1RfTElCUyA9IFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInLCAnL29wdC9sb2NhbC9saWInLCAnL3N3L2xpYicsICcvbGliJywKKyAgICAgICAgICAgICAgJy91c3IvbGliL3g4Nl82NC1saW51eC1nbnUnLCAnL3Vzci9saWIvaTM4Ni1saW51eC1nbnUnLAorICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9uZG4vbGliJywgJy9vcHQvbmRuL2xpYiddCitCT09TVF9JTkNMVURFUyA9IFsnL3Vzci9pbmNsdWRlJywgJy91c3IvbG9jYWwvaW5jbHVkZScsICcvb3B0L2xvY2FsL2luY2x1ZGUnLCAnL3N3L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvbmRuL2luY2x1ZGUnLCAnL29wdC9uZG4vaW5jbHVkZSddCitCT09TVF9WRVJTSU9OX0ZJTEUgPSAnYm9vc3QvdmVyc2lvbi5ocHAnCitCT09TVF9WRVJTSU9OX0NPREUgPSAnJycKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxib29zdC92ZXJzaW9uLmhwcD4KK2ludCBtYWluKCkgeyBzdGQ6OmNvdXQgPDwgQk9PU1RfTElCX1ZFUlNJT04gPDwgIjoiIDw8IEJPT1NUX1ZFUlNJT04gPDwgc3RkOjplbmRsOyB9CisnJycKK0JPT1NUX1NZU1RFTV9DT0RFID0gJycnCisjaW5jbHVkZSA8Ym9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgoraW50IG1haW4oKSB7IGJvb3N0OjpzeXN0ZW06OmVycm9yX2NvZGUgYzsgfQorJycnCitCT09TVF9USFJFQURfQ09ERSA9ICcnJworI2luY2x1ZGUgPGJvb3N0L3RocmVhZC5ocHA+CitpbnQgbWFpbigpIHsgYm9vc3Q6OnRocmVhZCB0OyB9CisnJycKKworIyB0b29sc2V0cyBmcm9tIHtib29zdF9kaXJ9L3Rvb2xzL2J1aWxkL3YyL3Rvb2xzL2NvbW1vbi5qYW0KK1BMQVRGT1JNID0gVXRpbHMudW52ZXJzaW9uZWRfc3lzX3BsYXRmb3JtKCkKK2RldGVjdF9pbnRlbCA9IGxhbWJkYSBlbnY6IChQTEFURk9STSA9PSAnd2luMzInKSBhbmQgJ2l3JyBvciAnaWwnCitkZXRlY3RfY2xhbmcgPSBsYW1iZGEgZW52OiAoUExBVEZPUk0gPT0gJ2RhcndpbicpIGFuZCAnY2xhbmctZGFyd2luJyBvciAnY2xhbmcnCitkZXRlY3RfbWluZ3cgPSBsYW1iZGEgZW52OiAocmUuc2VhcmNoKCdNaW5HVycsIGVudi5DWFhbMF0pKSBhbmQgJ21ndycgb3IgJ2djYycKK0JPT1NUX1RPT0xTRVRTID0geworCSdib3JsYW5kJzogICdiY2InLAorCSdjbGFuZyc6CWRldGVjdF9jbGFuZywKKwknY29tbyc6CSAnY29tbycsCisJJ2N3JzoJICAgJ2N3JywKKwknZGFyd2luJzogICAneGdjYycsCisJJ2VkZyc6CSAgJ2VkZycsCisJJ2crKyc6CSAgZGV0ZWN0X21pbmd3LAorCSdnY2MnOgkgIGRldGVjdF9taW5ndywKKwknaWNwYyc6CSBkZXRlY3RfaW50ZWwsCisJJ2ludGVsJzoJZGV0ZWN0X2ludGVsLAorCSdrY2MnOgkgICdrY2MnLAorCSdreWxpeCc6CSdiY2snLAorCSdtaXBzcHJvJzogICdtcCcsCisJJ21pbmd3JzoJJ21ndycsCisJJ21zdmMnOgkgJ3ZjJywKKwkncWNjJzoJICAncWNjJywKKwknc3VuJzoJICAnc3cnLAorCSdzdW5jKysnOiAgICdzdycsCisJJ3RydTY0Y3h4JzogJ3RydScsCisJJ3ZhY3BwJzoJJ3hsYycKK30KKworCitkZWYgb3B0aW9ucyhvcHQpOgorCW9wdCA9IG9wdC5hZGRfb3B0aW9uX2dyb3VwKCdCb29zdCBPcHRpb25zJykKKworCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LWluY2x1ZGVzJywgdHlwZT0nc3RyaW5nJywKKwkJCQkgICBkZWZhdWx0PScnLCBkZXN0PSdib29zdF9pbmNsdWRlcycsCisJCQkJICAgaGVscD0nJydwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJvb3N0IGluY2x1ZGVzIGFyZSwgZS5nLiwgL3BhdGgvdG8vYm9vc3RfMV81NV8wL3N0YWdlL2luY2x1ZGUnJycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtbGlicycsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfbGlicycsCisJCQkJICAgaGVscD0nJydwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJvb3N0IGxpYnMgYXJlLCBlLmcuLCAvcGF0aC90by9ib29zdF8xXzU1XzAvc3RhZ2UvbGliJycnKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LXN0YXRpYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisJCQkJICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0nYm9vc3Rfc3RhdGljJywKKwkJCQkgICBoZWxwPSdsaW5rIHdpdGggc3RhdGljIGJvb3N0IGxpYnJhcmllcyAoLmxpYi8uYSknKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LW10JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKwkJCQkgICBkZWZhdWx0PUZhbHNlLCBkZXN0PSdib29zdF9tdCcsCisJCQkJICAgaGVscD0nc2VsZWN0IG11bHRpLXRocmVhZGVkIGxpYnJhcmllcycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtYWJpJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfYWJpJywKKwkJCQkgICBoZWxwPScnJ3NlbGVjdCBsaWJyYXJpZXMgd2l0aCB0YWdzIChkZ3N5cCwgZCBmb3IgZGVidWcpLCBzZWUgZG9jIEJvb3N0LCBHZXR0aW5nIFN0YXJ0ZWQsIGNoYXB0ZXIgNi4xJycnKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LWxpbmthZ2VfYXV0b2RldGVjdCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2Jvb3N0X2xpbmthZ2VfYXV0b2RldGVjdCcsCisJCQkJICAgaGVscD0iYXV0by1kZXRlY3QgYm9vc3QgbGlua2FnZSBvcHRpb25zIChkb24ndCBnZXQgdXNlZCB0byBpdCAvIG1pZ2h0IGJyZWFrIG90aGVyIHN0dWZmKSIpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtdG9vbHNldCcsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfdG9vbHNldCcsCisJCQkJICAgaGVscD0nZm9yY2UgYSB0b29sc2V0IGUuZy4gbXN2YywgdmM5MCwgZ2NjLCBtaW5ndywgbWd3NDUgKGRlZmF1bHQ6IGF1dG8pJykKKwlweV92ZXJzaW9uID0gJyVkJWQnICUgKHN5cy52ZXJzaW9uX2luZm9bMF0sIHN5cy52ZXJzaW9uX2luZm9bMV0pCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtcHl0aG9uJywgdHlwZT0nc3RyaW5nJywKKwkJCQkgICBkZWZhdWx0PXB5X3ZlcnNpb24sIGRlc3Q9J2Jvb3N0X3B5dGhvbicsCisJCQkJICAgaGVscD0nc2VsZWN0IHRoZSBsaWIgcHl0aG9uIHdpdGggdGhpcyB2ZXJzaW9uIChkZWZhdWx0OiAlcyknICUgcHlfdmVyc2lvbikKKworCitAY29uZgorZGVmIF9fYm9vc3RfZ2V0X3ZlcnNpb25fZmlsZShzZWxmLCBkKToKKwlkbm9kZSA9IHNlbGYucm9vdC5maW5kX2RpcihkKQorCWlmIGRub2RlOgorCQlyZXR1cm4gZG5vZGUuZmluZF9ub2RlKEJPT1NUX1ZFUlNJT05fRklMRSkKKwlyZXR1cm4gTm9uZQorCitAY29uZgorZGVmIGJvb3N0X2dldF92ZXJzaW9uKHNlbGYsIGQpOgorCSIiInNpbGVudGx5IHJldHJpZXZlIHRoZSBib29zdCB2ZXJzaW9uIG51bWJlciIiIgorCW5vZGUgPSBzZWxmLl9fYm9vc3RfZ2V0X3ZlcnNpb25fZmlsZShkKQorCWlmIG5vZGU6CisJCXRyeToKKwkJCXR4dCA9IG5vZGUucmVhZCgpCisJCWV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcik6CisJCQlMb2dzLmVycm9yKCJDb3VsZCBub3QgcmVhZCB0aGUgZmlsZSAlciIgJSBub2RlLmFic3BhdGgoKSkKKwkJZWxzZToKKwkJCXJlX2J1dDEgPSByZS5jb21waWxlKCdeI2RlZmluZVxccytCT09TVF9MSUJfVkVSU0lPTlxccysiKC4qKSInLCByZS5NKQorCQkJbTEgPSByZV9idXQxLnNlYXJjaCh0eHQpCisKKwkJCXJlX2J1dDIgPSByZS5jb21waWxlKCdeI2RlZmluZVxccytCT09TVF9WRVJTSU9OXFxzKyhcXGQqKScsIHJlLk0pCisJCQltMiA9IHJlX2J1dDIuc2VhcmNoKHR4dCkKKworCQkJaWYgbTEgYW5kIG0yOgorCQkJCXJldHVybiAobTEuZ3JvdXAoMSksIG0yLmdyb3VwKDEpKQorCisJcmV0dXJuIHNlbGYuY2hlY2tfY3h4KGZyYWdtZW50PUJPT1NUX1ZFUlNJT05fQ09ERSwgaW5jbHVkZXM9W2RdLCBleGVjdXRlPVRydWUsIGRlZmluZV9yZXQ9VHJ1ZSkuc3BsaXQoIjoiKQorCitAY29uZgorZGVmIGJvb3N0X2dldF9pbmNsdWRlcyhzZWxmLCAqaywgKiprdyk6CisJaW5jbHVkZXMgPSBrIGFuZCBrWzBdIG9yIGt3LmdldCgnaW5jbHVkZXMnLCBOb25lKQorCWlmIGluY2x1ZGVzIGFuZCBzZWxmLl9fYm9vc3RfZ2V0X3ZlcnNpb25fZmlsZShpbmNsdWRlcyk6CisJCXJldHVybiBpbmNsdWRlcworCWZvciBkIGluIFV0aWxzLnRvX2xpc3Qoc2VsZi5lbnZpcm9uLmdldCgnSU5DTFVERScsICcnKSkgKyBCT09TVF9JTkNMVURFUzoKKwkJaWYgc2VsZi5fX2Jvb3N0X2dldF92ZXJzaW9uX2ZpbGUoZCk6CisJCQlyZXR1cm4gZAorCWlmIGluY2x1ZGVzOgorCQlzZWxmLmVuZF9tc2coJ2hlYWRlcnMgbm90IGZvdW5kIGluICVzJyAlIGluY2x1ZGVzKQorCQlzZWxmLmZhdGFsKCdUaGUgY29uZmlndXJhdGlvbiBmYWlsZWQnKQorCWVsc2U6CisJCXNlbGYuZW5kX21zZygnaGVhZGVycyBub3QgZm91bmQsIHBsZWFzZSBwcm92aWRlIGEgLS1ib29zdC1pbmNsdWRlcyBhcmd1bWVudCAoc2VlIGhlbHApJykKKwkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCitAY29uZgorZGVmIGJvb3N0X2dldF90b29sc2V0KHNlbGYsIGNjKToKKwl0b29sc2V0ID0gY2MKKwlpZiBub3QgY2M6CisJCWJ1aWxkX3BsYXRmb3JtID0gVXRpbHMudW52ZXJzaW9uZWRfc3lzX3BsYXRmb3JtKCkKKwkJaWYgYnVpbGRfcGxhdGZvcm0gaW4gQk9PU1RfVE9PTFNFVFM6CisJCQljYyA9IGJ1aWxkX3BsYXRmb3JtCisJCWVsc2U6CisJCQljYyA9IHNlbGYuZW52LkNYWF9OQU1FCisJaWYgY2MgaW4gQk9PU1RfVE9PTFNFVFM6CisJCXRvb2xzZXQgPSBCT09TVF9UT09MU0VUU1tjY10KKwlyZXR1cm4gaXNpbnN0YW5jZSh0b29sc2V0LCBzdHIpIGFuZCB0b29sc2V0IG9yIHRvb2xzZXQoc2VsZi5lbnYpCisKKworQGNvbmYKK2RlZiBfX2Jvb3N0X2dldF9saWJzX3BhdGgoc2VsZiwgKmssICoqa3cpOgorCScnJyByZXR1cm4gdGhlIGxpYiBwYXRoIGFuZCBhbGwgdGhlIGZpbGVzIGluIGl0ICcnJworCWlmICdmaWxlcycgaW4ga3c6CisJCXJldHVybiBzZWxmLnJvb3QuZmluZF9kaXIoJy4nKSwgVXRpbHMudG9fbGlzdChrd1snZmlsZXMnXSkKKwlsaWJzID0gayBhbmQga1swXSBvciBrdy5nZXQoJ2xpYnMnLCBOb25lKQorCWlmIGxpYnM6CisJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIobGlicykKKwkJZmlsZXMgPSBwYXRoLmFudF9nbG9iKCcqYm9vc3RfKicpCisJaWYgbm90IGxpYnMgb3Igbm90IGZpbGVzOgorCQlmb3IgZCBpbiBVdGlscy50b19saXN0KHNlbGYuZW52aXJvbi5nZXQoJ0xJQicsIFtdKSkgKyBCT09TVF9MSUJTOgorCQkJcGF0aCA9IHNlbGYucm9vdC5maW5kX2RpcihkKQorCQkJaWYgcGF0aDoKKwkJCQlmaWxlcyA9IHBhdGguYW50X2dsb2IoJypib29zdF8qJykKKwkJCQlpZiBmaWxlczoKKwkJCQkJYnJlYWsKKwkJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIoZCArICc2NCcpCisJCQlpZiBwYXRoOgorCQkJCWZpbGVzID0gcGF0aC5hbnRfZ2xvYignKmJvb3N0XyonKQorCQkJCWlmIGZpbGVzOgorCQkJCQlicmVhaworCWlmIG5vdCBwYXRoOgorCQlpZiBsaWJzOgorCQkJc2VsZi5lbmRfbXNnKCdsaWJzIG5vdCBmb3VuZCBpbiAlcycgJSBsaWJzKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygnbGlicyBub3QgZm91bmQsIHBsZWFzZSBwcm92aWRlIGEgLS1ib29zdC1saWJzIGFyZ3VtZW50IChzZWUgaGVscCknKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCXNlbGYudG9fbG9nKCdGb3VuZCB0aGUgYm9vc3QgcGF0aCBpbiAlciB3aXRoIHRoZSBsaWJyYXJpZXM6JyAlIHBhdGgpCisJZm9yIHggaW4gZmlsZXM6CisJCXNlbGYudG9fbG9nKCcgICAgJXInICUgeCkKKwlyZXR1cm4gcGF0aCwgZmlsZXMKKworQGNvbmYKK2RlZiBib29zdF9nZXRfbGlicyhzZWxmLCAqaywgKiprdyk6CisJJycnCisJcmV0dXJuIHRoZSBsaWIgcGF0aCBhbmQgdGhlIHJlcXVpcmVkIGxpYnMKKwlhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMKKwknJycKKwlwYXRoLCBmaWxlcyA9IHNlbGYuX19ib29zdF9nZXRfbGlic19wYXRoKCoqa3cpCisJdCA9IFtdCisJaWYga3cuZ2V0KCdtdCcsIEZhbHNlKToKKwkJdC5hcHBlbmQoJ210JykKKwlpZiBrdy5nZXQoJ2FiaScsIE5vbmUpOgorCQl0LmFwcGVuZChrd1snYWJpJ10pCisJdGFncyA9IHQgYW5kICcoLSVzKSsnICUgJy0nLmpvaW4odCkgb3IgJycKKwl0b29sc2V0ID0gc2VsZi5ib29zdF9nZXRfdG9vbHNldChrdy5nZXQoJ3Rvb2xzZXQnLCAnJykpCisJdG9vbHNldF9wYXQgPSAnKC0lc1swLTldezAsM30pKycgJSB0b29sc2V0CisJdmVyc2lvbiA9ICcoLSVzKSsnICUgc2VsZi5lbnYuQk9PU1RfVkVSU0lPTgorCisJZGVmIGZpbmRfbGliKHJlX2xpYiwgZmlsZXMpOgorCQlmb3IgZmlsZSBpbiBmaWxlczoKKwkJCWlmIHJlX2xpYi5zZWFyY2goZmlsZS5uYW1lKToKKwkJCQlzZWxmLnRvX2xvZygnRm91bmQgYm9vc3QgbGliICVzJyAlIGZpbGUpCisJCQkJcmV0dXJuIGZpbGUKKwkJcmV0dXJuIE5vbmUKKworCWRlZiBmb3JtYXRfbGliX25hbWUobmFtZSk6CisJCWlmIG5hbWUuc3RhcnRzd2l0aCgnbGliJykgYW5kIHNlbGYuZW52LkNDX05BTUUgIT0gJ21zdmMnOgorCQkJbmFtZSA9IG5hbWVbMzpdCisJCXJldHVybiBuYW1lWzpuYW1lLnJmaW5kKCcuJyldCisKKwlsaWJzID0gW10KKwlmb3IgbGliIGluIFV0aWxzLnRvX2xpc3QoayBhbmQga1swXSBvciBrdy5nZXQoJ2xpYicsIE5vbmUpKToKKwkJcHkgPSAobGliID09ICdweXRob24nKSBhbmQgJygtcHklcykrJyAlIGt3WydweXRob24nXSBvciAnJworCQkjIFRyeWluZyBsaWJyYXJpZXMsIGZyb20gbW9zdCBzdHJpY3QgbWF0Y2ggdG8gbGVhc3Qgb25lCisJCWZvciBwYXR0ZXJuIGluIFsnYm9vc3RfJXMlcyVzJXMlcycgJSAobGliLCB0b29sc2V0X3BhdCwgdGFncywgcHksIHZlcnNpb24pLAorCQkJCQkJJ2Jvb3N0XyVzJXMlcyVzJyAlIChsaWIsIHRhZ3MsIHB5LCB2ZXJzaW9uKSwKKwkJCQkJCSdib29zdF8lcyVzJXMnICUgKGxpYiwgdGFncywgdmVyc2lvbiksCisJCQkJCQkjIEdpdmUgdXAgdHJ5aW5nIHRvIGZpbmQgdGhlIHJpZ2h0IHZlcnNpb24KKwkJCQkJCSdib29zdF8lcyVzJXMlcycgJSAobGliLCB0b29sc2V0X3BhdCwgdGFncywgcHkpLAorCQkJCQkJJ2Jvb3N0XyVzJXMlcycgJSAobGliLCB0YWdzLCBweSksCisJCQkJCQknYm9vc3RfJXMlcycgJSAobGliLCB0YWdzKV06CisJCQlzZWxmLnRvX2xvZygnVHJ5aW5nIHBhdHRlcm4gJXMnICUgcGF0dGVybikKKwkJCWZpbGUgPSBmaW5kX2xpYihyZS5jb21waWxlKHBhdHRlcm4pLCBmaWxlcykKKwkJCWlmIGZpbGU6CisJCQkJbGlicy5hcHBlbmQoZm9ybWF0X2xpYl9uYW1lKGZpbGUubmFtZSkpCisJCQkJYnJlYWsKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygnbGliICVzIG5vdCBmb3VuZCBpbiAlcycgJSAobGliLCBwYXRoLmFic3BhdGgoKSkpCisJCQlzZWxmLmZhdGFsKCdUaGUgY29uZmlndXJhdGlvbiBmYWlsZWQnKQorCisJcmV0dXJuIHBhdGguYWJzcGF0aCgpLCBsaWJzCisKKworQGNvbmYKK2RlZiBjaGVja19ib29zdChzZWxmLCAqaywgKiprdyk6CisJIiIiCisJSW5pdGlhbGl6ZSBib29zdCBsaWJyYXJpZXMgdG8gYmUgdXNlZC4KKworCUtleXdvcmRzOiB5b3UgY2FuIHBhc3MgdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aXRoIHRoZSBjb21tYW5kIGxpbmUgKHdpdGhvdXQgIi0tYm9vc3QtIikuCisJTm90ZSB0aGF0IHRoZSBjb21tYW5kIGxpbmUgaGFzIHRoZSBwcmlvcml0eSwgYW5kIHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQuCisJIiIiCisJaWYgbm90IHNlbGYuZW52WydDWFgnXToKKwkJc2VsZi5mYXRhbCgnbG9hZCBhIGMrKyBjb21waWxlciBmaXJzdCwgY29uZi5sb2FkKCJjb21waWxlcl9jeHgiKScpCisKKwlwYXJhbXMgPSB7J2xpYic6IGsgYW5kIGtbMF0gb3Iga3cuZ2V0KCdsaWInLCBOb25lKX0KKwlmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLm9wdGlvbnMuX19kaWN0X18uaXRlbXMoKToKKwkJaWYgbm90IGtleS5zdGFydHN3aXRoKCdib29zdF8nKToKKwkJCWNvbnRpbnVlCisJCWtleSA9IGtleVtsZW4oJ2Jvb3N0XycpOl0KKwkJcGFyYW1zW2tleV0gPSB2YWx1ZSBhbmQgdmFsdWUgb3Iga3cuZ2V0KGtleSwgJycpCisKKwl2YXIgPSBrdy5nZXQoJ3VzZWxpYl9zdG9yZScsICdCT09TVCcpCisKKwlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYm9vc3QgaW5jbHVkZXMnKQorCXNlbGYuZW52WydJTkNMVURFU18lcycgJSB2YXJdID0gaW5jID0gc2VsZi5ib29zdF9nZXRfaW5jbHVkZXMoKipwYXJhbXMpCisJdmVyc2lvbnMgPSBzZWxmLmJvb3N0X2dldF92ZXJzaW9uKGluYykKKwlzZWxmLmVudi5CT09TVF9WRVJTSU9OID0gdmVyc2lvbnNbMF0KKwlzZWxmLmVudi5CT09TVF9WRVJTSU9OX05VTUJFUiA9IGludCh2ZXJzaW9uc1sxXSkKKwlzZWxmLmVuZF9tc2coIiVkLiVkLiVkIiAlIChpbnQodmVyc2lvbnNbMV0pIC8gMTAwMDAwLAorCQkJCSAgIGludCh2ZXJzaW9uc1sxXSkgLyAxMDAgJSAxMDAwLAorCQkJCSAgIGludCh2ZXJzaW9uc1sxXSkgJSAxMDApKQorCWlmIExvZ3MudmVyYm9zZToKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCXBhdGggOiAlcycgJSBzZWxmLmVudlsnSU5DTFVERVNfJXMnICUgdmFyXSkKKworCWlmIG5vdCBwYXJhbXNbJ2xpYiddOgorCQlyZXR1cm4KKwlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYm9vc3QgbGlicycpCisJc3VmZml4ID0gcGFyYW1zLmdldCgnc3RhdGljJywgTm9uZSkgYW5kICdTVCcgb3IgJycKKwlwYXRoLCBsaWJzID0gc2VsZi5ib29zdF9nZXRfbGlicygqKnBhcmFtcykKKwlzZWxmLmVudlsnJXNMSUJQQVRIXyVzJyAlIChzdWZmaXgsIHZhcildID0gW3BhdGhdCisJc2VsZi5lbnZbJyVzTElCXyVzJyAlIChzdWZmaXgsIHZhcildID0gbGlicworCXNlbGYuZW5kX21zZygnb2snKQorCWlmIExvZ3MudmVyYm9zZToKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCXBhdGggOiAlcycgJSBwYXRoKQorCQlMb2dzLnBwcmludCgnQ1lBTicsICcJbGlicyA6ICVzJyAlIGxpYnMpCisKKworCWRlZiB0cnlfbGluaygpOgorCQlpZiAnc3lzdGVtJyBpbiBwYXJhbXNbJ2xpYiddOgorCQkJc2VsZi5jaGVja19jeHgoCisJCQkgZnJhZ21lbnQ9Qk9PU1RfU1lTVEVNX0NPREUsCisJCQkgdXNlPXZhciwKKwkJCSBleGVjdXRlPUZhbHNlLAorCQkJKQorCQlpZiAndGhyZWFkJyBpbiBwYXJhbXNbJ2xpYiddOgorCQkJc2VsZi5jaGVja19jeHgoCisJCQkgZnJhZ21lbnQ9Qk9PU1RfVEhSRUFEX0NPREUsCisJCQkgdXNlPXZhciwKKwkJCSBleGVjdXRlPUZhbHNlLAorCQkJKQorCisJaWYgcGFyYW1zLmdldCgnbGlua2FnZV9hdXRvZGV0ZWN0JywgRmFsc2UpOgorCQlzZWxmLnN0YXJ0X21zZygiQXR0ZW1wdGluZyB0byBkZXRlY3QgYm9vc3QgbGlua2FnZSBmbGFncyIpCisJCXRvb2xzZXQgPSBzZWxmLmJvb3N0X2dldF90b29sc2V0KGt3LmdldCgndG9vbHNldCcsICcnKSkKKwkJaWYgdG9vbHNldCBpbiBbJ3ZjJ106CisJCQkjIGRpc2FibGUgYXV0by1saW5raW5nIGZlYXR1cmUsIGNhdXNpbmcgZXJyb3IgTE5LMTE4MQorCQkJIyBiZWNhdXNlIHRoZSBjb2RlIHdhbnRzIHRvIGJlIGxpbmtlZCBhZ2FpbnN0CisJCQlzZWxmLmVudlsnREVGSU5FU18lcycgJSB2YXJdICs9IFsnQk9PU1RfQUxMX05PX0xJQiddCisKKwkJCSMgaWYgbm8gZGxscyBhcmUgcHJlc2VudCwgd2UgZ3Vlc3MgdGhlIC5saWIgZmlsZXMgYXJlIG5vdCBzdHVicworCQkJaGFzX2RsbHMgPSBGYWxzZQorCQkJZm9yIHggaW4gVXRpbHMubGlzdGRpcihwYXRoKToKKwkJCQlpZiB4LmVuZHN3aXRoKHNlbGYuZW52LmN4eHNobGliX1BBVFRFUk4gJSAnJyk6CisJCQkJCWhhc19kbGxzID0gVHJ1ZQorCQkJCQlicmVhaworCQkJaWYgbm90IGhhc19kbGxzOgorCQkJCXNlbGYuZW52WydTVExJQlBBVEhfJXMnICUgdmFyXSA9IFtwYXRoXQorCQkJCXNlbGYuZW52WydTVExJQl8lcycgJSB2YXJdID0gbGlicworCQkJCWRlbCBzZWxmLmVudlsnTElCXyVzJyAlIHZhcl0KKwkJCQlkZWwgc2VsZi5lbnZbJ0xJQlBBVEhfJXMnICUgdmFyXQorCisJCQkjIHdlIGF0dGVtcHQgdG8gcGxheSB3aXRoIHNvbWUga25vd24tdG8td29yayBDWFhGTEFHUyBjb21iaW5hdGlvbnMKKwkJCWZvciBjeHhmbGFncyBpbiAoWycvTUQnLCAnL0VIc2MnXSwgW10pOgorCQkJCXNlbGYuZW52LnN0YXNoKCkKKwkJCQlzZWxmLmVudlsiQ1hYRkxBR1NfJXMiICUgdmFyXSArPSBjeHhmbGFncworCQkJCXRyeToKKwkJCQkJdHJ5X2xpbmsoKQorCQkJCQlzZWxmLmVuZF9tc2coIm9rOiB3aW5uaW5nIGN4eGZsYWdzIGNvbWJpbmF0aW9uOiAlcyIgJSAoc2VsZi5lbnZbIkNYWEZMQUdTXyVzIiAlIHZhcl0pKQorCQkJCQllID0gTm9uZQorCQkJCQlicmVhaworCQkJCWV4Y2VwdCBFcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yIGFzIGV4YzoKKwkJCQkJc2VsZi5lbnYucmV2ZXJ0KCkKKwkJCQkJZSA9IGV4YworCisJCQlpZiBlIGlzIG5vdCBOb25lOgorCQkJCXNlbGYuZW5kX21zZygiQ291bGQgbm90IGF1dG8tZGV0ZWN0IGJvb3N0IGxpbmtpbmcgZmxhZ3MgY29tYmluYXRpb24sIHlvdSBtYXkgcmVwb3J0IGl0IHRvIGJvb3N0LnB5IGF1dGhvciIsIGV4PWUpCisJCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygiQm9vc3QgbGlua2FnZSBmbGFncyBhdXRvLWRldGVjdGlvbiBub3QgaW1wbGVtZW50ZWQgKG5lZWRlZCA/KSBmb3IgdGhpcyB0b29sY2hhaW4iKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwllbHNlOgorCQlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgZm9yIGJvb3N0IGxpbmthZ2UnKQorCQl0cnk6CisJCQl0cnlfbGluaygpCisJCWV4Y2VwdCBFcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yIGFzIGU6CisJCQlzZWxmLmVuZF9tc2coIkNvdWxkIG5vdCBsaW5rIGFnYWluc3QgYm9vc3QgbGlicmFyaWVzIHVzaW5nIHN1cHBsaWVkIG9wdGlvbnMiKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJc2VsZi5lbmRfbXNnKCdvaycpCmRpZmYgLS1naXQgYS8ud2FmLXRvb2xzL2NyeXB0b3BwLnB5IGIvLndhZi10b29scy9jcnlwdG9wcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjBjODFmCi0tLSAvZGV2L251bGwKKysrIGIvLndhZi10b29scy9jcnlwdG9wcC5weQpAQCAtMCwwICsxLDkxIEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiB1dGYtOAorCisnJycKKworV2hlbiB1c2luZyB0aGlzIHRvb2wsIHRoZSB3c2NyaXB0IHdpbGwgbG9vayBsaWtlOgorCisgICAgZGVmIG9wdGlvbnMob3B0KToKKyAgICAgICAgb3B0LmxvYWQoJ2NvbXBpbGVyX2N4eCBjcnlwdG9wcCcpCisKKyAgICBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICAgICBjb25mLmxvYWQoJ2NvbXBpbGVyX2N4eCBjcnlwdG9wcCcpCisgICAgICAgIGNvbmYuY2hlY2tfY3J5cHRvcHAoKQorCisgICAgZGVmIGJ1aWxkKGJsZCk6CisgICAgICAgIGJsZChzb3VyY2U9J21haW4uY3BwJywgdGFyZ2V0PSdhcHAnLCB1c2U9J0NSWVBUT1BQJykKKworT3B0aW9ucyBhcmUgZ2VuZXJhdGVkLCBpbiBvcmRlciB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBjcnlwdG9wcCBpbmNsdWRlcy9saWJyYXJpZXMuCisKKworJycnCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2Zyb20gd2FmbGliIGltcG9ydCBVdGlscyxMb2dzLEVycm9ycworZnJvbSB3YWZsaWIuQ29uZmlndXJlIGltcG9ydCBjb25mCitDUllQVE9QUF9ESVIgPSBbJy91c3InLCAnL3Vzci9sb2NhbCcsICcvb3B0L2xvY2FsJywgJy9zdycsICcvdXNyL2xvY2FsL25kbicsICcvb3B0L25kbiddCitDUllQVE9QUF9WRVJTSU9OX0ZJTEUgPSAnY29uZmlnLmgnCisKK2RlZiBvcHRpb25zKG9wdCk6CisgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1jcnlwdG9wcCcsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Tm9uZSwgZGVzdD0nY3J5cHRvcHBfZGlyJywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ1BhdGggdG8gd2hlcmUgQ3J5cHRvUFAgaXMgaW5zdGFsbGVkLCBlLmcuLCAvdXNyL2xvY2FsJycnKQorCitAY29uZgorZGVmIF9fY3J5cHRvcHBfZ2V0X3ZlcnNpb25fZmlsZShzZWxmLCBkaXIpOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHNlbGYucm9vdC5maW5kX2RpcihkaXIpLmZpbmRfbm9kZSgnJXMvJXMnICUgKCdpbmNsdWRlL2NyeXB0b3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSWVBUT1BQX1ZFUlNJT05fRklMRSkpCisgICAgZXhjZXB0OgorICAgICAgICByZXR1cm4gTm9uZQorCitAY29uZgorZGVmIF9fY3J5cHRvcHBfZmluZF9yb290X2FuZF92ZXJzaW9uX2ZpbGUoc2VsZiwgKmssICoqa3cpOgorICAgIHJvb3QgPSBrIGFuZCBrWzBdIG9yIGt3LmdldCgncGF0aCcsIHNlbGYub3B0aW9ucy5jcnlwdG9wcF9kaXIpCisKKyAgICBmaWxlID0gc2VsZi5fX2NyeXB0b3BwX2dldF92ZXJzaW9uX2ZpbGUocm9vdCkKKyAgICBpZiByb290IGFuZCBmaWxlOgorICAgICAgICByZXR1cm4gKHJvb3QsIGZpbGUpCisgICAgZm9yIGRpciBpbiBDUllQVE9QUF9ESVI6CisgICAgICAgIGZpbGUgPSBzZWxmLl9fY3J5cHRvcHBfZ2V0X3ZlcnNpb25fZmlsZShkaXIpCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICByZXR1cm4gKGRpciwgZmlsZSkKKworICAgIGlmIHJvb3Q6CisgICAgICAgIHNlbGYuZmF0YWwoJ0NyeXB0b1BQIG5vdCBmb3VuZCBpbiAlcycgJSByb290KQorICAgIGVsc2U6CisgICAgICAgIHNlbGYuZmF0YWwoJ0NyeXB0b1BQIG5vdCBmb3VuZCwgcGxlYXNlIHByb3ZpZGUgYSAtLXdpdGgtY3J5cHRvcHA9UEFUSCBhcmd1bWVudCAoc2VlIGhlbHApJykKKworQGNvbmYKK2RlZiBjaGVja19jcnlwdG9wcChzZWxmLCAqaywgKiprdyk6CisgICAgaWYgbm90IHNlbGYuZW52WydDWFgnXToKKyAgICAgICAgc2VsZi5mYXRhbCgnTG9hZCBhIGMrKyBjb21waWxlciBmaXJzdCwgZS5nLiwgY29uZi5sb2FkKCJjb21waWxlcl9jeHgiKScpCisKKyAgICB2YXIgPSBrdy5nZXQoJ3VzZWxpYl9zdG9yZScsICdDUllQVE9QUCcpCisgICAgbWFuZGF0b3J5ID0ga3cuZ2V0KCdtYW5kYXRvcnknLCBUcnVlKQorCisgICAgdXNlID0ga3cuZ2V0KCd1c2UnLCAnUFRIUkVBRCcpCisKKyAgICBzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgQ3J5cHRvKysgbGliJykKKyAgICAocm9vdCwgZmlsZSkgPSBzZWxmLl9fY3J5cHRvcHBfZmluZF9yb290X2FuZF92ZXJzaW9uX2ZpbGUoKmssICoqa3cpCisKKyAgICB0cnk6CisgICAgICAgIHR4dCA9IGZpbGUucmVhZCgpCisgICAgICAgIHJlX3ZlcnNpb24gPSByZS5jb21waWxlKCdeI2RlZmluZVxccytDUllQVE9QUF9WRVJTSU9OXFxzKyguKiknLCByZS5NKQorICAgICAgICBtYXRjaCA9IHJlX3ZlcnNpb24uc2VhcmNoKHR4dCkKKworICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIHNlbGYuZW52LkNSWVBUT1BQX1ZFUlNJT04gPSBtYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgc2VsZi5lbmRfbXNnKHNlbGYuZW52LkNSWVBUT1BQX1ZFUlNJT04pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhdGFsKCdDcnlwdG9QUCBmaWxlcyBhcmUgcHJlc2VudCwgYnV0IGFyZSBub3QgcmVjb2duaXphYmxlJykKKyAgICBleGNlcHQ6CisgICAgICAgIHNlbGYuZmF0YWwoJ0NyeXB0b1BQIG5vdCBmb3VuZCBvciBpcyBub3QgdXNhYmxlJykKKworICAgIHZhbCA9IHNlbGYuY2hlY2tfY3h4KG1zZz0nQ2hlY2tpbmcgaWYgQ3J5cHRvUFAgbGlicmFyeSB3b3JrcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9J2NyeXB0b3BwL2NvbmZpZy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWI9J2NyeXB0b3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz0iJXMvaW5jbHVkZSIgJSByb290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBhdGg9IiVzL2xpYiIgJSByb290LAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeT1tYW5kYXRvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgdXNlPXVzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyKQpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9kZWZhdWx0LWNvbXBpbGVyLWZsYWdzLnB5IGIvLndhZi10b29scy9kZWZhdWx0LWNvbXBpbGVyLWZsYWdzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZjNiMTkKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2RlZmF1bHQtY29tcGlsZXItZmxhZ3MucHkKQEAgLTAsMCArMSw1OSBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorCitmcm9tIHdhZmxpYiBpbXBvcnQgTG9ncywgQ29uZmlndXJlCisKK2RlZiBvcHRpb25zKG9wdCk6CisgICAgb3B0LmFkZF9vcHRpb24oJy0tZGVidWcnLCAnLS13aXRoLWRlYnVnJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgZGVzdD0nZGVidWcnLAorICAgICAgICAgICAgICAgICAgIGhlbHA9JycnQ29tcGlsZSBpbiBkZWJ1Z2dpbmcgbW9kZSB3aXRob3V0IGFsbCBvcHRpbWl6YXRpb25zICgtTzApJycnKQorICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYysrMTEnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBkZXN0PSd1c2VfY3h4MTEnLAorICAgICAgICAgICAgICAgICAgIGhlbHA9JycnVXNlIEMrKyAxMSBmZWF0dXJlcyBpZiBhdmFpbGFibGUgaW4gdGhlIGNvbXBpbGVyJycnKQorCitkZWYgY29uZmlndXJlKGNvbmYpOgorICAgIGFyZUN1c3RvbUN4eGZsYWdzUHJlc2VudCA9IChsZW4oY29uZi5lbnYuQ1hYRkxBR1MpID4gMCkKKyAgICBkZWZhdWx0RmxhZ3MgPSBbXQorCisgICAgaWYgY29uZi5vcHRpb25zLnVzZV9jeHgxMToKKyAgICAgICAgZGVmYXVsdEZsYWdzICs9IFsnLXN0ZD1jKysweCcsICctc3RkPWMrKzExJ10KKyAgICBlbHNlOgorICAgICAgICBkZWZhdWx0RmxhZ3MgKz0gWyctc3RkPWMrKzAzJ10KKworICAgIGRlZmF1bHRGbGFncyArPSBbJy1wZWRhbnRpYycsICctV2FsbCcsICctV25vLWxvbmctbG9uZycsICctV25vLXVubmVlZGVkLWludGVybmFsLWRlY2xhcmF0aW9uJ10KKworICAgIGlmIGNvbmYub3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgY29uZi5kZWZpbmUoJ19ERUJVRycsIDEpCisgICAgICAgIGRlZmF1bHRGbGFncyArPSBbJy1PMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJy1PZycsICMgZ2NjID49IDQuOAorICAgICAgICAgICAgICAgICAgICAgICAgICctZzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICctZmNvbG9yLWRpYWdub3N0aWNzJywgIyBjbGFuZworICAgICAgICAgICAgICAgICAgICAgICAgICctZmRpYWdub3N0aWNzLWNvbG9yJywgIyBnY2MgPj0gNC45CisgICAgICAgICAgICAgICAgICAgICAgICAgJy1XZXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLWVycm9yPWRlcHJlY2F0ZWQtcmVnaXN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLWVycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWQnLCAjIEJ1ZyAjMTYxNQorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBpZiBhcmVDdXN0b21DeHhmbGFnc1ByZXNlbnQ6CisgICAgICAgICAgICBtaXNzaW5nRmxhZ3MgPSBbeCBmb3IgeCBpbiBkZWZhdWx0RmxhZ3MgaWYgeCBub3QgaW4gY29uZi5lbnYuQ1hYRkxBR1NdCisgICAgICAgICAgICBpZiBsZW4obWlzc2luZ0ZsYWdzKSA+IDA6CisgICAgICAgICAgICAgICAgTG9ncy53YXJuKCJTZWxlY3RlZCBkZWJ1ZyBtb2RlLCBidXQgQ1hYRkxBR1MgaXMgc2V0IHRvIGEgY3VzdG9tIHZhbHVlICclcyciCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgIiAiLmpvaW4oY29uZi5lbnYuQ1hYRkxBR1MpKQorICAgICAgICAgICAgICAgIExvZ3Mud2FybigiRGVmYXVsdCBmbGFncyAnJXMnIGFyZSBub3QgYWN0aXZhdGVkIiAlICIgIi5qb2luKG1pc3NpbmdGbGFncykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25mLmFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3MoZGVmYXVsdEZsYWdzKQorICAgIGVsc2U6CisgICAgICAgIGRlZmF1bHRGbGFncyArPSBbJy1PMicsICctZyddCisgICAgICAgIGlmIG5vdCBhcmVDdXN0b21DeHhmbGFnc1ByZXNlbnQ6CisgICAgICAgICAgICBjb25mLmFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3MoZGVmYXVsdEZsYWdzKQorCitAQ29uZmlndXJlLmNvbmYKK2RlZiBhZGRfc3VwcG9ydGVkX2N4eGZsYWdzKHNlbGYsIGN4eGZsYWdzKToKKyAgICAiIiIKKyAgICBDaGVjayB3aGljaCBjeHhmbGFncyBhcmUgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyIGFuZCBhZGQgdGhlbSB0byBlbnYuQ1hYRkxBR1MgdmFyaWFibGUKKyAgICAiIiIKKyAgICBzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYWxsb3dlZCBmbGFncyBmb3IgYysrIGNvbXBpbGVyJykKKworICAgIHN1cHBvcnRlZEZsYWdzID0gW10KKyAgICBmb3IgZmxhZyBpbiBjeHhmbGFnczoKKyAgICAgICAgaWYgc2VsZi5jaGVja19jeHgoY3h4ZmxhZ3M9WyctV2Vycm9yJywgZmxhZ10sIG1hbmRhdG9yeT1GYWxzZSk6CisgICAgICAgICAgICBzdXBwb3J0ZWRGbGFncyArPSBbZmxhZ10KKworICAgIHNlbGYuZW5kX21zZygnICcuam9pbihzdXBwb3J0ZWRGbGFncykpCisgICAgc2VsZi5lbnYuQ1hYRkxBR1MgPSBzdXBwb3J0ZWRGbGFncyArIHNlbGYuZW52LkNYWEZMQUdTCmRpZmYgLS1naXQgYS8ud2FmLXRvb2xzL2RveHlnZW4ucHkgYi8ud2FmLXRvb2xzL2RveHlnZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4YzcwYgotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvZG94eWdlbi5weQpAQCAtMCwwICsxLDIxNCBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogVVRGLTgKKyMgVGhvbWFzIE5hZ3kgMjAwOC0yMDEwIChpdGEpCisKKyIiIgorCitEb3h5Z2VuIHN1cHBvcnQKKworVmFyaWFibGVzIHBhc3NlZCB0byBibGQoKToKKyogZG94eWZpbGUgLS0gdGhlIERveHlmaWxlIHRvIHVzZQorCitXaGVuIHVzaW5nIHRoaXMgdG9vbCwgdGhlIHdzY3JpcHQgd2lsbCBsb29rIGxpa2U6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCQlvcHQubG9hZCgnZG94eWdlbicpCisKKwlkZWYgY29uZmlndXJlKGNvbmYpOgorCQljb25mLmxvYWQoJ2RveHlnZW4nKQorCQkjIGNoZWNrIGNvbmYuZW52LkRPWFlHRU4sIGlmIGl0IGlzIG1hbmRhdG9yeQorCisJZGVmIGJ1aWxkKGJsZCk6CisJCWlmIGJsZC5lbnYuRE9YWUdFTjoKKwkJCWJsZChmZWF0dXJlcz0iZG94eWdlbiIsIGRveHlmaWxlPSdEb3h5ZmlsZScsIC4uLikKKworICAgICAgICBkZWYgZG94eWdlbihibGQpOgorCQlpZiBibGQuZW52LkRPWFlHRU46CisJCQlibGQoZmVhdHVyZXM9ImRveHlnZW4iLCBkb3h5ZmlsZT0nRG94eWZpbGUnLCAuLi4pCisiIiIKKworZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoY2FzZQoraW1wb3J0IG9zLCBvcy5wYXRoLCByZSwgc3RhdAorZnJvbSB3YWZsaWIgaW1wb3J0IFRhc2ssIFV0aWxzLCBOb2RlLCBMb2dzLCBFcnJvcnMsIEJ1aWxkCitmcm9tIHdhZmxpYi5UYXNrR2VuIGltcG9ydCBmZWF0dXJlCisKK0RPWFlfU1RSID0gJyIke0RPWFlHRU59IiAtICcKK0RPWFlfRk1UUyA9ICdodG1sIGxhdGV4IG1hbiByZnQgeG1sJy5zcGxpdCgpCitET1hZX0ZJTEVfUEFUVEVSTlMgPSAnKi4nICsgJyAqLicuam9pbignJycKK2MgY2MgY3h4IGNwcCBjKysgamF2YSBpaSBpeHggaXBwIGkrKyBpbmwgaCBoaCBoeHggaHBwIGgrKyBpZGwgb2RsIGNzIHBocCBwaHAzCitpbmMgbSBtbSBweSBmOTBjIGNjIGN4eCBjcHAgYysrIGphdmEgaWkgaXh4IGlwcCBpKysgaW5sIGggaGggaHh4CisnJycuc3BsaXQoKSkKKworcmVfcmwgPSByZS5jb21waWxlKCdcXFxcXHIqXG4nLCByZS5NVUxUSUxJTkUpCityZV9ubCA9IHJlLmNvbXBpbGUoJ1xyKlxuJywgcmUuTSkKK2RlZiBwYXJzZV9kb3h5KHR4dCk6CisJdGJsID0ge30KKwl0eHQgICA9IHJlX3JsLnN1YignJywgdHh0KQorCWxpbmVzID0gcmVfbmwuc3BsaXQodHh0KQorCWZvciB4IGluIGxpbmVzOgorCQl4ID0geC5zdHJpcCgpCisJCWlmIG5vdCB4IG9yIHguc3RhcnRzd2l0aCgnIycpIG9yIHguZmluZCgnPScpIDwgMDoKKwkJCWNvbnRpbnVlCisJCWlmIHguZmluZCgnKz0nKSA+PSAwOgorCQkJdG1wID0geC5zcGxpdCgnKz0nKQorCQkJa2V5ID0gdG1wWzBdLnN0cmlwKCkKKwkJCWlmIGtleSBpbiB0Ymw6CisJCQkJdGJsW2tleV0gKz0gJyAnICsgJys9Jy5qb2luKHRtcFsxOl0pLnN0cmlwKCkKKwkJCWVsc2U6CisJCQkJdGJsW2tleV0gPSAnKz0nLmpvaW4odG1wWzE6XSkuc3RyaXAoKQorCQllbHNlOgorCQkJdG1wID0geC5zcGxpdCgnPScpCisJCQl0YmxbdG1wWzBdLnN0cmlwKCldID0gJz0nLmpvaW4odG1wWzE6XSkuc3RyaXAoKQorCXJldHVybiB0YmwKKworY2xhc3MgZG94eWdlbihUYXNrLlRhc2spOgorCXZhcnMgID0gWydET1hZR0VOJywgJ0RPWFlGTEFHUyddCisJY29sb3IgPSAnQkxVRScKKworCWRlZiBydW5uYWJsZV9zdGF0dXMoc2VsZik6CisJCScnJworCQlzZWxmLnBhcnMgYXJlIHBvcHVsYXRlZCBpbiBydW5uYWJsZV9zdGF0dXMgLSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcKKwkJcnVuICpiZWZvcmUqIGJvdGggc2VsZi5wYXJzICJjb25zdW1lcnMiIC0gc2NhbigpIGFuZCBydW4oKQorCisJCXNldCBvdXRwdXRfZGlyIChub2RlKSBmb3IgdGhlIG91dHB1dAorCQknJycKKworCQlmb3IgeCBpbiBzZWxmLnJ1bl9hZnRlcjoKKwkJCWlmIG5vdCB4Lmhhc3J1bjoKKwkJCQlyZXR1cm4gVGFzay5BU0tfTEFURVIKKworCQlpZiBub3QgZ2V0YXR0cihzZWxmLCAncGFycycsIE5vbmUpOgorCQkJdHh0ID0gc2VsZi5pbnB1dHNbMF0ucmVhZCgpCisJCQlzZWxmLnBhcnMgPSBwYXJzZV9kb3h5KHR4dCkKKwkJCWlmIG5vdCBzZWxmLnBhcnMuZ2V0KCdPVVRQVVRfRElSRUNUT1JZJyk6CisJCQkJc2VsZi5wYXJzWydPVVRQVVRfRElSRUNUT1JZJ10gPSBzZWxmLmlucHV0c1swXS5wYXJlbnQuZ2V0X2JsZCgpLmFic3BhdGgoKQorCisJCQkjIE92ZXJyaWRlIHdpdGggYW55IHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSB0YXNrIGdlbmVyYXRvcgorCQkJaWYgZ2V0YXR0cihzZWxmLmdlbmVyYXRvciwgJ3BhcnMnLCBOb25lKToKKwkJCQlmb3IgaywgdiBpbiBzZWxmLmdlbmVyYXRvci5wYXJzLml0ZXJpdGVtcygpOgorCQkJCQlzZWxmLnBhcnNba10gPSB2CisKKwkJCXNlbGYuZG94eV9pbnB1dHMgPSBnZXRhdHRyKHNlbGYsICdkb3h5X2lucHV0cycsIFtdKQorCQkJaWYgbm90IHNlbGYucGFycy5nZXQoJ0lOUFVUJyk6CisJCQkJc2VsZi5kb3h5X2lucHV0cy5hcHBlbmQoc2VsZi5pbnB1dHNbMF0ucGFyZW50KQorCQkJZWxzZToKKwkJCQlmb3IgaSBpbiBzZWxmLnBhcnMuZ2V0KCdJTlBVVCcpLnNwbGl0KCk6CisJCQkJCWlmIG9zLnBhdGguaXNhYnMoaSk6CisJCQkJCQlub2RlID0gc2VsZi5nZW5lcmF0b3IuYmxkLnJvb3QuZmluZF9ub2RlKGkpCisJCQkJCWVsc2U6CisJCQkJCQlub2RlID0gc2VsZi5nZW5lcmF0b3IucGF0aC5maW5kX25vZGUoaSkKKwkJCQkJaWYgbm90IG5vZGU6CisJCQkJCQlzZWxmLmdlbmVyYXRvci5ibGQuZmF0YWwoJ0NvdWxkIG5vdCBmaW5kIHRoZSBkb3h5Z2VuIGlucHV0ICVyJyAlIGkpCisJCQkJCXNlbGYuZG94eV9pbnB1dHMuYXBwZW5kKG5vZGUpCisKKwkJaWYgbm90IGdldGF0dHIoc2VsZiwgJ291dHB1dF9kaXInLCBOb25lKToKKwkJCWJsZCA9IHNlbGYuZ2VuZXJhdG9yLmJsZAorCQkJIyBGaXJzdCB0cnkgdG8gZmluZCBhbiBhYnNvbHV0ZSBwYXRoLCB0aGVuIGZpbmQgb3IgZGVjbGFyZSBhIHJlbGF0aXZlIHBhdGgKKwkJCXNlbGYub3V0cHV0X2RpciA9IGJsZC5yb290LmZpbmRfZGlyKHNlbGYucGFyc1snT1VUUFVUX0RJUkVDVE9SWSddKQorCQkJaWYgbm90IHNlbGYub3V0cHV0X2RpcjoKKwkJCQlzZWxmLm91dHB1dF9kaXIgPSBibGQucGF0aC5maW5kX29yX2RlY2xhcmUoc2VsZi5wYXJzWydPVVRQVVRfRElSRUNUT1JZJ10pCisKKwkJc2VsZi5zaWduYXR1cmUoKQorCQlyZXR1cm4gVGFzay5UYXNrLnJ1bm5hYmxlX3N0YXR1cyhzZWxmKQorCisJZGVmIHNjYW4oc2VsZik6CisJCWV4Y2x1ZGVfcGF0dGVybnMgPSBzZWxmLnBhcnMuZ2V0KCdFWENMVURFX1BBVFRFUk5TJywnJykuc3BsaXQoKQorCQlmaWxlX3BhdHRlcm5zID0gc2VsZi5wYXJzLmdldCgnRklMRV9QQVRURVJOUycsJycpLnNwbGl0KCkKKwkJaWYgbm90IGZpbGVfcGF0dGVybnM6CisJCQlmaWxlX3BhdHRlcm5zID0gRE9YWV9GSUxFX1BBVFRFUk5TCisJCWlmIHNlbGYucGFycy5nZXQoJ1JFQ1VSU0lWRScpID09ICdZRVMnOgorCQkJZmlsZV9wYXR0ZXJucyA9IFsiKiovJXMiICUgcGF0dGVybiBmb3IgcGF0dGVybiBpbiBmaWxlX3BhdHRlcm5zXQorCQlub2RlcyA9IFtdCisJCW5hbWVzID0gW10KKwkJZm9yIG5vZGUgaW4gc2VsZi5kb3h5X2lucHV0czoKKwkJCWlmIG9zLnBhdGguaXNkaXIobm9kZS5hYnNwYXRoKCkpOgorCQkJCWZvciBtIGluIG5vZGUuYW50X2dsb2IoaW5jbD1maWxlX3BhdHRlcm5zLCBleGNsPWV4Y2x1ZGVfcGF0dGVybnMpOgorCQkJCQlub2Rlcy5hcHBlbmQobSkKKwkJCWVsc2U6CisJCQkJbm9kZXMuYXBwZW5kKG5vZGUpCisJCXJldHVybiAobm9kZXMsIG5hbWVzKQorCisJZGVmIHJ1bihzZWxmKToKKwkJZGN0ID0gc2VsZi5wYXJzLmNvcHkoKQorCQlkY3RbJ0lOUFVUJ10gPSAnICcuam9pbihbJyIlcyInICUgeC5hYnNwYXRoKCkgZm9yIHggaW4gc2VsZi5kb3h5X2lucHV0c10pCisJCWNvZGUgPSAnXG4nLmpvaW4oWyclcyA9ICVzJyAlICh4LCBkY3RbeF0pIGZvciB4IGluIHNlbGYucGFyc10pCisJCWNvZGUgPSBjb2RlLmVuY29kZSgpICMgZm9yIHB5dGhvbiAzCisJCSNmbXQgPSBET1hZX1NUUiAlIChzZWxmLmlucHV0c1swXS5wYXJlbnQuYWJzcGF0aCgpKQorCQljbWQgPSBVdGlscy5zdWJzdF92YXJzKERPWFlfU1RSLCBzZWxmLmVudikKKwkJZW52ID0gc2VsZi5lbnYuZW52IG9yIE5vbmUKKwkJcHJvYyA9IFV0aWxzLnN1YnByb2Nlc3MuUG9wZW4oY21kLCBzaGVsbD1UcnVlLCBzdGRpbj1VdGlscy5zdWJwcm9jZXNzLlBJUEUsIGVudj1lbnYsIGN3ZD1zZWxmLmdlbmVyYXRvci5ibGQucGF0aC5nZXRfYmxkKCkuYWJzcGF0aCgpKQorCQlwcm9jLmNvbW11bmljYXRlKGNvZGUpCisJCXJldHVybiBwcm9jLnJldHVybmNvZGUKKworCWRlZiBwb3N0X3J1bihzZWxmKToKKwkJbm9kZXMgPSBzZWxmLm91dHB1dF9kaXIuYW50X2dsb2IoJyoqLyonLCBxdWlldD1UcnVlKQorCQlmb3IgeCBpbiBub2RlczoKKwkJCXguc2lnID0gVXRpbHMuaF9maWxlKHguYWJzcGF0aCgpKQorCQlzZWxmLm91dHB1dHMgKz0gbm9kZXMKKwkJcmV0dXJuIFRhc2suVGFzay5wb3N0X3J1bihzZWxmKQorCitjbGFzcyB0YXIoVGFzay5UYXNrKToKKwkicXVpY2sgdGFyIGNyZWF0aW9uIgorCXJ1bl9zdHIgPSAnJHtUQVJ9ICR7VEFST1BUU30gJHtUR1R9ICR7U1JDfScKKwljb2xvciAgID0gJ1JFRCcKKwlhZnRlciAgID0gWydkb3h5Z2VuJ10KKwlkZWYgcnVubmFibGVfc3RhdHVzKHNlbGYpOgorCQlmb3IgeCBpbiBnZXRhdHRyKHNlbGYsICdpbnB1dF90YXNrcycsIFtdKToKKwkJCWlmIG5vdCB4Lmhhc3J1bjoKKwkJCQlyZXR1cm4gVGFzay5BU0tfTEFURVIKKworCQlpZiBub3QgZ2V0YXR0cihzZWxmLCAndGFyX2RvbmVfYWRkaW5nJywgTm9uZSk6CisJCQkjIGV4ZWN1dGUgdGhpcyBvbmx5IG9uY2UKKwkJCXNlbGYudGFyX2RvbmVfYWRkaW5nID0gVHJ1ZQorCQkJZm9yIHggaW4gZ2V0YXR0cihzZWxmLCAnaW5wdXRfdGFza3MnLCBbXSk6CisJCQkJc2VsZi5zZXRfaW5wdXRzKHgub3V0cHV0cykKKwkJCWlmIG5vdCBzZWxmLmlucHV0czoKKwkJCQlyZXR1cm4gVGFzay5TS0lQX01FCisJCXJldHVybiBUYXNrLlRhc2sucnVubmFibGVfc3RhdHVzKHNlbGYpCisKKwlkZWYgX19zdHJfXyhzZWxmKToKKwkJdGd0X3N0ciA9ICcgJy5qb2luKFthLm5pY2VfcGF0aChzZWxmLmVudikgZm9yIGEgaW4gc2VsZi5vdXRwdXRzXSkKKwkJcmV0dXJuICclczogJXNcbicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHRndF9zdHIpCisKK0BmZWF0dXJlKCdkb3h5Z2VuJykKK2RlZiBwcm9jZXNzX2RveHkoc2VsZik6CisJaWYgbm90IGdldGF0dHIoc2VsZiwgJ2RveHlmaWxlJywgTm9uZSk6CisJCXNlbGYuZ2VuZXJhdG9yLmJsZC5mYXRhbCgnbm8gZG94eWZpbGU/PycpCisKKwlub2RlID0gc2VsZi5kb3h5ZmlsZQorCWlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIE5vZGUuTm9kZSk6CisJCW5vZGUgPSBzZWxmLnBhdGguZmluZF9yZXNvdXJjZShub2RlKQorCWlmIG5vdCBub2RlOgorCQlyYWlzZSBWYWx1ZUVycm9yKCdkb3h5Z2VuIGZpbGUgbm90IGZvdW5kJykKKworCSMgdGhlIHRhc2sgaW5zdGFuY2UKKwlkc2sgPSBzZWxmLmNyZWF0ZV90YXNrKCdkb3h5Z2VuJywgbm9kZSkKKworCWlmIGdldGF0dHIoc2VsZiwgJ2RveHlfdGFyJywgTm9uZSk6CisJCXRzayA9IHNlbGYuY3JlYXRlX3Rhc2soJ3RhcicpCisJCXRzay5pbnB1dF90YXNrcyA9IFtkc2tdCisJCXRzay5zZXRfb3V0cHV0cyhzZWxmLnBhdGguZmluZF9vcl9kZWNsYXJlKHNlbGYuZG94eV90YXIpKQorCQlpZiBzZWxmLmRveHlfdGFyLmVuZHN3aXRoKCdiejInKToKKwkJCXRzay5lbnZbJ1RBUk9QVFMnXSA9IFsnY2pmJ10KKwkJZWxpZiBzZWxmLmRveHlfdGFyLmVuZHN3aXRoKCdneicpOgorCQkJdHNrLmVudlsnVEFST1BUUyddID0gWydjemYnXQorCQllbHNlOgorCQkJdHNrLmVudlsnVEFST1BUUyddID0gWydjZiddCisKK2RlZiBjb25maWd1cmUoY29uZik6CisJJycnCisJQ2hlY2sgaWYgZG94eWdlbiBhbmQgdGFyIGNvbW1hbmRzIGFyZSBwcmVzZW50IGluIHRoZSBzeXN0ZW0KKworCUlmIHRoZSBjb21tYW5kcyBhcmUgcHJlc2VudCwgdGhlbiBjb25mLmVudi5ET1hZR0VOIGFuZCBjb25mLmVudi5UQVIKKwl2YXJpYWJsZXMgd2lsbCBiZSBzZXQuIERldGVjdGlvbiBjYW4gYmUgY29udHJvbGxlZCBieSBzZXR0aW5nIERPWFlHRU4gYW5kCisJVEFSIGVudmlyb25tZW50YWwgdmFyaWFibGVzLgorCScnJworCisJY29uZi5maW5kX3Byb2dyYW0oJ2RveHlnZW4nLCB2YXI9J0RPWFlHRU4nLCBtYW5kYXRvcnk9RmFsc2UpCisJY29uZi5maW5kX3Byb2dyYW0oJ3RhcicsIHZhcj0nVEFSJywgbWFuZGF0b3J5PUZhbHNlKQorCisjIGRveHlnZW4gZG9jcworZnJvbSB3YWZsaWIuQnVpbGQgaW1wb3J0IEJ1aWxkQ29udGV4dAorY2xhc3MgZG94eShCdWlsZENvbnRleHQpOgorICAgIGNtZCA9ICJkb3h5Z2VuIgorICAgIGZ1biA9ICJkb3h5Z2VuIgpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9zcGhpbnhfYnVpbGQucHkgYi8ud2FmLXRvb2xzL3NwaGlueF9idWlsZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjFkYTZlCi0tLSAvZGV2L251bGwKKysrIGIvLndhZi10b29scy9zcGhpbnhfYnVpbGQucHkKQEAgLTAsMCArMSw3OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiB1dGYtOAorCisjIGluc3BpcmVkIGJ5IGNvZGUgYnkgSGFucy1NYXJ0aW4gdm9uIEdhdWRlY2tlciwgMjAxMgorCitpbXBvcnQgb3MKK2Zyb20gd2FmbGliIGltcG9ydCBOb2RlLCBUYXNrLCBUYXNrR2VuLCBFcnJvcnMsIExvZ3MsIEJ1aWxkLCBVdGlscworCitjbGFzcyBzcGhpbnhfYnVpbGQoVGFzay5UYXNrKToKKyAgICBjb2xvciA9ICdCTFVFJworICAgIHJ1bl9zdHIgPSAnJHtTUEhJTlhfQlVJTER9IC1EICR7VkVSU0lPTn0gLUQgJHtSRUxFQVNFfSAtcSAtYiAke0JVSUxERVJOQU1FfSAtZCAke0RPQ1RSRUVESVJ9ICR7U1JDRElSfSAke09VVERJUn0nCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgZW52ID0gc2VsZi5lbnYKKyAgICAgICAgc3JjX3N0ciA9ICcgJy5qb2luKFthLnBhdGhfZnJvbShhLmN0eC5sYXVuY2hfbm9kZSgpKSBmb3IgYSBpbiBzZWxmLmlucHV0c10pCisgICAgICAgIHRndF9zdHIgPSAnICcuam9pbihbYS5wYXRoX2Zyb20oYS5jdHgubGF1bmNoX25vZGUoKSkgZm9yIGEgaW4gc2VsZi5vdXRwdXRzXSkKKyAgICAgICAgaWYgc2VsZi5vdXRwdXRzOiBzZXAgPSAnIC0+ICcKKyAgICAgICAgZWxzZTogc2VwID0gJycKKyAgICAgICAgcmV0dXJuJyVzIFslc106ICVzJXMlc1xuJyUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18ucmVwbGFjZSgnX3Rhc2snLCcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbnZbJ0JVSUxERVJOQU1FJ10sIHNyY19zdHIsIHNlcCwgdGd0X3N0cikKKworQFRhc2tHZW4uZXh0ZW5zaW9uKCcucHknLCAnLnJzdCcpCitkZWYgc2lnX2hvb2soc2VsZiwgbm9kZSk6CisgICAgbm9kZS5zaWc9VXRpbHMuaF9maWxlKG5vZGUuYWJzcGF0aCgpKQorCitAVGFza0dlbi5mZWF0dXJlKCJzcGhpbngiKQorQFRhc2tHZW4uYmVmb3JlX21ldGhvZCgicHJvY2Vzc19zb3VyY2UiKQorZGVmIGFwcGx5X3NwaGlueChzZWxmKToKKyAgICAiIiJTZXQgdXAgdGhlIHRhc2sgZ2VuZXJhdG9yIHdpdGggYSBTcGhpbnggaW5zdGFuY2UgYW5kIGNyZWF0ZSBhIHRhc2suIiIiCisKKyAgICBpbnB1dHMgPSBbXQorICAgIGZvciBpIGluIFV0aWxzLnRvX2xpc3Qoc2VsZi5zb3VyY2UpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpLCBOb2RlLk5vZGUpOgorICAgICAgICAgICAgbm9kZSA9IHNlbGYucGF0aC5maW5kX25vZGUobm9kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vZGUgPSBpCisgICAgICAgIGlmIG5vdCBub2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignWyVzXSBmaWxlIG5vdCBmb3VuZCcgJSBpKQorICAgICAgICBpbnB1dHMuYXBwZW5kKG5vZGUpCisKKyAgICB0YXNrID0gc2VsZi5jcmVhdGVfdGFzaygnc3BoaW54X2J1aWxkJywgaW5wdXRzKQorCisgICAgY29uZiA9IHNlbGYucGF0aC5maW5kX25vZGUoc2VsZi5jb25maWcpCisgICAgdGFzay5pbnB1dHMuYXBwZW5kKGNvbmYpCisKKyAgICBjb25mZGlyID0gY29uZi5wYXJlbnQuYWJzcGF0aCgpCisgICAgYnVpbGRlcm5hbWUgPSBnZXRhdHRyKHNlbGYsICJidWlsZGVyIiwgImh0bWwiKQorICAgIHNyY2RpciA9IGdldGF0dHIoc2VsZiwgInNyY2RpciIsIGNvbmZkaXIpCisgICAgb3V0ZGlyID0gc2VsZi5wYXRoLmZpbmRfb3JfZGVjbGFyZShnZXRhdHRyKHNlbGYsICJvdXRkaXIiLCBidWlsZGVybmFtZSkpLmdldF9ibGQoKQorICAgIGRvY3RyZWVkaXIgPSBnZXRhdHRyKHNlbGYsICJkb2N0cmVlZGlyIiwgb3MucGF0aC5qb2luKG91dGRpci5hYnNwYXRoKCksICIuZG9jdHJlZXMiKSkKKworICAgIHRhc2suZW52WydCVUlMREVSTkFNRSddID0gYnVpbGRlcm5hbWUKKyAgICB0YXNrLmVudlsnU1JDRElSJ10gPSBzcmNkaXIKKyAgICB0YXNrLmVudlsnRE9DVFJFRURJUiddID0gZG9jdHJlZWRpcgorICAgIHRhc2suZW52WydPVVRESVInXSA9IG91dGRpci5hYnNwYXRoKCkKKyAgICB0YXNrLmVudlsnVkVSU0lPTiddID0gInZlcnNpb249JXMiICUgc2VsZi5WRVJTSU9OCisgICAgdGFzay5lbnZbJ1JFTEVBU0UnXSA9ICJyZWxlYXNlPSVzIiAlIHNlbGYuVkVSU0lPTgorCisgICAgaW1wb3J0IGltcAorICAgIGNvbmZEYXRhID0gaW1wLmxvYWRfc291cmNlKCdzcGhpbnhfY29uZicsIGNvbmYuYWJzcGF0aCgpKQorCisgICAgaWYgYnVpbGRlcm5hbWUgPT0gIm1hbiI6CisgICAgICAgIGZvciBpIGluIGNvbmZEYXRhLm1hbl9wYWdlczoKKyAgICAgICAgICAgIHRhcmdldCA9IG91dGRpci5maW5kX29yX2RlY2xhcmUoJyVzLiVkJyAlIChpWzFdLCBpWzRdKSkKKyAgICAgICAgICAgIHRhc2sub3V0cHV0cy5hcHBlbmQodGFyZ2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLmluc3RhbGxfcGF0aDoKKyAgICAgICAgICAgICAgICBzZWxmLmJsZC5pbnN0YWxsX2ZpbGVzKCIlcy9tYW4lZC8iICUgKHNlbGYuaW5zdGFsbF9wYXRoLCBpWzRdKSwgdGFyZ2V0KQorICAgIGVsc2U6CisgICAgICAgIHRhc2sub3V0cHV0cy5hcHBlbmQob3V0ZGlyKQorCitkZWYgY29uZmlndXJlKGNvbmYpOgorICAgIGNvbmYuZmluZF9wcm9ncmFtKCdzcGhpbngtYnVpbGQnLCB2YXI9J1NQSElOWF9CVUlMRCcsIG1hbmRhdG9yeT1GYWxzZSkKKworIyBzcGhpbnggZG9jcworZnJvbSB3YWZsaWIuQnVpbGQgaW1wb3J0IEJ1aWxkQ29udGV4dAorY2xhc3Mgc3BoaW54KEJ1aWxkQ29udGV4dCk6CisgICAgY21kID0gInNwaGlueCIKKyAgICBmdW4gPSAic3BoaW54IgpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9zcWxpdGUzLnB5IGIvLndhZi10b29scy9zcWxpdGUzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0N2FlNmYKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL3NxbGl0ZTMucHkKQEAgLTAsMCArMSwzNiBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogdXRmLTgKKworZnJvbSB3YWZsaWIgaW1wb3J0IE9wdGlvbnMKK2Zyb20gd2FmbGliLkNvbmZpZ3VyZSBpbXBvcnQgY29uZgorCitkZWYgb3B0aW9ucyhvcHQpOgorICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtc3FsaXRlMycsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBkZXN0PSd3aXRoX3NxbGl0ZTMnLCBoZWxwPScnJ1BhdGggdG8gU1FMaXRlMywgZS5nLiwgL3Vzci9sb2NhbCcnJykKKworQGNvbmYKK2RlZiBjaGVja19zcWxpdGUzKHNlbGYsICprLCAqKmt3KToKKyAgICByb290ID0gayBhbmQga1swXSBvciBrdy5nZXQoJ3BhdGgnLCBOb25lKSBvciBPcHRpb25zLm9wdGlvbnMud2l0aF9zcWxpdGUzCisgICAgbWFuZGF0b3J5ID0ga3cuZ2V0KCdtYW5kYXRvcnknLCBUcnVlKQorICAgIHZhciA9IGt3LmdldCgndXNlbGliX3N0b3JlJywgJ1NRTElURTMnKQorCisgICAgaWYgcm9vdDoKKyAgICAgICAgc2VsZi5jaGVja19jeHgobGliPSdzcWxpdGUzJywKKyAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdDaGVja2luZyBmb3IgU1FMaXRlMyBsaWJyYXJ5JywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX25hbWU9J0hBVkVfJXMnICUgdmFyLAorICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyLAorICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9bWFuZGF0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz0iJXMvaW5jbHVkZSIgJSByb290LAorICAgICAgICAgICAgICAgICAgICAgICBsaWJwYXRoPSIlcy9saWIiICUgcm9vdCkKKyAgICBlbHNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2NmZyhwYWNrYWdlPSdzcWxpdGUzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9WyctLWNmbGFncycsICctLWxpYnMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWxpYl9zdG9yZT0nU1FMSVRFMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnk9VHJ1ZSkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc2VsZi5jaGVja19jeHgobGliPSdzcWxpdGUzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nQ2hlY2tpbmcgZm9yIFNRTGl0ZTMgbGlicmFyeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbmFtZT0nSEFWRV8lcycgJSB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5PW1hbmRhdG9yeSkKZGlmZiAtLWdpdCBhL0FVVEhPUlMubWQgYi9BVVRIT1JTLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMTc0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9BVVRIT1JTLm1kCkBAIC0wLDAgKzEsMTEgQEAKK05TTCBhdXRob3JzCis9PT09PT09PT09PQorCisjIyBUaGUgcHJpbWFyeSBhdXRob3JzIGFyZSAoYW5kL29yIGhhdmUgYmVlbik6CisKKworIyMgQWxsIHByb2plY3QgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzCisKK1RoZSBmb2xsb3dpbmcgaXMgYW4gaW5ldml0YWJseSBpbmNvbXBsZXRlIGxpc3Qgb2YgTVVDSC1BUFBSRUNJQVRFRCBDT05UUklCVVRPUlMsCitwZW9wbGUgd2hvIGhhdmUgcmVwb3J0ZWQgYnVncywgc3VibWl0dGVkIHBhdGNoZXMsIGFuZCBpbXBsZW1lbnRlZCBuZXcgZmVhdHVyZXMKK2luIHRoZSBsaWJyYXJ5OgpkaWZmIC0tZ2l0IGEvQ09QWUlORy5tZCBiL0NPUFlJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5OTQzMAotLS0gL2Rldi9udWxsCisrKyBiL0NPUFlJTkcubWQKQEAgLTAsMCArMSw2NzcgQEAKK0dOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcKKz09PT09PT09PT09PT09PT09PT09PT09CisKKz4gQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgorICBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKyMgUHJlYW1ibGUKKworICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgorc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLgorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAordG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LAordGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8KK3NoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQorc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8KK2FueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bworeW91ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91Cit3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldworZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91Cit0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUKK2NlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgoreW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4KKworICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCitncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lCitmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQorb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKK2tub3cgdGhlaXIgcmlnaHRzLgorCisgIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKygxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlCitnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0LgorCisgIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucwordGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZAorYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcworY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvCithdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLgorCisgIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4KK21vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcgorY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKK3Byb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljCitwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bwordXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCitoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UKK3Byb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlCitzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKK29mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLgorCisgIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuCitTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YKK3NvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvCithdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKK21ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0CitwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4KKworICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAorbW9kaWZpY2F0aW9uIGZvbGxvdy4KKworIyBURVJNUyBBTkQgQ09ORElUSU9OUworCisjIyAwLiBEZWZpbml0aW9ucy4KKworICBfIlRoaXMgTGljZW5zZSJfIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorCisgIF8iQ29weXJpZ2h0Il8gYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKK3dvcmtzLCBzdWNoIGFzIHNlbWljb25kdWN0b3IgbWFza3MuCisKKyAgXyJUaGUgUHJvZ3JhbSJfIHJlZmVycyB0byBhbnkgY29weXJpZ2h0YWJsZSB3b3JrIGxpY2Vuc2VkIHVuZGVyIHRoaXMKK0xpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyBfInlvdSJfLiAgXyJMaWNlbnNlZXMiXyBhbmQKKyJyZWNpcGllbnRzIiBtYXkgYmUgaW5kaXZpZHVhbHMgb3Igb3JnYW5pemF0aW9ucy4KKworICBUbyBfIm1vZGlmeSJfIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKK2luIGEgZmFzaGlvbiByZXF1aXJpbmcgY29weXJpZ2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBhbgorZXhhY3QgY29weS4gIFRoZSByZXN1bHRpbmcgd29yayBpcyBjYWxsZWQgYSBfIm1vZGlmaWVkIHZlcnNpb24iXyBvZiB0aGUKK2VhcmxpZXIgd29yayBvciBhIHdvcmsgXyJiYXNlZCBvbiJfIHRoZSBlYXJsaWVyIHdvcmsuCisKKyAgQSBfImNvdmVyZWQgd29yayJfIG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmllZCBQcm9ncmFtIG9yIGEgd29yayBiYXNlZAorb24gdGhlIFByb2dyYW0uCisKKyAgVG8gXyJwcm9wYWdhdGUiXyBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0CitwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yCitpbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKK2NvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsCitkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQorcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgorCisgIFRvIF8iY29udmV5Il8gYSB3b3JrIG1lYW5zIGFueSBraW5kIG9mIHByb3BhZ2F0aW9uIHRoYXQgZW5hYmxlcyBvdGhlcgorcGFydGllcyB0byBtYWtlIG9yIHJlY2VpdmUgY29waWVzLiAgTWVyZSBpbnRlcmFjdGlvbiB3aXRoIGEgdXNlciB0aHJvdWdoCithIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgorCisgIEFuIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlIGRpc3BsYXlzICJBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzIgordG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQorZmVhdHVyZSB0aGF0ICgxKSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlLCBhbmQgKDIpCit0ZWxscyB0aGUgdXNlciB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGUgd29yayAoZXhjZXB0IHRvIHRoZQorZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQord29yayB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYKK3RoZSBpbnRlcmZhY2UgcHJlc2VudHMgYSBsaXN0IG9mIHVzZXIgY29tbWFuZHMgb3Igb3B0aW9ucywgc3VjaCBhcyBhCittZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgorCisjIyAxLiBTb3VyY2UgQ29kZS4KKworICBUaGUgXyJzb3VyY2UgY29kZSJfIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrCitmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuIF8iT2JqZWN0IGNvZGUiXyBtZWFucyBhbnkgbm9uLXNvdXJjZQorZm9ybSBvZiBhIHdvcmsuCisKKyAgQSBfIlN0YW5kYXJkIEludGVyZmFjZSJfIG1lYW5zIGFuIGludGVyZmFjZSB0aGF0IGVpdGhlciBpcyBhbiBvZmZpY2lhbAorc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgoraW50ZXJmYWNlcyBzcGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBwcm9ncmFtbWluZyBsYW5ndWFnZSwgb25lIHRoYXQKK2lzIHdpZGVseSB1c2VkIGFtb25nIGRldmVsb3BlcnMgd29ya2luZyBpbiB0aGF0IGxhbmd1YWdlLgorCisgIFRoZSBfIlN5c3RlbSBMaWJyYXJpZXMiXyBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKK3RoYW4gdGhlIHdvcmsgYXMgYSB3aG9sZSwgdGhhdCAoYSkgaXMgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBmb3JtIG9mCitwYWNrYWdpbmcgYSBNYWpvciBDb21wb25lbnQsIGJ1dCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGF0IE1ham9yCitDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKK01ham9yIENvbXBvbmVudCwgb3IgdG8gaW1wbGVtZW50IGEgU3RhbmRhcmQgSW50ZXJmYWNlIGZvciB3aGljaCBhbgoraW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4gc291cmNlIGNvZGUgZm9ybS4gIEEKKyJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAorKGtlcm5lbCwgd2luZG93IHN5c3RlbSwgYW5kIHNvIG9uKSBvZiB0aGUgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbQorKGlmIGFueSkgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgd29yayBydW5zLCBvciBhIGNvbXBpbGVyIHVzZWQgdG8KK3Byb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgorCisgIFRoZSBfIkNvcnJlc3BvbmRpbmcgU291cmNlIl8gZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbAordGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQord29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bworY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzCitTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlCitwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKK3doaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQoraW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3IKK3RoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQorbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsCitzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQorc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgorCisgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMKK2NhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZworU291cmNlLgorCisgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdAorc2FtZSB3b3JrLgorCisjIyAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KKworICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgorY29weXJpZ2h0IG9uIHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVkIHRoZSBzdGF0ZWQKK2NvbmRpdGlvbnMgYXJlIG1ldC4gIFRoaXMgTGljZW5zZSBleHBsaWNpdGx5IGFmZmlybXMgeW91ciB1bmxpbWl0ZWQKK3Blcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCitjb3ZlcmVkIHdvcmsgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKK2NvbnRlbnQsIGNvbnN0aXR1dGVzIGEgY292ZXJlZCB3b3JrLiAgVGhpcyBMaWNlbnNlIGFja25vd2xlZGdlcyB5b3VyCityaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KKworICBZb3UgbWF5IG1ha2UsIHJ1biBhbmQgcHJvcGFnYXRlIGNvdmVyZWQgd29ya3MgdGhhdCB5b3UgZG8gbm90Citjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucworaW4gZm9yY2UuICBZb3UgbWF5IGNvbnZleSBjb3ZlcmVkIHdvcmtzIHRvIG90aGVycyBmb3IgdGhlIHNvbGUgcHVycG9zZQorb2YgaGF2aW5nIHRoZW0gbWFrZSBtb2RpZmljYXRpb25zIGV4Y2x1c2l2ZWx5IGZvciB5b3UsIG9yIHByb3ZpZGUgeW91Cit3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCit0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIGluIGNvbnZleWluZyBhbGwgbWF0ZXJpYWwgZm9yIHdoaWNoIHlvdSBkbworbm90IGNvbnRyb2wgY29weXJpZ2h0LiAgVGhvc2UgdGh1cyBtYWtpbmcgb3IgcnVubmluZyB0aGUgY292ZXJlZCB3b3JrcworZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgorYW5kIGNvbnRyb2wsIG9uIHRlcm1zIHRoYXQgcHJvaGliaXQgdGhlbSBmcm9tIG1ha2luZyBhbnkgY29waWVzIG9mCit5b3VyIGNvcHlyaWdodGVkIG1hdGVyaWFsIG91dHNpZGUgdGhlaXIgcmVsYXRpb25zaGlwIHdpdGggeW91LgorCisgIENvbnZleWluZyB1bmRlciBhbnkgb3RoZXIgY2lyY3Vtc3RhbmNlcyBpcyBwZXJtaXR0ZWQgc29sZWx5IHVuZGVyCit0aGUgY29uZGl0aW9ucyBzdGF0ZWQgYmVsb3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFsbG93ZWQ7IHNlY3Rpb24gMTAKK21ha2VzIGl0IHVubmVjZXNzYXJ5LgorCisjIyAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgorCisgIE5vIGNvdmVyZWQgd29yayBzaGFsbCBiZSBkZWVtZWQgcGFydCBvZiBhbiBlZmZlY3RpdmUgdGVjaG5vbG9naWNhbAorbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCisxMSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQgdHJlYXR5IGFkb3B0ZWQgb24gMjAgRGVjZW1iZXIgMTk5Niwgb3IKK3NpbWlsYXIgbGF3cyBwcm9oaWJpdGluZyBvciByZXN0cmljdGluZyBjaXJjdW12ZW50aW9uIG9mIHN1Y2gKK21lYXN1cmVzLgorCisgIFdoZW4geW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgeW91IHdhaXZlIGFueSBsZWdhbCBwb3dlciB0byBmb3JiaWQKK2NpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgoraXMgZWZmZWN0ZWQgYnkgZXhlcmNpc2luZyByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlIHdpdGggcmVzcGVjdCB0bwordGhlIGNvdmVyZWQgd29yaywgYW5kIHlvdSBkaXNjbGFpbSBhbnkgaW50ZW50aW9uIHRvIGxpbWl0IG9wZXJhdGlvbiBvcgorbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKK3VzZXJzLCB5b3VyIG9yIHRoaXJkIHBhcnRpZXMnIGxlZ2FsIHJpZ2h0cyB0byBmb3JiaWQgY2lyY3VtdmVudGlvbiBvZgordGVjaG5vbG9naWNhbCBtZWFzdXJlcy4KKworIyMgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4KKworICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UKK3JlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kCithcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CitrZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkKK25vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKK2tlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCityZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCithbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLgorCisjIyA1LiBDb252ZXlpbmcgTW9kaWZpZWQgU291cmNlIFZlcnNpb25zLgorCisgIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KK3Byb2R1Y2UgaXQgZnJvbSB0aGUgUHJvZ3JhbSwgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCit0ZXJtcyBvZiBzZWN0aW9uIDQsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IHlvdSBtb2RpZmllZAorICAgIGl0LCBhbmQgZ2l2aW5nIGEgcmVsZXZhbnQgZGF0ZS4KKworICAgIGIpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IGl0IGlzCisgICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkgY29uZGl0aW9ucyBhZGRlZCB1bmRlciBzZWN0aW9uCisgICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bworICAgICJrZWVwIGludGFjdCBhbGwgbm90aWNlcyIuCisKKyAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcworICAgIExpY2Vuc2UgdG8gYW55b25lIHdobyBjb21lcyBpbnRvIHBvc3Nlc3Npb24gb2YgYSBjb3B5LiAgVGhpcworICAgIExpY2Vuc2Ugd2lsbCB0aGVyZWZvcmUgYXBwbHksIGFsb25nIHdpdGggYW55IGFwcGxpY2FibGUgc2VjdGlvbiA3CisgICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKKyAgICByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBwYWNrYWdlZC4gIFRoaXMgTGljZW5zZSBnaXZlcyBubworICAgIHBlcm1pc3Npb24gdG8gbGljZW5zZSB0aGUgd29yayBpbiBhbnkgb3RoZXIgd2F5LCBidXQgaXQgZG9lcyBub3QKKyAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgorCisgICAgZCkgSWYgdGhlIHdvcmsgaGFzIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlcywgZWFjaCBtdXN0IGRpc3BsYXkKKyAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKKyAgICBpbnRlcmZhY2VzIHRoYXQgZG8gbm90IGRpc3BsYXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcywgeW91cgorICAgIHdvcmsgbmVlZCBub3QgbWFrZSB0aGVtIGRvIHNvLgorCisgIEEgY29tcGlsYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsgd2l0aCBvdGhlciBzZXBhcmF0ZSBhbmQgaW5kZXBlbmRlbnQKK3dvcmtzLCB3aGljaCBhcmUgbm90IGJ5IHRoZWlyIG5hdHVyZSBleHRlbnNpb25zIG9mIHRoZSBjb3ZlcmVkIHdvcmssCithbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAoraW4gb3Igb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxlZCBhbgorImFnZ3JlZ2F0ZSIgaWYgdGhlIGNvbXBpbGF0aW9uIGFuZCBpdHMgcmVzdWx0aW5nIGNvcHlyaWdodCBhcmUgbm90Cit1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCitiZXlvbmQgd2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuICBJbmNsdXNpb24gb2YgYSBjb3ZlcmVkIHdvcmsKK2luIGFuIGFnZ3JlZ2F0ZSBkb2VzIG5vdCBjYXVzZSB0aGlzIExpY2Vuc2UgdG8gYXBwbHkgdG8gdGhlIG90aGVyCitwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgorCisjIyA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KKworICBZb3UgbWF5IGNvbnZleSBhIGNvdmVyZWQgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcworb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCittYWNoaW5lLXJlYWRhYmxlIENvcnJlc3BvbmRpbmcgU291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsCitpbiBvbmUgb2YgdGhlc2Ugd2F5czoKKworICAgIGEpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKKyAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KKworICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKKyAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IGEKKyAgICB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUgeWVhcnMgYW5kIHZhbGlkIGZvciBhcworICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAorICAgIG1vZGVsLCB0byBnaXZlIGFueW9uZSB3aG8gcG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRoZXIgKDEpIGEKKyAgICBjb3B5IG9mIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYWxsIHRoZSBzb2Z0d2FyZSBpbiB0aGUKKyAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAorICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8KKyAgICBtb3JlIHRoYW4geW91ciByZWFzb25hYmxlIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHRoaXMKKyAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgZnJvbSBhIG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS4KKworICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCisgICAgd3JpdHRlbiBvZmZlciB0byBwcm92aWRlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRoaXMKKyAgICBhbHRlcm5hdGl2ZSBpcyBhbGxvd2VkIG9ubHkgb2NjYXNpb25hbGx5IGFuZCBub25jb21tZXJjaWFsbHksIGFuZAorICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAorICAgIHdpdGggc3Vic2VjdGlvbiA2Yi4KKworICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCisgICAgcGxhY2UgKGdyYXRpcyBvciBmb3IgYSBjaGFyZ2UpLCBhbmQgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgaW4gdGhlIHNhbWUgd2F5IHRocm91Z2ggdGhlIHNhbWUgcGxhY2UgYXQgbm8KKyAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4gIElmIHRoZSBwbGFjZSB0bworICAgIGNvcHkgdGhlIG9iamVjdCBjb2RlIGlzIGEgbmV0d29yayBzZXJ2ZXIsIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZQorICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQorICAgIHRoYXQgc3VwcG9ydHMgZXF1aXZhbGVudCBjb3B5aW5nIGZhY2lsaXRpZXMsIHByb3ZpZGVkIHlvdSBtYWludGFpbgorICAgIGNsZWFyIGRpcmVjdGlvbnMgbmV4dCB0byB0aGUgb2JqZWN0IGNvZGUgc2F5aW5nIHdoZXJlIHRvIGZpbmQgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlLCB5b3UgcmVtYWluIG9ibGlnYXRlZCB0byBlbnN1cmUgdGhhdCBpdCBpcworICAgIGF2YWlsYWJsZSBmb3IgYXMgbG9uZyBhcyBuZWVkZWQgdG8gc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuCisKKyAgICBlKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24sIHByb3ZpZGVkCisgICAgeW91IGluZm9ybSBvdGhlciBwZWVycyB3aGVyZSB0aGUgb2JqZWN0IGNvZGUgYW5kIENvcnJlc3BvbmRpbmcKKyAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCisgICAgY2hhcmdlIHVuZGVyIHN1YnNlY3Rpb24gNmQuCisKKyAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCitmcm9tIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBhcyBhIFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBiZQoraW5jbHVkZWQgaW4gY29udmV5aW5nIHRoZSBvYmplY3QgY29kZSB3b3JrLgorCisgIEEgXyJVc2VyIFByb2R1Y3QiXyBpcyBlaXRoZXIgKDEpIGEgXyJjb25zdW1lciBwcm9kdWN0Il8sIHdoaWNoIG1lYW5zIGFueQordGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKK29yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24KK2ludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwKK2RvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgorcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhCit0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMKK29mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCithY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QKK2lzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsCitjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAordGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuCisKKyAgXyJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iXyBmb3IgYSBVc2VyIFByb2R1Y3QgbWVhbnMgYW55IG1ldGhvZHMsCitwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKK2FuZCBleGVjdXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIGEgY292ZXJlZCB3b3JrIGluIHRoYXQgVXNlciBQcm9kdWN0IGZyb20KK2EgbW9kaWZpZWQgdmVyc2lvbiBvZiBpdHMgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGUgaW5mb3JtYXRpb24gbXVzdAorc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKK2NvZGUgaXMgaW4gbm8gY2FzZSBwcmV2ZW50ZWQgb3IgaW50ZXJmZXJlZCB3aXRoIHNvbGVseSBiZWNhdXNlCittb2RpZmljYXRpb24gaGFzIGJlZW4gbWFkZS4KKworICBJZiB5b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsgdW5kZXIgdGhpcyBzZWN0aW9uIGluLCBvciB3aXRoLCBvcgorc3BlY2lmaWNhbGx5IGZvciB1c2UgaW4sIGEgVXNlciBQcm9kdWN0LCBhbmQgdGhlIGNvbnZleWluZyBvY2N1cnMgYXMKK3BhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQorVXNlciBQcm9kdWN0IGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0dWl0eSBvciBmb3IgYQorZml4ZWQgdGVybSAocmVnYXJkbGVzcyBvZiBob3cgdGhlIHRyYW5zYWN0aW9uIGlzIGNoYXJhY3Rlcml6ZWQpLCB0aGUKK0NvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCitieSB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uLiAgQnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKK2lmIG5laXRoZXIgeW91IG5vciBhbnkgdGhpcmQgcGFydHkgcmV0YWlucyB0aGUgYWJpbGl0eSB0byBpbnN0YWxsCittb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCitiZWVuIGluc3RhbGxlZCBpbiBST00pLgorCisgIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKK3JlcXVpcmVtZW50IHRvIGNvbnRpbnVlIHRvIHByb3ZpZGUgc3VwcG9ydCBzZXJ2aWNlLCB3YXJyYW50eSwgb3IgdXBkYXRlcworZm9yIGEgd29yayB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZCBieSB0aGUgcmVjaXBpZW50LCBvciBmb3IKK3RoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKK25ldHdvcmsgbWF5IGJlIGRlbmllZCB3aGVuIHRoZSBtb2RpZmljYXRpb24gaXRzZWxmIG1hdGVyaWFsbHkgYW5kCithZHZlcnNlbHkgYWZmZWN0cyB0aGUgb3BlcmF0aW9uIG9mIHRoZSBuZXR3b3JrIG9yIHZpb2xhdGVzIHRoZSBydWxlcyBhbmQKK3Byb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCisKKyAgQ29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQsIGFuZCBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gcHJvdmlkZWQsCitpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5Citkb2N1bWVudGVkIChhbmQgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbgorc291cmNlIGNvZGUgZm9ybSksIGFuZCBtdXN0IHJlcXVpcmUgbm8gc3BlY2lhbCBwYXNzd29yZCBvciBrZXkgZm9yCit1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KKworIyMgNy4gQWRkaXRpb25hbCBUZXJtcy4KKworICBfIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiXyBhcmUgdGVybXMgdGhhdCBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzCitMaWNlbnNlIGJ5IG1ha2luZyBleGNlcHRpb25zIGZyb20gb25lIG9yIG1vcmUgb2YgaXRzIGNvbmRpdGlvbnMuCitBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCitiZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBMaWNlbnNlLCB0byB0aGUgZXh0ZW50Cit0aGF0IHRoZXkgYXJlIHZhbGlkIHVuZGVyIGFwcGxpY2FibGUgbGF3LiAgSWYgYWRkaXRpb25hbCBwZXJtaXNzaW9ucworYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQordW5kZXIgdGhvc2UgcGVybWlzc2lvbnMsIGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVtYWlucyBnb3Zlcm5lZCBieQordGhpcyBMaWNlbnNlIHdpdGhvdXQgcmVnYXJkIHRvIHRoZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zLgorCisgIFdoZW4geW91IGNvbnZleSBhIGNvcHkgb2YgYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgYXQgeW91ciBvcHRpb24KK3JlbW92ZSBhbnkgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBmcm9tIHRoYXQgY29weSwgb3IgZnJvbSBhbnkgcGFydCBvZgoraXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgorcmVtb3ZhbCBpbiBjZXJ0YWluIGNhc2VzIHdoZW4geW91IG1vZGlmeSB0aGUgd29yay4pICBZb3UgbWF5IHBsYWNlCithZGRpdGlvbmFsIHBlcm1pc3Npb25zIG9uIG1hdGVyaWFsLCBhZGRlZCBieSB5b3UgdG8gYSBjb3ZlcmVkIHdvcmssCitmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCisKKyAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCBmb3IgbWF0ZXJpYWwgeW91CithZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCit0aGF0IG1hdGVyaWFsKSBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ugd2l0aCB0ZXJtczoKKworICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQorICAgIHRlcm1zIG9mIHNlY3Rpb25zIDE1IGFuZCAxNiBvZiB0aGlzIExpY2Vuc2U7IG9yCisKKyAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKKyAgICBhdXRob3IgYXR0cmlidXRpb25zIGluIHRoYXQgbWF0ZXJpYWwgb3IgaW4gdGhlIEFwcHJvcHJpYXRlIExlZ2FsCisgICAgTm90aWNlcyBkaXNwbGF5ZWQgYnkgd29ya3MgY29udGFpbmluZyBpdDsgb3IKKworICAgIGMpIFByb2hpYml0aW5nIG1pc3JlcHJlc2VudGF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhhdCBtYXRlcmlhbCwgb3IKKyAgICByZXF1aXJpbmcgdGhhdCBtb2RpZmllZCB2ZXJzaW9ucyBvZiBzdWNoIG1hdGVyaWFsIGJlIG1hcmtlZCBpbgorICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKKworICAgIGQpIExpbWl0aW5nIHRoZSB1c2UgZm9yIHB1YmxpY2l0eSBwdXJwb3NlcyBvZiBuYW1lcyBvZiBsaWNlbnNvcnMgb3IKKyAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKKworICAgIGUpIERlY2xpbmluZyB0byBncmFudCByaWdodHMgdW5kZXIgdHJhZGVtYXJrIGxhdyBmb3IgdXNlIG9mIHNvbWUKKyAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKKworICAgIGYpIFJlcXVpcmluZyBpbmRlbW5pZmljYXRpb24gb2YgbGljZW5zb3JzIGFuZCBhdXRob3JzIG9mIHRoYXQKKyAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgorICAgIGl0KSB3aXRoIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIG9mIGxpYWJpbGl0eSB0byB0aGUgcmVjaXBpZW50LCBmb3IKKyAgICBhbnkgbGlhYmlsaXR5IHRoYXQgdGhlc2UgY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgZGlyZWN0bHkgaW1wb3NlIG9uCisgICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgorCisgIEFsbCBvdGhlciBub24tcGVybWlzc2l2ZSBhZGRpdGlvbmFsIHRlcm1zIGFyZSBjb25zaWRlcmVkICJmdXJ0aGVyCityZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CityZWNlaXZlZCBpdCwgb3IgYW55IHBhcnQgb2YgaXQsIGNvbnRhaW5zIGEgbm90aWNlIHN0YXRpbmcgdGhhdCBpdCBpcworZ292ZXJuZWQgYnkgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggYSB0ZXJtIHRoYXQgaXMgYSBmdXJ0aGVyCityZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCithIGZ1cnRoZXIgcmVzdHJpY3Rpb24gYnV0IHBlcm1pdHMgcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nIHVuZGVyIHRoaXMKK0xpY2Vuc2UsIHlvdSBtYXkgYWRkIHRvIGEgY292ZXJlZCB3b3JrIG1hdGVyaWFsIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcworb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKK25vdCBzdXJ2aXZlIHN1Y2ggcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nLgorCisgIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKK211c3QgcGxhY2UsIGluIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMsIGEgc3RhdGVtZW50IG9mIHRoZQorYWRkaXRpb25hbCB0ZXJtcyB0aGF0IGFwcGx5IHRvIHRob3NlIGZpbGVzLCBvciBhIG5vdGljZSBpbmRpY2F0aW5nCit3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgorCisgIEFkZGl0aW9uYWwgdGVybXMsIHBlcm1pc3NpdmUgb3Igbm9uLXBlcm1pc3NpdmUsIG1heSBiZSBzdGF0ZWQgaW4gdGhlCitmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwordGhlIGFib3ZlIHJlcXVpcmVtZW50cyBhcHBseSBlaXRoZXIgd2F5LgorCisjIyA4LiBUZXJtaW5hdGlvbi4KKworICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKK3Byb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3IKK21vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcgordGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZAorcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLgorCisgIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCitsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkKK3Byb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKK2ZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKK2hvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zCitwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uCisKKyAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCityZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUKK3Zpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKK3JlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdAorY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcgoreW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCisKKyAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUKK2xpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQorcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQorbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KKworIyMgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCisKKyAgWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBpbiBvcmRlciB0byByZWNlaXZlIG9yCitydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCitvY2N1cnJpbmcgc29sZWx5IGFzIGEgY29uc2VxdWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbgordG8gcmVjZWl2ZSBhIGNvcHkgbGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93ZXZlciwKK25vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgorbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBUaGVzZSBhY3Rpb25zIGluZnJpbmdlIGNvcHlyaWdodCBpZiB5b3UgZG8KK25vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieSBtb2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQorY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KKworIyMgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgorCisgIEVhY2ggdGltZSB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkKK3JlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZAorcHJvcGFnYXRlIHRoYXQgd29yaywgc3ViamVjdCB0byB0aGlzIExpY2Vuc2UuICBZb3UgYXJlIG5vdCByZXNwb25zaWJsZQorZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgd2l0aCB0aGlzIExpY2Vuc2UuCisKKyAgQW4gXyJlbnRpdHkgdHJhbnNhY3Rpb24iXyBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCitvcmdhbml6YXRpb24sIG9yIHN1YnN0YW50aWFsbHkgYWxsIGFzc2V0cyBvZiBvbmUsIG9yIHN1YmRpdmlkaW5nIGFuCitvcmdhbml6YXRpb24sIG9yIG1lcmdpbmcgb3JnYW5pemF0aW9ucy4gIElmIHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZAord29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKK3RyYW5zYWN0aW9uIHdobyByZWNlaXZlcyBhIGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNlaXZlcyB3aGF0ZXZlcgorbGljZW5zZXMgdG8gdGhlIHdvcmsgdGhlIHBhcnR5J3MgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QgaGFkIG9yIGNvdWxkCitnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQorQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCit0aGUgcHJlZGVjZXNzb3IgaGFzIGl0IG9yIGNhbiBnZXQgaXQgd2l0aCByZWFzb25hYmxlIGVmZm9ydHMuCisKKyAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgZXhlcmNpc2Ugb2YgdGhlCityaWdodHMgZ3JhbnRlZCBvciBhZmZpcm1lZCB1bmRlciB0aGlzIExpY2Vuc2UuICBGb3IgZXhhbXBsZSwgeW91IG1heQorbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCityaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCB5b3UgbWF5IG5vdCBpbml0aWF0ZSBsaXRpZ2F0aW9uCisoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAorYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCitzYWxlLCBvciBpbXBvcnRpbmcgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24gb2YgaXQuCisKKyMjIDExLiBQYXRlbnRzLgorCisgIEEgXyJjb250cmlidXRvciJfIGlzIGEgY29weXJpZ2h0IGhvbGRlciB3aG8gYXV0aG9yaXplcyB1c2UgdW5kZXIgdGhpcworTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKK3dvcmsgdGh1cyBsaWNlbnNlZCBpcyBjYWxsZWQgdGhlIGNvbnRyaWJ1dG9yJ3MgImNvbnRyaWJ1dG9yIHZlcnNpb24iLgorCisgIEEgY29udHJpYnV0b3IncyBfImVzc2VudGlhbCBwYXRlbnQgY2xhaW1zIl8gYXJlIGFsbCBwYXRlbnQgY2xhaW1zCitvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCitoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQKK2J5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKK2J1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCitjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcgorcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50CitwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKK3RoaXMgTGljZW5zZS4KKworICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQorcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvCittYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQKK3Byb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCisKKyAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MKK2FncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAorKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bworc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGEKK3BhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCitwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuCisKKyAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKK2FuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lCit0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhCitwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAordGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbworYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQorcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKK2NvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQKK2xpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQorYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCitjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrCitpbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQKK2NvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCisKKyAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcgorYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQorY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzCityZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkKK29yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKK3lvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkCit3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4KKworICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4KK3RoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzCitjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKK3NwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQKK3dvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzCitpbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50Cit0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZwordGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlCitwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKK3BhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsKK2NvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5Citmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdAorY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LAorb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4KKworICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nCithbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQorb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgorCisjIyAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KKworICBJZiBjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdCBjb252ZXkgYQorY292ZXJlZCB3b3JrIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQorbm90IGNvbnZleSBpdCBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgeW91IGFncmVlIHRvIHRlcm1zIHRoYXQgb2JsaWdhdGUgeW91Cit0byBjb2xsZWN0IGEgcm95YWx0eSBmb3IgZnVydGhlciBjb252ZXlpbmcgZnJvbSB0aG9zZSB0byB3aG9tIHlvdSBjb252ZXkKK3RoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcworTGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gY29udmV5aW5nIHRoZSBQcm9ncmFtLgorCisjIyAxMy4gVXNlIHdpdGggdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKworICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCitwZXJtaXNzaW9uIHRvIGxpbmsgb3IgY29tYmluZSBhbnkgY292ZXJlZCB3b3JrIHdpdGggYSB3b3JrIGxpY2Vuc2VkCit1bmRlciB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnRvIGEgc2luZ2xlCitjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCitMaWNlbnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMgdGhlIGNvdmVyZWQgd29yaywKK2J1dCB0aGUgc3BlY2lhbCByZXF1aXJlbWVudHMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKK3NlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKK2NvbWJpbmF0aW9uIGFzIHN1Y2guCisKKyMjIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4KKworICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgordGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAorYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCithZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKworICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQorUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlCitvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZAordmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQKK2J5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQordmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKK3B1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UKK3RvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLgorCisgIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50CitwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55CithdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCitsYXRlciB2ZXJzaW9uLgorCisjIyAxNS4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4KKworICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCitBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUCitIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZCitPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNCitJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKK0FMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworIyMgMTYuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LgorCisgIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORworV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUworVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZCitHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKK1VTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YKK0RBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkgWU9VIE9SIFRISVJECitQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKK0VWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKK1NVQ0ggREFNQUdFUy4KKworIyMgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4KKworICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQKK2Fib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLAorcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCithbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlCitQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhCitjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCisKKyMgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyMgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCisKKyAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAorcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAorZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCisKKyAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKK3RvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKK3N0YXRlIHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KKworICBJZiB0aGUgcHJvZ3JhbSBkb2VzIHRlcm1pbmFsIGludGVyYWN0aW9uLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0Citub3RpY2UgbGlrZSB0aGlzIHdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6CisKKyAgICA8cHJvZ3JhbT4gIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+CisgICAgVGhpcyBwcm9ncmFtIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSAnc2hvdyB3Jy4KKyAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlICdzaG93IGMnIGZvciBkZXRhaWxzLgorCisgIFRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgXydzaG93IHcnXyBhbmQgXydzaG93IGMnXyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB5b3VyIHByb2dyYW0ncyBjb21tYW5kcworbWlnaHQgYmUgZGlmZmVyZW50OyBmb3IgYSBHVUkgaW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJhYm91dCBib3giLgorCisgIFlvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciBzY2hvb2wsCitpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgorRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCitpbnRvIHByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UKK21heSBjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAordGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4gIEJ1dCBmaXJzdCwgcGxlYXNlIHJlYWQKKzxodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93aHktbm90LWxncGwuaHRtbD4uCmRpZmYgLS1naXQgYS9SRUFETUUtZGV2Lm1kIGIvUkVBRE1FLWRldi5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDUyOTIzCi0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLWRldi5tZApAQCAtMCwwICsxLDgwIEBACitOb3RlcyBmb3IgTlNMIChORE4gU2lnbmF0dXJlIExvZ2dlcikgZGV2ZWxvcGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZW1lbnRzCistLS0tLS0tLS0tLS0KKworSW5jbHVkZSB0aGUgZm9sbG93aW5nIGxpY2Vuc2UgYm9pbGVycGxhdGUgaW50byBhbGwgYC5ocHBgIGFuZCBgLmNwcGAgZmlsZXM6CisKKyAgICAvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworICAgIC8qKgorICAgICAqIENvcHlyaWdodCAoYykgMjAxNCwgIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICAgICAqCisgICAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTlNMIChORE4gU2lnbmF0dXJlIExvZ2dlcikuCisgICAgICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTlNMIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKyAgICAgKgorICAgICAqIE5TTCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICAgICAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICAgKiBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICAgICAqCisgICAgICogTlNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAgICAgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICAgICAqIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKKyAgICAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgICAgICogTlNMLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgICAgIC8vLy8vLyBbb3B0aW9uYWwgcGFydF0gLy8vLy8vCisgICAgICoKKyAgICAgKiBcYXV0aG9yIEF1dGhvcidzIE5hbWUgPGVtYWlsQGRvbWFpbj4KKyAgICAgKiBcYXV0aG9yIE90aGVyIEF1dGhvcidzIE5hbWUgPGFub3RoZXIuZW1haWxAZG9tYWluPgorICAgICAvLy8vLy8gW2VuZCBvZiBvcHRpb25hbCBwYXJ0XSAvLy8vLy8KKyAgICAgKi8KKworUmVjb21tZW5kYXRpb25zCistLS0tLS0tLS0tLS0tLS0KKworTlNMIGNvZGUgaXMgc3ViamVjdCB0byBuZG4tY3h4IFtjb2RlIHN0eWxlXShodHRwOi8vbmFtZWQtZGF0YS5uZXQvZG9jL25kbi1jeHgvMC4yLjAvY29kZS1zdHlsZS5odG1sKS4KKworCitSdW5uaW5nIHVuaXQtdGVzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBydW4gdW5pdCB0ZXN0cywgTlNMIG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIGJ1aWxkIHdpdGggdW5pdCB0ZXN0IHN1cHBvcnQ6CisKKyAgICAuL3dhZiBjb25maWd1cmUgLS13aXRoLXRlc3RzCisgICAgLi93YWYKKworVGhlIHNpbXBsZXN0IHdheSB0byBydW4gdGVzdHMsIGlzIGp1c3QgdG8gcnVuIHRoZSBjb21waWxlZCBiaW5hcnkgd2l0aG91dCBhbnkgcGFyYW1ldGVyczoKKworICAgICMgUnVuIHRlc3RzCisgICAgLi9idWlsZC91bml0LXRlc3RzCisKK0hvd2V2ZXIsIFtCb29zdC5UZXN0IGZyYW1ld29ya10oaHR0cDovL3d3dy5ib29zdC5vcmcvZG9jL2xpYnMvMV80OF8wL2xpYnMvdGVzdC9kb2MvaHRtbC8pCitpcyB2ZXJ5IGZsZXhpYmxlIGFuZCBhbGxvd3MgYSBudW1iZXIgb2YgcnVuLXRpbWUgY3VzdG9taXphdGlvbiBvZiB3aGF0IHRlc3RzIHNob3VsZCBiZSBydW4uCitGb3IgZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gY2hvb3NlIHRvIHJ1biBvbmx5IGEgc3BlY2lmaWMgdGVzdCBzdWl0ZSwgb25seSBhIHNwZWNpZmljCit0ZXN0IGNhc2Ugd2l0aGluIGEgc3VpdGUsIG9yIHNwZWNpZmljIHRlc3QgY2FzZXMgd2l0aGluIHNwZWNpZmljIHRlc3Qgc3VpdGVzOgorCisgICAgIyBSdW4gQmFzaWMgdGVzdCBjYXNlIGZyb20gYWxsIGNvcmUgdGVzdCBzdWl0ZXMKKyAgICAuL2J1aWxkL3VuaXQtdGVzdHMgLXQgKi9CYXNpYworCitCeSBkZWZhdWx0LCBCb29zdC5UZXN0IGZyYW1ld29yayB3aWxsIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgb25seSB3aGVuIGEgdGVzdCBjYXNlIGZhaWxzLgorSWYgaXQgaXMgZGVzaXJlZCB0byBzZWUgdmVyYm9zZSBvdXRwdXQgKHJlc3VsdCBvZiBlYWNoIHRlc3QgYXNzZXJ0aW9uKSwgYWRkIGAtbCBhbGxgCitvcHRpb24gdG8gYC4vYnVpbGQvdW5pdC10ZXN0c2AgY29tbWFuZC4gIFRvIHNlZSB0ZXN0IHByb2dyZXNzLCB5b3UgY2FuIHVzZSBgLWwgdGVzdF9zdWl0ZWAKK29yIGAtcGAgdG8gc2hvdyBwcm9ncmVzcyBiYXI6CisKKyAgICAjIFNob3cgcmVwb3J0IGFsbCBsb2cgbWVzc2FnZXMgaW5jbHVkaW5nIHRoZSBwYXNzZWQgdGVzdCBub3RpZmljYXRpb24KKyAgICAuL2J1aWxkL3VuaXQtdGVzdHMgLWwgYWxsCisKKyAgICAjIFNob3cgdGVzdCBzdWl0ZSBtZXNzYWdlcworICAgIC4vYnVpbGQvdW5pdC10ZXN0cyAtbCB0ZXN0X3N1aXRlCisKKyAgICAjIFNob3cgbm90aGluZworICAgIC4vYnVpbGQvdW5pdC10ZXN0cyAtbCBub3RoaW5nCisKKyAgICAjIFNob3cgcHJvZ3Jlc3MgYmFyCisgICAgLi9idWlsZC91bml0LXRlc3RzIC1wCisKK1RoZXJlIGFyZSBtYW55IG1vcmUgY29tbWFuZCBsaW5lIG9wdGlvbnMgYXZhaWxhYmxlLCBpbmZvcm1hdGlvbiBhYm91dAord2hpY2ggY2FuIGJlIG9idGFpbmVkIGVpdGhlciBmcm9tIHRoZSBjb21tYW5kIGxpbmUgdXNpbmcgYC0taGVscGAKK3N3aXRjaCwgb3Igb25saW5lIG9uIFtCb29zdC5UZXN0IGxpYnJhcnldKGh0dHA6Ly93d3cuYm9vc3Qub3JnL2RvYy9saWJzLzFfNDhfMC9saWJzL3Rlc3QvZG9jL2h0bWwvKQord2Vic2l0ZS4KZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjg1ZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMiBAQAorTlNMIChORE4gU2lnbmF0dXJlIExvZ2dlcikgUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2NvbW1vbi5ocHAgYi9jb21tb24uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMDhlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb21tb24uaHBwCkBAIC0wLDAgKzEsOTEgQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5TTCAoTkROIFNpZ25hdHVyZSBMb2dnZXIpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTlNMIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKyAqCisgKiBOU0wgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTlNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5TTCwgZS5nLiwgaW4gQ09QWUlORy5tZCBmaWxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIFxhdXRob3IgWWluZ2RpIFl1IDx5aW5nZGlAY3MudWNsYS5lZHU+CisgKi8KKworI2lmbmRlZiBOU0xfQ09NTU9OX0hQUAorI2RlZmluZSBOU0xfQ09NTU9OX0hQUAorCisjaW5jbHVkZSAiY29uZmlnLmhwcCIKKworI2lmZGVmIFdJVEhfVEVTVFMKKyNkZWZpbmUgVklSVFVBTF9XSVRIX1RFU1RTIHZpcnR1YWwKKyNkZWZpbmUgUFVCTElDX1dJVEhfVEVTVFNfRUxTRV9QUk9URUNURUQgcHVibGljCisjZGVmaW5lIFBVQkxJQ19XSVRIX1RFU1RTX0VMU0VfUFJJVkFURSBwdWJsaWMKKyNkZWZpbmUgUFJPVEVDVEVEX1dJVEhfVEVTVFNfRUxTRV9QUklWQVRFIHByb3RlY3RlZAorI2Vsc2UKKyNkZWZpbmUgVklSVFVBTF9XSVRIX1RFU1RTCisjZGVmaW5lIFBVQkxJQ19XSVRIX1RFU1RTX0VMU0VfUFJPVEVDVEVEIHByb3RlY3RlZAorI2RlZmluZSBQVUJMSUNfV0lUSF9URVNUU19FTFNFX1BSSVZBVEUgcHJpdmF0ZQorI2RlZmluZSBQUk9URUNURURfV0lUSF9URVNUU19FTFNFX1BSSVZBVEUgcHJpdmF0ZQorI2VuZGlmCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHF1ZXVlPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPG5kbi1jeHgvY29tbW9uLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L2ludGVyZXN0LmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L2RhdGEuaHBwPgorCisjaW5jbHVkZSA8Ym9vc3QvYWxnb3JpdGhtL3N0cmluZy5ocHA+CisjaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+CisjaW5jbHVkZSA8Ym9vc3QvYXNzZXJ0LmhwcD4KKyNpbmNsdWRlIDxib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgorI2luY2x1ZGUgPGJvb3N0L25vbmNvcHlhYmxlLmhwcD4KKyNpbmNsdWRlIDxib29zdC9wcm9wZXJ0eV90cmVlL3B0cmVlLmhwcD4KKyNpbmNsdWRlIDxib29zdC9zY29wZWRfcHRyLmhwcD4KKworbmFtZXNwYWNlIG5zbCB7CisKK3VzaW5nIHN0ZDo6c2l6ZV90OworCit1c2luZyBib29zdDo6bm9uY29weWFibGU7Cit1c2luZyBib29zdDo6c2NvcGVkX3B0cjsKKwordXNpbmcgbmRuOjpzaGFyZWRfcHRyOwordXNpbmcgbmRuOjp3ZWFrX3B0cjsKK3VzaW5nIG5kbjo6ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM7Cit1c2luZyBuZG46Om1ha2Vfc2hhcmVkOwordXNpbmcgbmRuOjpzdGF0aWNfcG9pbnRlcl9jYXN0OwordXNpbmcgbmRuOjpkeW5hbWljX3BvaW50ZXJfY2FzdDsKK3VzaW5nIG5kbjo6Y29uc3RfcG9pbnRlcl9jYXN0OwordXNpbmcgbmRuOjpmdW5jdGlvbjsKK3VzaW5nIG5kbjo6YmluZDsKK3VzaW5nIG5kbjo6cmVmOwordXNpbmcgbmRuOjpjcmVmOworCit1c2luZyBuZG46OkludGVyZXN0OwordXNpbmcgbmRuOjpEYXRhOwordXNpbmcgbmRuOjpOYW1lOwordXNpbmcgbmRuOjpFeGNsdWRlOwordXNpbmcgbmRuOjpCbG9jazsKKworbmFtZXNwYWNlIHRsdiB7Cit1c2luZyBuYW1lc3BhY2UgbmRuOjpUbHY7Cit9CisKK25hbWVzcGFjZSBuYW1lID0gbmRuOjpuYW1lOworbmFtZXNwYWNlIHRpbWUgPSBuZG46OnRpbWU7CisKK30gLy8gbmFtZXNwYWNlIG5zbAorCisjZW5kaWYgLy8gTlNMX0NPTU1PTl9IUFAKZGlmZiAtLWdpdCBhL2NvcmUvdGx2LmhwcCBiL2NvcmUvdGx2LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS90bHYuaHBwCmRpZmYgLS1naXQgYS9kYWVtb24vbWFpbi5jcHAgYi9kYWVtb24vbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MmY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2RhZW1vbi9tYWluLmNwcApAQCAtMCwwICsxLDI2IEBACisvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsICBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOU0wgKE5ETiBTaWduYXR1cmUgTG9nZ2VyKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5TTCBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTlNMIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIE5TTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBOU0wsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBcYXV0aG9yIFlpbmdkaSBZdSA8eWluZ2RpQGNzLnVjbGEuZWR1PgorICovCisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZG9jcy9JTlNUQUxMLnJzdCBiL2RvY3MvSU5TVEFMTC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxZWVjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvSU5TVEFMTC5yc3QKQEAgLTAsMCArMSw0IEBACisuLiBfTlNMIEluc3RhbGxhdGlvbiBJbnN0cnVjdGlvbnM6CisKK05TTCBJbnN0YWxsYXRpb24gSW5zdHJ1Y3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZG9jcy9SRUFETUUucnN0IGIvZG9jcy9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NzI5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1JFQURNRS5yc3QKQEAgLTAsMCArMSwyIEBACitOU0wgT3ZlcnZpZXcKKz09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZG9jcy9jb25mLnB5IGIvZG9jcy9jb25mLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZGQxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwyNTcgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIE5TTCAtIE5ETiBTaWduYXR1cmUgTG9nZ2VyIGRvY3VtZW50YXRpb24gYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlLCBjcmVhdGVkIGJ5CisjIHNwaGlueC1xdWlja3N0YXJ0IG9uIFN1biBBcHIgIDYgMTk6NTg6MjIgMjAxNC4KKyMKKyMgVGhpcyBmaWxlIGlzIGV4ZWNmaWxlKClkIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHNldCB0byBpdHMKKyMgY29udGFpbmluZyBkaXIuCisjCisjIE5vdGUgdGhhdCBub3QgYWxsIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGFyZSBwcmVzZW50IGluIHRoaXMKKyMgYXV0b2dlbmVyYXRlZCBmaWxlLgorIworIyBBbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMgaGF2ZSBhIGRlZmF1bHQ7IHZhbHVlcyB0aGF0IGFyZSBjb21tZW50ZWQgb3V0CisjIHNlcnZlIHRvIHNob3cgdGhlIGRlZmF1bHQuCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKKyMgSWYgZXh0ZW5zaW9ucyAob3IgbW9kdWxlcyB0byBkb2N1bWVudCB3aXRoIGF1dG9kb2MpIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeSwKKyMgYWRkIHRoZXNlIGRpcmVjdG9yaWVzIHRvIHN5cy5wYXRoIGhlcmUuIElmIHRoZSBkaXJlY3RvcnkgaXMgcmVsYXRpdmUgdG8gdGhlCisjIGRvY3VtZW50YXRpb24gcm9vdCwgdXNlIG9zLnBhdGguYWJzcGF0aCB0byBtYWtlIGl0IGFic29sdXRlLCBsaWtlIHNob3duIGhlcmUuCisjc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aCgnLicpKQorCisjIC0tIEdlbmVyYWwgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB5b3VyIGRvY3VtZW50YXRpb24gbmVlZHMgYSBtaW5pbWFsIFNwaGlueCB2ZXJzaW9uLCBzdGF0ZSBpdCBoZXJlLgorI25lZWRzX3NwaGlueCA9ICcxLjAnCisKKyMgQWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJpbmdzLiBUaGV5IGNhbiBiZQorIyBleHRlbnNpb25zIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQgJ3NwaGlueC5leHQuKicpIG9yIHlvdXIgY3VzdG9tCisjIG9uZXMuCitleHRlbnNpb25zID0gWworICAgICdzcGhpbnguZXh0LnRvZG8nLAorXQorCitkZWYgYWRkRXh0ZW5zaW9uSWZFeGlzdHMoZXh0ZW5zaW9uKToKKyAgICB0cnk6CisgICAgICAgIF9faW1wb3J0X18oZXh0ZW5zaW9uKQorICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFeHRlbnNpb24gJyVzJyBpbiBub3QgYXZhaWxhYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgZG9jdW1lbnRhdGlvbiBtYXkgbm90IGJ1aWxkIGNvcnJlY3RseS5cbiIgJSBleHRlbnNpb24pCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlRvIGluc3RhbGwsIHVzZSBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICBzdWRvIHBpcCBpbnN0YWxsICVzXG4iICUgZXh0ZW5zaW9uLnJlcGxhY2UoJy4nLCAnLScpKQorCithZGRFeHRlbnNpb25JZkV4aXN0cygnc3BoaW54Y29udHJpYi5kb3h5bGluaycpCisKK2lmIG9zLmdldGVudignR09PR0xFX0FOQUxZVElDUycsIE5vbmUpOgorICAgIGFkZEV4dGVuc2lvbklmRXhpc3RzKCdzcGhpbnhjb250cmliLmdvb2dsZWFuYWx5dGljcycpCisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LgordGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZmaXggb2Ygc291cmNlIGZpbGVuYW1lcy4KK3NvdXJjZV9zdWZmaXggPSAnLnJzdCcKKworIyBUaGUgZW5jb2Rpbmcgb2Ygc291cmNlIGZpbGVzLgorI3NvdXJjZV9lbmNvZGluZyA9ICd1dGYtOC1zaWcnCisKKyMgVGhlIG1hc3RlciB0b2N0cmVlIGRvY3VtZW50LgorbWFzdGVyX2RvYyA9ICdpbmRleCcKKworIyBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LgorcHJvamVjdCA9IHUnTlNMOiBORE4gU2lnbmF0dXJlIExvZ2dlcicKK2NvcHlyaWdodCA9IHUnMjAxNCwgTmFtZWQgRGF0YSBOZXR3b3JraW5nIFByb2plY3QnCisKKyMgVGhlIGxhbmd1YWdlIGZvciBjb250ZW50IGF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54LiBSZWZlciB0byBkb2N1bWVudGF0aW9uCisjIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGxhbmd1YWdlcy4KKyNsYW5ndWFnZSA9IE5vbmUKKworIyBUaGVyZSBhcmUgdHdvIG9wdGlvbnMgZm9yIHJlcGxhY2luZyB8dG9kYXl8OiBlaXRoZXIsIHlvdSBzZXQgdG9kYXkgdG8gc29tZQorIyBub24tZmFsc2UgdmFsdWUsIHRoZW4gaXQgaXMgdXNlZDoKKyN0b2RheSA9ICcnCisjIEVsc2UsIHRvZGF5X2ZtdCBpcyB1c2VkIGFzIHRoZSBmb3JtYXQgZm9yIGEgc3RyZnRpbWUgY2FsbC4KKyN0b2RheV9mbXQgPSAnJUIgJWQsICVZJworCisjIExpc3Qgb2YgcGF0dGVybnMsIHJlbGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMgYW5kCisjIGRpcmVjdG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcy4KK2V4Y2x1ZGVfcGF0dGVybnMgPSBbXQorCisjIFRoZSByZVNUIGRlZmF1bHQgcm9sZSAodXNlZCBmb3IgdGhpcyBtYXJrdXA6IGB0ZXh0YCkgdG8gdXNlIGZvciBhbGwKKyMgZG9jdW1lbnRzLgorI2RlZmF1bHRfcm9sZSA9IE5vbmUKKworIyBJZiB0cnVlLCAnKCknIHdpbGwgYmUgYXBwZW5kZWQgdG8gOmZ1bmM6IGV0Yy4gY3Jvc3MtcmVmZXJlbmNlIHRleHQuCisjYWRkX2Z1bmN0aW9uX3BhcmVudGhlc2VzID0gVHJ1ZQorCisjIElmIHRydWUsIHRoZSBjdXJyZW50IG1vZHVsZSBuYW1lIHdpbGwgYmUgcHJlcGVuZGVkIHRvIGFsbCBkZXNjcmlwdGlvbgorIyB1bml0IHRpdGxlcyAoc3VjaCBhcyAuLiBmdW5jdGlvbjo6KS4KKyNhZGRfbW9kdWxlX25hbWVzID0gVHJ1ZQorCisjIElmIHRydWUsIHNlY3Rpb25hdXRob3IgYW5kIG1vZHVsZWF1dGhvciBkaXJlY3RpdmVzIHdpbGwgYmUgc2hvd24gaW4gdGhlCisjIG91dHB1dC4gVGhleSBhcmUgaWdub3JlZCBieSBkZWZhdWx0LgorI3Nob3dfYXV0aG9ycyA9IEZhbHNlCisKKyMgVGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRzIChzeW50YXggaGlnaGxpZ2h0aW5nKSBzdHlsZSB0byB1c2UuCitweWdtZW50c19zdHlsZSA9ICdzcGhpbngnCisKKyMgQSBsaXN0IG9mIGlnbm9yZWQgcHJlZml4ZXMgZm9yIG1vZHVsZSBpbmRleCBzb3J0aW5nLgorI21vZGluZGV4X2NvbW1vbl9wcmVmaXggPSBbXQorCisjIElmIHRydWUsIGtlZXAgd2FybmluZ3MgYXMgInN5c3RlbSBtZXNzYWdlIiBwYXJhZ3JhcGhzIGluIHRoZSBidWlsdCBkb2N1bWVudHMuCisja2VlcF93YXJuaW5ncyA9IEZhbHNlCisKKworIyAtLSBPcHRpb25zIGZvciBIVE1MIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCisjIGh0bWxfdGhlbWUgPSAnZGVmYXVsdCcKK2h0bWxfdGhlbWUgPSAnbmFtZWRfZGF0YV90aGVtZScKKworIyBUaGVtZSBvcHRpb25zIGFyZSB0aGVtZS1zcGVjaWZpYyBhbmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUKKyMgZnVydGhlci4gIEZvciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhlbWUsIHNlZSB0aGUKKyMgZG9jdW1lbnRhdGlvbi4KKyNodG1sX3RoZW1lX29wdGlvbnMgPSB7fQorCisjIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSB0aGVtZXMgaGVyZSwgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCitodG1sX3RoZW1lX3BhdGggPSBbJy4vJ10KKworIyBUaGUgbmFtZSBmb3IgdGhpcyBzZXQgb2YgU3BoaW54IGRvY3VtZW50cy4gIElmIE5vbmUsIGl0IGRlZmF1bHRzIHRvCisjICI8cHJvamVjdD4gdjxyZWxlYXNlPiBkb2N1bWVudGF0aW9uIi4KKyNodG1sX3RpdGxlID0gTm9uZQorCisjIEEgc2hvcnRlciB0aXRsZSBmb3IgdGhlIG5hdmlnYXRpb24gYmFyLiAgRGVmYXVsdCBpcyB0aGUgc2FtZSBhcyBodG1sX3RpdGxlLgorI2h0bWxfc2hvcnRfdGl0bGUgPSBOb25lCisKKyMgVGhlIG5hbWUgb2YgYW4gaW1hZ2UgZmlsZSAocmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkpIHRvIHBsYWNlIGF0IHRoZSB0b3AKKyMgb2YgdGhlIHNpZGViYXIuCisjaHRtbF9sb2dvID0gTm9uZQorCisjIFRoZSBuYW1lIG9mIGFuIGltYWdlIGZpbGUgKHdpdGhpbiB0aGUgc3RhdGljIHBhdGgpIHRvIHVzZSBhcyBmYXZpY29uIG9mIHRoZQorIyBkb2NzLiAgVGhpcyBmaWxlIHNob3VsZCBiZSBhIFdpbmRvd3MgaWNvbiBmaWxlICguaWNvKSBiZWluZyAxNngxNiBvciAzMngzMgorIyBwaXhlbHMgbGFyZ2UuCisjaHRtbF9mYXZpY29uID0gTm9uZQorCisjIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSBzdGF0aWMgZmlsZXMgKHN1Y2ggYXMgc3R5bGUgc2hlZXRzKSBoZXJlLAorIyByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4gVGhleSBhcmUgY29waWVkIGFmdGVyIHRoZSBidWlsdGluIHN0YXRpYyBmaWxlcywKKyMgc28gYSBmaWxlIG5hbWVkICJkZWZhdWx0LmNzcyIgd2lsbCBvdmVyd3JpdGUgdGhlIGJ1aWx0aW4gImRlZmF1bHQuY3NzIi4KKyMgaHRtbF9zdGF0aWNfcGF0aCA9IFsnX3N0YXRpYyddCisKKyMgQWRkIGFueSBleHRyYSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIGZpbGVzIChzdWNoIGFzIHJvYm90cy50eHQgb3IKKyMgLmh0YWNjZXNzKSBoZXJlLCByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4gVGhlc2UgZmlsZXMgYXJlIGNvcGllZAorIyBkaXJlY3RseSB0byB0aGUgcm9vdCBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KKyNodG1sX2V4dHJhX3BhdGggPSBbXQorCisjIElmIG5vdCAnJywgYSAnTGFzdCB1cGRhdGVkIG9uOicgdGltZXN0YW1wIGlzIGluc2VydGVkIGF0IGV2ZXJ5IHBhZ2UgYm90dG9tLAorIyB1c2luZyB0aGUgZ2l2ZW4gc3RyZnRpbWUgZm9ybWF0LgorI2h0bWxfbGFzdF91cGRhdGVkX2ZtdCA9ICclYiAlZCwgJVknCisKKyMgSWYgdHJ1ZSwgU21hcnR5UGFudHMgd2lsbCBiZSB1c2VkIHRvIGNvbnZlcnQgcXVvdGVzIGFuZCBkYXNoZXMgdG8KKyMgdHlwb2dyYXBoaWNhbGx5IGNvcnJlY3QgZW50aXRpZXMuCisjaHRtbF91c2Vfc21hcnR5cGFudHMgPSBUcnVlCisKKyMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtYXBzIGRvY3VtZW50IG5hbWVzIHRvIHRlbXBsYXRlIG5hbWVzLgorI2h0bWxfc2lkZWJhcnMgPSB7fQorCisjIEFkZGl0aW9uYWwgdGVtcGxhdGVzIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIHRvIHBhZ2VzLCBtYXBzIHBhZ2UgbmFtZXMgdG8KKyMgdGVtcGxhdGUgbmFtZXMuCisjaHRtbF9hZGRpdGlvbmFsX3BhZ2VzID0ge30KKworIyBJZiBmYWxzZSwgbm8gbW9kdWxlIGluZGV4IGlzIGdlbmVyYXRlZC4KKyNodG1sX2RvbWFpbl9pbmRpY2VzID0gVHJ1ZQorCisjIElmIGZhbHNlLCBubyBpbmRleCBpcyBnZW5lcmF0ZWQuCisjaHRtbF91c2VfaW5kZXggPSBUcnVlCisKKyMgSWYgdHJ1ZSwgdGhlIGluZGV4IGlzIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWdlcyBmb3IgZWFjaCBsZXR0ZXIuCisjaHRtbF9zcGxpdF9pbmRleCA9IEZhbHNlCisKKyMgSWYgdHJ1ZSwgbGlua3MgdG8gdGhlIHJlU1Qgc291cmNlcyBhcmUgYWRkZWQgdG8gdGhlIHBhZ2VzLgorI2h0bWxfc2hvd19zb3VyY2VsaW5rID0gVHJ1ZQorCisjIElmIHRydWUsICJDcmVhdGVkIHVzaW5nIFNwaGlueCIgaXMgc2hvd24gaW4gdGhlIEhUTUwgZm9vdGVyLiBEZWZhdWx0IGlzIFRydWUuCisjaHRtbF9zaG93X3NwaGlueCA9IFRydWUKKworIyBJZiB0cnVlLCAiKEMpIENvcHlyaWdodCAuLi4iIGlzIHNob3duIGluIHRoZSBIVE1MIGZvb3Rlci4gRGVmYXVsdCBpcyBUcnVlLgorI2h0bWxfc2hvd19jb3B5cmlnaHQgPSBUcnVlCisKKyMgSWYgdHJ1ZSwgYW4gT3BlblNlYXJjaCBkZXNjcmlwdGlvbiBmaWxlIHdpbGwgYmUgb3V0cHV0LCBhbmQgYWxsIHBhZ2VzIHdpbGwKKyMgY29udGFpbiBhIDxsaW5rPiB0YWcgcmVmZXJyaW5nIHRvIGl0LiAgVGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uIG11c3QgYmUgdGhlCisjIGJhc2UgVVJMIGZyb20gd2hpY2ggdGhlIGZpbmlzaGVkIEhUTUwgaXMgc2VydmVkLgorI2h0bWxfdXNlX29wZW5zZWFyY2ggPSAnJworCisjIFRoaXMgaXMgdGhlIGZpbGUgbmFtZSBzdWZmaXggZm9yIEhUTUwgZmlsZXMgKGUuZy4gIi54aHRtbCIpLgoraHRtbF9maWxlX3N1ZmZpeCA9ICIuaHRtbCIKKworIyBPdXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFzZW5hbWUgPSAnbnNsLWRvY3MnCisKKworIyAtLSBPcHRpb25zIGZvciBMYVRlWCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2xhdGV4X2VsZW1lbnRzID0geworIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVyJyBvciAnYTRwYXBlcicpLgorIydwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAorCisjIFRoZSBmb250IHNpemUgKCcxMHB0JywgJzExcHQnIG9yICcxMnB0JykuCisjJ3BvaW50c2l6ZSc6ICcxMHB0JywKKworIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUgTGFUZVggcHJlYW1ibGUuCisjJ3ByZWFtYmxlJzogJycsCit9CisKKyMgR3JvdXBpbmcgdGhlIGRvY3VtZW50IHRyZWUgaW50byBMYVRlWCBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCB0YXJnZXQgbmFtZSwgdGl0bGUsCisjICBhdXRob3IsIGRvY3VtZW50Y2xhc3MgW2hvd3RvLCBtYW51YWwsIG9yIG93biBjbGFzc10pLgorbGF0ZXhfZG9jdW1lbnRzID0gWworICAoJ2luZGV4JywgJ25zbC1kb2NzLnRleCcsIHUnTkROIFNpZ25hdHVyZSBMb2dnZXInLAorICAgdSdOYW1lZCBEYXRhIE5ldHdvcmtpbmcgUHJvamVjdCcsICdtYW51YWwnKSwKK10KKworIyBUaGUgbmFtZSBvZiBhbiBpbWFnZSBmaWxlIChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkgdG8gcGxhY2UgYXQgdGhlIHRvcCBvZgorIyB0aGUgdGl0bGUgcGFnZS4KKyNsYXRleF9sb2dvID0gTm9uZQorCisjIEZvciAibWFudWFsIiBkb2N1bWVudHMsIGlmIHRoaXMgaXMgdHJ1ZSwgdGhlbiB0b3BsZXZlbCBoZWFkaW5ncyBhcmUgcGFydHMsCisjIG5vdCBjaGFwdGVycy4KKyNsYXRleF91c2VfcGFydHMgPSBGYWxzZQorCisjIElmIHRydWUsIHNob3cgcGFnZSByZWZlcmVuY2VzIGFmdGVyIGludGVybmFsIGxpbmtzLgorI2xhdGV4X3Nob3dfcGFnZXJlZnMgPSBGYWxzZQorCisjIElmIHRydWUsIHNob3cgVVJMIGFkZHJlc3NlcyBhZnRlciBleHRlcm5hbCBsaW5rcy4KKyNsYXRleF9zaG93X3VybHMgPSBGYWxzZQorCisjIERvY3VtZW50cyB0byBhcHBlbmQgYXMgYW4gYXBwZW5kaXggdG8gYWxsIG1hbnVhbHMuCisjbGF0ZXhfYXBwZW5kaWNlcyA9IFtdCisKKyMgSWYgZmFsc2UsIG5vIG1vZHVsZSBpbmRleCBpcyBnZW5lcmF0ZWQuCisjbGF0ZXhfZG9tYWluX2luZGljZXMgPSBUcnVlCisKKworIyAtLSBPcHRpb25zIGZvciBtYW51YWwgcGFnZSBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgT25lIGVudHJ5IHBlciBtYW51YWwgcGFnZS4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCBuYW1lLCBkZXNjcmlwdGlvbiwgYXV0aG9ycywgbWFudWFsIHNlY3Rpb24pLgorbWFuX3BhZ2VzID0gWworICAgICgnbWFucGFnZXMvbnNsJywgJ25zbCcsIHUnTkROIFNpZ25hdHVyZSBMb2dnZXInLCBOb25lLCAxKSwKK10KKworCisjIElmIHRydWUsIHNob3cgVVJMIGFkZHJlc3NlcyBhZnRlciBleHRlcm5hbCBsaW5rcy4KK21hbl9zaG93X3VybHMgPSBUcnVlCisKKworIyAtLS0tIEN1c3RvbSBvcHRpb25zIC0tLS0tLS0tCisKK2RveHlsaW5rID0geworICAnbnNsJyA6ICgnbnNsLnRhZycsICdkb3h5Z2VuLycpLAorfQorCitpZiBvcy5nZXRlbnYoJ0dPT0dMRV9BTkFMWVRJQ1MnLCBOb25lKToKKyAgICBnb29nbGVhbmFseXRpY3NfaWQgPSBvcy5lbnZpcm9uWydHT09HTEVfQU5BTFlUSUNTJ10KKyAgICBnb29nbGVhbmFseXRpY3NfZW5hYmxlZCA9IFRydWUKKworZXhjbHVkZV9wYXR0ZXJucyA9IFsnUkVMRUFTRV9OT1RFUy5yc3QnXQpkaWZmIC0tZ2l0IGEvZG9jcy9kb3h5Z2VuLmNvbmYuaW4gYi9kb2NzL2RveHlnZW4uY29uZi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmYzYmQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9kb3h5Z2VuLmNvbmYuaW4KQEAgLTAsMCArMSwyMjgzIEBACisjIERveHlmaWxlIDEuOC41CisKKyMgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgc2V0dGluZ3MgdG8gYmUgdXNlZCBieSB0aGUgZG9jdW1lbnRhdGlvbiBzeXN0ZW0KKyMgZG94eWdlbiAod3d3LmRveHlnZW4ub3JnKSBmb3IgYSBwcm9qZWN0LgorIworIyBBbGwgdGV4dCBhZnRlciBhIGRvdWJsZSBoYXNoICgjIykgaXMgY29uc2lkZXJlZCBhIGNvbW1lbnQgYW5kIGlzIHBsYWNlZCBpbgorIyBmcm9udCBvZiB0aGUgVEFHIGl0IGlzIHByZWNlZGluZy4KKyMKKyMgQWxsIHRleHQgYWZ0ZXIgYSBzaW5nbGUgaGFzaCAoIykgaXMgY29uc2lkZXJlZCBhIGNvbW1lbnQgYW5kIHdpbGwgYmUgaWdub3JlZC4KKyMgVGhlIGZvcm1hdCBpczoKKyMgVEFHID0gdmFsdWUgW3ZhbHVlLCAuLi5dCisjIEZvciBsaXN0cywgaXRlbXMgY2FuIGFsc28gYmUgYXBwZW5kZWQgdXNpbmc6CisjIFRBRyArPSB2YWx1ZSBbdmFsdWUsIC4uLl0KKyMgVmFsdWVzIHRoYXQgY29udGFpbiBzcGFjZXMgc2hvdWxkIGJlIHBsYWNlZCBiZXR3ZWVuIHF1b3RlcyAoXCIgXCIpLgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGlzIHRhZyBzcGVjaWZpZXMgdGhlIGVuY29kaW5nIHVzZWQgZm9yIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBjb25maWcgZmlsZQorIyB0aGF0IGZvbGxvdy4gVGhlIGRlZmF1bHQgaXMgVVRGLTggd2hpY2ggaXMgYWxzbyB0aGUgZW5jb2RpbmcgdXNlZCBmb3IgYWxsIHRleHQKKyMgYmVmb3JlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoaXMgdGFnLiBEb3h5Z2VuIHVzZXMgbGliaWNvbnYgKG9yIHRoZSBpY29udgorIyBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWNvbnYKKyMgZm9yIHRoZSBsaXN0IG9mIHBvc3NpYmxlIGVuY29kaW5ncy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFVURi04LgorCitET1hZRklMRV9FTkNPRElORyAgICAgID0gVVRGLTgKKworIyBUaGUgUFJPSkVDVF9OQU1FIHRhZyBpcyBhIHNpbmdsZSB3b3JkIChvciBhIHNlcXVlbmNlIG9mIHdvcmRzIHN1cnJvdW5kZWQgYnkKKyMgZG91YmxlLXF1b3RlcywgdW5sZXNzIHlvdSBhcmUgdXNpbmcgRG94eXdpemFyZCkgdGhhdCBzaG91bGQgaWRlbnRpZnkgdGhlCisjIHByb2plY3QgZm9yIHdoaWNoIHRoZSBkb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZC4gVGhpcyBuYW1lIGlzIHVzZWQgaW4gdGhlCisjIHRpdGxlIG9mIG1vc3QgZ2VuZXJhdGVkIHBhZ2VzIGFuZCBpbiBhIGZldyBvdGhlciBwbGFjZXMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBNeSBQcm9qZWN0LgorCitQUk9KRUNUX05BTUUgICAgICAgICAgID0gIk5TTDogTkROIFNpZ25hdHVyZSBMb2dnZXIiCisKKyMgVGhlIFBST0pFQ1RfTlVNQkVSIHRhZyBjYW4gYmUgdXNlZCB0byBlbnRlciBhIHByb2plY3Qgb3IgcmV2aXNpb24gbnVtYmVyLiBUaGlzCisjIGNvdWxkIGJlIGhhbmR5IGZvciBhcmNoaXZpbmcgdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9yIGlmIHNvbWUgdmVyc2lvbgorIyBjb250cm9sIHN5c3RlbSBpcyB1c2VkLgorCitQUk9KRUNUX05VTUJFUiAgICAgICAgID0gQFZFUlNJT05ACisKKyMgVXNpbmcgdGhlIFBST0pFQ1RfQlJJRUYgdGFnIG9uZSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbCBvbmUgbGluZSBkZXNjcmlwdGlvbgorIyBmb3IgYSBwcm9qZWN0IHRoYXQgYXBwZWFycyBhdCB0aGUgdG9wIG9mIGVhY2ggcGFnZSBhbmQgc2hvdWxkIGdpdmUgdmlld2VyIGEKKyMgcXVpY2sgaWRlYSBhYm91dCB0aGUgcHVycG9zZSBvZiB0aGUgcHJvamVjdC4gS2VlcCB0aGUgZGVzY3JpcHRpb24gc2hvcnQuCisKK1BST0pFQ1RfQlJJRUYgICAgICAgICAgPQorCisjIFdpdGggdGhlIFBST0pFQ1RfTE9HTyB0YWcgb25lIGNhbiBzcGVjaWZ5IGFuIGxvZ28gb3IgaWNvbiB0aGF0IGlzIGluY2x1ZGVkIGluCisjIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgbWF4aW11bSBoZWlnaHQgb2YgdGhlIGxvZ28gc2hvdWxkIG5vdCBleGNlZWQgNTUgcGl4ZWxzCisjIGFuZCB0aGUgbWF4aW11bSB3aWR0aCBzaG91bGQgbm90IGV4Y2VlZCAyMDAgcGl4ZWxzLiBEb3h5Z2VuIHdpbGwgY29weSB0aGUgbG9nbworIyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4KKworUFJPSkVDVF9MT0dPICAgICAgICAgICA9CisKKyMgVGhlIE9VVFBVVF9ESVJFQ1RPUlkgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgKHJlbGF0aXZlIG9yIGFic29sdXRlKSBwYXRoCisjIGludG8gd2hpY2ggdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIHdpbGwgYmUgd3JpdHRlbi4gSWYgYSByZWxhdGl2ZSBwYXRoIGlzCisjIGVudGVyZWQsIGl0IHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIGRveHlnZW4gd2FzIHN0YXJ0ZWQuIElmCisjIGxlZnQgYmxhbmsgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgdXNlZC4KKworT1VUUFVUX0RJUkVDVE9SWSAgICAgICA9IGRvY3MvZG94eWdlbgorCisjIElmIHRoZSBDUkVBVEVfU1VCRElSUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgY3JlYXRlIDQwOTYgc3ViLQorIyBkaXJlY3RvcmllcyAoaW4gMiBsZXZlbHMpIHVuZGVyIHRoZSBvdXRwdXQgZGlyZWN0b3J5IG9mIGVhY2ggb3V0cHV0IGZvcm1hdCBhbmQKKyMgd2lsbCBkaXN0cmlidXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMgb3ZlciB0aGVzZSBkaXJlY3Rvcmllcy4gRW5hYmxpbmcgdGhpcworIyBvcHRpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIGZlZWRpbmcgZG94eWdlbiBhIGh1Z2UgYW1vdW50IG9mIHNvdXJjZSBmaWxlcywgd2hlcmUKKyMgcHV0dGluZyBhbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3b3VsZCBvdGhlcndpc2UgY2F1c2VzCisjIHBlcmZvcm1hbmNlIHByb2JsZW1zIGZvciB0aGUgZmlsZSBzeXN0ZW0uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworQ1JFQVRFX1NVQkRJUlMgICAgICAgICA9IFlFUworCisjIFRoZSBPVVRQVVRfTEFOR1VBR0UgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggYWxsCisjIGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIGJ5IGRveHlnZW4gaXMgd3JpdHRlbi4gRG94eWdlbiB3aWxsIHVzZSB0aGlzCisjIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGFsbCBjb25zdGFudCBvdXRwdXQgaW4gdGhlIHByb3BlciBsYW5ndWFnZS4KKyMgUG9zc2libGUgdmFsdWVzIGFyZTogQWZyaWthYW5zLCBBcmFiaWMsIEJyYXppbGlhbiwgQ2F0YWxhbiwgQ2hpbmVzZSwgQ2hpbmVzZS0KKyMgVHJhZGl0aW9uYWwsIENyb2F0aWFuLCBDemVjaCwgRGFuaXNoLCBEdXRjaCwgRW5nbGlzaCwgRXNwZXJhbnRvLCBGYXJzaSwKKyMgRmlubmlzaCwgRnJlbmNoLCBHZXJtYW4sIEdyZWVrLCBIdW5nYXJpYW4sIEl0YWxpYW4sIEphcGFuZXNlLCBKYXBhbmVzZS1lbiwKKyMgS29yZWFuLCBLb3JlYW4tZW4sIExhdHZpYW4sIE5vcndlZ2lhbiwgTWFjZWRvbmlhbiwgUGVyc2lhbiwgUG9saXNoLAorIyBQb3J0dWd1ZXNlLCBSb21hbmlhbiwgUnVzc2lhbiwgU2VyYmlhbiwgU2xvdmFrLCBTbG92ZW5lLCBTcGFuaXNoLCBTd2VkaXNoLAorIyBUdXJraXNoLCBVa3JhaW5pYW4gYW5kIFZpZXRuYW1lc2UuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBFbmdsaXNoLgorCitPVVRQVVRfTEFOR1VBR0UgICAgICAgID0gRW5nbGlzaAorCisjIElmIHRoZSBCUklFRl9NRU1CRVJfREVTQyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgaW5jbHVkZSBicmllZiBtZW1iZXIKKyMgZGVzY3JpcHRpb25zIGFmdGVyIHRoZSBtZW1iZXJzIHRoYXQgYXJlIGxpc3RlZCBpbiB0aGUgZmlsZSBhbmQgY2xhc3MKKyMgZG9jdW1lbnRhdGlvbiAoc2ltaWxhciB0byBKYXZhZG9jKS4gU2V0IHRvIE5PIHRvIGRpc2FibGUgdGhpcy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworQlJJRUZfTUVNQkVSX0RFU0MgICAgICA9IFlFUworCisjIElmIHRoZSBSRVBFQVRfQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIHByZXBlbmQgdGhlIGJyaWVmCisjIGRlc2NyaXB0aW9uIG9mIGEgbWVtYmVyIG9yIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24KKyMKKyMgTm90ZTogSWYgYm90aCBISURFX1VORE9DX01FTUJFUlMgYW5kIEJSSUVGX01FTUJFUl9ERVNDIGFyZSBzZXQgdG8gTk8sIHRoZQorIyBicmllZiBkZXNjcmlwdGlvbnMgd2lsbCBiZSBjb21wbGV0ZWx5IHN1cHByZXNzZWQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1JFUEVBVF9CUklFRiAgICAgICAgICAgPSBZRVMKKworIyBUaGlzIHRhZyBpbXBsZW1lbnRzIGEgcXVhc2ktaW50ZWxsaWdlbnQgYnJpZWYgZGVzY3JpcHRpb24gYWJicmV2aWF0b3IgdGhhdCBpcworIyB1c2VkIHRvIGZvcm0gdGhlIHRleHQgaW4gdmFyaW91cyBsaXN0aW5ncy4gRWFjaCBzdHJpbmcgaW4gdGhpcyBsaXN0LCBpZiBmb3VuZAorIyBhcyB0aGUgbGVhZGluZyB0ZXh0IG9mIHRoZSBicmllZiBkZXNjcmlwdGlvbiwgd2lsbCBiZSBzdHJpcHBlZCBmcm9tIHRoZSB0ZXh0CisjIGFuZCB0aGUgcmVzdWx0LCBhZnRlciBwcm9jZXNzaW5nIHRoZSB3aG9sZSBsaXN0LCBpcyB1c2VkIGFzIHRoZSBhbm5vdGF0ZWQKKyMgdGV4dC4gT3RoZXJ3aXNlLCB0aGUgYnJpZWYgZGVzY3JpcHRpb24gaXMgdXNlZCBhcy1pcy4gSWYgbGVmdCBibGFuaywgdGhlCisjIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQgKCRuYW1lIGlzIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQgd2l0aCB0aGUgbmFtZSBvZgorIyB0aGUgZW50aXR5KTpUaGUgJG5hbWUgY2xhc3MsIFRoZSAkbmFtZSB3aWRnZXQsIFRoZSAkbmFtZSBmaWxlLCBpcywgcHJvdmlkZXMsCisjIHNwZWNpZmllcywgY29udGFpbnMsIHJlcHJlc2VudHMsIGEsIGFuIGFuZCB0aGUuCisKK0FCQlJFVklBVEVfQlJJRUYgICAgICAgPQorCisjIElmIHRoZSBBTFdBWVNfREVUQUlMRURfU0VDIGFuZCBSRVBFQVRfQlJJRUYgdGFncyBhcmUgYm90aCBzZXQgdG8gWUVTIHRoZW4KKyMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZGV0YWlsZWQgc2VjdGlvbiBldmVuIGlmIHRoZXJlIGlzIG9ubHkgYSBicmllZgorIyBkZXNjcmlwdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitBTFdBWVNfREVUQUlMRURfU0VDICAgID0gTk8KKworIyBJZiB0aGUgSU5MSU5FX0lOSEVSSVRFRF9NRU1CIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgc2hvdyBhbGwKKyMgaW5oZXJpdGVkIG1lbWJlcnMgb2YgYSBjbGFzcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGNsYXNzIGFzIGlmIHRob3NlCisjIG1lbWJlcnMgd2VyZSBvcmRpbmFyeSBjbGFzcyBtZW1iZXJzLiBDb25zdHJ1Y3RvcnMsIGRlc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50CisjIG9wZXJhdG9ycyBvZiB0aGUgYmFzZSBjbGFzc2VzIHdpbGwgbm90IGJlIHNob3duLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0lOTElORV9JTkhFUklURURfTUVNQiAgPSBZRVMKKworIyBJZiB0aGUgRlVMTF9QQVRIX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBwcmVwZW5kIHRoZSBmdWxsIHBhdGgKKyMgYmVmb3JlIGZpbGVzIG5hbWUgaW4gdGhlIGZpbGUgbGlzdCBhbmQgaW4gdGhlIGhlYWRlciBmaWxlcy4gSWYgc2V0IHRvIE5PIHRoZQorIyBzaG9ydGVzdCBwYXRoIHRoYXQgbWFrZXMgdGhlIGZpbGUgbmFtZSB1bmlxdWUgd2lsbCBiZSB1c2VkCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0ZVTExfUEFUSF9OQU1FUyAgICAgICAgPSBOTworCisjIFRoZSBTVFJJUF9GUk9NX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHN0cmlwIGEgdXNlci1kZWZpbmVkIHBhcnQgb2YgdGhlIHBhdGguCisjIFN0cmlwcGluZyBpcyBvbmx5IGRvbmUgaWYgb25lIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5ncyBtYXRjaGVzIHRoZSBsZWZ0LWhhbmQKKyMgcGFydCBvZiB0aGUgcGF0aC4gVGhlIHRhZyBjYW4gYmUgdXNlZCB0byBzaG93IHJlbGF0aXZlIHBhdGhzIGluIHRoZSBmaWxlIGxpc3QuCisjIElmIGxlZnQgYmxhbmsgdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIGRveHlnZW4gaXMgcnVuIGlzIHVzZWQgYXMgdGhlIHBhdGggdG8KKyMgc3RyaXAuCisjCisjIE5vdGUgdGhhdCB5b3UgY2FuIHNwZWNpZnkgYWJzb2x1dGUgcGF0aHMgaGVyZSwgYnV0IGFsc28gcmVsYXRpdmUgcGF0aHMsIHdoaWNoCisjIHdpbGwgYmUgcmVsYXRpdmUgZnJvbSB0aGUgZGlyZWN0b3J5IHdoZXJlIGRveHlnZW4gaXMgc3RhcnRlZC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEZVTExfUEFUSF9OQU1FUyBpcyBzZXQgdG8gWUVTLgorCitTVFJJUF9GUk9NX1BBVEggICAgICAgID0gY29yZS8gZGFlbW9uLworCisjIFRoZSBTVFJJUF9GUk9NX0lOQ19QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzdHJpcCBhIHVzZXItZGVmaW5lZCBwYXJ0IG9mIHRoZQorIyBwYXRoIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGNsYXNzLCB3aGljaCB0ZWxscyB0aGUgcmVhZGVyIHdoaWNoCisjIGhlYWRlciBmaWxlIHRvIGluY2x1ZGUgaW4gb3JkZXIgdG8gdXNlIGEgY2xhc3MuIElmIGxlZnQgYmxhbmsgb25seSB0aGUgbmFtZSBvZgorIyB0aGUgaGVhZGVyIGZpbGUgY29udGFpbmluZyB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyB1c2VkLiBPdGhlcndpc2Ugb25lIHNob3VsZAorIyBzcGVjaWZ5IHRoZSBsaXN0IG9mIGluY2x1ZGUgcGF0aHMgdGhhdCBhcmUgbm9ybWFsbHkgcGFzc2VkIHRvIHRoZSBjb21waWxlcgorIyB1c2luZyB0aGUgLUkgZmxhZy4KKworU1RSSVBfRlJPTV9JTkNfUEFUSCAgICA9CisKKyMgSWYgdGhlIFNIT1JUX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgbXVjaCBzaG9ydGVyIChidXQKKyMgbGVzcyByZWFkYWJsZSkgZmlsZSBuYW1lcy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlzIHlvdXIgZmlsZSBzeXN0ZW1zIGRvZXNuJ3QKKyMgc3VwcG9ydCBsb25nIG5hbWVzIGxpa2Ugb24gRE9TLCBNYWMsIG9yIENELVJPTS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitTSE9SVF9OQU1FUyAgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgSkFWQURPQ19BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgaW50ZXJwcmV0IHRoZQorIyBmaXJzdCBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBhIEphdmFkb2Mtc3R5bGUgY29tbWVudCBhcyB0aGUgYnJpZWYKKyMgZGVzY3JpcHRpb24uIElmIHNldCB0byBOTywgdGhlIEphdmFkb2Mtc3R5bGUgd2lsbCBiZWhhdmUganVzdCBsaWtlIHJlZ3VsYXIgUXQtCisjIHN0eWxlIGNvbW1lbnRzICh0aHVzIHJlcXVpcmluZyBhbiBleHBsaWNpdCBAYnJpZWYgY29tbWFuZCBmb3IgYSBicmllZgorIyBkZXNjcmlwdGlvbi4pCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworSkFWQURPQ19BVVRPQlJJRUYgICAgICA9IFlFUworCisjIElmIHRoZSBRVF9BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgaW50ZXJwcmV0IHRoZSBmaXJzdAorIyBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBhIFF0LXN0eWxlIGNvbW1lbnQgYXMgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLiBJZgorIyBzZXQgdG8gTk8sIHRoZSBRdC1zdHlsZSB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgcmVndWxhciBRdC1zdHlsZSBjb21tZW50cyAodGh1cworIyByZXF1aXJpbmcgYW4gZXhwbGljaXQgXGJyaWVmIGNvbW1hbmQgZm9yIGEgYnJpZWYgZGVzY3JpcHRpb24uKQorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK1FUX0FVVE9CUklFRiAgICAgICAgICAgPSBOTworCisjIFRoZSBNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGIHRhZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBtYWtlIGRveHlnZW4gdHJlYXQgYQorIyBtdWx0aS1saW5lIEMrKyBzcGVjaWFsIGNvbW1lbnQgYmxvY2sgKGkuZS4gYSBibG9jayBvZiAvLyEgb3IgLy8vIGNvbW1lbnRzKSBhcworIyBhIGJyaWVmIGRlc2NyaXB0aW9uLiBUaGlzIHVzZWQgdG8gYmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIFRoZSBuZXcgZGVmYXVsdCBpcworIyB0byB0cmVhdCBhIG11bHRpLWxpbmUgQysrIGNvbW1lbnQgYmxvY2sgYXMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4gU2V0IHRoaXMKKyMgdGFnIHRvIFlFUyBpZiB5b3UgcHJlZmVyIHRoZSBvbGQgYmVoYXZpb3IgaW5zdGVhZC4KKyMKKyMgTm90ZSB0aGF0IHNldHRpbmcgdGhpcyB0YWcgdG8gWUVTIGFsc28gbWVhbnMgdGhhdCByYXRpb25hbCByb3NlIGNvbW1lbnRzIGFyZQorIyBub3QgcmVjb2duaXplZCBhbnkgbW9yZS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGID0gTk8KKworIyBJZiB0aGUgSU5IRVJJVF9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gYW4gdW5kb2N1bWVudGVkIG1lbWJlciBpbmhlcml0cyB0aGUKKyMgZG9jdW1lbnRhdGlvbiBmcm9tIGFueSBkb2N1bWVudGVkIG1lbWJlciB0aGF0IGl0IHJlLWltcGxlbWVudHMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0lOSEVSSVRfRE9DUyAgICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgU0VQQVJBVEVfTUVNQkVSX1BBR0VTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBwcm9kdWNlIGEKKyMgbmV3IHBhZ2UgZm9yIGVhY2ggbWVtYmVyLiBJZiBzZXQgdG8gTk8sIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgbWVtYmVyIHdpbGwgYmUKKyMgcGFydCBvZiB0aGUgZmlsZS9jbGFzcy9uYW1lc3BhY2UgdGhhdCBjb250YWlucyBpdC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitTRVBBUkFURV9NRU1CRVJfUEFHRVMgID0gTk8KKworIyBUaGUgVEFCX1NJWkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbiBhIHRhYi4gRG94eWdlbgorIyB1c2VzIHRoaXMgdmFsdWUgdG8gcmVwbGFjZSB0YWJzIGJ5IHNwYWNlcyBpbiBjb2RlIGZyYWdtZW50cy4KKyMgTWluaW11bSB2YWx1ZTogMSwgbWF4aW11bSB2YWx1ZTogMTYsIGRlZmF1bHQgdmFsdWU6IDQuCisKK1RBQl9TSVpFICAgICAgICAgICAgICAgPSA0CisKKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBvZiBhbGlhc2VzIHRoYXQgYWN0IGFzIGNvbW1hbmRzIGluCisjIHRoZSBkb2N1bWVudGF0aW9uLiBBbiBhbGlhcyBoYXMgdGhlIGZvcm06CisjIG5hbWU9dmFsdWUKKyMgRm9yIGV4YW1wbGUgYWRkaW5nCisjICJzaWRlZWZmZWN0PUBwYXIgU2lkZSBFZmZlY3RzOlxuIgorIyB3aWxsIGFsbG93IHlvdSB0byBwdXQgdGhlIGNvbW1hbmQgXHNpZGVlZmZlY3QgKG9yIEBzaWRlZWZmZWN0KSBpbiB0aGUKKyMgZG9jdW1lbnRhdGlvbiwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSB1c2VyLWRlZmluZWQgcGFyYWdyYXBoIHdpdGggaGVhZGluZworIyAiU2lkZSBFZmZlY3RzOiIuIFlvdSBjYW4gcHV0IFxuJ3MgaW4gdGhlIHZhbHVlIHBhcnQgb2YgYW4gYWxpYXMgdG8gaW5zZXJ0CisjIG5ld2xpbmVzLgorCitBTElBU0VTICAgICAgICAgICAgICAgID0KKworIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbnVtYmVyIG9mIHdvcmQta2V5d29yZCBtYXBwaW5ncyAoVENMIG9ubHkpLgorIyBBIG1hcHBpbmcgaGFzIHRoZSBmb3JtICJuYW1lPXZhbHVlIi4gRm9yIGV4YW1wbGUgYWRkaW5nICJjbGFzcz1pdGNsOjpjbGFzcyIKKyMgd2lsbCBhbGxvdyB5b3UgdG8gdXNlIHRoZSBjb21tYW5kIGNsYXNzIGluIHRoZSBpdGNsOjpjbGFzcyBtZWFuaW5nLgorCitUQ0xfU1VCU1QgICAgICAgICAgICAgID0KKworIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9GT1JfQyB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBDIHNvdXJjZXMKKyMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgQy4gRm9yCisjIGluc3RhbmNlLCBzb21lIG9mIHRoZSBuYW1lcyB0aGF0IGFyZSB1c2VkIHdpbGwgYmUgZGlmZmVyZW50LiBUaGUgbGlzdCBvZiBhbGwKKyMgbWVtYmVycyB3aWxsIGJlIG9taXR0ZWQsIGV0Yy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitPUFRJTUlaRV9PVVRQVVRfRk9SX0MgID0gWUVTCisKKyMgU2V0IHRoZSBPUFRJTUlaRV9PVVRQVVRfSkFWQSB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBKYXZhIG9yCisjIFB5dGhvbiBzb3VyY2VzIG9ubHkuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIG1vcmUgdGFpbG9yZWQKKyMgZm9yIHRoYXQgbGFuZ3VhZ2UuIEZvciBpbnN0YW5jZSwgbmFtZXNwYWNlcyB3aWxsIGJlIHByZXNlbnRlZCBhcyBwYWNrYWdlcywKKyMgcXVhbGlmaWVkIHNjb3BlcyB3aWxsIGxvb2sgZGlmZmVyZW50LCBldGMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworT1BUSU1JWkVfT1VUUFVUX0pBVkEgICA9IE5PCisKKyMgU2V0IHRoZSBPUFRJTUlaRV9GT1JfRk9SVFJBTiB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBGb3J0cmFuCisjIHNvdXJjZXMuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIHRhaWxvcmVkIGZvciBGb3J0cmFuLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK09QVElNSVpFX0ZPUl9GT1JUUkFOICAgPSBOTworCisjIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX1ZIREwgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgVkhETAorIyBzb3VyY2VzLiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyB0YWlsb3JlZCBmb3IgVkhETC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitPUFRJTUlaRV9PVVRQVVRfVkhETCAgID0gTk8KKworIyBEb3h5Z2VuIHNlbGVjdHMgdGhlIHBhcnNlciB0byB1c2UgZGVwZW5kaW5nIG9uIHRoZSBleHRlbnNpb24gb2YgdGhlIGZpbGVzIGl0CisjIHBhcnNlcy4gV2l0aCB0aGlzIHRhZyB5b3UgY2FuIGFzc2lnbiB3aGljaCBwYXJzZXIgdG8gdXNlIGZvciBhIGdpdmVuCisjIGV4dGVuc2lvbi4gRG94eWdlbiBoYXMgYSBidWlsdC1pbiBtYXBwaW5nLCBidXQgeW91IGNhbiBvdmVycmlkZSBvciBleHRlbmQgaXQKKyMgdXNpbmcgdGhpcyB0YWcuIFRoZSBmb3JtYXQgaXMgZXh0PWxhbmd1YWdlLCB3aGVyZSBleHQgaXMgYSBmaWxlIGV4dGVuc2lvbiwgYW5kCisjIGxhbmd1YWdlIGlzIG9uZSBvZiB0aGUgcGFyc2VycyBzdXBwb3J0ZWQgYnkgZG94eWdlbjogSURMLCBKYXZhLCBKYXZhc2NyaXB0LAorIyBDIywgQywgQysrLCBELCBQSFAsIE9iamVjdGl2ZS1DLCBQeXRob24sIEZvcnRyYW4sIFZIREwuIEZvciBpbnN0YW5jZSB0byBtYWtlCisjIGRveHlnZW4gdHJlYXQgLmluYyBmaWxlcyBhcyBGb3J0cmFuIGZpbGVzIChkZWZhdWx0IGlzIFBIUCksIGFuZCAuZiBmaWxlcyBhcyBDCisjIChkZWZhdWx0IGlzIEZvcnRyYW4pLCB1c2U6IGluYz1Gb3J0cmFuIGY9Qy4KKyMKKyMgTm90ZSBGb3IgZmlsZXMgd2l0aG91dCBleHRlbnNpb24geW91IGNhbiB1c2Ugbm9fZXh0ZW5zaW9uIGFzIGEgcGxhY2Vob2xkZXIuCisjCisjIE5vdGUgdGhhdCBmb3IgY3VzdG9tIGV4dGVuc2lvbnMgeW91IGFsc28gbmVlZCB0byBzZXQgRklMRV9QQVRURVJOUyBvdGhlcndpc2UKKyMgdGhlIGZpbGVzIGFyZSBub3QgcmVhZCBieSBkb3h5Z2VuLgorCitFWFRFTlNJT05fTUFQUElORyAgICAgID0KKworIyBJZiB0aGUgTUFSS0RPV05fU1VQUE9SVCB0YWcgaXMgZW5hYmxlZCB0aGVuIGRveHlnZW4gcHJlLXByb2Nlc3NlcyBhbGwgY29tbWVudHMKKyMgYWNjb3JkaW5nIHRvIHRoZSBNYXJrZG93biBmb3JtYXQsIHdoaWNoIGFsbG93cyBmb3IgbW9yZSByZWFkYWJsZQorIyBkb2N1bWVudGF0aW9uLiBTZWUgaHR0cDovL2RhcmluZ2ZpcmViYWxsLm5ldC9wcm9qZWN0cy9tYXJrZG93bi8gZm9yIGRldGFpbHMuCisjIFRoZSBvdXRwdXQgb2YgbWFya2Rvd24gcHJvY2Vzc2luZyBpcyBmdXJ0aGVyIHByb2Nlc3NlZCBieSBkb3h5Z2VuLCBzbyB5b3UgY2FuCisjIG1peCBkb3h5Z2VuLCBIVE1MLCBhbmQgWE1MIGNvbW1hbmRzIHdpdGggTWFya2Rvd24gZm9ybWF0dGluZy4gRGlzYWJsZSBvbmx5IGluCisjIGNhc2Ugb2YgYmFja3dhcmQgY29tcGF0aWJpbGl0aWVzIGlzc3Vlcy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworTUFSS0RPV05fU1VQUE9SVCAgICAgICA9IFlFUworCisjIFdoZW4gZW5hYmxlZCBkb3h5Z2VuIHRyaWVzIHRvIGxpbmsgd29yZHMgdGhhdCBjb3JyZXNwb25kIHRvIGRvY3VtZW50ZWQKKyMgY2xhc3Nlcywgb3IgbmFtZXNwYWNlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIGRvY3VtZW50YXRpb24uIFN1Y2ggYSBsaW5rIGNhbgorIyBiZSBwcmV2ZW50ZWQgaW4gaW5kaXZpZHVhbCBjYXNlcyBieSBieSBwdXR0aW5nIGEgJSBzaWduIGluIGZyb250IG9mIHRoZSB3b3JkCisjIG9yIGdsb2JhbGx5IGJ5IHNldHRpbmcgQVVUT0xJTktfU1VQUE9SVCB0byBOTy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworQVVUT0xJTktfU1VQUE9SVCAgICAgICA9IFlFUworCisjIElmIHlvdSB1c2UgU1RMIGNsYXNzZXMgKGkuZS4gc3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yLCBldGMuKSBidXQgZG8gbm90IHdhbnQKKyMgdG8gaW5jbHVkZSAoYSB0YWcgZmlsZSBmb3IpIHRoZSBTVEwgc291cmNlcyBhcyBpbnB1dCwgdGhlbiB5b3Ugc2hvdWxkIHNldCB0aGlzCisjIHRhZyB0byBZRVMgaW4gb3JkZXIgdG8gbGV0IGRveHlnZW4gbWF0Y2ggZnVuY3Rpb25zIGRlY2xhcmF0aW9ucyBhbmQKKyMgZGVmaW5pdGlvbnMgd2hvc2UgYXJndW1lbnRzIGNvbnRhaW4gU1RMIGNsYXNzZXMgKGUuZy4gZnVuYyhzdGQ6OnN0cmluZyk7CisjIHZlcnN1cyBmdW5jKHN0ZDo6c3RyaW5nKSB7fSkuIFRoaXMgYWxzbyBtYWtlIHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlvbgorIyBkaWFncmFtcyB0aGF0IGludm9sdmUgU1RMIGNsYXNzZXMgbW9yZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworQlVJTFRJTl9TVExfU1VQUE9SVCAgICA9IFlFUworCisjIElmIHlvdSB1c2UgTWljcm9zb2Z0J3MgQysrL0NMSSBsYW5ndWFnZSwgeW91IHNob3VsZCBzZXQgdGhpcyBvcHRpb24gdG8gWUVTIHRvCisjIGVuYWJsZSBwYXJzaW5nIHN1cHBvcnQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworQ1BQX0NMSV9TVVBQT1JUICAgICAgICA9IE5PCisKKyMgU2V0IHRoZSBTSVBfU1VQUE9SVCB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBzaXAgKHNlZToKKyMgaHR0cDovL3d3dy5yaXZlcmJhbmtjb21wdXRpbmcuY28udWsvc29mdHdhcmUvc2lwL2ludHJvKSBzb3VyY2VzIG9ubHkuIERveHlnZW4KKyMgd2lsbCBwYXJzZSB0aGVtIGxpa2Ugbm9ybWFsIEMrKyBidXQgd2lsbCBhc3N1bWUgYWxsIGNsYXNzZXMgdXNlIHB1YmxpYyBpbnN0ZWFkCisjIG9mIHByaXZhdGUgaW5oZXJpdGFuY2Ugd2hlbiBubyBleHBsaWNpdCBwcm90ZWN0aW9uIGtleXdvcmQgaXMgcHJlc2VudC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitTSVBfU1VQUE9SVCAgICAgICAgICAgID0gTk8KKworIyBGb3IgTWljcm9zb2Z0J3MgSURMIHRoZXJlIGFyZSBwcm9wZ2V0IGFuZCBwcm9wcHV0IGF0dHJpYnV0ZXMgdG8gaW5kaWNhdGUKKyMgZ2V0dGVyIGFuZCBzZXR0ZXIgbWV0aG9kcyBmb3IgYSBwcm9wZXJ0eS4gU2V0dGluZyB0aGlzIG9wdGlvbiB0byBZRVMgd2lsbCBtYWtlCisjIGRveHlnZW4gdG8gcmVwbGFjZSB0aGUgZ2V0IGFuZCBzZXQgbWV0aG9kcyBieSBhIHByb3BlcnR5IGluIHRoZSBkb2N1bWVudGF0aW9uLgorIyBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHRoZSBtZXRob2RzIGFyZSBpbmRlZWQgZ2V0dGluZyBvciBzZXR0aW5nIGEgc2ltcGxlCisjIHR5cGUuIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBvciB5b3Ugd2FudCB0byBzaG93IHRoZSBtZXRob2RzIGFueXdheSwgeW91CisjIHNob3VsZCBzZXQgdGhpcyBvcHRpb24gdG8gTk8uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0lETF9QUk9QRVJUWV9TVVBQT1JUICAgPSBZRVMKKworIyBJZiBtZW1iZXIgZ3JvdXBpbmcgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIERJU1RSSUJVVEVfR1JPVVBfRE9DCisjIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCByZXVzZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZmlyc3QKKyMgbWVtYmVyIGluIHRoZSBncm91cCAoaWYgYW55KSBmb3IgdGhlIG90aGVyIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiBCeSBkZWZhdWx0CisjIGFsbCBtZW1iZXJzIG9mIGEgZ3JvdXAgbXVzdCBiZSBkb2N1bWVudGVkIGV4cGxpY2l0bHkuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworRElTVFJJQlVURV9HUk9VUF9ET0MgICA9IE5PCisKKyMgU2V0IHRoZSBTVUJHUk9VUElORyB0YWcgdG8gWUVTIHRvIGFsbG93IGNsYXNzIG1lbWJlciBncm91cHMgb2YgdGhlIHNhbWUgdHlwZQorIyAoZm9yIGluc3RhbmNlIGEgZ3JvdXAgb2YgcHVibGljIGZ1bmN0aW9ucykgdG8gYmUgcHV0IGFzIGEgc3ViZ3JvdXAgb2YgdGhhdAorIyB0eXBlIChlLmcuIHVuZGVyIHRoZSBQdWJsaWMgRnVuY3Rpb25zIHNlY3Rpb24pLiBTZXQgaXQgdG8gTk8gdG8gcHJldmVudAorIyBzdWJncm91cGluZy4gQWx0ZXJuYXRpdmVseSwgdGhpcyBjYW4gYmUgZG9uZSBwZXIgY2xhc3MgdXNpbmcgdGhlCisjIFxub3N1Ymdyb3VwaW5nIGNvbW1hbmQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1NVQkdST1VQSU5HICAgICAgICAgICAgPSBZRVMKKworIyBXaGVuIHRoZSBJTkxJTkVfR1JPVVBFRF9DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTLCBjbGFzc2VzLCBzdHJ1Y3RzIGFuZCB1bmlvbnMKKyMgYXJlIHNob3duIGluc2lkZSB0aGUgZ3JvdXAgaW4gd2hpY2ggdGhleSBhcmUgaW5jbHVkZWQgKGUuZy4gdXNpbmcgXGluZ3JvdXApCisjIGluc3RlYWQgb2Ygb24gYSBzZXBhcmF0ZSBwYWdlIChmb3IgSFRNTCBhbmQgTWFuIHBhZ2VzKSBvciBzZWN0aW9uIChmb3IgTGFUZVgKKyMgYW5kIFJURikuCisjCisjIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgZG9lcyBub3Qgd29yayBpbiBjb21iaW5hdGlvbiB3aXRoCisjIFNFUEFSQVRFX01FTUJFUl9QQUdFUy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitJTkxJTkVfR1JPVVBFRF9DTEFTU0VTID0gTk8KKworIyBXaGVuIHRoZSBJTkxJTkVfU0lNUExFX1NUUlVDVFMgdGFnIGlzIHNldCB0byBZRVMsIHN0cnVjdHMsIGNsYXNzZXMsIGFuZCB1bmlvbnMKKyMgd2l0aCBvbmx5IHB1YmxpYyBkYXRhIGZpZWxkcyBvciBzaW1wbGUgdHlwZWRlZiBmaWVsZHMgd2lsbCBiZSBzaG93biBpbmxpbmUgaW4KKyMgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIHNjb3BlIGluIHdoaWNoIHRoZXkgYXJlIGRlZmluZWQgKGkuZS4gZmlsZSwKKyMgbmFtZXNwYWNlLCBvciBncm91cCBkb2N1bWVudGF0aW9uKSwgcHJvdmlkZWQgdGhpcyBzY29wZSBpcyBkb2N1bWVudGVkLiBJZiBzZXQKKyMgdG8gTk8sIHN0cnVjdHMsIGNsYXNzZXMsIGFuZCB1bmlvbnMgYXJlIHNob3duIG9uIGEgc2VwYXJhdGUgcGFnZSAoZm9yIEhUTUwgYW5kCisjIE1hbiBwYWdlcykgb3Igc2VjdGlvbiAoZm9yIExhVGVYIGFuZCBSVEYpLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0lOTElORV9TSU1QTEVfU1RSVUNUUyAgPSBOTworCisjIFdoZW4gVFlQRURFRl9ISURFU19TVFJVQ1QgdGFnIGlzIGVuYWJsZWQsIGEgdHlwZWRlZiBvZiBhIHN0cnVjdCwgdW5pb24sIG9yCisjIGVudW0gaXMgZG9jdW1lbnRlZCBhcyBzdHJ1Y3QsIHVuaW9uLCBvciBlbnVtIHdpdGggdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYuIFNvCisjIHR5cGVkZWYgc3RydWN0IFR5cGVTIHt9IFR5cGVULCB3aWxsIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhcyBhIHN0cnVjdAorIyB3aXRoIG5hbWUgVHlwZVQuIFdoZW4gZGlzYWJsZWQgdGhlIHR5cGVkZWYgd2lsbCBhcHBlYXIgYXMgYSBtZW1iZXIgb2YgYSBmaWxlLAorIyBuYW1lc3BhY2UsIG9yIGNsYXNzLiBBbmQgdGhlIHN0cnVjdCB3aWxsIGJlIG5hbWVkIFR5cGVTLiBUaGlzIGNhbiB0eXBpY2FsbHkgYmUKKyMgdXNlZnVsIGZvciBDIGNvZGUgaW4gY2FzZSB0aGUgY29kaW5nIGNvbnZlbnRpb24gZGljdGF0ZXMgdGhhdCBhbGwgY29tcG91bmQKKyMgdHlwZXMgYXJlIHR5cGVkZWYnZWQgYW5kIG9ubHkgdGhlIHR5cGVkZWYgaXMgcmVmZXJlbmNlZCwgbmV2ZXIgdGhlIHRhZyBuYW1lLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK1RZUEVERUZfSElERVNfU1RSVUNUICAgPSBOTworCisjIFRoZSBzaXplIG9mIHRoZSBzeW1ib2wgbG9va3VwIGNhY2hlIGNhbiBiZSBzZXQgdXNpbmcgTE9PS1VQX0NBQ0hFX1NJWkUuIFRoaXMKKyMgY2FjaGUgaXMgdXNlZCB0byByZXNvbHZlIHN5bWJvbHMgZ2l2ZW4gdGhlaXIgbmFtZSBhbmQgc2NvcGUuIFNpbmNlIHRoaXMgY2FuIGJlCisjIGFuIGV4cGVuc2l2ZSBwcm9jZXNzIGFuZCBvZnRlbiB0aGUgc2FtZSBzeW1ib2wgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiB0aGUKKyMgY29kZSwgZG94eWdlbiBrZWVwcyBhIGNhY2hlIG9mIHByZS1yZXNvbHZlZCBzeW1ib2xzLiBJZiB0aGUgY2FjaGUgaXMgdG9vIHNtYWxsCisjIGRveHlnZW4gd2lsbCBiZWNvbWUgc2xvd2VyLiBJZiB0aGUgY2FjaGUgaXMgdG9vIGxhcmdlLCBtZW1vcnkgaXMgd2FzdGVkLiBUaGUKKyMgY2FjaGUgc2l6ZSBpcyBnaXZlbiBieSB0aGlzIGZvcm11bGE6IDJeKDE2K0xPT0tVUF9DQUNIRV9TSVpFKS4gVGhlIHZhbGlkIHJhbmdlCisjIGlzIDAuLjksIHRoZSBkZWZhdWx0IGlzIDAsIGNvcnJlc3BvbmRpbmcgdG8gYSBjYWNoZSBzaXplIG9mIDJeMTY9NjU1MzYKKyMgc3ltYm9scy4gQXQgdGhlIGVuZCBvZiBhIHJ1biBkb3h5Z2VuIHdpbGwgcmVwb3J0IHRoZSBjYWNoZSB1c2FnZSBhbmQgc3VnZ2VzdAorIyB0aGUgb3B0aW1hbCBjYWNoZSBzaXplIGZyb20gYSBzcGVlZCBwb2ludCBvZiB2aWV3LgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5LCBkZWZhdWx0IHZhbHVlOiAwLgorCitMT09LVVBfQ0FDSEVfU0laRSAgICAgID0gMAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEJ1aWxkIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEVYVFJBQ1RfQUxMIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBhc3N1bWUgYWxsIGVudGl0aWVzIGluCisjIGRvY3VtZW50YXRpb24gYXJlIGRvY3VtZW50ZWQsIGV2ZW4gaWYgbm8gZG9jdW1lbnRhdGlvbiB3YXMgYXZhaWxhYmxlLiBQcml2YXRlCisjIGNsYXNzIG1lbWJlcnMgYW5kIHN0YXRpYyBmaWxlIG1lbWJlcnMgd2lsbCBiZSBoaWRkZW4gdW5sZXNzIHRoZQorIyBFWFRSQUNUX1BSSVZBVEUgcmVzcGVjdGl2ZWx5IEVYVFJBQ1RfU1RBVElDIHRhZ3MgYXJlIHNldCB0byBZRVMuCisjIE5vdGU6IFRoaXMgd2lsbCBhbHNvIGRpc2FibGUgdGhlIHdhcm5pbmdzIGFib3V0IHVuZG9jdW1lbnRlZCBtZW1iZXJzIHRoYXQgYXJlCisjIG5vcm1hbGx5IHByb2R1Y2VkIHdoZW4gV0FSTklOR1MgaXMgc2V0IHRvIFlFUy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitFWFRSQUNUX0FMTCAgICAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIEVYVFJBQ1RfUFJJVkFURSB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEgY2xhc3Mgd2lsbAorIyBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitFWFRSQUNUX1BSSVZBVEUgICAgICAgID0gTk8KKworIyBJZiB0aGUgRVhUUkFDVF9QQUNLQUdFIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBtZW1iZXJzIHdpdGggcGFja2FnZSBvciBpbnRlcm5hbAorIyBzY29wZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0VYVFJBQ1RfUEFDS0FHRSAgICAgICAgPSBOTworCisjIElmIHRoZSBFWFRSQUNUX1NUQVRJQyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgc3RhdGljIG1lbWJlcnMgb2YgYSBmaWxlIHdpbGwgYmUKKyMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworRVhUUkFDVF9TVEFUSUMgICAgICAgICA9IFlFUworCisjIElmIHRoZSBFWFRSQUNUX0xPQ0FMX0NMQVNTRVMgdGFnIGlzIHNldCB0byBZRVMgY2xhc3NlcyAoYW5kIHN0cnVjdHMpIGRlZmluZWQKKyMgbG9jYWxseSBpbiBzb3VyY2UgZmlsZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PCisjIG9ubHkgY2xhc3NlcyBkZWZpbmVkIGluIGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQuIERvZXMgbm90IGhhdmUgYW55IGVmZmVjdAorIyBmb3IgSmF2YSBzb3VyY2VzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitFWFRSQUNUX0xPQ0FMX0NMQVNTRVMgID0gWUVTCisKKyMgVGhpcyBmbGFnIGlzIG9ubHkgdXNlZnVsIGZvciBPYmplY3RpdmUtQyBjb2RlLiBXaGVuIHNldCB0byBZRVMgbG9jYWwgbWV0aG9kcywKKyMgd2hpY2ggYXJlIGRlZmluZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIHNlY3Rpb24gYnV0IG5vdCBpbiB0aGUgaW50ZXJmYWNlIGFyZQorIyBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PIG9ubHkgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlIGFyZQorIyBpbmNsdWRlZC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitFWFRSQUNUX0xPQ0FMX01FVEhPRFMgID0gTk8KKworIyBJZiB0aGlzIGZsYWcgaXMgc2V0IHRvIFlFUywgdGhlIG1lbWJlcnMgb2YgYW5vbnltb3VzIG5hbWVzcGFjZXMgd2lsbCBiZQorIyBleHRyYWN0ZWQgYW5kIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhcyBhIG5hbWVzcGFjZSBjYWxsZWQKKyMgJ2Fub255bW91c19uYW1lc3BhY2V7ZmlsZX0nLCB3aGVyZSBmaWxlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYmFzZSBuYW1lIG9mCisjIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGFub255bW91cyBuYW1lc3BhY2UuIEJ5IGRlZmF1bHQgYW5vbnltb3VzIG5hbWVzcGFjZQorIyBhcmUgaGlkZGVuLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0VYVFJBQ1RfQU5PTl9OU1BBQ0VTICAgPSBOTworCisjIElmIHRoZSBISURFX1VORE9DX01FTUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFsbAorIyB1bmRvY3VtZW50ZWQgbWVtYmVycyBpbnNpZGUgZG9jdW1lbnRlZCBjbGFzc2VzIG9yIGZpbGVzLiBJZiBzZXQgdG8gTk8gdGhlc2UKKyMgbWVtYmVycyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJpb3VzIG92ZXJ2aWV3cywgYnV0IG5vIGRvY3VtZW50YXRpb24KKyMgc2VjdGlvbiBpcyBnZW5lcmF0ZWQuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitISURFX1VORE9DX01FTUJFUlMgICAgID0gTk8KKworIyBJZiB0aGUgSElERV9VTkRPQ19DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgaGlkZSBhbGwKKyMgdW5kb2N1bWVudGVkIGNsYXNzZXMgdGhhdCBhcmUgbm9ybWFsbHkgdmlzaWJsZSBpbiB0aGUgY2xhc3MgaGllcmFyY2h5LiBJZiBzZXQKKyMgdG8gTk8gdGhlc2UgY2xhc3NlcyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJpb3VzIG92ZXJ2aWV3cy4gVGhpcyBvcHRpb24gaGFzCisjIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0hJREVfVU5ET0NfQ0xBU1NFUyAgICAgPSBOTworCisjIElmIHRoZSBISURFX0ZSSUVORF9DT01QT1VORFMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFsbCBmcmllbmQKKyMgKGNsYXNzfHN0cnVjdHx1bmlvbikgZGVjbGFyYXRpb25zLiBJZiBzZXQgdG8gTk8gdGhlc2UgZGVjbGFyYXRpb25zIHdpbGwgYmUKKyMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworSElERV9GUklFTkRfQ09NUE9VTkRTICA9IE5PCisKKyMgSWYgdGhlIEhJREVfSU5fQk9EWV9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgaGlkZSBhbnkKKyMgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm91bmQgaW5zaWRlIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24uIElmIHNldCB0byBOTyB0aGVzZQorIyBibG9ja3Mgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZnVuY3Rpb24ncyBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIGJsb2NrLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0hJREVfSU5fQk9EWV9ET0NTICAgICAgPSBOTworCisjIFRoZSBJTlRFUk5BTF9ET0NTIHRhZyBkZXRlcm1pbmVzIGlmIGRvY3VtZW50YXRpb24gdGhhdCBpcyB0eXBlZCBhZnRlciBhCisjIFxpbnRlcm5hbCBjb21tYW5kIGlzIGluY2x1ZGVkLiBJZiB0aGUgdGFnIGlzIHNldCB0byBOTyB0aGVuIHRoZSBkb2N1bWVudGF0aW9uCisjIHdpbGwgYmUgZXhjbHVkZWQuIFNldCBpdCB0byBZRVMgdG8gaW5jbHVkZSB0aGUgaW50ZXJuYWwgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitJTlRFUk5BTF9ET0NTICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgQ0FTRV9TRU5TRV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gZG94eWdlbiB3aWxsIG9ubHkgZ2VuZXJhdGUgZmlsZQorIyBuYW1lcyBpbiBsb3dlci1jYXNlIGxldHRlcnMuIElmIHNldCB0byBZRVMgdXBwZXItY2FzZSBsZXR0ZXJzIGFyZSBhbHNvCisjIGFsbG93ZWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGNsYXNzZXMgb3IgZmlsZXMgd2hvc2UgbmFtZXMgb25seSBkaWZmZXIKKyMgaW4gY2FzZSBhbmQgaWYgeW91ciBmaWxlIHN5c3RlbSBzdXBwb3J0cyBjYXNlIHNlbnNpdGl2ZSBmaWxlIG5hbWVzLiBXaW5kb3dzCisjIGFuZCBNYWMgdXNlcnMgYXJlIGFkdmlzZWQgdG8gc2V0IHRoaXMgb3B0aW9uIHRvIE5PLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogc3lzdGVtIGRlcGVuZGVudC4KKworQ0FTRV9TRU5TRV9OQU1FUyAgICAgICA9IFlFUworCisjIElmIHRoZSBISURFX1NDT1BFX05BTUVTIHRhZyBpcyBzZXQgdG8gTk8gdGhlbiBkb3h5Z2VuIHdpbGwgc2hvdyBtZW1iZXJzIHdpdGgKKyMgdGhlaXIgZnVsbCBjbGFzcyBhbmQgbmFtZXNwYWNlIHNjb3BlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIFlFUyB0aGUKKyMgc2NvcGUgd2lsbCBiZSBoaWRkZW4uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworSElERV9TQ09QRV9OQU1FUyAgICAgICA9IE5PCisKKyMgSWYgdGhlIFNIT1dfSU5DTFVERV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBwdXQgYSBsaXN0IG9mCisjIHRoZSBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBieSBhIGZpbGUgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmaWxlLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitTSE9XX0lOQ0xVREVfRklMRVMgICAgID0gWUVTCisKKyMgSWYgdGhlIEZPUkNFX0xPQ0FMX0lOQ0xVREVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGxpc3QgaW5jbHVkZQorIyBmaWxlcyB3aXRoIGRvdWJsZSBxdW90ZXMgaW4gdGhlIGRvY3VtZW50YXRpb24gcmF0aGVyIHRoYW4gd2l0aCBzaGFycCBicmFja2V0cy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitGT1JDRV9MT0NBTF9JTkNMVURFUyAgID0gTk8KKworIyBJZiB0aGUgSU5MSU5FX0lORk8gdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhIHRhZyBbaW5saW5lXSBpcyBpbnNlcnRlZCBpbiB0aGUKKyMgZG9jdW1lbnRhdGlvbiBmb3IgaW5saW5lIG1lbWJlcnMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0lOTElORV9JTkZPICAgICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgU09SVF9NRU1CRVJfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZQorIyAoZGV0YWlsZWQpIGRvY3VtZW50YXRpb24gb2YgZmlsZSBhbmQgY2xhc3MgbWVtYmVycyBhbHBoYWJldGljYWxseSBieSBtZW1iZXIKKyMgbmFtZS4gSWYgc2V0IHRvIE5PIHRoZSBtZW1iZXJzIHdpbGwgYXBwZWFyIGluIGRlY2xhcmF0aW9uIG9yZGVyLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitTT1JUX01FTUJFUl9ET0NTICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFNPUlRfQlJJRUZfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZSBicmllZgorIyBkZXNjcmlwdGlvbnMgb2YgZmlsZSwgbmFtZXNwYWNlIGFuZCBjbGFzcyBtZW1iZXJzIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlcgorIyBuYW1lLiBJZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gZGVjbGFyYXRpb24gb3JkZXIuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworU09SVF9CUklFRl9ET0NTICAgICAgICA9IE5PCisKKyMgSWYgdGhlIFNPUlRfTUVNQkVSU19DVE9SU18xU1QgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgc29ydCB0aGUKKyMgKGJyaWVmIGFuZCBkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBjbGFzcyBtZW1iZXJzIHNvIHRoYXQgY29uc3RydWN0b3JzIGFuZAorIyBkZXN0cnVjdG9ycyBhcmUgbGlzdGVkIGZpcnN0LiBJZiBzZXQgdG8gTk8gdGhlIGNvbnN0cnVjdG9ycyB3aWxsIGFwcGVhciBpbiB0aGUKKyMgcmVzcGVjdGl2ZSBvcmRlcnMgZGVmaW5lZCBieSBTT1JUX0JSSUVGX0RPQ1MgYW5kIFNPUlRfTUVNQkVSX0RPQ1MuCisjIE5vdGU6IElmIFNPUlRfQlJJRUZfRE9DUyBpcyBzZXQgdG8gTk8gdGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3Igc29ydGluZyBicmllZgorIyBtZW1iZXIgZG9jdW1lbnRhdGlvbi4KKyMgTm90ZTogSWYgU09SVF9NRU1CRVJfRE9DUyBpcyBzZXQgdG8gTk8gdGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3Igc29ydGluZworIyBkZXRhaWxlZCBtZW1iZXIgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitTT1JUX01FTUJFUlNfQ1RPUlNfMVNUID0gTk8KKworIyBJZiB0aGUgU09SVF9HUk9VUF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZSBoaWVyYXJjaHkKKyMgb2YgZ3JvdXAgbmFtZXMgaW50byBhbHBoYWJldGljYWwgb3JkZXIuIElmIHNldCB0byBOTyB0aGUgZ3JvdXAgbmFtZXMgd2lsbAorIyBhcHBlYXIgaW4gdGhlaXIgZGVmaW5lZCBvcmRlci4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitTT1JUX0dST1VQX05BTUVTICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFNPUlRfQllfU0NPUEVfTkFNRSB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIGNsYXNzIGxpc3Qgd2lsbCBiZSBzb3J0ZWQgYnkKKyMgZnVsbHktcXVhbGlmaWVkIG5hbWVzLCBpbmNsdWRpbmcgbmFtZXNwYWNlcy4gSWYgc2V0IHRvIE5PLCB0aGUgY2xhc3MgbGlzdCB3aWxsCisjIGJlIHNvcnRlZCBvbmx5IGJ5IGNsYXNzIG5hbWUsIG5vdCBpbmNsdWRpbmcgdGhlIG5hbWVzcGFjZSBwYXJ0LgorIyBOb3RlOiBUaGlzIG9wdGlvbiBpcyBub3QgdmVyeSB1c2VmdWwgaWYgSElERV9TQ09QRV9OQU1FUyBpcyBzZXQgdG8gWUVTLgorIyBOb3RlOiBUaGlzIG9wdGlvbiBhcHBsaWVzIG9ubHkgdG8gdGhlIGNsYXNzIGxpc3QsIG5vdCB0byB0aGUgYWxwaGFiZXRpY2FsCisjIGxpc3QuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworU09SVF9CWV9TQ09QRV9OQU1FICAgICA9IE5PCisKKyMgSWYgdGhlIFNUUklDVF9QUk9UT19NQVRDSElORyBvcHRpb24gaXMgZW5hYmxlZCBhbmQgZG94eWdlbiBmYWlscyB0byBkbyBwcm9wZXIKKyMgdHlwZSByZXNvbHV0aW9uIG9mIGFsbCBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gaXQgd2lsbCByZWplY3QgYSBtYXRjaCBiZXR3ZWVuCisjIHRoZSBwcm90b3R5cGUgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIG1lbWJlciBmdW5jdGlvbiBldmVuIGlmIHRoZXJlIGlzCisjIG9ubHkgb25lIGNhbmRpZGF0ZSBvciBpdCBpcyBvYnZpb3VzIHdoaWNoIGNhbmRpZGF0ZSB0byBjaG9vc2UgYnkgZG9pbmcgYQorIyBzaW1wbGUgc3RyaW5nIG1hdGNoLiBCeSBkaXNhYmxpbmcgU1RSSUNUX1BST1RPX01BVENISU5HIGRveHlnZW4gd2lsbCBzdGlsbAorIyBhY2NlcHQgYSBtYXRjaCBiZXR3ZWVuIHByb3RvdHlwZSBhbmQgaW1wbGVtZW50YXRpb24gaW4gc3VjaCBjYXNlcy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitTVFJJQ1RfUFJPVE9fTUFUQ0hJTkcgID0gTk8KKworIyBUaGUgR0VORVJBVEVfVE9ET0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKSB0aGUKKyMgdG9kbyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFx0b2RvIGNvbW1hbmRzIGluIHRoZQorIyBkb2N1bWVudGF0aW9uLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitHRU5FUkFURV9UT0RPTElTVCAgICAgID0gWUVTCisKKyMgVGhlIEdFTkVSQVRFX1RFU1RMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZRVMpIG9yIGRpc2FibGUgKCBOTykgdGhlCisjIHRlc3QgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcdGVzdCBjb21tYW5kcyBpbiB0aGUKKyMgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworR0VORVJBVEVfVEVTVExJU1QgICAgICA9IFlFUworCisjIFRoZSBHRU5FUkFURV9CVUdMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZRVMpIG9yIGRpc2FibGUgKCBOTykgdGhlIGJ1ZworIyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFxidWcgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0dFTkVSQVRFX0JVR0xJU1QgICAgICAgPSBZRVMKKworIyBUaGUgR0VORVJBVEVfREVQUkVDQVRFRExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKQorIyB0aGUgZGVwcmVjYXRlZCBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFxkZXByZWNhdGVkIGNvbW1hbmRzIGluCisjIHRoZSBkb2N1bWVudGF0aW9uLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitHRU5FUkFURV9ERVBSRUNBVEVETElTVD0gWUVTCisKKyMgVGhlIEVOQUJMRURfU0VDVElPTlMgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb25kaXRpb25hbCBkb2N1bWVudGF0aW9uCisjIHNlY3Rpb25zLCBtYXJrZWQgYnkgXGlmIDxzZWN0aW9uX2xhYmVsPiAuLi4gXGVuZGlmIGFuZCBcY29uZCA8c2VjdGlvbl9sYWJlbD4KKyMgLi4uIFxlbmRjb25kIGJsb2Nrcy4KKworRU5BQkxFRF9TRUNUSU9OUyAgICAgICA9CisKKyMgVGhlIE1BWF9JTklUSUFMSVpFUl9MSU5FUyB0YWcgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgdGhhdCB0aGUKKyMgaW5pdGlhbCB2YWx1ZSBvZiBhIHZhcmlhYmxlIG9yIG1hY3JvIC8gZGVmaW5lIGNhbiBoYXZlIGZvciBpdCB0byBhcHBlYXIgaW4gdGhlCisjIGRvY3VtZW50YXRpb24uIElmIHRoZSBpbml0aWFsaXplciBjb25zaXN0cyBvZiBtb3JlIGxpbmVzIHRoYW4gc3BlY2lmaWVkIGhlcmUKKyMgaXQgd2lsbCBiZSBoaWRkZW4uIFVzZSBhIHZhbHVlIG9mIDAgdG8gaGlkZSBpbml0aWFsaXplcnMgY29tcGxldGVseS4gVGhlCisjIGFwcGVhcmFuY2Ugb2YgdGhlIHZhbHVlIG9mIGluZGl2aWR1YWwgdmFyaWFibGVzIGFuZCBtYWNyb3MgLyBkZWZpbmVzIGNhbiBiZQorIyBjb250cm9sbGVkIHVzaW5nIFxzaG93aW5pdGlhbGl6ZXIgb3IgXGhpZGVpbml0aWFsaXplciBjb21tYW5kIGluIHRoZQorIyBkb2N1bWVudGF0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhpcyBzZXR0aW5nLgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAwMCwgZGVmYXVsdCB2YWx1ZTogMzAuCisKK01BWF9JTklUSUFMSVpFUl9MSU5FUyAgPSAzMAorCisjIFNldCB0aGUgU0hPV19VU0VEX0ZJTEVTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBsaXN0IG9mIGZpbGVzIGdlbmVyYXRlZCBhdAorIyB0aGUgYm90dG9tIG9mIHRoZSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzZXMgYW5kIHN0cnVjdHMuIElmIHNldCB0byBZRVMgdGhlIGxpc3QKKyMgd2lsbCBtZW50aW9uIHRoZSBmaWxlcyB0aGF0IHdlcmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworU0hPV19VU0VEX0ZJTEVTICAgICAgICA9IE5PCisKKyMgU2V0IHRoZSBTSE9XX0ZJTEVTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBGaWxlcyBwYWdlLiBUaGlzCisjIHdpbGwgcmVtb3ZlIHRoZSBGaWxlcyBlbnRyeSBmcm9tIHRoZSBRdWljayBJbmRleCBhbmQgZnJvbSB0aGUgRm9sZGVyIFRyZWUgVmlldworIyAoaWYgc3BlY2lmaWVkKS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworU0hPV19GSUxFUyAgICAgICAgICAgICA9IFlFUworCisjIFNldCB0aGUgU0hPV19OQU1FU1BBQ0VTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBOYW1lc3BhY2VzCisjIHBhZ2UuIFRoaXMgd2lsbCByZW1vdmUgdGhlIE5hbWVzcGFjZXMgZW50cnkgZnJvbSB0aGUgUXVpY2sgSW5kZXggYW5kIGZyb20gdGhlCisjIEZvbGRlciBUcmVlIFZpZXcgKGlmIHNwZWNpZmllZCkuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1NIT1dfTkFNRVNQQUNFUyAgICAgICAgPSBZRVMKKworIyBUaGUgRklMRV9WRVJTSU9OX0ZJTFRFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHByb2dyYW0gb3Igc2NyaXB0IHRoYXQKKyMgZG94eWdlbiBzaG91bGQgaW52b2tlIHRvIGdldCB0aGUgY3VycmVudCB2ZXJzaW9uIGZvciBlYWNoIGZpbGUgKHR5cGljYWxseSBmcm9tCisjIHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtKS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgcHJvZ3JhbSBieSBleGVjdXRpbmcgKHZpYQorIyBwb3BlbigpKSB0aGUgY29tbWFuZCBjb21tYW5kIGlucHV0LWZpbGUsIHdoZXJlIGNvbW1hbmQgaXMgdGhlIHZhbHVlIG9mIHRoZQorIyBGSUxFX1ZFUlNJT05fRklMVEVSIHRhZywgYW5kIGlucHV0LWZpbGUgaXMgdGhlIG5hbWUgb2YgYW4gaW5wdXQgZmlsZSBwcm92aWRlZAorIyBieSBkb3h5Z2VuLiBXaGF0ZXZlciB0aGUgcHJvZ3JhbSB3cml0ZXMgdG8gc3RhbmRhcmQgb3V0cHV0IGlzIHVzZWQgYXMgdGhlIGZpbGUKKyMgdmVyc2lvbi4gRm9yIGFuIGV4YW1wbGUgc2VlIHRoZSBkb2N1bWVudGF0aW9uLgorCitGSUxFX1ZFUlNJT05fRklMVEVSICAgID0KKworIyBUaGUgTEFZT1VUX0ZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsYXlvdXQgZmlsZSB3aGljaCB3aWxsIGJlIHBhcnNlZAorIyBieSBkb3h5Z2VuLiBUaGUgbGF5b3V0IGZpbGUgY29udHJvbHMgdGhlIGdsb2JhbCBzdHJ1Y3R1cmUgb2YgdGhlIGdlbmVyYXRlZAorIyBvdXRwdXQgZmlsZXMgaW4gYW4gb3V0cHV0IGZvcm1hdCBpbmRlcGVuZGVudCB3YXkuIFRvIGNyZWF0ZSB0aGUgbGF5b3V0IGZpbGUKKyMgdGhhdCByZXByZXNlbnRzIGRveHlnZW4ncyBkZWZhdWx0cywgcnVuIGRveHlnZW4gd2l0aCB0aGUgLWwgb3B0aW9uLiBZb3UgY2FuCisjIG9wdGlvbmFsbHkgc3BlY2lmeSBhIGZpbGUgbmFtZSBhZnRlciB0aGUgb3B0aW9uLCBpZiBvbWl0dGVkIERveHlnZW5MYXlvdXQueG1sCisjIHdpbGwgYmUgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgbGF5b3V0IGZpbGUuCisjCisjIE5vdGUgdGhhdCBpZiB5b3UgcnVuIGRveHlnZW4gZnJvbSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgZmlsZSBjYWxsZWQKKyMgRG94eWdlbkxheW91dC54bWwsIGRveHlnZW4gd2lsbCBwYXJzZSBpdCBhdXRvbWF0aWNhbGx5IGV2ZW4gaWYgdGhlIExBWU9VVF9GSUxFCisjIHRhZyBpcyBsZWZ0IGVtcHR5LgorCitMQVlPVVRfRklMRSAgICAgICAgICAgID0KKworIyBUaGUgQ0lURV9CSUJfRklMRVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgYmliIGZpbGVzIGNvbnRhaW5pbmcKKyMgdGhlIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4gVGhpcyBtdXN0IGJlIGEgbGlzdCBvZiAuYmliIGZpbGVzLiBUaGUgLmJpYgorIyBleHRlbnNpb24gaXMgYXV0b21hdGljYWxseSBhcHBlbmRlZCBpZiBvbWl0dGVkLiBUaGlzIHJlcXVpcmVzIHRoZSBiaWJ0ZXggdG9vbAorIyB0byBiZSBpbnN0YWxsZWQuIFNlZSBhbHNvIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmliVGVYIGZvciBtb3JlIGluZm8uCisjIEZvciBMYVRlWCB0aGUgc3R5bGUgb2YgdGhlIGJpYmxpb2dyYXBoeSBjYW4gYmUgY29udHJvbGxlZCB1c2luZworIyBMQVRFWF9CSUJfU1RZTEUuIFRvIHVzZSB0aGlzIGZlYXR1cmUgeW91IG5lZWQgYmlidGV4IGFuZCBwZXJsIGF2YWlsYWJsZSBpbiB0aGUKKyMgc2VhcmNoIHBhdGguIERvIG5vdCB1c2UgZmlsZSBuYW1lcyB3aXRoIHNwYWNlcywgYmlidGV4IGNhbm5vdCBoYW5kbGUgdGhlbS4gU2VlCisjIGFsc28gXGNpdGUgZm9yIGluZm8gaG93IHRvIGNyZWF0ZSByZWZlcmVuY2VzLgorCitDSVRFX0JJQl9GSUxFUyAgICAgICAgID0KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3YXJuaW5nIGFuZCBwcm9ncmVzcyBtZXNzYWdlcworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoZSBRVUlFVCB0YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIG1lc3NhZ2VzIHRoYXQgYXJlIGdlbmVyYXRlZCB0bworIyBzdGFuZGFyZCBvdXRwdXQgYnkgZG94eWdlbi4gSWYgUVVJRVQgaXMgc2V0IHRvIFlFUyB0aGlzIGltcGxpZXMgdGhhdCB0aGUKKyMgbWVzc2FnZXMgYXJlIG9mZi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitRVUlFVCAgICAgICAgICAgICAgICAgID0gWUVTCisKKyMgVGhlIFdBUk5JTkdTIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGFyZQorIyBnZW5lcmF0ZWQgdG8gc3RhbmRhcmQgZXJyb3IgKCBzdGRlcnIpIGJ5IGRveHlnZW4uIElmIFdBUk5JTkdTIGlzIHNldCB0byBZRVMKKyMgdGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdhcm5pbmdzIGFyZSBvbi4KKyMKKyMgVGlwOiBUdXJuIHdhcm5pbmdzIG9uIHdoaWxlIHdyaXRpbmcgdGhlIGRvY3VtZW50YXRpb24uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1dBUk5JTkdTICAgICAgICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgV0FSTl9JRl9VTkRPQ1VNRU5URUQgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlCisjIHdhcm5pbmdzIGZvciB1bmRvY3VtZW50ZWQgbWVtYmVycy4gSWYgRVhUUkFDVF9BTEwgaXMgc2V0IHRvIFlFUyB0aGVuIHRoaXMgZmxhZworIyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZGlzYWJsZWQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1dBUk5fSUZfVU5ET0NVTUVOVEVEICAgPSBZRVMKKworIyBJZiB0aGUgV0FSTl9JRl9ET0NfRVJST1IgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB3YXJuaW5ncyBmb3IKKyMgcG90ZW50aWFsIGVycm9ycyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBub3QgZG9jdW1lbnRpbmcgc29tZSBwYXJhbWV0ZXJzCisjIGluIGEgZG9jdW1lbnRlZCBmdW5jdGlvbiwgb3IgZG9jdW1lbnRpbmcgcGFyYW1ldGVycyB0aGF0IGRvbid0IGV4aXN0IG9yIHVzaW5nCisjIG1hcmt1cCBjb21tYW5kcyB3cm9uZ2x5LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitXQVJOX0lGX0RPQ19FUlJPUiAgICAgID0gWUVTCisKKyMgVGhpcyBXQVJOX05PX1BBUkFNRE9DIG9wdGlvbiBjYW4gYmUgZW5hYmxlZCB0byBnZXQgd2FybmluZ3MgZm9yIGZ1bmN0aW9ucyB0aGF0CisjIGFyZSBkb2N1bWVudGVkLCBidXQgaGF2ZSBubyBkb2N1bWVudGF0aW9uIGZvciB0aGVpciBwYXJhbWV0ZXJzIG9yIHJldHVybgorIyB2YWx1ZS4gSWYgc2V0IHRvIE5PIGRveHlnZW4gd2lsbCBvbmx5IHdhcm4gYWJvdXQgd3Jvbmcgb3IgaW5jb21wbGV0ZSBwYXJhbWV0ZXIKKyMgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91dCB0aGUgYWJzZW5jZSBvZiBkb2N1bWVudGF0aW9uLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK1dBUk5fTk9fUEFSQU1ET0MgICAgICAgPSBZRVMKKworIyBUaGUgV0FSTl9GT1JNQVQgdGFnIGRldGVybWluZXMgdGhlIGZvcm1hdCBvZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGRveHlnZW4KKyMgY2FuIHByb2R1Y2UuIFRoZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gdGhlICRmaWxlLCAkbGluZSwgYW5kICR0ZXh0IHRhZ3MsIHdoaWNoCisjIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGZyb20gd2hpY2ggdGhlIHdhcm5pbmcgb3JpZ2luYXRlZAorIyBhbmQgdGhlIHdhcm5pbmcgdGV4dC4gT3B0aW9uYWxseSB0aGUgZm9ybWF0IG1heSBjb250YWluICR2ZXJzaW9uLCB3aGljaCB3aWxsCisjIGJlIHJlcGxhY2VkIGJ5IHRoZSB2ZXJzaW9uIG9mIHRoZSBmaWxlIChpZiBpdCBjb3VsZCBiZSBvYnRhaW5lZCB2aWEKKyMgRklMRV9WRVJTSU9OX0ZJTFRFUikKKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6ICRmaWxlOiRsaW5lOiAkdGV4dC4KKworV0FSTl9GT1JNQVQgICAgICAgICAgICA9ICIkZmlsZTokbGluZTogJHRleHQiCisKKyMgVGhlIFdBUk5fTE9HRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZpbGUgdG8gd2hpY2ggd2FybmluZyBhbmQgZXJyb3IKKyMgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4uIElmIGxlZnQgYmxhbmsgdGhlIG91dHB1dCBpcyB3cml0dGVuIHRvIHN0YW5kYXJkCisjIGVycm9yIChzdGRlcnIpLgorCitXQVJOX0xPR0ZJTEUgICAgICAgICAgID0KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgaW5wdXQgZmlsZXMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgSU5QVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHRoYXQgY29udGFpbgorIyBkb2N1bWVudGVkIHNvdXJjZSBmaWxlcy4gWW91IG1heSBlbnRlciBmaWxlIG5hbWVzIGxpa2UgbXlmaWxlLmNwcCBvcgorIyBkaXJlY3RvcmllcyBsaWtlIC91c3Ivc3JjL215cHJvamVjdC4gU2VwYXJhdGUgdGhlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpdGgKKyMgc3BhY2VzLgorIyBOb3RlOiBJZiB0aGlzIHRhZyBpcyBlbXB0eSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQuCisKK0lOUFVUICAgICAgICAgICAgICAgICAgPSBjb3JlLyBkYWVtb24vCisKKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIG9mIHRoZSBzb3VyY2UgZmlsZXMKKyMgdGhhdCBkb3h5Z2VuIHBhcnNlcy4gSW50ZXJuYWxseSBkb3h5Z2VuIHVzZXMgdGhlIFVURi04IGVuY29kaW5nLiBEb3h5Z2VuIHVzZXMKKyMgbGliaWNvbnYgKG9yIHRoZSBpY29udiBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSB0aGUgbGliaWNvbnYKKyMgZG9jdW1lbnRhdGlvbiAoc2VlOiBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWNvbnYpIGZvciB0aGUgbGlzdCBvZgorIyBwb3NzaWJsZSBlbmNvZGluZ3MuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBVVEYtOC4KKworSU5QVVRfRU5DT0RJTkcgICAgICAgICA9IFVURi04CisKKyMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQorIyBGSUxFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkIHBhdHRlcm5zIChsaWtlICouY3BwIGFuZAorIyAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmsgdGhlCisjIGZvbGxvd2luZyBwYXR0ZXJucyBhcmUgdGVzdGVkOiouYywgKi5jYywgKi5jeHgsICouY3BwLCAqLmMrKywgKi5qYXZhLCAqLmlpLAorIyAqLml4eCwgKi5pcHAsICouaSsrLCAqLmlubCwgKi5pZGwsICouZGRsLCAqLm9kbCwgKi5oLCAqLmhoLCAqLmh4eCwgKi5ocHAsCisjICouaCsrLCAqLmNzLCAqLmQsICoucGhwLCAqLnBocDQsICoucGhwNSwgKi5waHRtbCwgKi5pbmMsICoubSwgKi5tYXJrZG93biwKKyMgKi5tZCwgKi5tbSwgKi5kb3gsICoucHksICouZjkwLCAqLmYsICouZm9yLCAqLnRjbCwgKi52aGQsICoudmhkbCwgKi51Y2YsCisjICoucXNmLCAqLmFzIGFuZCAqLmpzLgorCitGSUxFX1BBVFRFUk5TICAgICAgICAgID0KKworIyBUaGUgUkVDVVJTSVZFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IHN1YmRpcmVjdG9yaWVzIHNob3VsZAorIyBiZSBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgYXMgd2VsbC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitSRUNVUlNJVkUgICAgICAgICAgICAgID0gWUVTCisKKyMgVGhlIEVYQ0xVREUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlCisjIGV4Y2x1ZGVkIGZyb20gdGhlIElOUFVUIHNvdXJjZSBmaWxlcy4gVGhpcyB3YXkgeW91IGNhbiBlYXNpbHkgZXhjbHVkZSBhCisjIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLgorIworIyBOb3RlIHRoYXQgcmVsYXRpdmUgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBkb3h5Z2VuIGlzCisjIHJ1bi4KKworRVhDTFVERSAgICAgICAgICAgICAgICA9CisKKyMgVGhlIEVYQ0xVREVfU1lNTElOS1MgdGFnIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB3aGV0aGVyIG9yIG5vdCBmaWxlcyBvcgorIyBkaXJlY3RvcmllcyB0aGF0IGFyZSBzeW1ib2xpYyBsaW5rcyAoYSBVbml4IGZpbGUgc3lzdGVtIGZlYXR1cmUpIGFyZSBleGNsdWRlZAorIyBmcm9tIHRoZSBpbnB1dC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitFWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KKworIyBJZiB0aGUgdmFsdWUgb2YgdGhlIElOUFVUIHRhZyBjb250YWlucyBkaXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlCisjIEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhjbHVkZQorIyBjZXJ0YWluIGZpbGVzIGZyb20gdGhvc2UgZGlyZWN0b3JpZXMuCisjCisjIE5vdGUgdGhhdCB0aGUgd2lsZGNhcmRzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIGZpbGUgd2l0aCBhYnNvbHV0ZSBwYXRoLCBzbyB0bworIyBleGNsdWRlIGFsbCB0ZXN0IGRpcmVjdG9yaWVzIGZvciBleGFtcGxlIHVzZSB0aGUgcGF0dGVybiAqL3Rlc3QvKgorCitFWENMVURFX1BBVFRFUk5TICAgICAgID0KKworIyBUaGUgRVhDTFVERV9TWU1CT0xTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHN5bWJvbCBuYW1lcworIyAobmFtZXNwYWNlcywgY2xhc3NlcywgZnVuY3Rpb25zLCBldGMuKSB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRoZQorIyBvdXRwdXQuIFRoZSBzeW1ib2wgbmFtZSBjYW4gYmUgYSBmdWxseSBxdWFsaWZpZWQgbmFtZSwgYSB3b3JkLCBvciBpZiB0aGUKKyMgd2lsZGNhcmQgKiBpcyB1c2VkLCBhIHN1YnN0cmluZy4gRXhhbXBsZXM6IEFOYW1lc3BhY2UsIEFDbGFzcywKKyMgQUNsYXNzOjpBTmFtZXNwYWNlLCBBTmFtZXNwYWNlOjoqVGVzdAorIworIyBOb3RlIHRoYXQgdGhlIHdpbGRjYXJkcyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaWxlIHdpdGggYWJzb2x1dGUgcGF0aCwgc28gdG8KKyMgZXhjbHVkZSBhbGwgdGVzdCBkaXJlY3RvcmllcyB1c2UgdGhlIHBhdHRlcm4gKi90ZXN0LyoKKworRVhDTFVERV9TWU1CT0xTICAgICAgICA9CisKKyMgVGhlIEVYQU1QTEVfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBmaWxlcyBvciBkaXJlY3RvcmllcworIyB0aGF0IGNvbnRhaW4gZXhhbXBsZSBjb2RlIGZyYWdtZW50cyB0aGF0IGFyZSBpbmNsdWRlZCAoc2VlIHRoZSBcaW5jbHVkZQorIyBjb21tYW5kKS4KKworRVhBTVBMRV9QQVRIICAgICAgICAgICA9CisKKyMgSWYgdGhlIHZhbHVlIG9mIHRoZSBFWEFNUExFX1BBVEggdGFnIGNvbnRhaW5zIGRpcmVjdG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUKKyMgRVhBTVBMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBwYXR0ZXJuIChsaWtlICouY3BwIGFuZAorIyAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmsgYWxsCisjIGZpbGVzIGFyZSBpbmNsdWRlZC4KKworRVhBTVBMRV9QQVRURVJOUyAgICAgICA9CisKKyMgSWYgdGhlIEVYQU1QTEVfUkVDVVJTSVZFIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gc3ViZGlyZWN0b3JpZXMgd2lsbCBiZQorIyBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgdG8gYmUgdXNlZCB3aXRoIHRoZSBcaW5jbHVkZSBvciBcZG9udGluY2x1ZGUgY29tbWFuZHMKKyMgaXJyZXNwZWN0aXZlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgUkVDVVJTSVZFIHRhZy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitFWEFNUExFX1JFQ1VSU0lWRSAgICAgID0gWUVTCisKKyMgVGhlIElNQUdFX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZmlsZXMgb3IgZGlyZWN0b3JpZXMKKyMgdGhhdCBjb250YWluIGltYWdlcyB0aGF0IGFyZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZQorIyBcaW1hZ2UgY29tbWFuZCkuCisKK0lNQUdFX1BBVEggICAgICAgICAgICAgPQorCisjIFRoZSBJTlBVVF9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIHRoYXQgZG94eWdlbiBzaG91bGQKKyMgaW52b2tlIHRvIGZpbHRlciBmb3IgZWFjaCBpbnB1dCBmaWxlLiBEb3h5Z2VuIHdpbGwgaW52b2tlIHRoZSBmaWx0ZXIgcHJvZ3JhbQorIyBieSBleGVjdXRpbmcgKHZpYSBwb3BlbigpKSB0aGUgY29tbWFuZDoKKyMKKyMgPGZpbHRlcj4gPGlucHV0LWZpbGU+CisjCisjIHdoZXJlIDxmaWx0ZXI+IGlzIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVRfRklMVEVSIHRhZywgYW5kIDxpbnB1dC1maWxlPiBpcyB0aGUKKyMgbmFtZSBvZiBhbiBpbnB1dCBmaWxlLiBEb3h5Z2VuIHdpbGwgdGhlbiB1c2UgdGhlIG91dHB1dCB0aGF0IHRoZSBmaWx0ZXIKKyMgcHJvZ3JhbSB3cml0ZXMgdG8gc3RhbmRhcmQgb3V0cHV0LiBJZiBGSUxURVJfUEFUVEVSTlMgaXMgc3BlY2lmaWVkLCB0aGlzIHRhZworIyB3aWxsIGJlIGlnbm9yZWQuCisjCisjIE5vdGUgdGhhdCB0aGUgZmlsdGVyIG11c3Qgbm90IGFkZCBvciByZW1vdmUgbGluZXM7IGl0IGlzIGFwcGxpZWQgYmVmb3JlIHRoZQorIyBjb2RlIGlzIHNjYW5uZWQsIGJ1dCBub3Qgd2hlbiB0aGUgb3V0cHV0IGNvZGUgaXMgZ2VuZXJhdGVkLiBJZiBsaW5lcyBhcmUgYWRkZWQKKyMgb3IgcmVtb3ZlZCwgdGhlIGFuY2hvcnMgd2lsbCBub3QgYmUgcGxhY2VkIGNvcnJlY3RseS4KKworSU5QVVRfRklMVEVSICAgICAgICAgICA9CisKKyMgVGhlIEZJTFRFUl9QQVRURVJOUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBmaWx0ZXJzIG9uIGEgcGVyIGZpbGUgcGF0dGVybgorIyBiYXNpcy4gRG94eWdlbiB3aWxsIGNvbXBhcmUgdGhlIGZpbGUgbmFtZSB3aXRoIGVhY2ggcGF0dGVybiBhbmQgYXBwbHkgdGhlCisjIGZpbHRlciBpZiB0aGVyZSBpcyBhIG1hdGNoLiBUaGUgZmlsdGVycyBhcmUgYSBsaXN0IG9mIHRoZSBmb3JtOiBwYXR0ZXJuPWZpbHRlcgorIyAobGlrZSAqLmNwcD1teV9jcHBfZmlsdGVyKS4gU2VlIElOUFVUX0ZJTFRFUiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiBob3cKKyMgZmlsdGVycyBhcmUgdXNlZC4gSWYgdGhlIEZJTFRFUl9QQVRURVJOUyB0YWcgaXMgZW1wdHkgb3IgaWYgbm9uZSBvZiB0aGUKKyMgcGF0dGVybnMgbWF0Y2ggdGhlIGZpbGUgbmFtZSwgSU5QVVRfRklMVEVSIGlzIGFwcGxpZWQuCisKK0ZJTFRFUl9QQVRURVJOUyAgICAgICAgPQorCisjIElmIHRoZSBGSUxURVJfU09VUkNFX0ZJTEVTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgaW5wdXQgZmlsdGVyIChpZiBzZXQgdXNpbmcKKyMgSU5QVVRfRklMVEVSICkgd2lsbCBhbHNvIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSBpbnB1dCBmaWxlcyB0aGF0IGFyZSB1c2VkIGZvcgorIyBwcm9kdWNpbmcgdGhlIHNvdXJjZSBmaWxlcyB0byBicm93c2UgKGkuZS4gd2hlbiBTT1VSQ0VfQlJPV1NFUiBpcyBzZXQgdG8gWUVTKS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitGSUxURVJfU09VUkNFX0ZJTEVTICAgID0gTk8KKworIyBUaGUgRklMVEVSX1NPVVJDRV9QQVRURVJOUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBzb3VyY2UgZmlsdGVycyBwZXIgZmlsZQorIyBwYXR0ZXJuLiBBIHBhdHRlcm4gd2lsbCBvdmVycmlkZSB0aGUgc2V0dGluZyBmb3IgRklMVEVSX1BBVFRFUk4gKGlmIGFueSkgYW5kCisjIGl0IGlzIGFsc28gcG9zc2libGUgdG8gZGlzYWJsZSBzb3VyY2UgZmlsdGVyaW5nIGZvciBhIHNwZWNpZmljIHBhdHRlcm4gdXNpbmcKKyMgKi5leHQ9IChzbyB3aXRob3V0IG5hbWluZyBhIGZpbHRlcikuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBGSUxURVJfU09VUkNFX0ZJTEVTIGlzIHNldCB0byBZRVMuCisKK0ZJTFRFUl9TT1VSQ0VfUEFUVEVSTlMgPQorCisjIElmIHRoZSBVU0VfTURGSUxFX0FTX01BSU5QQUdFIHRhZyByZWZlcnMgdG8gdGhlIG5hbWUgb2YgYSBtYXJrZG93biBmaWxlIHRoYXQKKyMgaXMgcGFydCBvZiB0aGUgaW5wdXQsIGl0cyBjb250ZW50cyB3aWxsIGJlIHBsYWNlZCBvbiB0aGUgbWFpbiBwYWdlCisjIChpbmRleC5odG1sKS4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBoYXZlIGEgcHJvamVjdCBvbiBmb3IgaW5zdGFuY2UgR2l0SHViCisjIGFuZCB3YW50IHRvIHJldXNlIHRoZSBpbnRyb2R1Y3Rpb24gcGFnZSBhbHNvIGZvciB0aGUgZG94eWdlbiBvdXRwdXQuCisKK1VTRV9NREZJTEVfQVNfTUFJTlBBR0UgPQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHNvdXJjZSBicm93c2luZworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBTT1VSQ0VfQlJPV1NFUiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGEgbGlzdCBvZiBzb3VyY2UgZmlsZXMgd2lsbCBiZQorIyBnZW5lcmF0ZWQuIERvY3VtZW50ZWQgZW50aXRpZXMgd2lsbCBiZSBjcm9zcy1yZWZlcmVuY2VkIHdpdGggdGhlc2Ugc291cmNlcy4KKyMKKyMgTm90ZTogVG8gZ2V0IHJpZCBvZiBhbGwgc291cmNlIGNvZGUgaW4gdGhlIGdlbmVyYXRlZCBvdXRwdXQsIG1ha2Ugc3VyZSB0aGF0CisjIGFsc28gVkVSQkFUSU1fSEVBREVSUyBpcyBzZXQgdG8gTk8uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworU09VUkNFX0JST1dTRVIgICAgICAgICA9IFlFUworCisjIFNldHRpbmcgdGhlIElOTElORV9TT1VSQ0VTIHRhZyB0byBZRVMgd2lsbCBpbmNsdWRlIHRoZSBib2R5IG9mIGZ1bmN0aW9ucywKKyMgY2xhc3NlcyBhbmQgZW51bXMgZGlyZWN0bHkgaW50byB0aGUgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitJTkxJTkVfU09VUkNFUyAgICAgICAgID0gTk8KKworIyBTZXR0aW5nIHRoZSBTVFJJUF9DT0RFX0NPTU1FTlRTIHRhZyB0byBZRVMgd2lsbCBpbnN0cnVjdCBkb3h5Z2VuIHRvIGhpZGUgYW55CisjIHNwZWNpYWwgY29tbWVudCBibG9ja3MgZnJvbSBnZW5lcmF0ZWQgc291cmNlIGNvZGUgZnJhZ21lbnRzLiBOb3JtYWwgQywgQysrIGFuZAorIyBGb3J0cmFuIGNvbW1lbnRzIHdpbGwgYWx3YXlzIHJlbWFpbiB2aXNpYmxlLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitTVFJJUF9DT0RFX0NPTU1FTlRTICAgID0gWUVTCisKKyMgSWYgdGhlIFJFRkVSRU5DRURfQllfUkVMQVRJT04gdGFnIGlzIHNldCB0byBZRVMgdGhlbiBmb3IgZWFjaCBkb2N1bWVudGVkCisjIGZ1bmN0aW9uIGFsbCBkb2N1bWVudGVkIGZ1bmN0aW9ucyByZWZlcmVuY2luZyBpdCB3aWxsIGJlIGxpc3RlZC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitSRUZFUkVOQ0VEX0JZX1JFTEFUSU9OID0gTk8KKworIyBJZiB0aGUgUkVGRVJFTkNFU19SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQgZnVuY3Rpb24KKyMgYWxsIGRvY3VtZW50ZWQgZW50aXRpZXMgY2FsbGVkL3VzZWQgYnkgdGhhdCBmdW5jdGlvbiB3aWxsIGJlIGxpc3RlZC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitSRUZFUkVOQ0VTX1JFTEFUSU9OICAgID0gTk8KKworIyBJZiB0aGUgUkVGRVJFTkNFU19MSU5LX1NPVVJDRSB0YWcgaXMgc2V0IHRvIFlFUyBhbmQgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldAorIyB0byBZRVMsIHRoZW4gdGhlIGh5cGVybGlua3MgZnJvbSBmdW5jdGlvbnMgaW4gUkVGRVJFTkNFU19SRUxBVElPTiBhbmQKKyMgUkVGRVJFTkNFRF9CWV9SRUxBVElPTiBsaXN0cyB3aWxsIGxpbmsgdG8gdGhlIHNvdXJjZSBjb2RlLiBPdGhlcndpc2UgdGhleSB3aWxsCisjIGxpbmsgdG8gdGhlIGRvY3VtZW50YXRpb24uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1JFRkVSRU5DRVNfTElOS19TT1VSQ0UgPSBZRVMKKworIyBJZiBTT1VSQ0VfVE9PTFRJUFMgaXMgZW5hYmxlZCAodGhlIGRlZmF1bHQpIHRoZW4gaG92ZXJpbmcgYSBoeXBlcmxpbmsgaW4gdGhlCisjIHNvdXJjZSBjb2RlIHdpbGwgc2hvdyBhIHRvb2x0aXAgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgcHJvdG90eXBlLAorIyBicmllZiBkZXNjcmlwdGlvbiBhbmQgbGlua3MgdG8gdGhlIGRlZmluaXRpb24gYW5kIGRvY3VtZW50YXRpb24uIFNpbmNlIHRoaXMKKyMgd2lsbCBtYWtlIHRoZSBIVE1MIGZpbGUgbGFyZ2VyIGFuZCBsb2FkaW5nIG9mIGxhcmdlIGZpbGVzIGEgYml0IHNsb3dlciwgeW91CisjIGNhbiBvcHQgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTT1VSQ0VfQlJPV1NFUiBpcyBzZXQgdG8gWUVTLgorCitTT1VSQ0VfVE9PTFRJUFMgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFVTRV9IVEFHUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSByZWZlcmVuY2VzIHRvIHNvdXJjZSBjb2RlIHdpbGwKKyMgcG9pbnQgdG8gdGhlIEhUTUwgZ2VuZXJhdGVkIGJ5IHRoZSBodGFncygxKSB0b29sIGluc3RlYWQgb2YgZG94eWdlbiBidWlsdC1pbgorIyBzb3VyY2UgYnJvd3Nlci4gVGhlIGh0YWdzIHRvb2wgaXMgcGFydCBvZiBHTlUncyBnbG9iYWwgc291cmNlIHRhZ2dpbmcgc3lzdGVtCisjIChzZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dsb2JhbC9nbG9iYWwuaHRtbCkuIFlvdSB3aWxsIG5lZWQgdmVyc2lvbgorIyA0LjguNiBvciBoaWdoZXIuCisjCisjIFRvIHVzZSBpdCBkbyB0aGUgZm9sbG93aW5nOgorIyAtIEluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGdsb2JhbAorIyAtIEVuYWJsZSBTT1VSQ0VfQlJPV1NFUiBhbmQgVVNFX0hUQUdTIGluIHRoZSBjb25maWcgZmlsZQorIyAtIE1ha2Ugc3VyZSB0aGUgSU5QVVQgcG9pbnRzIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZQorIyAtIFJ1biBkb3h5Z2VuIGFzIG5vcm1hbAorIworIyBEb3h5Z2VuIHdpbGwgaW52b2tlIGh0YWdzIChhbmQgdGhhdCB3aWxsIGluIHR1cm4gaW52b2tlIGd0YWdzKSwgc28gdGhlc2UKKyMgdG9vbHMgbXVzdCBiZSBhdmFpbGFibGUgZnJvbSB0aGUgY29tbWFuZCBsaW5lIChpLmUuIGluIHRoZSBzZWFyY2ggcGF0aCkuCisjCisjIFRoZSByZXN1bHQ6IGluc3RlYWQgb2YgdGhlIHNvdXJjZSBicm93c2VyIGdlbmVyYXRlZCBieSBkb3h5Z2VuLCB0aGUgbGlua3MgdG8KKyMgc291cmNlIGNvZGUgd2lsbCBub3cgcG9pbnQgdG8gdGhlIG91dHB1dCBvZiBodGFncy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUy4KKworVVNFX0hUQUdTICAgICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIFZFUkJBVElNX0hFQURFUlMgdGFnIGlzIHNldCB0aGUgWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKKyMgdmVyYmF0aW0gY29weSBvZiB0aGUgaGVhZGVyIGZpbGUgZm9yIGVhY2ggY2xhc3MgZm9yIHdoaWNoIGFuIGluY2x1ZGUgaXMKKyMgc3BlY2lmaWVkLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgorIyBTZWUgYWxzbzogU2VjdGlvbiBcY2xhc3MuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK1ZFUkJBVElNX0hFQURFUlMgICAgICAgPSBZRVMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgYWxwaGFiZXRpY2FsIGNsYXNzIGluZGV4CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEFMUEhBQkVUSUNBTF9JTkRFWCB0YWcgaXMgc2V0IHRvIFlFUywgYW4gYWxwaGFiZXRpY2FsIGluZGV4IG9mIGFsbAorIyBjb21wb3VuZHMgd2lsbCBiZSBnZW5lcmF0ZWQuIEVuYWJsZSB0aGlzIGlmIHRoZSBwcm9qZWN0IGNvbnRhaW5zIGEgbG90IG9mCisjIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBvciBpbnRlcmZhY2VzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitBTFBIQUJFVElDQUxfSU5ERVggICAgID0gWUVTCisKKyMgVGhlIENPTFNfSU5fQUxQSEFfSU5ERVggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluCisjIHdoaWNoIHRoZSBhbHBoYWJldGljYWwgaW5kZXggbGlzdCB3aWxsIGJlIHNwbGl0LgorIyBNaW5pbXVtIHZhbHVlOiAxLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1ZTogNS4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEFMUEhBQkVUSUNBTF9JTkRFWCBpcyBzZXQgdG8gWUVTLgorCitDT0xTX0lOX0FMUEhBX0lOREVYICAgID0gNQorCisjIEluIGNhc2UgYWxsIGNsYXNzZXMgaW4gYSBwcm9qZWN0IHN0YXJ0IHdpdGggYSBjb21tb24gcHJlZml4LCBhbGwgY2xhc3NlcyB3aWxsCisjIGJlIHB1dCB1bmRlciB0aGUgc2FtZSBoZWFkZXIgaW4gdGhlIGFscGhhYmV0aWNhbCBpbmRleC4gVGhlIElHTk9SRV9QUkVGSVggdGFnCisjIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcmVmaXggKG9yIGEgbGlzdCBvZiBwcmVmaXhlcykgdGhhdCBzaG91bGQgYmUgaWdub3JlZAorIyB3aGlsZSBnZW5lcmF0aW5nIHRoZSBpbmRleCBoZWFkZXJzLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgQUxQSEFCRVRJQ0FMX0lOREVYIGlzIHNldCB0byBZRVMuCisKK0lHTk9SRV9QUkVGSVggICAgICAgICAgPQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBIVE1MIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9IVE1MIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBIVE1MIG91dHB1dAorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitHRU5FUkFURV9IVE1MICAgICAgICAgID0gWUVTCisKKyMgVGhlIEhUTUxfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIEhUTUwgZG9jcyB3aWxsIGJlIHB1dC4gSWYgYQorIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKKyMgaXQuCisjIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogaHRtbC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9PVVRQVVQgICAgICAgICAgICA9IC4vCisKKyMgVGhlIEhUTUxfRklMRV9FWFRFTlNJT04gdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBlYWNoCisjIGdlbmVyYXRlZCBIVE1MIHBhZ2UgKGZvciBleGFtcGxlOiAuaHRtLCAucGhwLCAuYXNwKS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IC5odG1sLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitIVE1MX0ZJTEVfRVhURU5TSU9OICAgID0gLmh0bWwKKworIyBUaGUgSFRNTF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmluZWQgSFRNTCBoZWFkZXIgZmlsZSBmb3IKKyMgZWFjaCBnZW5lcmF0ZWQgSFRNTCBwYWdlLiBJZiB0aGUgdGFnIGlzIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKKyMgc3RhbmRhcmQgaGVhZGVyLgorIworIyBUbyBnZXQgdmFsaWQgSFRNTCB0aGUgaGVhZGVyIGZpbGUgdGhhdCBpbmNsdWRlcyBhbnkgc2NyaXB0cyBhbmQgc3R5bGUgc2hlZXRzCisjIHRoYXQgZG94eWdlbiBuZWVkcywgd2hpY2ggaXMgZGVwZW5kZW50IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdXNlZCAoZS5nLgorIyB0aGUgc2V0dGluZyBHRU5FUkFURV9UUkVFVklFVykuIEl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBzdGFydCB3aXRoIGEKKyMgZGVmYXVsdCBoZWFkZXIgdXNpbmcKKyMgZG94eWdlbiAtdyBodG1sIG5ld19oZWFkZXIuaHRtbCBuZXdfZm9vdGVyLmh0bWwgbmV3X3N0eWxlc2hlZXQuY3NzCisjIFlvdXJDb25maWdGaWxlCisjIGFuZCB0aGVuIG1vZGlmeSB0aGUgZmlsZSBuZXdfaGVhZGVyLmh0bWwuIFNlZSBhbHNvIHNlY3Rpb24gIkRveHlnZW4gdXNhZ2UiCisjIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2VuZXJhdGUgdGhlIGRlZmF1bHQgaGVhZGVyIHRoYXQgZG94eWdlbiBub3JtYWxseQorIyB1c2VzLgorIyBOb3RlOiBUaGUgaGVhZGVyIGlzIHN1YmplY3QgdG8gY2hhbmdlIHNvIHlvdSB0eXBpY2FsbHkgaGF2ZSB0byByZWdlbmVyYXRlIHRoZQorIyBkZWZhdWx0IGhlYWRlciB3aGVuIHVwZ3JhZGluZyB0byBhIG5ld2VyIHZlcnNpb24gb2YgZG94eWdlbi4gRm9yIGEgZGVzY3JpcHRpb24KKyMgb2YgdGhlIHBvc3NpYmxlIG1hcmtlcnMgYW5kIGJsb2NrIG5hbWVzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9IRUFERVIgICAgICAgICAgICA9IC4uL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9uYW1lZF9kYXRhX2hlYWRlci5odG1sCisKKyMgVGhlIEhUTUxfRk9PVEVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIEhUTUwgZm9vdGVyIGZvciBlYWNoCisjIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElmIHRoZSB0YWcgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzdGFuZGFyZAorIyBmb290ZXIuIFNlZSBIVE1MX0hFQURFUiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2VuZXJhdGUgYSBkZWZhdWx0CisjIGZvb3RlciBhbmQgd2hhdCBzcGVjaWFsIGNvbW1hbmRzIGNhbiBiZSB1c2VkIGluc2lkZSB0aGUgZm9vdGVyLiBTZWUgYWxzbworIyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGZvb3RlcgorIyB0aGF0IGRveHlnZW4gbm9ybWFsbHkgdXNlcy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9GT09URVIgICAgICAgICAgICA9IEBIVE1MX0ZPT1RFUkAKKworIyBUaGUgSFRNTF9TVFlMRVNIRUVUIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIGNhc2NhZGluZyBzdHlsZQorIyBzaGVldCB0aGF0IGlzIHVzZWQgYnkgZWFjaCBIVE1MIHBhZ2UuIEl0IGNhbiBiZSB1c2VkIHRvIGZpbmUtdHVuZSB0aGUgbG9vayBvZgorIyB0aGUgSFRNTCBvdXRwdXQuIElmIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZGVmYXVsdCBzdHlsZSBzaGVldC4KKyMgU2VlIGFsc28gc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUgc3R5bGUKKyMgc2hlZXQgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5IHVzZXMuCisjIE5vdGU6IEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBIVE1MX0VYVFJBX1NUWUxFU0hFRVQgaW5zdGVhZCBvZiB0aGlzIHRhZywgYXMKKyMgaXQgaXMgbW9yZSByb2J1c3QgYW5kIHRoaXMgdGFnIChIVE1MX1NUWUxFU0hFRVQpIHdpbGwgaW4gdGhlIGZ1dHVyZSBiZWNvbWUKKyMgb2Jzb2xldGUuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0hUTUxfU1RZTEVTSEVFVCAgICAgICAgPSAuLi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL25hbWVkX2RhdGFfZG94eWdlbi5jc3MKKworIyBUaGUgSFRNTF9FWFRSQV9TVFlMRVNIRUVUIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFkZGl0aW9uYWwgdXNlci0KKyMgZGVmaW5lZCBjYXNjYWRpbmcgc3R5bGUgc2hlZXQgdGhhdCBpcyBpbmNsdWRlZCBhZnRlciB0aGUgc3RhbmRhcmQgc3R5bGUgc2hlZXRzCisjIGNyZWF0ZWQgYnkgZG94eWdlbi4gVXNpbmcgdGhpcyBvcHRpb24gb25lIGNhbiBvdmVycnVsZSBjZXJ0YWluIHN0eWxlIGFzcGVjdHMuCisjIFRoaXMgaXMgcHJlZmVycmVkIG92ZXIgdXNpbmcgSFRNTF9TVFlMRVNIRUVUIHNpbmNlIGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlCisjIHN0YW5kYXJkIHN0eWxlIHNoZWV0IGFuZCBpcyB0aGVyZWZvciBtb3JlIHJvYnVzdCBhZ2FpbnN0IGZ1dHVyZSB1cGRhdGVzLgorIyBEb3h5Z2VuIHdpbGwgY29weSB0aGUgc3R5bGUgc2hlZXQgZmlsZSB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4gRm9yIGFuIGV4YW1wbGUKKyMgc2VlIHRoZSBkb2N1bWVudGF0aW9uLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitIVE1MX0VYVFJBX1NUWUxFU0hFRVQgID0KKworIyBUaGUgSFRNTF9FWFRSQV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBleHRyYSBpbWFnZXMgb3IKKyMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBjb3BpZWQgdG8gdGhlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gTm90ZQorIyB0aGF0IHRoZXNlIGZpbGVzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBiYXNlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gVXNlIHRoZQorIyAkcmVscGF0aF4gbWFya2VyIGluIHRoZSBIVE1MX0hFQURFUiBhbmQvb3IgSFRNTF9GT09URVIgZmlsZXMgdG8gbG9hZCB0aGVzZQorIyBmaWxlcy4gSW4gdGhlIEhUTUxfU1RZTEVTSEVFVCBmaWxlLCB1c2UgdGhlIGZpbGUgbmFtZSBvbmx5LiBBbHNvIG5vdGUgdGhhdCB0aGUKKyMgZmlsZXMgd2lsbCBiZSBjb3BpZWQgYXMtaXM7IHRoZXJlIGFyZSBubyBjb21tYW5kcyBvciBtYXJrZXJzIGF2YWlsYWJsZS4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9FWFRSQV9GSUxFUyAgICAgICA9IC4uL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvZG94eWdlbi5jc3MgXAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvYmFzZS5jc3MgXAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvZm91bmRhdGlvbi5jc3MgXAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvYmFyLXRvcC5wbmcKKworIyBUaGUgSFRNTF9DT0xPUlNUWUxFX0hVRSB0YWcgY29udHJvbHMgdGhlIGNvbG9yIG9mIHRoZSBIVE1MIG91dHB1dC4gRG94eWdlbgorIyB3aWxsIGFkanVzdCB0aGUgY29sb3JzIGluIHRoZSBzdHlsZXNoZWV0IGFuZCBiYWNrZ3JvdW5kIGltYWdlcyBhY2NvcmRpbmcgdG8KKyMgdGhpcyBjb2xvci4gSHVlIGlzIHNwZWNpZmllZCBhcyBhbiBhbmdsZSBvbiBhIGNvbG9yd2hlZWwsIHNlZQorIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gRm9yIGluc3RhbmNlIHRoZSB2YWx1ZQorIyAwIHJlcHJlc2VudHMgcmVkLCA2MCBpcyB5ZWxsb3csIDEyMCBpcyBncmVlbiwgMTgwIGlzIGN5YW4sIDI0MCBpcyBibHVlLCAzMDAKKyMgcHVycGxlLCBhbmQgMzYwIGlzIHJlZCBhZ2Fpbi4KKyMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMzU5LCBkZWZhdWx0IHZhbHVlOiAyMjAuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0hUTUxfQ09MT1JTVFlMRV9IVUUgICAgPSAwCisKKyMgVGhlIEhUTUxfQ09MT1JTVFlMRV9TQVQgdGFnIGNvbnRyb2xzIHRoZSBwdXJpdHkgKG9yIHNhdHVyYXRpb24pIG9mIHRoZSBjb2xvcnMKKyMgaW4gdGhlIEhUTUwgb3V0cHV0LiBGb3IgYSB2YWx1ZSBvZiAwIHRoZSBvdXRwdXQgd2lsbCB1c2UgZ3JheXNjYWxlcyBvbmx5LiBBCisjIHZhbHVlIG9mIDI1NSB3aWxsIHByb2R1Y2UgdGhlIG1vc3Qgdml2aWQgY29sb3JzLgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyNTUsIGRlZmF1bHQgdmFsdWU6IDEwMC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9DT0xPUlNUWUxFX1NBVCAgICA9IDAKKworIyBUaGUgSFRNTF9DT0xPUlNUWUxFX0dBTU1BIHRhZyBjb250cm9scyB0aGUgZ2FtbWEgY29ycmVjdGlvbiBhcHBsaWVkIHRvIHRoZQorIyBsdW1pbmFuY2UgY29tcG9uZW50IG9mIHRoZSBjb2xvcnMgaW4gdGhlIEhUTUwgb3V0cHV0LiBWYWx1ZXMgYmVsb3cgMTAwCisjIGdyYWR1YWxseSBtYWtlIHRoZSBvdXRwdXQgbGlnaHRlciwgd2hlcmVhcyB2YWx1ZXMgYWJvdmUgMTAwIG1ha2UgdGhlIG91dHB1dAorIyBkYXJrZXIuIFRoZSB2YWx1ZSBkaXZpZGVkIGJ5IDEwMCBpcyB0aGUgYWN0dWFsIGdhbW1hIGFwcGxpZWQsIHNvIDgwIHJlcHJlc2VudHMKKyMgYSBnYW1tYSBvZiAwLjgsIFRoZSB2YWx1ZSAyMjAgcmVwcmVzZW50cyBhIGdhbW1hIG9mIDIuMiwgYW5kIDEwMCBkb2VzIG5vdAorIyBjaGFuZ2UgdGhlIGdhbW1hLgorIyBNaW5pbXVtIHZhbHVlOiA0MCwgbWF4aW11bSB2YWx1ZTogMjQwLCBkZWZhdWx0IHZhbHVlOiA4MC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9DT0xPUlNUWUxFX0dBTU1BICA9IDkxCisKKyMgSWYgdGhlIEhUTUxfVElNRVNUQU1QIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIGZvb3RlciBvZiBlYWNoIGdlbmVyYXRlZCBIVE1MCisjIHBhZ2Ugd2lsbCBjb250YWluIHRoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHBhZ2Ugd2FzIGdlbmVyYXRlZC4gU2V0dGluZyB0aGlzCisjIHRvIE5PIGNhbiBoZWxwIHdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgbXVsdGlwbGUgcnVucy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworSFRNTF9USU1FU1RBTVAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBIVE1MX0RZTkFNSUNfU0VDVElPTlMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgZ2VuZXJhdGVkIEhUTUwKKyMgZG9jdW1lbnRhdGlvbiB3aWxsIGNvbnRhaW4gc2VjdGlvbnMgdGhhdCBjYW4gYmUgaGlkZGVuIGFuZCBzaG93biBhZnRlciB0aGUKKyMgcGFnZSBoYXMgbG9hZGVkLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0hUTUxfRFlOQU1JQ19TRUNUSU9OUyAgPSBOTworCisjIFdpdGggSFRNTF9JTkRFWF9OVU1fRU5UUklFUyBvbmUgY2FuIGNvbnRyb2wgdGhlIHByZWZlcnJlZCBudW1iZXIgb2YgZW50cmllcworIyBzaG93biBpbiB0aGUgdmFyaW91cyB0cmVlIHN0cnVjdHVyZWQgaW5kaWNlcyBpbml0aWFsbHk7IHRoZSB1c2VyIGNhbiBleHBhbmQKKyMgYW5kIGNvbGxhcHNlIGVudHJpZXMgZHluYW1pY2FsbHkgbGF0ZXIgb24uIERveHlnZW4gd2lsbCBleHBhbmQgdGhlIHRyZWUgdG8KKyMgc3VjaCBhIGxldmVsIHRoYXQgYXQgbW9zdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBlbnRyaWVzIGFyZSB2aXNpYmxlICh1bmxlc3MKKyMgYSBmdWxseSBjb2xsYXBzZWQgdHJlZSBhbHJlYWR5IGV4Y2VlZHMgdGhpcyBhbW91bnQpLiBTbyBzZXR0aW5nIHRoZSBudW1iZXIgb2YKKyMgZW50cmllcyAxIHdpbGwgcHJvZHVjZSBhIGZ1bGwgY29sbGFwc2VkIHRyZWUgYnkgZGVmYXVsdC4gMCBpcyBhIHNwZWNpYWwgdmFsdWUKKyMgcmVwcmVzZW50aW5nIGFuIGluZmluaXRlIG51bWJlciBvZiBlbnRyaWVzIGFuZCB3aWxsIHJlc3VsdCBpbiBhIGZ1bGwgZXhwYW5kZWQKKyMgdHJlZSBieSBkZWZhdWx0LgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5OTk5LCBkZWZhdWx0IHZhbHVlOiAxMDAuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0hUTUxfSU5ERVhfTlVNX0VOVFJJRVMgPSAxMDAKKworIyBJZiB0aGUgR0VORVJBVEVfRE9DU0VUIHRhZyBpcyBzZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUKKyMgZ2VuZXJhdGVkIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIEFwcGxlJ3MgWGNvZGUgMyBpbnRlZ3JhdGVkIGRldmVsb3BtZW50CisjIGVudmlyb25tZW50IChzZWU6IGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3Rvb2xzL3hjb2RlLyksIGludHJvZHVjZWQgd2l0aAorIyBPU1ggMTAuNSAoTGVvcGFyZCkuIFRvIGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gc2V0LCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQorIyBNYWtlZmlsZSBpbiB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LiBSdW5uaW5nIG1ha2Ugd2lsbCBwcm9kdWNlIHRoZSBkb2NzZXQgaW4KKyMgdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bm5pbmcgbWFrZSBpbnN0YWxsIHdpbGwgaW5zdGFsbCB0aGUgZG9jc2V0IGluCisjIH4vTGlicmFyeS9EZXZlbG9wZXIvU2hhcmVkL0RvY3VtZW50YXRpb24vRG9jU2V0cyBzbyB0aGF0IFhjb2RlIHdpbGwgZmluZCBpdCBhdAorIyBzdGFydHVwLiBTZWUgaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vdG9vbHMvY3JlYXRpbmdkb2NzZXRzd2l0aGRveHlnZW4uaHRtbAorIyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitHRU5FUkFURV9ET0NTRVQgICAgICAgID0gTk8KKworIyBUaGlzIHRhZyBkZXRlcm1pbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2NzZXQgZmVlZC4gQSBkb2N1bWVudGF0aW9uIGZlZWQgcHJvdmlkZXMKKyMgYW4gdW1icmVsbGEgdW5kZXIgd2hpY2ggbXVsdGlwbGUgZG9jdW1lbnRhdGlvbiBzZXRzIGZyb20gYSBzaW5nbGUgcHJvdmlkZXIKKyMgKHN1Y2ggYXMgYSBjb21wYW55IG9yIHByb2R1Y3Qgc3VpdGUpIGNhbiBiZSBncm91cGVkLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogRG94eWdlbiBnZW5lcmF0ZWQgZG9jcy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgorCitET0NTRVRfRkVFRE5BTUUgICAgICAgID0gIkRveHlnZW4gZ2VuZXJhdGVkIGRvY3MiCisKKyMgVGhpcyB0YWcgc3BlY2lmaWVzIGEgc3RyaW5nIHRoYXQgc2hvdWxkIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBkb2N1bWVudGF0aW9uCisjIHNldCBidW5kbGUuIFRoaXMgc2hvdWxkIGJlIGEgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHlsZSBzdHJpbmcsIGUuZy4KKyMgY29tLm15Y29tcGFueS5NeURvY1NldC4gRG94eWdlbiB3aWxsIGFwcGVuZCAuZG9jc2V0IHRvIHRoZSBuYW1lLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRveHlnZW4uUHJvamVjdC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgorCitET0NTRVRfQlVORExFX0lEICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdAorCisjIFRoZSBET0NTRVRfUFVCTElTSEVSX0lEIHRhZyBzcGVjaWZpZXMgYSBzdHJpbmcgdGhhdCBzaG91bGQgdW5pcXVlbHkgaWRlbnRpZnkKKyMgdGhlIGRvY3VtZW50YXRpb24gcHVibGlzaGVyLiBUaGlzIHNob3VsZCBiZSBhIHJldmVyc2UgZG9tYWluLW5hbWUgc3R5bGUKKyMgc3RyaW5nLCBlLmcuIGNvbS5teWNvbXBhbnkuTXlEb2NTZXQuZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlB1Ymxpc2hlci4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgorCitET0NTRVRfUFVCTElTSEVSX0lEICAgID0gb3JnLmRveHlnZW4uUHVibGlzaGVyCisKKyMgVGhlIERPQ1NFVF9QVUJMSVNIRVJfTkFNRSB0YWcgaWRlbnRpZmllcyB0aGUgZG9jdW1lbnRhdGlvbiBwdWJsaXNoZXIuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBQdWJsaXNoZXIuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NTRVQgaXMgc2V0IHRvIFlFUy4KKworRE9DU0VUX1BVQkxJU0hFUl9OQU1FICA9IFB1Ymxpc2hlcgorCisjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gZ2VuZXJhdGVzIHRocmVlCisjIGFkZGl0aW9uYWwgSFRNTCBpbmRleCBmaWxlczogaW5kZXguaGhwLCBpbmRleC5oaGMsIGFuZCBpbmRleC5oaGsuIFRoZQorIyBpbmRleC5oaHAgaXMgYSBwcm9qZWN0IGZpbGUgdGhhdCBjYW4gYmUgcmVhZCBieSBNaWNyb3NvZnQncyBIVE1MIEhlbHAgV29ya3Nob3AKKyMgKHNlZTogaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0yMTEzOCkgb24KKyMgV2luZG93cy4KKyMKKyMgVGhlIEhUTUwgSGVscCBXb3Jrc2hvcCBjb250YWlucyBhIGNvbXBpbGVyIHRoYXQgY2FuIGNvbnZlcnQgYWxsIEhUTUwgb3V0cHV0CisjIGdlbmVyYXRlZCBieSBkb3h5Z2VuIGludG8gYSBzaW5nbGUgY29tcGlsZWQgSFRNTCBmaWxlICguY2htKS4gQ29tcGlsZWQgSFRNTAorIyBmaWxlcyBhcmUgbm93IHVzZWQgYXMgdGhlIFdpbmRvd3MgOTggaGVscCBmb3JtYXQsIGFuZCB3aWxsIHJlcGxhY2UgdGhlIG9sZAorIyBXaW5kb3dzIGhlbHAgZm9ybWF0ICguaGxwKSBvbiBhbGwgV2luZG93cyBwbGF0Zm9ybXMgaW4gdGhlIGZ1dHVyZS4gQ29tcHJlc3NlZAorIyBIVE1MIGZpbGVzIGFsc28gY29udGFpbiBhbiBpbmRleCwgYSB0YWJsZSBvZiBjb250ZW50cywgYW5kIHlvdSBjYW4gc2VhcmNoIGZvcgorIyB3b3JkcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gVGhlIEhUTUwgd29ya3Nob3AgYWxzbyBjb250YWlucyBhIHZpZXdlciBmb3IKKyMgY29tcHJlc3NlZCBIVE1MIGZpbGVzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0dFTkVSQVRFX0hUTUxIRUxQICAgICAgPSBOTworCisjIFRoZSBDSE1fRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgLmNobQorIyBmaWxlLiBZb3UgY2FuIGFkZCBhIHBhdGggaW4gZnJvbnQgb2YgdGhlIGZpbGUgaWYgdGhlIHJlc3VsdCBzaG91bGQgbm90IGJlCisjIHdyaXR0ZW4gdG8gdGhlIGh0bWwgb3V0cHV0IGRpcmVjdG9yeS4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCisKK0NITV9GSUxFICAgICAgICAgICAgICAgPQorCisjIFRoZSBISENfTE9DQVRJT04gdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIChhYnNvbHV0ZSBwYXRoCisjIGluY2x1ZGluZyBmaWxlIG5hbWUpIG9mIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgKCBoaGMuZXhlKS4gSWYgbm9uLWVtcHR5CisjIGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgb24gdGhlIGdlbmVyYXRlZCBpbmRleC5oaHAuCisjIFRoZSBmaWxlIGhhcyB0byBiZSBzcGVjaWZpZWQgd2l0aCBmdWxsIHBhdGguCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgorCitISENfTE9DQVRJT04gICAgICAgICAgID0KKworIyBUaGUgR0VORVJBVEVfQ0hJIGZsYWcgY29udHJvbHMgaWYgYSBzZXBhcmF0ZSAuY2hpIGluZGV4IGZpbGUgaXMgZ2VuZXJhdGVkICgKKyMgWUVTKSBvciB0aGF0IGl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbWFzdGVyIC5jaG0gZmlsZSAoIE5PKS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KKworR0VORVJBVEVfQ0hJICAgICAgICAgICA9IE5PCisKKyMgVGhlIENITV9JTkRFWF9FTkNPRElORyBpcyB1c2VkIHRvIGVuY29kZSBIdG1sSGVscCBpbmRleCAoIGhoayksIGNvbnRlbnQgKCBoaGMpCisjIGFuZCBwcm9qZWN0IGZpbGUgY29udGVudC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCisKK0NITV9JTkRFWF9FTkNPRElORyAgICAgPQorCisjIFRoZSBCSU5BUllfVE9DIGZsYWcgY29udHJvbHMgd2hldGhlciBhIGJpbmFyeSB0YWJsZSBvZiBjb250ZW50cyBpcyBnZW5lcmF0ZWQgKAorIyBZRVMpIG9yIGEgbm9ybWFsIHRhYmxlIG9mIGNvbnRlbnRzICggTk8pIGluIHRoZSAuY2htIGZpbGUuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCisKK0JJTkFSWV9UT0MgICAgICAgICAgICAgPSBOTworCisjIFRoZSBUT0NfRVhQQU5EIGZsYWcgY2FuIGJlIHNldCB0byBZRVMgdG8gYWRkIGV4dHJhIGl0ZW1zIGZvciBncm91cCBtZW1iZXJzIHRvCisjIHRoZSB0YWJsZSBvZiBjb250ZW50cyBvZiB0aGUgSFRNTCBoZWxwIGRvY3VtZW50YXRpb24gYW5kIHRvIHRoZSB0cmVlIHZpZXcuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCisKK1RPQ19FWFBBTkQgICAgICAgICAgICAgPSBOTworCisjIElmIHRoZSBHRU5FUkFURV9RSFAgdGFnIGlzIHNldCB0byBZRVMgYW5kIGJvdGggUUhQX05BTUVTUEFDRSBhbmQKKyMgUUhQX1ZJUlRVQUxfRk9MREVSIGFyZSBzZXQsIGFuIGFkZGl0aW9uYWwgaW5kZXggZmlsZSB3aWxsIGJlIGdlbmVyYXRlZCB0aGF0CisjIGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBRdCdzIHFoZWxwZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIGEgUXQgQ29tcHJlc3NlZCBIZWxwCisjICgucWNoKSBvZiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitHRU5FUkFURV9RSFAgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgUUhHX0xPQ0FUSU9OIHRhZyBpcyBzcGVjaWZpZWQsIHRoZSBRQ0hfRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeQorIyB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgLnFjaCBmaWxlLiBUaGUgcGF0aCBzcGVjaWZpZWQgaXMgcmVsYXRpdmUgdG8KKyMgdGhlIEhUTUwgb3V0cHV0IGZvbGRlci4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgorCitRQ0hfRklMRSAgICAgICAgICAgICAgID0KKworIyBUaGUgUUhQX05BTUVTUEFDRSB0YWcgc3BlY2lmaWVzIHRoZSBuYW1lc3BhY2UgdG8gdXNlIHdoZW4gZ2VuZXJhdGluZyBRdCBIZWxwCisjIFByb2plY3Qgb3V0cHV0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0IEhlbHAgUHJvamVjdCAvIE5hbWVzcGFjZQorIyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjbmFtZXNwYWNlKS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlByb2plY3QuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KKworUUhQX05BTUVTUEFDRSAgICAgICAgICA9IG9yZy5kb3h5Z2VuLlByb2plY3QKKworIyBUaGUgUUhQX1ZJUlRVQUxfRk9MREVSIHRhZyBzcGVjaWZpZXMgdGhlIG5hbWVzcGFjZSB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIFF0CisjIEhlbHAgUHJvamVjdCBvdXRwdXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gVmlydHVhbAorIyBGb2xkZXJzIChzZWU6IGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCN2aXJ0dWFsLQorIyBmb2xkZXJzKS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGRvYy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgorCitRSFBfVklSVFVBTF9GT0xERVIgICAgID0gZG9jCisKKyMgSWYgdGhlIFFIUF9DVVNUX0ZJTFRFUl9OQU1FIHRhZyBpcyBzZXQsIGl0IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGN1c3RvbQorIyBmaWx0ZXIgdG8gYWRkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0IEhlbHAgUHJvamVjdCAvIEN1c3RvbQorIyBGaWx0ZXJzIChzZWU6IGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCNjdXN0b20tCisjIGZpbHRlcnMpLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCisKK1FIUF9DVVNUX0ZJTFRFUl9OQU1FICAgPQorCisjIFRoZSBRSFBfQ1VTVF9GSUxURVJfQVRUUlMgdGFnIHNwZWNpZmllcyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyBvZiB0aGUKKyMgY3VzdG9tIGZpbHRlciB0byBhZGQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gQ3VzdG9tCisjIEZpbHRlcnMgKHNlZTogaHR0cDovL3F0LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI2N1c3RvbS0KKyMgZmlsdGVycykuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KKworUUhQX0NVU1RfRklMVEVSX0FUVFJTICA9CisKKyMgVGhlIFFIUF9TRUNUX0ZJTFRFUl9BVFRSUyB0YWcgc3BlY2lmaWVzIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIHRoaXMKKyMgcHJvamVjdCdzIGZpbHRlciBzZWN0aW9uIG1hdGNoZXMuIFF0IEhlbHAgUHJvamVjdCAvIEZpbHRlciBBdHRyaWJ1dGVzIChzZWU6CisjIGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCNmaWx0ZXItYXR0cmlidXRlcykuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KKworUUhQX1NFQ1RfRklMVEVSX0FUVFJTICA9CisKKyMgVGhlIFFIR19MT0NBVElPTiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgUXQncworIyBxaGVscGdlbmVyYXRvci4gSWYgbm9uLWVtcHR5IGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIHFoZWxwZ2VuZXJhdG9yIG9uIHRoZQorIyBnZW5lcmF0ZWQgLnFocCBmaWxlLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCisKK1FIR19MT0NBVElPTiAgICAgICAgICAgPQorCisjIElmIHRoZSBHRU5FUkFURV9FQ0xJUFNFSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBmaWxlcyB3aWxsIGJlCisjIGdlbmVyYXRlZCwgdG9nZXRoZXIgd2l0aCB0aGUgSFRNTCBmaWxlcywgdGhleSBmb3JtIGFuIEVjbGlwc2UgaGVscCBwbHVnaW4uIFRvCisjIGluc3RhbGwgdGhpcyBwbHVnaW4gYW5kIG1ha2UgaXQgYXZhaWxhYmxlIHVuZGVyIHRoZSBoZWxwIGNvbnRlbnRzIG1lbnUgaW4KKyMgRWNsaXBzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgSFRNTCBhbmQgWE1MIGZpbGVzIG5lZWRzCisjIHRvIGJlIGNvcGllZCBpbnRvIHRoZSBwbHVnaW5zIGRpcmVjdG9yeSBvZiBlY2xpcHNlLiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5CisjIHdpdGhpbiB0aGUgcGx1Z2lucyBkaXJlY3Rvcnkgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBFQ0xJUFNFX0RPQ19JRCB2YWx1ZS4KKyMgQWZ0ZXIgY29weWluZyBFY2xpcHNlIG5lZWRzIHRvIGJlIHJlc3RhcnRlZCBiZWZvcmUgdGhlIGhlbHAgYXBwZWFycy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitHRU5FUkFURV9FQ0xJUFNFSEVMUCAgID0gTk8KKworIyBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRWNsaXBzZSBoZWxwIHBsdWdpbi4gV2hlbiBpbnN0YWxsaW5nIHRoZSBwbHVnaW4KKyMgdGhlIGRpcmVjdG9yeSBuYW1lIGNvbnRhaW5pbmcgdGhlIEhUTUwgYW5kIFhNTCBmaWxlcyBzaG91bGQgYWxzbyBoYXZlIHRoaXMKKyMgbmFtZS4gRWFjaCBkb2N1bWVudGF0aW9uIHNldCBzaG91bGQgaGF2ZSBpdHMgb3duIGlkZW50aWZpZXIuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdlbi5Qcm9qZWN0LgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfRUNMSVBTRUhFTFAgaXMgc2V0IHRvIFlFUy4KKworRUNMSVBTRV9ET0NfSUQgICAgICAgICA9IG9yZy5kb3h5Z2VuLlByb2plY3QKKworIyBJZiB5b3Ugd2FudCBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0IG9mIHRoZSBnZW5lcmF0ZWQgSFRNTCBwYWdlcyBpdCBtaWdodAorIyBiZSBuZWNlc3NhcnkgdG8gZGlzYWJsZSB0aGUgaW5kZXggYW5kIHJlcGxhY2UgaXQgd2l0aCB5b3VyIG93bi4gVGhlCisjIERJU0FCTEVfSU5ERVggdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIHRoZSBjb25kZW5zZWQgaW5kZXggKHRhYnMpIGF0IHRvcAorIyBvZiBlYWNoIEhUTUwgcGFnZS4gQSB2YWx1ZSBvZiBOTyBlbmFibGVzIHRoZSBpbmRleCBhbmQgdGhlIHZhbHVlIFlFUyBkaXNhYmxlcworIyBpdC4gU2luY2UgdGhlIHRhYnMgaW4gdGhlIGluZGV4IGNvbnRhaW4gdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIG5hdmlnYXRpb24KKyMgdHJlZSwgeW91IGNhbiBzZXQgdGhpcyBvcHRpb24gdG8gWUVTIGlmIHlvdSBhbHNvIHNldCBHRU5FUkFURV9UUkVFVklFVyB0byBZRVMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworRElTQUJMRV9JTkRFWCAgICAgICAgICA9IE5PCisKKyMgVGhlIEdFTkVSQVRFX1RSRUVWSUVXIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBhIHRyZWUtbGlrZSBpbmRleAorIyBzdHJ1Y3R1cmUgc2hvdWxkIGJlIGdlbmVyYXRlZCB0byBkaXNwbGF5IGhpZXJhcmNoaWNhbCBpbmZvcm1hdGlvbi4gSWYgdGhlIHRhZworIyB2YWx1ZSBpcyBzZXQgdG8gWUVTLCBhIHNpZGUgcGFuZWwgd2lsbCBiZSBnZW5lcmF0ZWQgY29udGFpbmluZyBhIHRyZWUtbGlrZQorIyBpbmRleCBzdHJ1Y3R1cmUgKGp1c3QgbGlrZSB0aGUgb25lIHRoYXQgaXMgZ2VuZXJhdGVkIGZvciBIVE1MIEhlbHApLiBGb3IgdGhpcworIyB0byB3b3JrIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRzIEphdmFTY3JpcHQsIERIVE1MLCBDU1MgYW5kIGZyYW1lcyBpcyByZXF1aXJlZAorIyAoaS5lLiBhbnkgbW9kZXJuIGJyb3dzZXIpLiBXaW5kb3dzIHVzZXJzIGFyZSBwcm9iYWJseSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZQorIyBIVE1MIGhlbHAgZmVhdHVyZS4gVmlhIGN1c3RvbSBzdHlsZXNoZWV0cyAoc2VlIEhUTUxfRVhUUkFfU1RZTEVTSEVFVCkgb25lIGNhbgorIyBmdXJ0aGVyIGZpbmUtdHVuZSB0aGUgbG9vayBvZiB0aGUgaW5kZXguIEFzIGFuIGV4YW1wbGUsIHRoZSBkZWZhdWx0IHN0eWxlCisjIHNoZWV0IGdlbmVyYXRlZCBieSBkb3h5Z2VuIGhhcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIHB1dCBhbiBpbWFnZSBhdAorIyB0aGUgcm9vdCBvZiB0aGUgdHJlZSBpbnN0ZWFkIG9mIHRoZSBQUk9KRUNUX05BTUUuIFNpbmNlIHRoZSB0cmVlIGJhc2ljYWxseSBoYXMKKyMgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIHRhYiBpbmRleCwgeW91IGNvdWxkIGNvbnNpZGVyIHNldHRpbmcKKyMgRElTQUJMRV9JTkRFWCB0byBZRVMgd2hlbiBlbmFibGluZyB0aGlzIG9wdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitHRU5FUkFURV9UUkVFVklFVyAgICAgID0gWUVTCisKKyMgVGhlIEVOVU1fVkFMVUVTX1BFUl9MSU5FIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG51bWJlciBvZiBlbnVtIHZhbHVlcyB0aGF0CisjIGRveHlnZW4gd2lsbCBncm91cCBvbiBvbmUgbGluZSBpbiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4KKyMKKyMgTm90ZSB0aGF0IGEgdmFsdWUgb2YgMCB3aWxsIGNvbXBsZXRlbHkgc3VwcHJlc3MgdGhlIGVudW0gdmFsdWVzIGZyb20gYXBwZWFyaW5nCisjIGluIHRoZSBvdmVydmlldyBzZWN0aW9uLgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1ZTogNC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworRU5VTV9WQUxVRVNfUEVSX0xJTkUgICA9IDQKKworIyBJZiB0aGUgdHJlZXZpZXcgaXMgZW5hYmxlZCAoc2VlIEdFTkVSQVRFX1RSRUVWSUVXKSB0aGVuIHRoaXMgdGFnIGNhbiBiZSB1c2VkCisjIHRvIHNldCB0aGUgaW5pdGlhbCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZnJhbWUgaW4gd2hpY2ggdGhlIHRyZWUgaXMgc2hvd24uCisjIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDE1MDAsIGRlZmF1bHQgdmFsdWU6IDI1MC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworVFJFRVZJRVdfV0lEVEggICAgICAgICA9IDI1MAorCisjIFdoZW4gdGhlIEVYVF9MSU5LU19JTl9XSU5ET1cgb3B0aW9uIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIG9wZW4gbGlua3MgdG8KKyMgZXh0ZXJuYWwgc3ltYm9scyBpbXBvcnRlZCB2aWEgdGFnIGZpbGVzIGluIGEgc2VwYXJhdGUgd2luZG93LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0VYVF9MSU5LU19JTl9XSU5ET1cgICAgPSBOTworCisjIFVzZSB0aGlzIHRhZyB0byBjaGFuZ2UgdGhlIGZvbnQgc2l6ZSBvZiBMYVRlWCBmb3JtdWxhcyBpbmNsdWRlZCBhcyBpbWFnZXMgaW4KKyMgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbi4gV2hlbiB5b3UgY2hhbmdlIHRoZSBmb250IHNpemUgYWZ0ZXIgYSBzdWNjZXNzZnVsCisjIGRveHlnZW4gcnVuIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlbW92ZSBhbnkgZm9ybV8qLnBuZyBpbWFnZXMgZnJvbSB0aGUgSFRNTAorIyBvdXRwdXQgZGlyZWN0b3J5IHRvIGZvcmNlIHRoZW0gdG8gYmUgcmVnZW5lcmF0ZWQuCisjIE1pbmltdW0gdmFsdWU6IDgsIG1heGltdW0gdmFsdWU6IDUwLCBkZWZhdWx0IHZhbHVlOiAxMC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworRk9STVVMQV9GT05UU0laRSAgICAgICA9IDEwCisKKyMgVXNlIHRoZSBGT1JNVUxBX1RSQU5QQVJFTlQgdGFnIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgaW1hZ2VzCisjIGdlbmVyYXRlZCBmb3IgZm9ybXVsYXMgYXJlIHRyYW5zcGFyZW50IFBOR3MuIFRyYW5zcGFyZW50IFBOR3MgYXJlIG5vdAorIyBzdXBwb3J0ZWQgcHJvcGVybHkgZm9yIElFIDYuMCwgYnV0IGFyZSBzdXBwb3J0ZWQgb24gYWxsIG1vZGVybiBicm93c2Vycy4KKyMKKyMgTm90ZSB0aGF0IHdoZW4gY2hhbmdpbmcgdGhpcyBvcHRpb24geW91IG5lZWQgdG8gZGVsZXRlIGFueSBmb3JtXyoucG5nIGZpbGVzIGluCisjIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjaGFuZ2VzIGhhdmUgZWZmZWN0LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitGT1JNVUxBX1RSQU5TUEFSRU5UICAgID0gWUVTCisKKyMgRW5hYmxlIHRoZSBVU0VfTUFUSEpBWCBvcHRpb24gdG8gcmVuZGVyIExhVGVYIGZvcm11bGFzIHVzaW5nIE1hdGhKYXggKHNlZQorIyBodHRwOi8vd3d3Lm1hdGhqYXgub3JnKSB3aGljaCB1c2VzIGNsaWVudCBzaWRlIEphdmFzY3JpcHQgZm9yIHRoZSByZW5kZXJpbmcKKyMgaW5zdGVhZCBvZiB1c2luZyBwcmVyZW5kZXJlZCBiaXRtYXBzLiBVc2UgdGhpcyBpZiB5b3UgZG8gbm90IGhhdmUgTGFUZVgKKyMgaW5zdGFsbGVkIG9yIGlmIHlvdSB3YW50IHRvIGZvcm11bGFzIGxvb2sgcHJldHRpZXIgaW4gdGhlIEhUTUwgb3V0cHV0LiBXaGVuCisjIGVuYWJsZWQgeW91IG1heSBhbHNvIG5lZWQgdG8gaW5zdGFsbCBNYXRoSmF4IHNlcGFyYXRlbHkgYW5kIGNvbmZpZ3VyZSB0aGUgcGF0aAorIyB0byBpdCB1c2luZyB0aGUgTUFUSEpBWF9SRUxQQVRIIG9wdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitVU0VfTUFUSEpBWCAgICAgICAgICAgID0gTk8KKworIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgY2FuIHNldCB0aGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0IHRvIGJlIHVzZWQgZm9yCisjIHRoZSBNYXRoSmF4IG91dHB1dC4gU2VlIHRoZSBNYXRoSmF4IHNpdGUgKHNlZToKKyMgaHR0cDovL2RvY3MubWF0aGpheC5vcmcvZW4vbGF0ZXN0L291dHB1dC5odG1sKSBmb3IgbW9yZSBkZXRhaWxzLgorIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBIVE1MLUNTUyAod2hpY2ggaXMgc2xvd2VyLCBidXQgaGFzIHRoZSBiZXN0CisjIGNvbXBhdGliaWxpdHkpLCBOYXRpdmVNTUwgKGkuZS4gTWF0aE1MKSBhbmQgU1ZHLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogSFRNTC1DU1MuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBVU0VfTUFUSEpBWCBpcyBzZXQgdG8gWUVTLgorCitNQVRISkFYX0ZPUk1BVCAgICAgICAgID0gSFRNTC1DU1MKKworIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiByZWxhdGl2ZSB0byB0aGUgSFRNTAorIyBvdXRwdXQgZGlyZWN0b3J5IHVzaW5nIHRoZSBNQVRISkFYX1JFTFBBVEggb3B0aW9uLiBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5CisjIHNob3VsZCBjb250YWluIHRoZSBNYXRoSmF4LmpzIHNjcmlwdC4gRm9yIGluc3RhbmNlLCBpZiB0aGUgbWF0aGpheCBkaXJlY3RvcnkKKyMgaXMgbG9jYXRlZCBhdCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LCB0aGVuCisjIE1BVEhKQVhfUkVMUEFUSCBzaG91bGQgYmUgLi4vbWF0aGpheC4gVGhlIGRlZmF1bHQgdmFsdWUgcG9pbnRzIHRvIHRoZSBNYXRoSmF4CisjIENvbnRlbnQgRGVsaXZlcnkgTmV0d29yayBzbyB5b3UgY2FuIHF1aWNrbHkgc2VlIHRoZSByZXN1bHQgd2l0aG91dCBpbnN0YWxsaW5nCisjIE1hdGhKYXguIEhvd2V2ZXIsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGluc3RhbGwgYSBsb2NhbCBjb3B5IG9mCisjIE1hdGhKYXggZnJvbSBodHRwOi8vd3d3Lm1hdGhqYXgub3JnIGJlZm9yZSBkZXBsb3ltZW50LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogaHR0cDovL2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCisKK01BVEhKQVhfUkVMUEFUSCAgICAgICAgPSBodHRwOi8vY2RuLm1hdGhqYXgub3JnL21hdGhqYXgvbGF0ZXN0CisKKyMgVGhlIE1BVEhKQVhfRVhURU5TSU9OUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBNYXRoSmF4CisjIGV4dGVuc2lvbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBlbmFibGVkIGR1cmluZyBNYXRoSmF4IHJlbmRlcmluZy4gRm9yIGV4YW1wbGUKKyMgTUFUSEpBWF9FWFRFTlNJT05TID0gVGVYL0FNU21hdGggVGVYL0FNU3N5bWJvbHMKKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCisKK01BVEhKQVhfRVhURU5TSU9OUyAgICAgPQorCisjIFRoZSBNQVRISkFYX0NPREVGSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgZmlsZSB3aXRoIGphdmFzY3JpcHQgcGllY2VzCisjIG9mIGNvZGUgdGhhdCB3aWxsIGJlIHVzZWQgb24gc3RhcnR1cCBvZiB0aGUgTWF0aEpheCBjb2RlLiBTZWUgdGhlIE1hdGhKYXggc2l0ZQorIyAoc2VlOiBodHRwOi8vZG9jcy5tYXRoamF4Lm9yZy9lbi9sYXRlc3Qvb3V0cHV0Lmh0bWwpIGZvciBtb3JlIGRldGFpbHMuIEZvciBhbgorIyBleGFtcGxlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCisKK01BVEhKQVhfQ09ERUZJTEUgICAgICAgPQorCisjIFdoZW4gdGhlIFNFQVJDSEVOR0lORSB0YWcgaXMgZW5hYmxlZCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzZWFyY2ggYm94IGZvcgorIyB0aGUgSFRNTCBvdXRwdXQuIFRoZSB1bmRlcmx5aW5nIHNlYXJjaCBlbmdpbmUgdXNlcyBqYXZhc2NyaXB0IGFuZCBESFRNTCBhbmQKKyMgc2hvdWxkIHdvcmsgb24gYW55IG1vZGVybiBicm93c2VyLiBOb3RlIHRoYXQgd2hlbiB1c2luZyBIVE1MIGhlbHAKKyMgKEdFTkVSQVRFX0hUTUxIRUxQKSwgUXQgaGVscCAoR0VORVJBVEVfUUhQKSwgb3IgZG9jc2V0cyAoR0VORVJBVEVfRE9DU0VUKQorIyB0aGVyZSBpcyBhbHJlYWR5IGEgc2VhcmNoIGZ1bmN0aW9uIHNvIHRoaXMgb25lIHNob3VsZCB0eXBpY2FsbHkgYmUgZGlzYWJsZWQuCisjIEZvciBsYXJnZSBwcm9qZWN0cyB0aGUgamF2YXNjcmlwdCBiYXNlZCBzZWFyY2ggZW5naW5lIGNhbiBiZSBzbG93LCB0aGVuCisjIGVuYWJsaW5nIFNFUlZFUl9CQVNFRF9TRUFSQ0ggbWF5IHByb3ZpZGUgYSBiZXR0ZXIgc29sdXRpb24uIEl0IGlzIHBvc3NpYmxlIHRvCisjIHNlYXJjaCB1c2luZyB0aGUga2V5Ym9hcmQ7IHRvIGp1bXAgdG8gdGhlIHNlYXJjaCBib3ggdXNlIDxhY2Nlc3Mga2V5PiArIFMKKyMgKHdoYXQgdGhlIDxhY2Nlc3Mga2V5PiBpcyBkZXBlbmRzIG9uIHRoZSBPUyBhbmQgYnJvd3NlciwgYnV0IGl0IGlzIHR5cGljYWxseQorIyA8Q1RSTD4sIDxBTFQ+LzxvcHRpb24+LCBvciBib3RoKS4gSW5zaWRlIHRoZSBzZWFyY2ggYm94IHVzZSB0aGUgPGN1cnNvciBkb3duCisjIGtleT4gdG8ganVtcCBpbnRvIHRoZSBzZWFyY2ggcmVzdWx0cyB3aW5kb3csIHRoZSByZXN1bHRzIGNhbiBiZSBuYXZpZ2F0ZWQKKyMgdXNpbmcgdGhlIDxjdXJzb3Iga2V5cz4uIFByZXNzIDxFbnRlcj4gdG8gc2VsZWN0IGFuIGl0ZW0gb3IgPGVzY2FwZT4gdG8gY2FuY2VsCisjIHRoZSBzZWFyY2guIFRoZSBmaWx0ZXIgb3B0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgd2hlbiB0aGUgY3Vyc29yIGlzIGluc2lkZSB0aGUKKyMgc2VhcmNoIGJveCBieSBwcmVzc2luZyA8U2hpZnQ+KzxjdXJzb3IgZG93bj4uIEFsc28gaGVyZSB1c2UgdGhlIDxjdXJzb3Iga2V5cz4KKyMgdG8gc2VsZWN0IGEgZmlsdGVyIGFuZCA8RW50ZXI+IG9yIDxlc2NhcGU+IHRvIGFjdGl2YXRlIG9yIGNhbmNlbCB0aGUgZmlsdGVyCisjIG9wdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KKworU0VBUkNIRU5HSU5FICAgICAgICAgICA9IFlFUworCisjIFdoZW4gdGhlIFNFUlZFUl9CQVNFRF9TRUFSQ0ggdGFnIGlzIGVuYWJsZWQgdGhlIHNlYXJjaCBlbmdpbmUgd2lsbCBiZQorIyBpbXBsZW1lbnRlZCB1c2luZyBhIHdlYiBzZXJ2ZXIgaW5zdGVhZCBvZiBhIHdlYiBjbGllbnQgdXNpbmcgSmF2YXNjcmlwdC4gVGhlcmUKKyMgYXJlIHR3byBmbGF2b3VycyBvZiB3ZWIgc2VydmVyIGJhc2VkIHNlYXJjaGluZyBkZXBlbmRpbmcgb24gdGhlCisjIEVYVEVSTkFMX1NFQVJDSCBzZXR0aW5nLiBXaGVuIGRpc2FibGVkLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBQSFAgc2NyaXB0IGZvcgorIyBzZWFyY2hpbmcgYW5kIGFuIGluZGV4IGZpbGUgdXNlZCBieSB0aGUgc2NyaXB0LiBXaGVuIEVYVEVSTkFMX1NFQVJDSCBpcworIyBlbmFibGVkIHRoZSBpbmRleGluZyBhbmQgc2VhcmNoaW5nIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGJ5IGV4dGVybmFsIHRvb2xzLiBTZWUKKyMgdGhlIHNlY3Rpb24gIkV4dGVybmFsIEluZGV4aW5nIGFuZCBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KKworU0VSVkVSX0JBU0VEX1NFQVJDSCAgICA9IE5PCisKKyMgV2hlbiBFWFRFUk5BTF9TRUFSQ0ggdGFnIGlzIGVuYWJsZWQgZG94eWdlbiB3aWxsIG5vIGxvbmdlciBnZW5lcmF0ZSB0aGUgUEhQCisjIHNjcmlwdCBmb3Igc2VhcmNoaW5nLiBJbnN0ZWFkIHRoZSBzZWFyY2ggcmVzdWx0cyBhcmUgd3JpdHRlbiB0byBhbiBYTUwgZmlsZQorIyB3aGljaCBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYnkgYW4gZXh0ZXJuYWwgaW5kZXhlci4gRG94eWdlbiB3aWxsIGludm9rZSBhbgorIyBleHRlcm5hbCBzZWFyY2ggZW5naW5lIHBvaW50ZWQgdG8gYnkgdGhlIFNFQVJDSEVOR0lORV9VUkwgb3B0aW9uIHRvIG9idGFpbiB0aGUKKyMgc2VhcmNoIHJlc3VsdHMuCisjCisjIERveHlnZW4gc2hpcHMgd2l0aCBhbiBleGFtcGxlIGluZGV4ZXIgKCBkb3h5aW5kZXhlcikgYW5kIHNlYXJjaCBlbmdpbmUKKyMgKGRveHlzZWFyY2guY2dpKSB3aGljaCBhcmUgYmFzZWQgb24gdGhlIG9wZW4gc291cmNlIHNlYXJjaCBlbmdpbmUgbGlicmFyeQorIyBYYXBpYW4gKHNlZTogaHR0cDovL3hhcGlhbi5vcmcvKS4KKyMKKyMgU2VlIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRleGluZyBhbmQgU2VhcmNoaW5nIiBmb3IgZGV0YWlscy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCisKK0VYVEVSTkFMX1NFQVJDSCAgICAgICAgPSBOTworCisjIFRoZSBTRUFSQ0hFTkdJTkVfVVJMIHNob3VsZCBwb2ludCB0byBhIHNlYXJjaCBlbmdpbmUgaG9zdGVkIGJ5IGEgd2ViIHNlcnZlcgorIyB3aGljaCB3aWxsIHJldHVybiB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiBFWFRFUk5BTF9TRUFSQ0ggaXMgZW5hYmxlZC4KKyMKKyMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoIGRveHlpbmRleGVyKSBhbmQgc2VhcmNoIGVuZ2luZQorIyAoZG94eXNlYXJjaC5jZ2kpIHdoaWNoIGFyZSBiYXNlZCBvbiB0aGUgb3BlbiBzb3VyY2Ugc2VhcmNoIGVuZ2luZSBsaWJyYXJ5CisjIFhhcGlhbiAoc2VlOiBodHRwOi8veGFwaWFuLm9yZy8pLiBTZWUgdGhlIHNlY3Rpb24gIkV4dGVybmFsIEluZGV4aW5nIGFuZAorIyBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCisKK1NFQVJDSEVOR0lORV9VUkwgICAgICAgPQorCisjIFdoZW4gU0VSVkVSX0JBU0VEX1NFQVJDSCBhbmQgRVhURVJOQUxfU0VBUkNIIGFyZSBib3RoIGVuYWJsZWQgdGhlIHVuaW5kZXhlZAorIyBzZWFyY2ggZGF0YSBpcyB3cml0dGVuIHRvIGEgZmlsZSBmb3IgaW5kZXhpbmcgYnkgYW4gZXh0ZXJuYWwgdG9vbC4gV2l0aCB0aGUKKyMgU0VBUkNIREFUQV9GSUxFIHRhZyB0aGUgbmFtZSBvZiB0aGlzIGZpbGUgY2FuIGJlIHNwZWNpZmllZC4KKyMgVGhlIGRlZmF1bHQgZmlsZSBpczogc2VhcmNoZGF0YS54bWwuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KKworU0VBUkNIREFUQV9GSUxFICAgICAgICA9IHNlYXJjaGRhdGEueG1sCisKKyMgV2hlbiBTRVJWRVJfQkFTRURfU0VBUkNIIGFuZCBFWFRFUk5BTF9TRUFSQ0ggYXJlIGJvdGggZW5hYmxlZCB0aGUKKyMgRVhURVJOQUxfU0VBUkNIX0lEIHRhZyBjYW4gYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGUgcHJvamVjdC4gVGhpcyBpcworIyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBFWFRSQV9TRUFSQ0hfTUFQUElOR1MgdG8gc2VhcmNoIHRocm91Z2ggbXVsdGlwbGUKKyMgcHJvamVjdHMgYW5kIHJlZGlyZWN0IHRoZSByZXN1bHRzIGJhY2sgdG8gdGhlIHJpZ2h0IHByb2plY3QuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KKworRVhURVJOQUxfU0VBUkNIX0lEICAgICA9CisKKyMgVGhlIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIHNlYXJjaGluZyB0aHJvdWdoIGRveHlnZW4KKyMgcHJvamVjdHMgb3RoZXIgdGhhbiB0aGUgb25lIGRlZmluZWQgYnkgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUsIGJ1dCB0aGF0IGFyZQorIyBhbGwgYWRkZWQgdG8gdGhlIHNhbWUgZXh0ZXJuYWwgc2VhcmNoIGluZGV4LiBFYWNoIHByb2plY3QgbmVlZHMgdG8gaGF2ZSBhCisjIHVuaXF1ZSBpZCBzZXQgdmlhIEVYVEVSTkFMX1NFQVJDSF9JRC4gVGhlIHNlYXJjaCBtYXBwaW5nIHRoZW4gbWFwcyB0aGUgaWQgb2YKKyMgdG8gYSByZWxhdGl2ZSBsb2NhdGlvbiB3aGVyZSB0aGUgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQuIFRoZSBmb3JtYXQgaXM6CisjIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyA9IHRhZ25hbWUxPWxvYzEgdGFnbmFtZTI9bG9jMiAuLi4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgorCitFWFRSQV9TRUFSQ0hfTUFQUElOR1MgID0KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTGFUZVggb3V0cHV0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEdFTkVSQVRFX0xBVEVYIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBMYVRlWCBvdXRwdXQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0dFTkVSQVRFX0xBVEVYICAgICAgICAgPSBOTworCisjIFRoZSBMQVRFWF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgTGFUZVggZG9jcyB3aWxsIGJlIHB1dC4gSWYgYQorIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKKyMgaXQuCisjIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogbGF0ZXguCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgorCitMQVRFWF9PVVRQVVQgICAgICAgICAgID0gbGF0ZXgKKworIyBUaGUgTEFURVhfQ01EX05BTUUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIExhVGVYIGNvbW1hbmQgbmFtZSB0byBiZQorIyBpbnZva2VkLgorIworIyBOb3RlIHRoYXQgd2hlbiBlbmFibGluZyBVU0VfUERGTEFURVggdGhpcyBvcHRpb24gaXMgb25seSB1c2VkIGZvciBnZW5lcmF0aW5nCisjIGJpdG1hcHMgZm9yIGZvcm11bGFzIGluIHRoZSBIVE1MIG91dHB1dCwgYnV0IG5vdCBpbiB0aGUgTWFrZWZpbGUgdGhhdCBpcworIyB3cml0dGVuIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LgorIyBUaGUgZGVmYXVsdCBmaWxlIGlzOiBsYXRleC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK0xBVEVYX0NNRF9OQU1FICAgICAgICAgPSBsYXRleAorCisjIFRoZSBNQUtFSU5ERVhfQ01EX05BTUUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbW1hbmQgbmFtZSB0byBnZW5lcmF0ZQorIyBpbmRleCBmb3IgTGFUZVguCisjIFRoZSBkZWZhdWx0IGZpbGUgaXM6IG1ha2VpbmRleC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK01BS0VJTkRFWF9DTURfTkFNRSAgICAgPSBtYWtlaW5kZXgKKworIyBJZiB0aGUgQ09NUEFDVF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgTGFUZVgKKyMgZG9jdW1lbnRzLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIHNtYWxsIHByb2plY3RzIGFuZCBtYXkgaGVscCB0byBzYXZlIHNvbWUKKyMgdHJlZXMgaW4gZ2VuZXJhbC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KKworQ09NUEFDVF9MQVRFWCAgICAgICAgICA9IE5PCisKKyMgVGhlIFBBUEVSX1RZUEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgcGFwZXIgdHlwZSB0aGF0IGlzIHVzZWQgYnkgdGhlCisjIHByaW50ZXIuCisjIFBvc3NpYmxlIHZhbHVlcyBhcmU6IGE0ICgyMTAgeCAyOTcgbW0pLCBsZXR0ZXIgKDguNSB4IDExIGluY2hlcyksIGxlZ2FsICg4LjUgeAorIyAxNCBpbmNoZXMpIGFuZCBleGVjdXRpdmUgKDcuMjUgeCAxMC41IGluY2hlcykuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBhNC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK1BBUEVSX1RZUEUgICAgICAgICAgICAgPSBhNAorCisjIFRoZSBFWFRSQV9QQUNLQUdFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBMYVRlWCBwYWNrYWdlIG5hbWVzCisjIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBMYVRlWCBvdXRwdXQuIFRvIGdldCB0aGUgdGltZXMgZm9udCBmb3IKKyMgaW5zdGFuY2UgeW91IGNhbiBzcGVjaWZ5CisjIEVYVFJBX1BBQ0tBR0VTPXRpbWVzCisjIElmIGxlZnQgYmxhbmsgbm8gZXh0cmEgcGFja2FnZXMgd2lsbCBiZSBpbmNsdWRlZC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK0VYVFJBX1BBQ0tBR0VTICAgICAgICAgPQorCisjIFRoZSBMQVRFWF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJzb25hbCBMYVRlWCBoZWFkZXIgZm9yIHRoZQorIyBnZW5lcmF0ZWQgTGFUZVggZG9jdW1lbnQuIFRoZSBoZWFkZXIgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyB1bnRpbCB0aGUgZmlyc3QKKyMgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzdGFuZGFyZCBoZWFkZXIuIFNlZQorIyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGxldCBkb3h5Z2VuIHdyaXRlIHRoZQorIyBkZWZhdWx0IGhlYWRlciB0byBhIHNlcGFyYXRlIGZpbGUuCisjCisjIE5vdGU6IE9ubHkgdXNlIGEgdXNlci1kZWZpbmVkIGhlYWRlciBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchIFRoZQorIyBmb2xsb3dpbmcgY29tbWFuZHMgaGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBpbnNpZGUgdGhlIGhlYWRlcjogJHRpdGxlLAorIyAkZGF0ZXRpbWUsICRkYXRlLCAkZG94eWdlbnZlcnNpb24sICRwcm9qZWN0bmFtZSwgJHByb2plY3RudW1iZXIuIERveHlnZW4gd2lsbAorIyByZXBsYWNlIHRoZW0gYnkgcmVzcGVjdGl2ZWx5IHRoZSB0aXRsZSBvZiB0aGUgcGFnZSwgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSwKKyMgb25seSB0aGUgY3VycmVudCBkYXRlLCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgZG94eWdlbiwgdGhlIHByb2plY3QgbmFtZSAoc2VlCisjIFBST0pFQ1RfTkFNRSksIG9yIHRoZSBwcm9qZWN0IG51bWJlciAoc2VlIFBST0pFQ1RfTlVNQkVSKS4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK0xBVEVYX0hFQURFUiAgICAgICAgICAgPQorCisjIFRoZSBMQVRFWF9GT09URVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJzb25hbCBMYVRlWCBmb290ZXIgZm9yIHRoZQorIyBnZW5lcmF0ZWQgTGFUZVggZG9jdW1lbnQuIFRoZSBmb290ZXIgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdAorIyBjaGFwdGVyLiBJZiBpdCBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYXJkIGZvb3Rlci4KKyMKKyMgTm90ZTogT25seSB1c2UgYSB1c2VyLWRlZmluZWQgZm9vdGVyIGlmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyEKKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK0xBVEVYX0ZPT1RFUiAgICAgICAgICAgPQorCisjIFRoZSBMQVRFWF9FWFRSQV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBleHRyYSBpbWFnZXMgb3IKKyMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBjb3BpZWQgdG8gdGhlIExBVEVYX09VVFBVVCBvdXRwdXQKKyMgZGlyZWN0b3J5LiBOb3RlIHRoYXQgdGhlIGZpbGVzIHdpbGwgYmUgY29waWVkIGFzLWlzOyB0aGVyZSBhcmUgbm8gY29tbWFuZHMgb3IKKyMgbWFya2VycyBhdmFpbGFibGUuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgorCitMQVRFWF9FWFRSQV9GSUxFUyAgICAgID0KKworIyBJZiB0aGUgUERGX0hZUEVSTElOS1MgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBMYVRlWCB0aGF0IGlzIGdlbmVyYXRlZCBpcworIyBwcmVwYXJlZCBmb3IgY29udmVyc2lvbiB0byBQREYgKHVzaW5nIHBzMnBkZiBvciBwZGZsYXRleCkuIFRoZSBQREYgZmlsZSB3aWxsCisjIGNvbnRhaW4gbGlua3MgKGp1c3QgbGlrZSB0aGUgSFRNTCBvdXRwdXQpIGluc3RlYWQgb2YgcGFnZSByZWZlcmVuY2VzLiBUaGlzCisjIG1ha2VzIHRoZSBvdXRwdXQgc3VpdGFibGUgZm9yIG9ubGluZSBicm93c2luZyB1c2luZyBhIFBERiB2aWV3ZXIuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgorCitQREZfSFlQRVJMSU5LUyAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIExBVEVYX1BERkxBVEVYIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgdXNlIHBkZmxhdGV4IHRvIGdlbmVyYXRlCisjIHRoZSBQREYgZmlsZSBkaXJlY3RseSBmcm9tIHRoZSBMYVRlWCBmaWxlcy4gU2V0IHRoaXMgb3B0aW9uIHRvIFlFUyB0byBnZXQgYQorIyBoaWdoZXIgcXVhbGl0eSBQREYgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK1VTRV9QREZMQVRFWCAgICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgTEFURVhfQkFUQ0hNT0RFIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgYWRkIHRoZSBcYmF0Y2htb2RlCisjIGNvbW1hbmQgdG8gdGhlIGdlbmVyYXRlZCBMYVRlWCBmaWxlcy4gVGhpcyB3aWxsIGluc3RydWN0IExhVGVYIHRvIGtlZXAgcnVubmluZworIyBpZiBlcnJvcnMgb2NjdXIsIGluc3RlYWQgb2YgYXNraW5nIHRoZSB1c2VyIGZvciBoZWxwLiBUaGlzIG9wdGlvbiBpcyBhbHNvIHVzZWQKKyMgd2hlbiBnZW5lcmF0aW5nIGZvcm11bGFzIGluIEhUTUwuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCisKK0xBVEVYX0JBVENITU9ERSAgICAgICAgPSBOTworCisjIElmIHRoZSBMQVRFWF9ISURFX0lORElDRVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgbm90IGluY2x1ZGUgdGhlCisjIGluZGV4IGNoYXB0ZXJzIChzdWNoIGFzIEZpbGUgSW5kZXgsIENvbXBvdW5kIEluZGV4LCBldGMuKSBpbiB0aGUgb3V0cHV0LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgorCitMQVRFWF9ISURFX0lORElDRVMgICAgID0gTk8KKworIyBJZiB0aGUgTEFURVhfU09VUkNFX0NPREUgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgaW5jbHVkZSBzb3VyY2UKKyMgY29kZSB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcgaW4gdGhlIExhVGVYIG91dHB1dC4KKyMKKyMgTm90ZSB0aGF0IHdoaWNoIHNvdXJjZXMgYXJlIHNob3duIGFsc28gZGVwZW5kcyBvbiBvdGhlciBzZXR0aW5ncyBzdWNoIGFzCisjIFNPVVJDRV9CUk9XU0VSLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgorCitMQVRFWF9TT1VSQ0VfQ09ERSAgICAgID0gTk8KKworIyBUaGUgTEFURVhfQklCX1NUWUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBzdHlsZSB0byB1c2UgZm9yIHRoZQorIyBiaWJsaW9ncmFwaHksIGUuZy4gcGxhaW5uYXQsIG9yIGllZWV0ci4gU2VlCisjIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmliVGVYIGFuZCBcY2l0ZSBmb3IgbW9yZSBpbmZvLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogcGxhaW4uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgorCitMQVRFWF9CSUJfU1RZTEUgICAgICAgID0gcGxhaW4KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUlRGIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9SVEYgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIFJURiBvdXRwdXQuIFRoZQorIyBSVEYgb3V0cHV0IGlzIG9wdGltaXplZCBmb3IgV29yZCA5NyBhbmQgbWF5IG5vdCBsb29rIHRvbyBwcmV0dHkgd2l0aCBvdGhlciBSVEYKKyMgcmVhZGVycy9lZGl0b3JzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0dFTkVSQVRFX1JURiAgICAgICAgICAgPSBOTworCisjIFRoZSBSVEZfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIFJURiBkb2NzIHdpbGwgYmUgcHV0LiBJZiBhCisjIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBvZgorIyBpdC4KKyMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBydGYuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0IHRvIFlFUy4KKworUlRGX09VVFBVVCAgICAgICAgICAgICA9IHJ0ZgorCisjIElmIHRoZSBDT01QQUNUX1JURiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgUlRGCisjIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzbWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gc2F2ZSBzb21lCisjIHRyZWVzIGluIGdlbmVyYWwuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgorCitDT01QQUNUX1JURiAgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgUlRGX0hZUEVSTElOS1MgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBSVEYgdGhhdCBpcyBnZW5lcmF0ZWQgd2lsbAorIyBjb250YWluIGh5cGVybGluayBmaWVsZHMuIFRoZSBSVEYgZmlsZSB3aWxsIGNvbnRhaW4gbGlua3MgKGp1c3QgbGlrZSB0aGUgSFRNTAorIyBvdXRwdXQpIGluc3RlYWQgb2YgcGFnZSByZWZlcmVuY2VzLiBUaGlzIG1ha2VzIHRoZSBvdXRwdXQgc3VpdGFibGUgZm9yIG9ubGluZQorIyBicm93c2luZyB1c2luZyBXb3JkIG9yIHNvbWUgb3RoZXIgV29yZCBjb21wYXRpYmxlIHJlYWRlcnMgdGhhdCBzdXBwb3J0IHRob3NlCisjIGZpZWxkcy4KKyMKKyMgTm90ZTogV29yZFBhZCAod3JpdGUpIGFuZCBvdGhlcnMgZG8gbm90IHN1cHBvcnQgbGlua3MuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgorCitSVEZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KKworIyBMb2FkIHN0eWxlc2hlZXQgZGVmaW5pdGlvbnMgZnJvbSBmaWxlLiBTeW50YXggaXMgc2ltaWxhciB0byBkb3h5Z2VuJ3MgY29uZmlnCisjIGZpbGUsIGkuZS4gYSBzZXJpZXMgb2YgYXNzaWdubWVudHMuIFlvdSBvbmx5IGhhdmUgdG8gcHJvdmlkZSByZXBsYWNlbWVudHMsCisjIG1pc3NpbmcgZGVmaW5pdGlvbnMgYXJlIHNldCB0byB0aGVpciBkZWZhdWx0IHZhbHVlLgorIworIyBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZQorIyBkZWZhdWx0IHN0eWxlIHNoZWV0IHRoYXQgZG94eWdlbiBub3JtYWxseSB1c2VzLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCisKK1JURl9TVFlMRVNIRUVUX0ZJTEUgICAgPQorCisjIFNldCBvcHRpb25hbCB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBSVEYgZG9jdW1lbnQuIFN5bnRheCBpcworIyBzaW1pbGFyIHRvIGRveHlnZW4ncyBjb25maWcgZmlsZS4gQSB0ZW1wbGF0ZSBleHRlbnNpb25zIGZpbGUgY2FuIGJlIGdlbmVyYXRlZAorIyB1c2luZyBkb3h5Z2VuIC1lIHJ0ZiBleHRlbnNpb25GaWxlLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCisKK1JURl9FWFRFTlNJT05TX0ZJTEUgICAgPQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtYW4gcGFnZSBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfTUFOIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBtYW4gcGFnZXMgZm9yCisjIGNsYXNzZXMgYW5kIGZpbGVzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0dFTkVSQVRFX01BTiAgICAgICAgICAgPSBOTworCisjIFRoZSBNQU5fT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIG1hbiBwYWdlcyB3aWxsIGJlIHB1dC4gSWYgYQorIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKKyMgaXQuIEEgZGlyZWN0b3J5IG1hbjMgd2lsbCBiZSBjcmVhdGVkIGluc2lkZSB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieQorIyBNQU5fT1VUUFVULgorIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IG1hbi4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX01BTiBpcyBzZXQgdG8gWUVTLgorCitNQU5fT1VUUFVUICAgICAgICAgICAgID0gbWFuCisKKyMgVGhlIE1BTl9FWFRFTlNJT04gdGFnIGRldGVybWluZXMgdGhlIGV4dGVuc2lvbiB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQKKyMgbWFuIHBhZ2VzLiBJbiBjYXNlIHRoZSBtYW51YWwgc2VjdGlvbiBkb2VzIG5vdCBzdGFydCB3aXRoIGEgbnVtYmVyLCB0aGUgbnVtYmVyCisjIDMgaXMgcHJlcGVuZGVkLiBUaGUgZG90ICguKSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBNQU5fRVhURU5TSU9OIHRhZyBpcworIyBvcHRpb25hbC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IC4zLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuCisKK01BTl9FWFRFTlNJT04gICAgICAgICAgPSAuMworCisjIElmIHRoZSBNQU5fTElOS1MgdGFnIGlzIHNldCB0byBZRVMgYW5kIGRveHlnZW4gZ2VuZXJhdGVzIG1hbiBvdXRwdXQsIHRoZW4gaXQKKyMgd2lsbCBnZW5lcmF0ZSBvbmUgYWRkaXRpb25hbCBtYW4gZmlsZSBmb3IgZWFjaCBlbnRpdHkgZG9jdW1lbnRlZCBpbiB0aGUgcmVhbAorIyBtYW4gcGFnZShzKS4gVGhlc2UgYWRkaXRpb25hbCBmaWxlcyBvbmx5IHNvdXJjZSB0aGUgcmVhbCBtYW4gcGFnZSwgYnV0IHdpdGhvdXQKKyMgdGhlbSB0aGUgbWFuIGNvbW1hbmQgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgdGhlIGNvcnJlY3QgcGFnZS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuCisKK01BTl9MSU5LUyAgICAgICAgICAgICAgPSBOTworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBYTUwgb3V0cHV0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEdFTkVSQVRFX1hNTCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYW4gWE1MIGZpbGUgdGhhdAorIyBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb2RlIGluY2x1ZGluZyBhbGwgZG9jdW1lbnRhdGlvbi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitHRU5FUkFURV9YTUwgICAgICAgICAgID0gTk8KKworIyBUaGUgWE1MX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBYTUwgcGFnZXMgd2lsbCBiZSBwdXQuIElmIGEKKyMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCisjIGl0LgorIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IHhtbC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1hNTCBpcyBzZXQgdG8gWUVTLgorCitYTUxfT1VUUFVUICAgICAgICAgICAgID0geG1sCisKKyMgVGhlIFhNTF9TQ0hFTUEgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBYTUwgc2NoZW1hLCB3aGljaCBjYW4gYmUgdXNlZCBieSBhCisjIHZhbGlkYXRpbmcgWE1MIHBhcnNlciB0byBjaGVjayB0aGUgc3ludGF4IG9mIHRoZSBYTUwgZmlsZXMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRvIFlFUy4KKworWE1MX1NDSEVNQSAgICAgICAgICAgICA9CisKKyMgVGhlIFhNTF9EVEQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBYTUwgRFRELCB3aGljaCBjYW4gYmUgdXNlZCBieSBhCisjIHZhbGlkYXRpbmcgWE1MIHBhcnNlciB0byBjaGVjayB0aGUgc3ludGF4IG9mIHRoZSBYTUwgZmlsZXMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRvIFlFUy4KKworWE1MX0RURCAgICAgICAgICAgICAgICA9CisKKyMgSWYgdGhlIFhNTF9QUk9HUkFNTElTVElORyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZHVtcCB0aGUgcHJvZ3JhbQorIyBsaXN0aW5ncyAoaW5jbHVkaW5nIHN5bnRheCBoaWdobGlnaHRpbmcgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIGluZm9ybWF0aW9uKSB0bworIyB0aGUgWE1MIG91dHB1dC4gTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGluY3JlYXNlIHRoZSBzaXplCisjIG9mIHRoZSBYTUwgb3V0cHV0LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfWE1MIGlzIHNldCB0byBZRVMuCisKK1hNTF9QUk9HUkFNTElTVElORyAgICAgPSBZRVMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgRE9DQk9PSyBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfRE9DQk9PSyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgRG9jYm9vayBmaWxlcworIyB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIFBERi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitHRU5FUkFURV9ET0NCT09LICAgICAgID0gTk8KKworIyBUaGUgRE9DQk9PS19PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgRG9jYm9vayBwYWdlcyB3aWxsIGJlIHB1dC4KKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4KKyMgZnJvbnQgb2YgaXQuCisjIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogZG9jYm9vay4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ0JPT0sgaXMgc2V0IHRvIFlFUy4KKworRE9DQk9PS19PVVRQVVQgICAgICAgICA9IGRvY2Jvb2sKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBBdXRvR2VuIERlZmluaXRpb25zIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9BVVRPR0VOX0RFRiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYW4gQXV0b0dlbgorIyBEZWZpbml0aW9ucyAoc2VlIGh0dHA6Ly9hdXRvZ2VuLnNmLm5ldCkgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YKKyMgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIHN0aWxsCisjIGV4cGVyaW1lbnRhbCBhbmQgaW5jb21wbGV0ZSBhdCB0aGUgbW9tZW50LgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0dFTkVSQVRFX0FVVE9HRU5fREVGICAgPSBOTworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfUEVSTE1PRCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBQZXJsIG1vZHVsZQorIyBmaWxlIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRpb24uCisjCisjIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworR0VORVJBVEVfUEVSTE1PRCAgICAgICA9IE5PCisKKyMgSWYgdGhlIFBFUkxNT0RfTEFURVggdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIHRoZSBuZWNlc3NhcnkKKyMgTWFrZWZpbGUgcnVsZXMsIFBlcmwgc2NyaXB0cyBhbmQgTGFUZVggY29kZSB0byBiZSBhYmxlIHRvIGdlbmVyYXRlIFBERiBhbmQgRFZJCisjIG91dHB1dCBmcm9tIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0QgaXMgc2V0IHRvIFlFUy4KKworUEVSTE1PRF9MQVRFWCAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIFBFUkxNT0RfUFJFVFRZIHRhZyBpcyBzZXQgdG8gWUVTIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQgd2lsbCBiZSBuaWNlbHkKKyMgZm9ybWF0dGVkIHNvIGl0IGNhbiBiZSBwYXJzZWQgYnkgYSBodW1hbiByZWFkZXIuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvCisjIHVuZGVyc3RhbmQgd2hhdCBpcyBnb2luZyBvbi4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoaXMgdGFnIGlzIHNldCB0byBOTyB0aGUKKyMgc2l6ZSBvZiB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbXVjaCBzbWFsbGVyIGFuZCBQZXJsIHdpbGwgcGFyc2UgaXQKKyMganVzdCB0aGUgc2FtZS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0QgaXMgc2V0IHRvIFlFUy4KKworUEVSTE1PRF9QUkVUVFkgICAgICAgICA9IFlFUworCisjIFRoZSBuYW1lcyBvZiB0aGUgbWFrZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRlZCBkb3h5cnVsZXMubWFrZSBmaWxlIGFyZQorIyBwcmVmaXhlZCB3aXRoIHRoZSBzdHJpbmcgY29udGFpbmVkIGluIFBFUkxNT0RfTUFLRVZBUl9QUkVGSVguIFRoaXMgaXMgdXNlZnVsCisjIHNvIGRpZmZlcmVudCBkb3h5cnVsZXMubWFrZSBmaWxlcyBpbmNsdWRlZCBieSB0aGUgc2FtZSBNYWtlZmlsZSBkb24ndAorIyBvdmVyd3JpdGUgZWFjaCBvdGhlcidzIHZhcmlhYmxlcy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0QgaXMgc2V0IHRvIFlFUy4KKworUEVSTE1PRF9NQUtFVkFSX1BSRUZJWCA9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIHByZXByb2Nlc3NvcgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZXZhbHVhdGUgYWxsCisjIEMtcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgZm91bmQgaW4gdGhlIHNvdXJjZXMgYW5kIGluY2x1ZGUgZmlsZXMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0VOQUJMRV9QUkVQUk9DRVNTSU5HICAgPSBZRVMKKworIyBJZiB0aGUgTUFDUk9fRVhQQU5TSU9OIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBleHBhbmQgYWxsIG1hY3JvIG5hbWVzCisjIGluIHRoZSBzb3VyY2UgY29kZS4gSWYgc2V0IHRvIE5PIG9ubHkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gd2lsbCBiZQorIyBwZXJmb3JtZWQuIE1hY3JvIGV4cGFuc2lvbiBjYW4gYmUgZG9uZSBpbiBhIGNvbnRyb2xsZWQgd2F5IGJ5IHNldHRpbmcKKyMgRVhQQU5EX09OTFlfUFJFREVGIHRvIFlFUy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KKworTUFDUk9fRVhQQU5TSU9OICAgICAgICA9IFlFUworCisjIElmIHRoZSBFWFBBTkRfT05MWV9QUkVERUYgYW5kIE1BQ1JPX0VYUEFOU0lPTiB0YWdzIGFyZSBib3RoIHNldCB0byBZRVMgdGhlbgorIyB0aGUgbWFjcm8gZXhwYW5zaW9uIGlzIGxpbWl0ZWQgdG8gdGhlIG1hY3JvcyBzcGVjaWZpZWQgd2l0aCB0aGUgUFJFREVGSU5FRCBhbmQKKyMgRVhQQU5EX0FTX0RFRklORUQgdGFncy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KKworRVhQQU5EX09OTFlfUFJFREVGICAgICA9IE5PCisKKyMgSWYgdGhlIFNFQVJDSF9JTkNMVURFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGUgaW5jbHVkZXMgZmlsZXMgaW4gdGhlCisjIElOQ0xVREVfUEFUSCB3aWxsIGJlIHNlYXJjaGVkIGlmIGEgI2luY2x1ZGUgaXMgZm91bmQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgorCitTRUFSQ0hfSU5DTFVERVMgICAgICAgID0gWUVTCisKKyMgVGhlIElOQ0xVREVfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB0aGF0CisjIGNvbnRhaW4gaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBub3QgaW5wdXQgZmlsZXMgYnV0IHNob3VsZCBiZSBwcm9jZXNzZWQgYnkgdGhlCisjIHByZXByb2Nlc3Nvci4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSF9JTkNMVURFUyBpcyBzZXQgdG8gWUVTLgorCitJTkNMVURFX1BBVEggICAgICAgICAgID0KKworIyBZb3UgY2FuIHVzZSB0aGUgSU5DTFVERV9GSUxFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkCisjIHBhdHRlcm5zIChsaWtlICouaCBhbmQgKi5ocHApIHRvIGZpbHRlciBvdXQgdGhlIGhlYWRlci1maWxlcyBpbiB0aGUKKyMgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmssIHRoZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCBGSUxFX1BBVFRFUk5TIHdpbGwgYmUKKyMgdXNlZC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCisKK0lOQ0xVREVfRklMRV9QQVRURVJOUyAgPQorCisjIFRoZSBQUkVERUZJTkVEIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIG1hY3JvIG5hbWVzIHRoYXQgYXJlCisjIGRlZmluZWQgYmVmb3JlIHRoZSBwcmVwcm9jZXNzb3IgaXMgc3RhcnRlZCAoc2ltaWxhciB0byB0aGUgLUQgb3B0aW9uIG9mIGUuZy4KKyMgZ2NjKS4gVGhlIGFyZ3VtZW50IG9mIHRoZSB0YWcgaXMgYSBsaXN0IG9mIG1hY3JvcyBvZiB0aGUgZm9ybTogbmFtZSBvcgorIyBuYW1lPWRlZmluaXRpb24gKG5vIHNwYWNlcykuIElmIHRoZSBkZWZpbml0aW9uIGFuZCB0aGUgIj0iIGFyZSBvbWl0dGVkLCAiPTEiCisjIGlzIGFzc3VtZWQuIFRvIHByZXZlbnQgYSBtYWNybyBkZWZpbml0aW9uIGZyb20gYmVpbmcgdW5kZWZpbmVkIHZpYSAjdW5kZWYgb3IKKyMgcmVjdXJzaXZlbHkgZXhwYW5kZWQgdXNlIHRoZSA6PSBvcGVyYXRvciBpbnN0ZWFkIG9mIHRoZSA9IG9wZXJhdG9yLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KKworUFJFREVGSU5FRCAgICAgICAgICAgICA9CisKKyMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lPTiBhbmQgRVhQQU5EX09OTFlfUFJFREVGIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiB0aGlzCisjIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiBtYWNybyBuYW1lcyB0aGF0IHNob3VsZCBiZSBleHBhbmRlZC4gVGhlCisjIG1hY3JvIGRlZmluaXRpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUgc291cmNlcyB3aWxsIGJlIHVzZWQuIFVzZSB0aGUgUFJFREVGSU5FRAorIyB0YWcgaWYgeW91IHdhbnQgdG8gdXNlIGEgZGlmZmVyZW50IG1hY3JvIGRlZmluaXRpb24gdGhhdCBvdmVycnVsZXMgdGhlCisjIGRlZmluaXRpb24gZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KKworRVhQQU5EX0FTX0RFRklORUQgICAgICA9CisKKyMgSWYgdGhlIFNLSVBfRlVOQ1RJT05fTUFDUk9TIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbidzIHByZXByb2Nlc3NvciB3aWxsCisjIHJlbW92ZSBhbGwgcmVmcmVuY2VzIHRvIGZ1bmN0aW9uLWxpa2UgbWFjcm9zIHRoYXQgYXJlIGFsb25lIG9uIGEgbGluZSwgaGF2ZSBhbgorIyBhbGwgdXBwZXJjYXNlIG5hbWUsIGFuZCBkbyBub3QgZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggZnVuY3Rpb24gbWFjcm9zIGFyZQorIyB0eXBpY2FsbHkgdXNlZCBmb3IgYm9pbGVyLXBsYXRlIGNvZGUsIGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHBhcnNlciBpZiBub3QKKyMgcmVtb3ZlZC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCisKK1NLSVBfRlVOQ1RJT05fTUFDUk9TICAgPSBZRVMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBleHRlcm5hbCByZWZlcmVuY2VzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhlIFRBR0ZJTEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHRhZyBmaWxlcy4gRm9yIGVhY2ggdGFnCisjIGZpbGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSBhZGRlZC4gVGhlIGZvcm1hdCBvZgorIyBhIHRhZyBmaWxlIHdpdGhvdXQgdGhpcyBsb2NhdGlvbiBpcyBhcyBmb2xsb3dzOgorIyBUQUdGSUxFUyA9IGZpbGUxIGZpbGUyIC4uLgorIyBBZGRpbmcgbG9jYXRpb24gZm9yIHRoZSB0YWcgZmlsZXMgaXMgZG9uZSBhcyBmb2xsb3dzOgorIyBUQUdGSUxFUyA9IGZpbGUxPWxvYzEgImZpbGUyID0gbG9jMiIgLi4uCisjIHdoZXJlIGxvYzEgYW5kIGxvYzIgY2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzIG9yIFVSTHMuIFNlZSB0aGUKKyMgc2VjdGlvbiAiTGlua2luZyB0byBleHRlcm5hbCBkb2N1bWVudGF0aW9uIiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlCisjIG9mIHRhZyBmaWxlcy4KKyMgTm90ZTogRWFjaCB0YWcgZmlsZSBtdXN0IGhhdmUgYW4gdW5pcXVlIG5hbWUgKHdoZXJlIHRoZSBuYW1lIGRvZXMgTk9UIGluY2x1ZGUKKyMgdGhlIHBhdGgpLiBJZiBhIHRhZyBmaWxlIGlzIG5vdCBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZG94eWdlbiBpcworIyBydW4sIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgdGFnZmlsZSBoZXJlLgorCitUQUdGSUxFUyAgICAgICAgICAgICAgID0KKworIyBXaGVuIGEgZmlsZSBuYW1lIGlzIHNwZWNpZmllZCBhZnRlciBHRU5FUkFURV9UQUdGSUxFLCBkb3h5Z2VuIHdpbGwgY3JlYXRlIGEKKyMgdGFnIGZpbGUgdGhhdCBpcyBiYXNlZCBvbiB0aGUgaW5wdXQgZmlsZXMgaXQgcmVhZHMuIFNlZSBzZWN0aW9uICJMaW5raW5nIHRvCisjIGV4dGVybmFsIGRvY3VtZW50YXRpb24iIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2FnZSBvZiB0YWcgZmlsZXMuCisKK0dFTkVSQVRFX1RBR0ZJTEUgICAgICAgPSBuc2wudGFnCisKKyMgSWYgdGhlIEFMTEVYVEVSTkFMUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgY2xhc3Mgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlCisjIGNsYXNzIGluZGV4LiBJZiBzZXQgdG8gTk8gb25seSB0aGUgaW5oZXJpdGVkIGV4dGVybmFsIGNsYXNzZXMgd2lsbCBiZSBsaXN0ZWQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworQUxMRVhURVJOQUxTICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEVYVEVSTkFMX0dST1VQUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgZ3JvdXBzIHdpbGwgYmUgbGlzdGVkIGluCisjIHRoZSBtb2R1bGVzIGluZGV4LiBJZiBzZXQgdG8gTk8sIG9ubHkgdGhlIGN1cnJlbnQgcHJvamVjdCdzIGdyb3VwcyB3aWxsIGJlCisjIGxpc3RlZC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKworRVhURVJOQUxfR1JPVVBTICAgICAgICA9IFlFUworCisjIElmIHRoZSBFWFRFUk5BTF9QQUdFUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgcGFnZXMgd2lsbCBiZSBsaXN0ZWQgaW4KKyMgdGhlIHJlbGF0ZWQgcGFnZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3MgcGFnZXMgd2lsbAorIyBiZSBsaXN0ZWQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0VYVEVSTkFMX1BBR0VTICAgICAgICAgPSBZRVMKKworIyBUaGUgUEVSTF9QQVRIIHNob3VsZCBiZSB0aGUgYWJzb2x1dGUgcGF0aCBhbmQgbmFtZSBvZiB0aGUgcGVybCBzY3JpcHQKKyMgaW50ZXJwcmV0ZXIgKGkuZS4gdGhlIHJlc3VsdCBvZiAnd2hpY2ggcGVybCcpLgorIyBUaGUgZGVmYXVsdCBmaWxlICh3aXRoIGFic29sdXRlIHBhdGgpIGlzOiAvdXNyL2Jpbi9wZXJsLgorCitQRVJMX1BBVEggICAgICAgICAgICAgID0gL3Vzci9iaW4vcGVybAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBkb3QgdG9vbAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBDTEFTU19ESUFHUkFNUyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjbGFzcyBkaWFncmFtCisjIChpbiBIVE1MIGFuZCBMYVRlWCkgZm9yIGNsYXNzZXMgd2l0aCBiYXNlIG9yIHN1cGVyIGNsYXNzZXMuIFNldHRpbmcgdGhlIHRhZyB0bworIyBOTyB0dXJucyB0aGUgZGlhZ3JhbXMgb2ZmLiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gYWxzbyB3b3JrcyB3aXRoIEhBVkVfRE9UCisjIGRpc2FibGVkLCBidXQgaXQgaXMgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBhbmQgdXNlIGRvdCwgc2luY2UgaXQgeWllbGRzIG1vcmUKKyMgcG93ZXJmdWwgZ3JhcGhzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorCitDTEFTU19ESUFHUkFNUyAgICAgICAgID0gWUVTCisKKyMgWW91IGNhbiBkZWZpbmUgbWVzc2FnZSBzZXF1ZW5jZSBjaGFydHMgd2l0aGluIGRveHlnZW4gY29tbWVudHMgdXNpbmcgdGhlIFxtc2MKKyMgY29tbWFuZC4gRG94eWdlbiB3aWxsIHRoZW4gcnVuIHRoZSBtc2NnZW4gdG9vbCAoc2VlOgorIyBodHRwOi8vd3d3Lm1jdGVybmFuLm1lLnVrL21zY2dlbi8pKSB0byBwcm9kdWNlIHRoZSBjaGFydCBhbmQgaW5zZXJ0IGl0IGluIHRoZQorIyBkb2N1bWVudGF0aW9uLiBUaGUgTVNDR0VOX1BBVEggdGFnIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgZGlyZWN0b3J5IHdoZXJlCisjIHRoZSBtc2NnZW4gdG9vbCByZXNpZGVzLiBJZiBsZWZ0IGVtcHR5IHRoZSB0b29sIGlzIGFzc3VtZWQgdG8gYmUgZm91bmQgaW4gdGhlCisjIGRlZmF1bHQgc2VhcmNoIHBhdGguCisKK01TQ0dFTl9QQVRIICAgICAgICAgICAgPQorCisjIElmIHNldCB0byBZRVMsIHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlvbiBncmFwaHMgd2lsbCBoaWRlIGluaGVyaXRhbmNlCisjIGFuZCB1c2FnZSByZWxhdGlvbnMgaWYgdGhlIHRhcmdldCBpcyB1bmRvY3VtZW50ZWQgb3IgaXMgbm90IGEgY2xhc3MuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisKK0hJREVfVU5ET0NfUkVMQVRJT05TICAgPSBZRVMKKworIyBJZiB5b3Ugc2V0IHRoZSBIQVZFX0RPVCB0YWcgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGFzc3VtZSB0aGUgZG90IHRvb2wgaXMKKyMgYXZhaWxhYmxlIGZyb20gdGhlIHBhdGguIFRoaXMgdG9vbCBpcyBwYXJ0IG9mIEdyYXBodml6IChzZWU6CisjIGh0dHA6Ly93d3cuZ3JhcGh2aXoub3JnLyksIGEgZ3JhcGggdmlzdWFsaXphdGlvbiB0b29sa2l0IGZyb20gQVQmVCBhbmQgTHVjZW50CisjIEJlbGwgTGFicy4gVGhlIG90aGVyIG9wdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGhhdmUgbm8gZWZmZWN0IGlmIHRoaXMgb3B0aW9uIGlzCisjIHNldCB0byBOTworIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisKK0hBVkVfRE9UICAgICAgICAgICAgICAgPSBZRVMKKworIyBUaGUgRE9UX05VTV9USFJFQURTIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRvdCBpbnZvY2F0aW9ucyBkb3h5Z2VuIGlzIGFsbG93ZWQKKyMgdG8gcnVuIGluIHBhcmFsbGVsLiBXaGVuIHNldCB0byAwIGRveHlnZW4gd2lsbCBiYXNlIHRoaXMgb24gdGhlIG51bWJlciBvZgorIyBwcm9jZXNzb3JzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLiBZb3UgY2FuIHNldCBpdCBleHBsaWNpdGx5IHRvIGEgdmFsdWUKKyMgbGFyZ2VyIHRoYW4gMCB0byBnZXQgY29udHJvbCBvdmVyIHRoZSBiYWxhbmNlIGJldHdlZW4gQ1BVIGxvYWQgYW5kIHByb2Nlc3NpbmcKKyMgc3BlZWQuCisjIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDMyLCBkZWZhdWx0IHZhbHVlOiAwLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KKworRE9UX05VTV9USFJFQURTICAgICAgICA9IDAKKworIyBXaGVuIHlvdSB3YW50IGEgZGlmZmVyZW50bHkgbG9va2luZyBmb250IG4gdGhlIGRvdCBmaWxlcyB0aGF0IGRveHlnZW4KKyMgZ2VuZXJhdGVzIHlvdSBjYW4gc3BlY2lmeSB0aGUgZm9udCBuYW1lIHVzaW5nIERPVF9GT05UTkFNRS4gWW91IG5lZWQgdG8gbWFrZQorIyBzdXJlIGRvdCBpcyBhYmxlIHRvIGZpbmQgdGhlIGZvbnQsIHdoaWNoIGNhbiBiZSBkb25lIGJ5IHB1dHRpbmcgaXQgaW4gYQorIyBzdGFuZGFyZCBsb2NhdGlvbiBvciBieSBzZXR0aW5nIHRoZSBET1RGT05UUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBieQorIyBzZXR0aW5nIERPVF9GT05UUEFUSCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZvbnQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBIZWx2ZXRpY2EuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitET1RfRk9OVE5BTUUgICAgICAgICAgID0gSGVsdmV0aWNhCisKKyMgVGhlIERPVF9GT05UU0laRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBzaXplIChpbiBwb2ludHMpIG9mIHRoZSBmb250IG9mCisjIGRvdCBncmFwaHMuCisjIE1pbmltdW0gdmFsdWU6IDQsIG1heGltdW0gdmFsdWU6IDI0LCBkZWZhdWx0IHZhbHVlOiAxMC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0RPVF9GT05UU0laRSAgICAgICAgICAgPSAxMAorCisjIEJ5IGRlZmF1bHQgZG94eWdlbiB3aWxsIHRlbGwgZG90IHRvIHVzZSB0aGUgZGVmYXVsdCBmb250IGFzIHNwZWNpZmllZCB3aXRoCisjIERPVF9GT05UTkFNRS4gSWYgeW91IHNwZWNpZnkgYSBkaWZmZXJlbnQgZm9udCB1c2luZyBET1RfRk9OVE5BTUUgeW91IGNhbiBzZXQKKyMgdGhlIHBhdGggd2hlcmUgZG90IGNhbiBmaW5kIGl0IHVzaW5nIHRoaXMgdGFnLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KKworRE9UX0ZPTlRQQVRIICAgICAgICAgICA9CisKKyMgSWYgdGhlIENMQVNTX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yCisjIGVhY2ggZG9jdW1lbnRlZCBjbGFzcyBzaG93aW5nIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IGluaGVyaXRhbmNlIHJlbGF0aW9ucy4KKyMgU2V0dGluZyB0aGlzIHRhZyB0byBZRVMgd2lsbCBmb3JjZSB0aGUgQ0xBU1NfRElBR1JBTVMgdGFnIHRvIE5PLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KKworQ0xBU1NfR1JBUEggICAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBDT0xMQUJPUkFUSU9OX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKKyMgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBjbGFzcyBzaG93aW5nIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IGltcGxlbWVudGF0aW9uCisjIGRlcGVuZGVuY2llcyAoaW5oZXJpdGFuY2UsIGNvbnRhaW5tZW50LCBhbmQgY2xhc3MgcmVmZXJlbmNlcyB2YXJpYWJsZXMpIG9mIHRoZQorIyBjbGFzcyB3aXRoIG90aGVyIGRvY3VtZW50ZWQgY2xhc3Nlcy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0NPTExBQk9SQVRJT05fR1JBUEggICAgPSBZRVMKKworIyBJZiB0aGUgR1JPVVBfR1JBUEhTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yCisjIGdyb3Vwcywgc2hvd2luZyB0aGUgZGlyZWN0IGdyb3VwcyBkZXBlbmRlbmNpZXMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitHUk9VUF9HUkFQSFMgICAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFVNTF9MT09LIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBpbmhlcml0YW5jZSBhbmQKKyMgY29sbGFib3JhdGlvbiBkaWFncmFtcyBpbiBhIHN0eWxlIHNpbWlsYXIgdG8gdGhlIE9NRydzIFVuaWZpZWQgTW9kZWxpbmcKKyMgTGFuZ3VhZ2UuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK1VNTF9MT09LICAgICAgICAgICAgICAgPSBOTworCisjIElmIHRoZSBVTUxfTE9PSyB0YWcgaXMgZW5hYmxlZCwgdGhlIGZpZWxkcyBhbmQgbWV0aG9kcyBhcmUgc2hvd24gaW5zaWRlIHRoZQorIyBjbGFzcyBub2RlLiBJZiB0aGVyZSBhcmUgbWFueSBmaWVsZHMgb3IgbWV0aG9kcyBhbmQgbWFueSBub2RlcyB0aGUgZ3JhcGggbWF5CisjIGJlY29tZSB0b28gYmlnIHRvIGJlIHVzZWZ1bC4gVGhlIFVNTF9MSU1JVF9OVU1fRklFTERTIHRocmVzaG9sZCBsaW1pdHMgdGhlCisjIG51bWJlciBvZiBpdGVtcyBmb3IgZWFjaCB0eXBlIHRvIG1ha2UgdGhlIHNpemUgbW9yZSBtYW5hZ2VhYmxlLiBTZXQgdGhpcyB0byAwCisjIGZvciBubyBsaW1pdC4gTm90ZSB0aGF0IHRoZSB0aHJlc2hvbGQgbWF5IGJlIGV4Y2VlZGVkIGJ5IDUwJSBiZWZvcmUgdGhlIGxpbWl0CisjIGlzIGVuZm9yY2VkLiBTbyB3aGVuIHlvdSBzZXQgdGhlIHRocmVzaG9sZCB0byAxMCwgdXAgdG8gMTUgZmllbGRzIG1heSBhcHBlYXIsCisjIGJ1dCBpZiB0aGUgbnVtYmVyIGV4Y2VlZHMgMTUsIHRoZSB0b3RhbCBhbW91bnQgb2YgZmllbGRzIHNob3duIGlzIGxpbWl0ZWQgdG8KKyMgMTAuCisjIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDEwMCwgZGVmYXVsdCB2YWx1ZTogMTAuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitVTUxfTElNSVRfTlVNX0ZJRUxEUyAgID0gMTAKKworIyBJZiB0aGUgVEVNUExBVEVfUkVMQVRJT05TIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIGluaGVyaXRhbmNlIGFuZAorIyBjb2xsYWJvcmF0aW9uIGdyYXBocyB3aWxsIHNob3cgdGhlIHJlbGF0aW9ucyBiZXR3ZWVuIHRlbXBsYXRlcyBhbmQgdGhlaXIKKyMgaW5zdGFuY2VzLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitURU1QTEFURV9SRUxBVElPTlMgICAgID0gWUVTCisKKyMgSWYgdGhlIElOQ0xVREVfR1JBUEgsIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGFuZCBTRUFSQ0hfSU5DTFVERVMgdGFncyBhcmUgc2V0IHRvCisjIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgZmlsZSBzaG93aW5nIHRoZQorIyBkaXJlY3QgYW5kIGluZGlyZWN0IGluY2x1ZGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBmaWxlIHdpdGggb3RoZXIgZG9jdW1lbnRlZAorIyBmaWxlcy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0lOQ0xVREVfR1JBUEggICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgSU5DTFVERURfQllfR1JBUEgsIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGFuZCBTRUFSQ0hfSU5DTFVERVMgdGFncyBhcmUKKyMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgZmlsZSBzaG93aW5nCisjIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IGluY2x1ZGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBmaWxlIHdpdGggb3RoZXIgZG9jdW1lbnRlZAorIyBmaWxlcy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0lOQ0xVREVEX0JZX0dSQVBIICAgICAgPSBZRVMKKworIyBJZiB0aGUgQ0FMTF9HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGNhbGwKKyMgZGVwZW5kZW5jeSBncmFwaCBmb3IgZXZlcnkgZ2xvYmFsIGZ1bmN0aW9uIG9yIGNsYXNzIG1ldGhvZC4KKyMKKyMgTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgdGltZSBvZiBhIHJ1bi4KKyMgU28gaW4gbW9zdCBjYXNlcyBpdCB3aWxsIGJlIGJldHRlciB0byBlbmFibGUgY2FsbCBncmFwaHMgZm9yIHNlbGVjdGVkCisjIGZ1bmN0aW9ucyBvbmx5IHVzaW5nIHRoZSBcY2FsbGdyYXBoIGNvbW1hbmQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0NBTExfR1JBUEggICAgICAgICAgICAgPSBOTworCisjIElmIHRoZSBDQUxMRVJfR1JBUEggdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjYWxsZXIKKyMgZGVwZW5kZW5jeSBncmFwaCBmb3IgZXZlcnkgZ2xvYmFsIGZ1bmN0aW9uIG9yIGNsYXNzIG1ldGhvZC4KKyMKKyMgTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgdGltZSBvZiBhIHJ1bi4KKyMgU28gaW4gbW9zdCBjYXNlcyBpdCB3aWxsIGJlIGJldHRlciB0byBlbmFibGUgY2FsbGVyIGdyYXBocyBmb3Igc2VsZWN0ZWQKKyMgZnVuY3Rpb25zIG9ubHkgdXNpbmcgdGhlIFxjYWxsZXJncmFwaCBjb21tYW5kLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitDQUxMRVJfR1JBUEggICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgR1JBUEhJQ0FMX0hJRVJBUkNIWSB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBncmFwaGljYWwKKyMgaGllcmFyY2h5IG9mIGFsbCBjbGFzc2VzIGluc3RlYWQgb2YgYSB0ZXh0dWFsIG9uZS4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0dSQVBISUNBTF9ISUVSQVJDSFkgICAgPSBZRVMKKworIyBJZiB0aGUgRElSRUNUT1JZX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNob3cgdGhlCisjIGRlcGVuZGVuY2llcyBhIGRpcmVjdG9yeSBoYXMgb24gb3RoZXIgZGlyZWN0b3JpZXMgaW4gYSBncmFwaGljYWwgd2F5LiBUaGUKKyMgZGVwZW5kZW5jeSByZWxhdGlvbnMgYXJlIGRldGVybWluZWQgYnkgdGhlICNpbmNsdWRlIHJlbGF0aW9ucyBiZXR3ZWVuIHRoZQorIyBmaWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitESVJFQ1RPUllfR1JBUEggICAgICAgID0gWUVTCisKKyMgVGhlIERPVF9JTUFHRV9GT1JNQVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgaW1hZ2UgZm9ybWF0IG9mIHRoZSBpbWFnZXMKKyMgZ2VuZXJhdGVkIGJ5IGRvdC4KKyMgTm90ZTogSWYgeW91IGNob29zZSBzdmcgeW91IG5lZWQgdG8gc2V0IEhUTUxfRklMRV9FWFRFTlNJT04gdG8geGh0bWwgaW4gb3JkZXIKKyMgdG8gbWFrZSB0aGUgU1ZHIGZpbGVzIHZpc2libGUgaW4gSUUgOSsgKG90aGVyIGJyb3dzZXJzIGRvIG5vdCBoYXZlIHRoaXMKKyMgcmVxdWlyZW1lbnQpLgorIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBwbmcsIGpwZywgZ2lmIGFuZCBzdmcuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBwbmcuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitET1RfSU1BR0VfRk9STUFUICAgICAgID0gc3ZnCisKKyMgSWYgRE9UX0lNQUdFX0ZPUk1BVCBpcyBzZXQgdG8gc3ZnLCB0aGVuIHRoaXMgb3B0aW9uIGNhbiBiZSBzZXQgdG8gWUVTIHRvCisjIGVuYWJsZSBnZW5lcmF0aW9uIG9mIGludGVyYWN0aXZlIFNWRyBpbWFnZXMgdGhhdCBhbGxvdyB6b29taW5nIGFuZCBwYW5uaW5nLgorIworIyBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhIG1vZGVybiBicm93c2VyIG90aGVyIHRoYW4gSW50ZXJuZXQgRXhwbG9yZXIuIFRlc3RlZAorIyBhbmQgd29ya2luZyBhcmUgRmlyZWZveCwgQ2hyb21lLCBTYWZhcmksIGFuZCBPcGVyYS4KKyMgTm90ZTogRm9yIElFIDkrIHlvdSBuZWVkIHRvIHNldCBIVE1MX0ZJTEVfRVhURU5TSU9OIHRvIHhodG1sIGluIG9yZGVyIHRvIG1ha2UKKyMgdGhlIFNWRyBmaWxlcyB2aXNpYmxlLiBPbGRlciB2ZXJzaW9ucyBvZiBJRSBkbyBub3QgaGF2ZSBTVkcgc3VwcG9ydC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KKworSU5URVJBQ1RJVkVfU1ZHICAgICAgICA9IE5PCisKKyMgVGhlIERPVF9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHdoZXJlIHRoZSBkb3QgdG9vbCBjYW4gYmUKKyMgZm91bmQuIElmIGxlZnQgYmxhbmssIGl0IGlzIGFzc3VtZWQgdGhlIGRvdCB0b29sIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0RPVF9QQVRIICAgICAgICAgICAgICAgPQorCisjIFRoZSBET1RGSUxFX0RJUlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdAorIyBjb250YWluIGRvdCBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSBcZG90ZmlsZQorIyBjb21tYW5kKS4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0RPVEZJTEVfRElSUyAgICAgICAgICAgPQorCisjIFRoZSBNU0NGSUxFX0RJUlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdAorIyBjb250YWluIG1zYyBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSBcbXNjZmlsZQorIyBjb21tYW5kKS4KKworTVNDRklMRV9ESVJTICAgICAgICAgICA9CisKKyMgVGhlIERPVF9HUkFQSF9NQVhfTk9ERVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygbm9kZXMKKyMgdGhhdCB3aWxsIGJlIHNob3duIGluIHRoZSBncmFwaC4gSWYgdGhlIG51bWJlciBvZiBub2RlcyBpbiBhIGdyYXBoIGJlY29tZXMKKyMgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1ZSwgZG94eWdlbiB3aWxsIHRydW5jYXRlIHRoZSBncmFwaCwgd2hpY2ggaXMgdmlzdWFsaXplZAorIyBieSByZXByZXNlbnRpbmcgYSBub2RlIGFzIGEgcmVkIGJveC4gTm90ZSB0aGF0IGRveHlnZW4gaWYgdGhlIG51bWJlciBvZiBkaXJlY3QKKyMgY2hpbGRyZW4gb2YgdGhlIHJvb3Qgbm9kZSBpbiBhIGdyYXBoIGlzIGFscmVhZHkgbGFyZ2VyIHRoYW4KKyMgRE9UX0dSQVBIX01BWF9OT0RFUyB0aGVuIHRoZSBncmFwaCB3aWxsIG5vdCBiZSBzaG93biBhdCBhbGwuIEFsc28gbm90ZSB0aGF0CisjIHRoZSBzaXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSBNQVhfRE9UX0dSQVBIX0RFUFRILgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAwMCwgZGVmYXVsdCB2YWx1ZTogNTAuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgorCitET1RfR1JBUEhfTUFYX05PREVTICAgID0gNTAKKworIyBUaGUgTUFYX0RPVF9HUkFQSF9ERVBUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGRlcHRoIG9mIHRoZSBncmFwaHMKKyMgZ2VuZXJhdGVkIGJ5IGRvdC4gQSBkZXB0aCB2YWx1ZSBvZiAzIG1lYW5zIHRoYXQgb25seSBub2RlcyByZWFjaGFibGUgZnJvbSB0aGUKKyMgcm9vdCBieSBmb2xsb3dpbmcgYSBwYXRoIHZpYSBhdCBtb3N0IDMgZWRnZXMgd2lsbCBiZSBzaG93bi4gTm9kZXMgdGhhdCBsYXkKKyMgZnVydGhlciBmcm9tIHRoZSByb290IG5vZGUgd2lsbCBiZSBvbWl0dGVkLiBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIG9wdGlvbiB0byAxCisjIG9yIDIgbWF5IGdyZWF0bHkgcmVkdWNlIHRoZSBjb21wdXRhdGlvbiB0aW1lIG5lZWRlZCBmb3IgbGFyZ2UgY29kZSBiYXNlcy4gQWxzbworIyBub3RlIHRoYXQgdGhlIHNpemUgb2YgYSBncmFwaCBjYW4gYmUgZnVydGhlciByZXN0cmljdGVkIGJ5CisjIERPVF9HUkFQSF9NQVhfTk9ERVMuIFVzaW5nIGEgZGVwdGggb2YgMCBtZWFucyBubyBkZXB0aCByZXN0cmljdGlvbi4KKyMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAwMCwgZGVmYXVsdCB2YWx1ZTogMC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK01BWF9ET1RfR1JBUEhfREVQVEggICAgPSAwCisKKyMgU2V0IHRoZSBET1RfVFJBTlNQQVJFTlQgdGFnIHRvIFlFUyB0byBnZW5lcmF0ZSBpbWFnZXMgd2l0aCBhIHRyYW5zcGFyZW50CisjIGJhY2tncm91bmQuIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYmVjYXVzZSBkb3Qgb24gV2luZG93cyBkb2VzIG5vdCBzZWVtCisjIHRvIHN1cHBvcnQgdGhpcyBvdXQgb2YgdGhlIGJveC4KKyMKKyMgV2FybmluZzogRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSB1c2VkLCBlbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgbGVhZCB0bworIyBiYWRseSBhbnRpLWFsaWFzZWQgbGFiZWxzIG9uIHRoZSBlZGdlcyBvZiBhIGdyYXBoIChpLmUuIHRoZXkgYmVjb21lIGhhcmQgdG8KKyMgcmVhZCkuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0RPVF9UUkFOU1BBUkVOVCAgICAgICAgPSBZRVMKKworIyBTZXQgdGhlIERPVF9NVUxUSV9UQVJHRVRTIHRhZyB0byBZRVMgYWxsb3cgZG90IHRvIGdlbmVyYXRlIG11bHRpcGxlIG91dHB1dAorIyBmaWxlcyBpbiBvbmUgcnVuIChpLmUuIG11bHRpcGxlIC1vIGFuZCAtVCBvcHRpb25zIG9uIHRoZSBjb21tYW5kIGxpbmUpLiBUaGlzCisjIG1ha2VzIGRvdCBydW4gZmFzdGVyLCBidXQgc2luY2Ugb25seSBuZXdlciB2ZXJzaW9ucyBvZiBkb3QgKD4xLjguMTApIHN1cHBvcnQKKyMgdGhpcywgdGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0RPVF9NVUxUSV9UQVJHRVRTICAgICAgPSBOTworCisjIElmIHRoZSBHRU5FUkFURV9MRUdFTkQgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgbGVnZW5kIHBhZ2UKKyMgZXhwbGFpbmluZyB0aGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBib3hlcyBhbmQgYXJyb3dzIGluIHRoZSBkb3QgZ2VuZXJhdGVkCisjIGdyYXBocy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0dFTkVSQVRFX0xFR0VORCAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgRE9UX0NMRUFOVVAgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIHJlbW92ZSB0aGUgaW50ZXJtZWRpYXRlIGRvdAorIyBmaWxlcyB0aGF0IGFyZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2YXJpb3VzIGdyYXBocy4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCisKK0RPVF9DTEVBTlVQICAgICAgICAgICAgPSBZRVMKZGlmZiAtLWdpdCBhL2RvY3MvaW5kZXgucnN0IGIvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiY2VmYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW5kZXgucnN0CkBAIC0wLDAgKzEsNDAgQEAKK05TTDogTkROIFNpZ25hdHVyZSBMb2dnZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworTlNMIGlzIGEgTG9nZ2luZyBTeXN0ZW0gdGhhdCBjYW4gYmUgdXNlZCB0byB2YWxpZGF0ZSBkYXRhIHdpdGggbG9uZyBsaWZldGltZS4KKworUGxlYXNlIHN1Ym1pdCBhbnkgYnVncyBvciBpc3N1ZXMgdG8gdGhlIGBOU0wgaXNzdWUgdHJhY2tlcgorPGh0dHA6Ly9yZWRtaW5lLm5hbWVkLWRhdGEubmV0L3Byb2plY3RzL25zbC9pc3N1ZXM+YF9fLgorCitOU0wgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdG9jdHJlZTo6CisgICA6aGlkZGVuOgorICAgOm1heGRlcHRoOiAzCisKKyAgIFJFQURNRQorICAgSU5TVEFMTAorICAgbWFucGFnZXMKKworLSA6ZG9jOmBSRUFETUVgCisKKy0gOmRvYzpgSU5TVEFMTGAKKworLSA6ZG9jOmBtYW5wYWdlc2AKKworRG9jdW1lbnRhdGlvbiBmb3IgbmRuLWN4eCBkZXZlbG9wZXJzIGFuZCBjb250cmlidXRvcnMKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKKy0gYEFQSSBkb2N1bWVudGF0aW9uIChkb3h5Z2VuKSA8ZG94eWdlbi9hbm5vdGF0ZWQuaHRtbD5gXworCitMaWNlbnNlCistLS0tLS0tCisKK05TTCBpcyBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGxpY2Vuc2VkIHVuZGVyIGNvbmRpdGlvbnMgb2YgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpY2Vuc2UsIHJlZmVyIHRvCitgQ09QWUlORyA8aHR0cHM6Ly9naXRodWIuY29tL25hbWVkLWRhdGEvbnNsL2Jsb2IvbWFzdGVyL0NPUFlJTkc+YF8uCisKK1doaWxlIHRoZSBsaWNlbnNlIGRvZXMgbm90IHJlcXVpcmUgaXQsIHdlIHJlYWxseSB3b3VsZCBhcHByZWNpYXRlIGl0IGlmCitvdGhlcnMgd291bGQgc2hhcmUgdGhlaXIgY29udHJpYnV0aW9ucyB0byB0aGUgbGlicmFyeSBpZiB0aGV5IGFyZQord2lsbGluZyB0byBkbyBzbyB1bmRlciB0aGUgc2FtZSBsaWNlbnNlLgpkaWZmIC0tZ2l0IGEvZG9jcy9tYW5wYWdlcy5yc3QgYi9kb2NzL21hbnBhZ2VzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzNlMjcyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9tYW5wYWdlcy5yc3QKQEAgLTAsMCArMSw4IEBACisuLiBfTWFucGFnZXM6CisKK01hbnBhZ2VzCis9PT09PT09PQorCisuLiB0b2N0cmVlOjoKKyAgIG1hbnBhZ2VzL25zbAorICAgOm1heGRlcHRoOiAxCmRpZmYgLS1naXQgYS9kb2NzL21hbnBhZ2VzL25zbC5yc3QgYi9kb2NzL21hbnBhZ2VzL25zbC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU3YzZjZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbWFucGFnZXMvbnNsLnJzdApAQCAtMCwwICsxLDIgQEAKK25zbAorPT09CmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvbGF5b3V0Lmh0bWwgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvbGF5b3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhiNjQ3NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9sYXlvdXQuaHRtbApAQCAtMCwwICsxLDg2IEBACit7IworICAgIG5hbWVkX2RhdGFfdGhlbWUvbGF5b3V0Lmh0bWwKKyAgICB+fn5+fn5+fn5+fn5+fn5+fgorI30KK3slIGV4dGVuZHMgImJhc2ljL2xheW91dC5odG1sIiAlfQorCit7JSBibG9jayBoZWFkZXIgJX0KKyAgICA8IS0taGVhZGVyY29udGFpbmVyLS0+CisgICAgPGRpdiBpZD0iaGVhZGVyX2NvbnRhaW5lciI+CisKKyAgICAgICAgPCEtLWhlYWRlci0tPgorICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRocmVlIGNvbHVtbnMiPgorICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibG9nbyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbmFtZWQtZGF0YS5uZXQiIHRpdGxlPSJBIEZ1dHVyZSBJbnRlcm5ldCBBcmNoaXRlY3R1cmUiPjxpbWcgc3JjPSJodHRwOi8vbmFtZWQtZGF0YS5uZXQvd3AtY29udGVudC91cGxvYWRzL2Nyb3BwZWQtMjAxMzA3MjJfTG9nbzIucG5nIiBhbHQ9IiIgLz48L2E+CisgICAgICAgICAgICAgICAgICA8L2Rpdj48IS0tbG9nbyBlbmQtLT4KKyAgICAgICAgICAgICA8L2Rpdj4KKworICAgICAgICAgICAgIDwhLS10b3AgbWVudS0tPgorICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5pbmUgY29sdW1ucyIgaWQ9Im1lbnVfY29udGFpbmVyIiA+CisgICAgICAgICAgICAgICA8aDE+PGEgaHJlZj0ie3sgcGF0aHRvKG1hc3Rlcl9kb2MpIH19Ij57eyBzaG9ydHRpdGxlfGUgfX08L2E+PC9oMT4KKyAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+PCEtLWhlYWRlciBjb250YWluZXIgZW5kLS0+CisKK3slIGVuZGJsb2NrICV9CisKK3slIGJsb2NrIGNvbnRlbnQgJX0KKyAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPgorICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImRvY3VtZW50Ij4KKyAgICAgICAgICB7JS0gYmxvY2sgZG9jdW1lbnQgJX0KKyAgICAgICAgICAgIHt7IHN1cGVyKCkgfX0KKyAgICAgICAgICB7JS0gZW5kYmxvY2sgJX0KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiPgorICAgICAgICAgIHslLSBibG9jayBzaWRlYmFydG9jICV9CisgICAgICAgICAgPGgzPnt7IF8oJ1RhYmxlIE9mIENvbnRlbnRzJykgfX08L2gzPgorICAgICAgICAgIHt7IHRvY3RyZWUoaW5jbHVkZWhpZGRlbj1UcnVlKSB9fQorCisgICAgICAgICAgPGgzPnt7IF8oJ0RldmVsb3BlciBkb2N1bWVudGF0aW9uJykgfX08L2gzPgorICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBjbGFzcz0idG9jdHJlZS1sMSI+PGEgY2xhc3M9InJlZmVyZW5jZSBpbnRlcm5hbCIgaHJlZj0iZG94eWdlbi9hbm5vdGF0ZWQuaHRtbCI+QVBJIGRvY3VtZW50YXRpb24gKGRveHlnZW4pPC9hPjwvbGk+CisgICAgICAgICAgICA8bGkgY2xhc3M9InRvY3RyZWUtbDEiPjxhIGNsYXNzPSJyZWZlcmVuY2UgaW50ZXJuYWwiIGhyZWY9ImNvZGUtc3R5bGUuaHRtbCI+bmRuLWN4eCBDb2RlIFN0eWxlIGFuZCBDb2RpbmcgR3VpZGVsaW5lczwvYT48L2xpPgorICAgICAgICAgIDwvdWw+CisgICAgICAgICAgeyUtIGVuZGJsb2NrICV9CisKKyAgICAgICAgICB7JS0gYmxvY2sgc2lkZWJhcnNlYXJjaCAlfQorICAgICAgICAgIDxoMyBzdHlsZT0ibWFyZ2luLXRvcDogMS41ZW07Ij57eyBfKCdTZWFyY2gnKSB9fTwvaDM+CisgICAgICAgICAgPGZvcm0gY2xhc3M9InNlYXJjaCIgYWN0aW9uPSJ7eyBwYXRodG8oJ3NlYXJjaCcpIH19IiBtZXRob2Q9ImdldCI+CisgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icSIgLz4KKyAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJ7eyBfKCdHbycpIH19IiAvPgorICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY2hlY2tfa2V5d29yZHMiIHZhbHVlPSJ5ZXMiIC8+CisgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhcmVhIiB2YWx1ZT0iZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L2Zvcm0+CisgICAgICAgICAgPHAgY2xhc3M9InNlYXJjaHRpcCIgc3R5bGU9ImZvbnQtc2l6ZTogOTAlIj4KKyAgICAgICAgICAgIHt7IF8oJ0VudGVyIHNlYXJjaCB0ZXJtcyBvciBhIG1vZHVsZSwgY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZS4nKSB9fQorICAgICAgICAgIDwvcD4KKyAgICAgICAgICB7JS0gZW5kYmxvY2sgJX0KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyZXIiPjwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cit7JSBlbmRibG9jayAlfQorCit7JSBibG9jayBmb290ZXIgJX0KKyAgICA8ZGl2IGlkPSJmb290ZXItY29udGFpbmVyIj4KKyAgICAgICAgPCEtLWZvb3RlciBjb250YWluZXItLT4KKyAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KKyAgICAgICAgPC9kaXY+PCEtLSBmb290ZXIgY29udGFpbmVyLS0+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGlkPSJmb290ZXItaW5mbyI+CisgICAgICAgIDwhLS1mb290ZXIgY29udGFpbmVyLS0+CisgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d2VsdmUgY29sdW1ucyI+CisKKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjb3B5cmlnaHQiPlRoaXMgcmVzZWFyY2ggaXMgcGFydGlhbGx5IHN1cHBvcnRlZCBieSBOU0YgKEF3YXJkIDxhIGhyZWY9Imh0dHA6Ly93d3cubnNmLmdvdi9hd2FyZHNlYXJjaC9zaG93QXdhcmQ/QVdEX0lEPTEwNDA4NjgiIHRhcmdldD0iX2JsYW5rPiI+Q05TLTEwNDA4Njg8L2E+KTxici8+PGJyLz48YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC9kZWVkLmVuX1VTIiB0YXJnZXQ9Il9ibGFuayI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjAgVW5wb3J0ZWQgTGljZW5zZTwvYT4gZXhjZXB0IHdoZXJlIG5vdGVkLjwvZGl2PgorCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+PCEtLWZvb3RlciBpbmZvIGVuZC0tPgoreyUgZW5kYmxvY2sgJX0KKworeyUgYmxvY2sgcmVsYmFyMSAlfXslIGVuZGJsb2NrICV9Cit7JSBibG9jayByZWxiYXIyICV9eyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9uYW1lZF9kYXRhX2Zvb3Rlci13aXRoLWFuYWx5dGljcy5odG1sLmluIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL25hbWVkX2RhdGFfZm9vdGVyLXdpdGgtYW5hbHl0aWNzLmh0bWwuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA1YzFmMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9uYW1lZF9kYXRhX2Zvb3Rlci13aXRoLWFuYWx5dGljcy5odG1sLmluCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0gc3RhcnQgZm9vdGVyIHBhcnQgLS0+Cis8IS0tQkVHSU4gR0VORVJBVEVfVFJFRVZJRVctLT4KKzxkaXYgaWQ9Im5hdi1wYXRoIiBjbGFzcz0ibmF2cGF0aCI+PCEtLSBpZCBpcyBuZWVkZWQgZm9yIHRyZWV2aWV3IGZ1bmN0aW9uISAtLT4KKyAgPHVsPgorICAgICRuYXZwYXRoCisgICAgPGxpIGNsYXNzPSJmb290ZXIiPiRnZW5lcmF0ZWRieQorICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+CisgICAgPGltZyBjbGFzcz0iZm9vdGVyIiBzcmM9IiRyZWxwYXRoJGRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iLz48L2E+ICRkb3h5Z2VudmVyc2lvbiA8L2xpPgorICA8L3VsPgorPC9kaXY+Cis8IS0tRU5EIEdFTkVSQVRFX1RSRUVWSUVXLS0+Cis8IS0tQkVHSU4gIUdFTkVSQVRFX1RSRUVWSUVXLS0+Cis8aHIgY2xhc3M9ImZvb3RlciIvPgorPGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgorJGdlbmVyYXRlZGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iJHJlbHBhdGgkZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgorPC9hPiAkZG94eWdlbnZlcnNpb24KKzwvc21hbGw+PC9hZGRyZXNzPgorPCEtLUVORCAhR0VORVJBVEVfVFJFRVZJRVctLT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgIHZhciBfZ2FxID0gX2dhcSB8fCBbXTsKKyAgX2dhcS5wdXNoKFsnX3NldEFjY291bnQnLCAnQEdPT0dMRV9BTkFMWVRJQ1NAJ10pOworICBfZ2FxLnB1c2goWydfdHJhY2tQYWdldmlldyddKTsKKworICAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGdhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IGdhLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsgZ2EuYXN5bmMgPSB0cnVlOworICAgIGdhLnNyYyA9ICgnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczovL3NzbCcgOiAnaHR0cDovL3d3dycpICsgJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7CisgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2EsIHMpOworICB9KSgpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL25hbWVkX2RhdGFfZm9vdGVyLmh0bWwgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvbmFtZWRfZGF0YV9mb290ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2ZjMzI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL25hbWVkX2RhdGFfZm9vdGVyLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KKzwhLS1CRUdJTiBHRU5FUkFURV9UUkVFVklFVy0tPgorPGRpdiBpZD0ibmF2LXBhdGgiIGNsYXNzPSJuYXZwYXRoIj48IS0tIGlkIGlzIG5lZWRlZCBmb3IgdHJlZXZpZXcgZnVuY3Rpb24hIC0tPgorICA8dWw+CisgICAgJG5hdnBhdGgKKyAgICA8bGkgY2xhc3M9ImZvb3RlciI+JGdlbmVyYXRlZGJ5CisgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKyAgICA8aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iJHJlbHBhdGgkZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPjwvYT4gJGRveHlnZW52ZXJzaW9uIDwvbGk+CisgIDwvdWw+Cis8L2Rpdj4KKzwhLS1FTkQgR0VORVJBVEVfVFJFRVZJRVctLT4KKzwhLS1CRUdJTiAhR0VORVJBVEVfVFJFRVZJRVctLT4KKzxociBjbGFzcz0iZm9vdGVyIi8+Cis8YWRkcmVzcyBjbGFzcz0iZm9vdGVyIj48c21hbGw+CiskZ2VuZXJhdGVkYnkgJiMxNjA7PGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSIkcmVscGF0aCRkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIi8+Cis8L2E+ICRkb3h5Z2VudmVyc2lvbgorPC9zbWFsbD48L2FkZHJlc3M+Cis8IS0tRU5EICFHRU5FUkFURV9UUkVFVklFVy0tPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9uYW1lZF9kYXRhX2hlYWRlci5odG1sIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL25hbWVkX2RhdGFfaGVhZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0Mzk3YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9uYW1lZF9kYXRhX2hlYWRlci5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9OSIvPgorPCEtLUJFR0lOIFBST0pFQ1RfTkFNRS0tPjx0aXRsZT4kcHJvamVjdG5hbWU6ICR0aXRsZTwvdGl0bGU+PCEtLUVORCBQUk9KRUNUX05BTUUtLT4KKzwhLS1CRUdJTiAhUFJPSkVDVF9OQU1FLS0+PHRpdGxlPiR0aXRsZTwvdGl0bGU+PCEtLUVORCAhUFJPSkVDVF9OQU1FLS0+Cis8bGluayBocmVmPSIkcmVscGF0aCR0YWJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJHJlbHBhdGgkanF1ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IiRyZWxwYXRoJGR5bnNlY3Rpb25zLmpzIj48L3NjcmlwdD4KKyR0cmVldmlldworJHNlYXJjaAorJG1hdGhqYXgKKzxsaW5rIGhyZWY9IiRyZWxwYXRoJGRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Cis8bGluayBocmVmPSIkcmVscGF0aCRuYW1lZF9kYXRhX2RveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgaHJlZj0iJHJlbHBhdGgkZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UvaWNvIiAvPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgorCis8IS0tQkVHSU4gVElUTEVBUkVBLS0+Cis8IS0taGVhZGVyY29udGFpbmVyLS0+Cis8ZGl2IGlkPSJoZWFkZXJfY29udGFpbmVyIj4KKworICAgIDwhLS1oZWFkZXItLT4KKyAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgICAgICAgPGRpdiBjbGFzcz0idGhyZWUgY29sdW1ucyI+CisgICAgICAgICAgICAgIDxkaXYgaWQ9ImxvZ28iPgorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbmFtZWQtZGF0YS5uZXQiIHRpdGxlPSJBIEZ1dHVyZSBJbnRlcm5ldCBBcmNoaXRlY3R1cmUiPjxpbWcgc3JjPSJodHRwOi8vbmFtZWQtZGF0YS5uZXQvd3AtY29udGVudC91cGxvYWRzL2Nyb3BwZWQtMjAxMzA3MjJfTG9nbzIucG5nIiBhbHQ9IiIgLz48L2E+CisgICAgICAgICAgICAgIDwvZGl2PjwhLS1sb2dvIGVuZC0tPgorICAgICAgICAgPC9kaXY+CisKKyAgICAgICAgIDwhLS10b3AgbWVudS0tPgorICAgICAgICAgPGRpdiBjbGFzcz0ibmluZSBjb2x1bW5zIiBpZD0ibWVudV9jb250YWluZXIiID4KKyAgICAgICAgICAgPGgxPjxhIGhyZWY9Imh0dHA6Ly9uYW1lZC1kYXRhLm5ldC9kb2MvbmRuLWN4eC8kcHJvamVjdG51bWJlci8iPiRwcm9qZWN0bmFtZSAkcHJvamVjdG51bWJlciBkb2N1bWVudGF0aW9uPC9hPjwvaDE+CisgICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PjwhLS1oZWFkZXIgY29udGFpbmVyIGVuZC0tPgorPCEtLUVORCBUSVRMRUFSRUEtLT4KKworPCEtLSBlbmQgaGVhZGVyIHBhcnQgLS0+CmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2Jhci10b3AucG5nIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9iYXItdG9wLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2NhZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9iYXItdG9wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2Jhc2UuY3NzIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9iYXNlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRkMWMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9iYXNlLmNzcwpAQCAtMCwwICsxLDcxIEBACisqIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDBweDsKK30KKworaHRtbCB7IGZvbnQtc2l6ZTogNjIuNSU7IH0KKworYm9keSB7CisgIGZvbnQtZmFtaWx5OiAiVmVyZGFuYSIsIEFyaWFsLCBzYW5zLXNlcmlmOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVjOworICBjb2xvcjogIzc3NzsKKyAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICNmZDc4MDA7Cit9CisKK2JvZHkgeyBiYWNrZ3JvdW5kOiB3aGl0ZTsgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsICJIZWx2ZXRpY2EiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxOyBjb2xvcjogIzIyMjIyMjsgcG9zaXRpb246IHJlbGF0aXZlOyAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgfQorCisuY2xlYXJlciB7CisgIGNsZWFyOiBib3RoOworfQorCisubGVmdCB7CisgIGZsb2F0OiBsZWZ0OworfQorCisucmlnaHQgeworICBmbG9hdDogcmlnaHQ7Cit9CisKKy5saW5lLWJsb2NrIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBtYXJnaW4tdG9wOiAxZW07CisgICAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisubGluZS1ibG9jayAubGluZS1ibG9jayB7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIG1hcmdpbi1sZWZ0OiAxLjVlbTsKK30KKworaDEsIGgyLCBoMywgaDQgeworICBmb250LWZhbWlseTogIkdlb3JnaWEiLCAiVGltZXMgTmV3IFJvbWFuIiwgc2VyaWY7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGNvbG9yOiAjMzQ2NWE0OworICBtYXJnaW4tYm90dG9tOiAuOGVtOworfQorCitoMSB7CisgIGNvbG9yOiAjMjA0YTg3OworfQorCitoMiB7CisgIHBhZGRpbmctYm90dG9tOiAuNWVtOworICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzM0NjVhNDsKK30KKworYS5oZWFkZXJsaW5rIHsKKyAgdmlzaWJpbGl0eTogaGlkZGVuOworICBjb2xvcjogI2RkZGRkZDsKKyAgcGFkZGluZy1sZWZ0OiAuM2VtOworfQorCitoMTpob3ZlciA+IGEuaGVhZGVybGluaywKK2gyOmhvdmVyID4gYS5oZWFkZXJsaW5rLAoraDM6aG92ZXIgPiBhLmhlYWRlcmxpbmssCitoNDpob3ZlciA+IGEuaGVhZGVybGluaywKK2g1OmhvdmVyID4gYS5oZWFkZXJsaW5rLAoraDY6aG92ZXIgPiBhLmhlYWRlcmxpbmssCitkdDpob3ZlciA+IGEuaGVhZGVybGluayB7CisgIHZpc2liaWxpdHk6IHZpc2libGU7Cit9CmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2Jhc2UuY3NzX3QgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2Jhc2UuY3NzX3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkMzk3MwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvYmFzZS5jc3NfdApAQCAtMCwwICsxLDQ1OSBAQAorKiB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7Cit9CisKK2h0bWwgeyBmb250LXNpemU6IDYyLjUlOyB9CisKK2JvZHkgeworICBmb250LWZhbWlseToge3sgdGhlbWVfYm9keWZvbnQgfX07CisgIGJhY2tncm91bmQtY29sb3I6IHt7IHRoZW1lX2JnY29sb3IgfX07CisgIGNvbG9yOiAjNzc3OworICBib3JkZXItdG9wOiA0cHggc29saWQgI2ZkNzgwMDsKK30KKworYm9keSB7IGJhY2tncm91bmQ6IHdoaXRlOyBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgIkhlbHZldGljYSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE7IGNvbG9yOiAjMjIyMjIyOyBwb3NpdGlvbjogcmVsYXRpdmU7IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyB9CisKKy8qIFBhZ2UgbGF5b3V0ICovCisKK2Rpdi5oZWFkZXIsIGRpdi5jb250ZW50LCBkaXYuZm9vdGVyIHsKKyAgd2lkdGg6IDkwJTsKKyAgbWFyZ2luLWxlZnQ6IGF1dG87CisgIG1hcmdpbi1yaWdodDogYXV0bzsKK30KKworZGl2LmhlYWRlci13cmFwcGVyIHsKKyAgYmFja2dyb3VuZDoge3sgdGhlbWVfaGVhZGVyYmcgfX07CisgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMmUzNDM2OworfQorCisKKy8qIERlZmF1bHQgYm9keSBzdHlsZXMgKi8KK2EgeworICBjb2xvcjoge3sgdGhlbWVfbGlua2NvbG9yIH19OworfQorCitkaXYuYm9keXdyYXBwZXIgYSwgZGl2LmZvb3RlciBhIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisuY2xlYXJlciB7CisgIGNsZWFyOiBib3RoOworfQorCisubGVmdCB7CisgIGZsb2F0OiBsZWZ0OworfQorCisucmlnaHQgeworICBmbG9hdDogcmlnaHQ7Cit9CisKKy5saW5lLWJsb2NrIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBtYXJnaW4tdG9wOiAxZW07CisgICAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisubGluZS1ibG9jayAubGluZS1ibG9jayB7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIG1hcmdpbi1sZWZ0OiAxLjVlbTsKK30KKworaDEsIGgyLCBoMywgaDQgeworICBmb250LWZhbWlseToge3sgdGhlbWVfaGVhZGVyZm9udCB9fTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgY29sb3I6IHt7IHRoZW1lX2hlYWRlcmNvbG9yMiB9fTsKKyAgbWFyZ2luLWJvdHRvbTogLjhlbTsKK30KKworaDEgeworICBjb2xvcjoge3sgdGhlbWVfaGVhZGVyY29sb3IxIH19OworfQorCitoMiB7CisgIHBhZGRpbmctYm90dG9tOiAuNWVtOworICBib3JkZXItYm90dG9tOiAxcHggc29saWQge3sgdGhlbWVfaGVhZGVyY29sb3IyIH19OworfQorCithLmhlYWRlcmxpbmsgeworICB2aXNpYmlsaXR5OiBoaWRkZW47CisgIGNvbG9yOiAjZGRkZGRkOworICBwYWRkaW5nLWxlZnQ6IC4zZW07Cit9CisKK2gxOmhvdmVyID4gYS5oZWFkZXJsaW5rLAoraDI6aG92ZXIgPiBhLmhlYWRlcmxpbmssCitoMzpob3ZlciA+IGEuaGVhZGVybGluaywKK2g0OmhvdmVyID4gYS5oZWFkZXJsaW5rLAoraDU6aG92ZXIgPiBhLmhlYWRlcmxpbmssCitoNjpob3ZlciA+IGEuaGVhZGVybGluaywKK2R0OmhvdmVyID4gYS5oZWFkZXJsaW5rIHsKKyAgdmlzaWJpbGl0eTogdmlzaWJsZTsKK30KKworaW1nIHsKKyAgYm9yZGVyOiAwOworfQorCitkaXYuYWRtb25pdGlvbiB7CisgIG1hcmdpbi10b3A6IDEwcHg7CisgIG1hcmdpbi1ib3R0b206IDEwcHg7CisgIHBhZGRpbmc6IDJweCA3cHggMXB4IDdweDsKKyAgYm9yZGVyLWxlZnQ6IDAuMmVtIHNvbGlkIGJsYWNrOworfQorCitwLmFkbW9uaXRpb24tdGl0bGUgeworICBtYXJnaW46IDBweCAxMHB4IDVweCAwcHg7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitkdDp0YXJnZXQsIC5oaWdobGlnaHRlZCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmYmU1NGU7Cit9CisKKy8qIEhlYWRlciAqLworCitkaXYuaGVhZGVyIHsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBhZGRpbmctYm90dG9tOiAxMHB4OworfQorCitkaXYuaGVhZGVyIC5oZWFkZXJ0aXRsZSB7CisgIGZvbnQtZmFtaWx5OiB7eyB0aGVtZV9oZWFkZXJmb250IH19OworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDE4MCU7CisgIGxldHRlci1zcGFjaW5nOiAuMDhlbTsKKyAgbWFyZ2luLWJvdHRvbTogLjhlbTsKK30KKworZGl2LmhlYWRlciAuaGVhZGVydGl0bGUgYSB7CisgIGNvbG9yOiB3aGl0ZTsKK30KKworZGl2LmhlYWRlciBkaXYucmVsIHsKKyAgbWFyZ2luLXRvcDogMWVtOworfQorCitkaXYuaGVhZGVyIGRpdi5yZWwgYSB7CisgIGNvbG9yOiB7eyB0aGVtZV9oZWFkZXJsaW5rY29sb3IgfX07CisgIGxldHRlci1zcGFjaW5nOiAuMWVtOworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCitwLmxvZ28geworICAgIGZsb2F0OiByaWdodDsKK30KKworaW1nLmxvZ28geworICAgIGJvcmRlcjogMDsKK30KKworCisvKiBDb250ZW50ICovCitkaXYuY29udGVudC13cmFwcGVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgIHBhZGRpbmctdG9wOiAyMHB4OworICBwYWRkaW5nLWJvdHRvbTogMjBweDsKK30KKworZGl2LmRvY3VtZW50IHsKKyAgd2lkdGg6IDcwJTsKKyAgZmxvYXQ6IGxlZnQ7Cit9CisKK2Rpdi5ib2R5IHsKKyAgcGFkZGluZy1yaWdodDogMmVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYuZG9jdW1lbnQgaDEgeworICBsaW5lLWhlaWdodDogMTIwJTsKK30KKworZGl2LmRvY3VtZW50IHVsIHsKKyAgbWFyZ2luLWxlZnQ6IDEuNWVtOworICBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsKK30KKworZGl2LmRvY3VtZW50IGRkIHsKKyAgbWFyZ2luLWxlZnQ6IDEuMmVtOworICBtYXJnaW4tdG9wOiAuNGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK2Rpdi5kb2N1bWVudCAuc2VjdGlvbiB7CisgIG1hcmdpbi10b3A6IDEuN2VtOworfQorZGl2LmRvY3VtZW50IC5zZWN0aW9uOmZpcnN0LWNoaWxkIHsKKyAgbWFyZ2luLXRvcDogMHB4OworfQorCitkaXYuZG9jdW1lbnQgZGl2LmhpZ2hsaWdodCB7CisgIHBhZGRpbmc6IDNweDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlYzsKKyAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZGRkZGQ7CisgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGRkZGRkOworICBtYXJnaW4tYm90dG9tOiAuOGVtOworfQorCitkaXYuZG9jdW1lbnQgaDIgeworICBtYXJnaW4tdG9wOiAuN2VtOworfQorCitkaXYuZG9jdW1lbnQgcCB7CisgIG1hcmdpbi1ib3R0b206IC41ZW07Cit9CisKK2Rpdi5kb2N1bWVudCBsaS50b2N0cmVlLWwxIHsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYuZG9jdW1lbnQgLmRlc2NuYW1lIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2Rpdi5kb2N1bWVudCAuZG9jdXRpbHMubGl0ZXJhbCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWM7CisgIHBhZGRpbmc6IDFweDsKK30KKworZGl2LmRvY3VtZW50IC5kb2N1dGlscy54cmVmLmxpdGVyYWwgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgcGFkZGluZzogMHB4OworfQorCitkaXYuZG9jdW1lbnQgb2wgeworICBtYXJnaW46IDEuNWVtOworfQorCisKKy8qIFNpZGViYXIgKi8KKworZGl2LnNpZGViYXIgeworICB3aWR0aDogMjAlOworICBmbG9hdDogcmlnaHQ7CisgIGZvbnQtc2l6ZTogLjllbTsKK30KKworZGl2LnNpZGViYXIgYSwgZGl2LmhlYWRlciBhIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCitkaXYuc2lkZWJhciBhOmhvdmVyLCBkaXYuaGVhZGVyIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKK2Rpdi5zaWRlYmFyIGgzIHsKKyAgY29sb3I6ICMyZTM0MzY7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CisgIGZvbnQtc2l6ZTogMTMwJTsKKyAgbGV0dGVyLXNwYWNpbmc6IC4xZW07Cit9CisKK2Rpdi5zaWRlYmFyIHVsIHsKKyAgbGlzdC1zdHlsZS10eXBlOiBub25lOworfQorCitkaXYuc2lkZWJhciBsaS50b2N0cmVlLWwxIGEgeworICBkaXNwbGF5OiBibG9jazsKKyAgcGFkZGluZzogMXB4OworICBib3JkZXI6IDFweCBzb2xpZCAjZGRkZGRkOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVjOworICBtYXJnaW4tYm90dG9tOiAuNGVtOworICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgY29sb3I6ICMyZTM0MzY7Cit9CisKK2Rpdi5zaWRlYmFyIGxpLnRvY3RyZWUtbDIgYSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBib3JkZXI6IG5vbmU7CisgIG1hcmdpbi1sZWZ0OiAxZW07CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkZGRkOworfQorCitkaXYuc2lkZWJhciBsaS50b2N0cmVlLWwzIGEgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYm9yZGVyOiBub25lOworICBtYXJnaW4tbGVmdDogMmVtOworICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZGRkZDsKK30KKworZGl2LnNpZGViYXIgbGkudG9jdHJlZS1sMjpsYXN0LWNoaWxkIGEgeworICBib3JkZXItYm90dG9tOiBub25lOworfQorCitkaXYuc2lkZWJhciBsaS50b2N0cmVlLWwxLmN1cnJlbnQgYSB7CisgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHt7IHRoZW1lX2hlYWRlcmxpbmtjb2xvciB9fTsKK30KKworZGl2LnNpZGViYXIgbGkudG9jdHJlZS1sMS5jdXJyZW50IGxpLnRvY3RyZWUtbDIgYSB7CisgIGJvcmRlci1yaWdodDogbm9uZTsKK30KKworZGl2LnNpZGViYXIgaW5wdXRbdHlwZT0idGV4dCJdIHsKKyAgd2lkdGg6IDE3MHB4OworfQorCitkaXYuc2lkZWJhciBpbnB1dFt0eXBlPSJzdWJtaXQiXSB7CisgIHdpZHRoOiAzMHB4OworfQorCisKKy8qIEZvb3RlciAqLworCitkaXYuZm9vdGVyLXdyYXBwZXIgeworICBiYWNrZ3JvdW5kOiB7eyB0aGVtZV9mb290ZXJiZyB9fTsKKyAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICNiYWJkYjY7CisgIHBhZGRpbmctdG9wOiAxMHB4OworICBwYWRkaW5nLWJvdHRvbTogMTBweDsKKyAgbWluLWhlaWdodDogODBweDsKK30KKworZGl2LmZvb3RlciwgZGl2LmZvb3RlciBhIHsKKyAgY29sb3I6ICM4ODhhODU7Cit9CisKK2Rpdi5mb290ZXIgLnJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK2Rpdi5mb290ZXIgLmxlZnQgeworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCisKKy8qIFN0eWxlcyBjb3BpZWQgZnJvbSBiYXNpYyB0aGVtZSAqLworCitpbWcuYWxpZ24tbGVmdCwgLmZpZ3VyZS5hbGlnbi1sZWZ0LCBvYmplY3QuYWxpZ24tbGVmdCB7CisgICAgY2xlYXI6IGxlZnQ7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgbWFyZ2luLXJpZ2h0OiAxZW07Cit9CisKK2ltZy5hbGlnbi1yaWdodCwgLmZpZ3VyZS5hbGlnbi1yaWdodCwgb2JqZWN0LmFsaWduLXJpZ2h0IHsKKyAgICBjbGVhcjogcmlnaHQ7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIG1hcmdpbi1sZWZ0OiAxZW07Cit9CisKK2ltZy5hbGlnbi1jZW50ZXIsIC5maWd1cmUuYWxpZ24tY2VudGVyLCBvYmplY3QuYWxpZ24tY2VudGVyIHsKKyAgZGlzcGxheTogYmxvY2s7CisgIG1hcmdpbi1sZWZ0OiBhdXRvOworICBtYXJnaW4tcmlnaHQ6IGF1dG87Cit9CisKKy5hbGlnbi1sZWZ0IHsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWxpZ24tY2VudGVyIHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5hbGlnbi1yaWdodCB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy8qIC0tIHNlYXJjaCBwYWdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3VsLnNlYXJjaCB7CisgICAgbWFyZ2luOiAxMHB4IDAgMCAyMHB4OworICAgIHBhZGRpbmc6IDA7Cit9CisKK3VsLnNlYXJjaCBsaSB7CisgICAgcGFkZGluZzogNXB4IDAgNXB4IDIwcHg7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGZpbGUucG5nKTsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgN3B4OworfQorCit1bC5zZWFyY2ggbGkgYSB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK3VsLnNlYXJjaCBsaSBkaXYuY29udGV4dCB7CisgICAgY29sb3I6ICM4ODg7CisgICAgbWFyZ2luOiAycHggMCAwIDMwcHg7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwordWwua2V5d29yZG1hdGNoZXMgbGkuZ29vZG1hdGNoIGEgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisvKiAtLSBpbmRleCBwYWdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit0YWJsZS5jb250ZW50c3RhYmxlIHsKKyAgICB3aWR0aDogOTAlOworfQorCit0YWJsZS5jb250ZW50c3RhYmxlIHAuYmlnbGluayB7CisgICAgbGluZS1oZWlnaHQ6IDE1MCU7Cit9CisKK2EuYmlnbGluayB7CisgICAgZm9udC1zaXplOiAxLjNlbTsKK30KKworc3Bhbi5saW5rZGVzY3IgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBwYWRkaW5nLXRvcDogNXB4OworICAgIGZvbnQtc2l6ZTogOTAlOworfQorCisvKiAtLSBnZW5lcmFsIGluZGV4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit0YWJsZS5pbmRleHRhYmxlIHRkIHsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RhYmxlLmluZGV4dGFibGUgZGwsIHRhYmxlLmluZGV4dGFibGUgZGQgeworICAgIG1hcmdpbi10b3A6IDA7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKwordGFibGUuaW5kZXh0YWJsZSB0ci5wY2FwIHsKKyAgICBoZWlnaHQ6IDEwcHg7Cit9CisKK3RhYmxlLmluZGV4dGFibGUgdHIuY2FwIHsKKyAgICBtYXJnaW4tdG9wOiAxMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7Cit9CisKK2ltZy50b2dnbGVyIHsKKyAgICBtYXJnaW4tcmlnaHQ6IDNweDsKKyAgICBtYXJnaW4tdG9wOiAzcHg7CisgICAgY3Vyc29yOiBwb2ludGVyOworfQorCisvKiAtLSB2aWV3Y29kZSBleHRlbnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisudmlld2NvZGUtbGluayB7CisgICAgZmxvYXQ6IHJpZ2h0OworfQorCisudmlld2NvZGUtYmFjayB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIGZvbnQtZmFtaWx5Ojoge3sgdGhlbWVfYm9keWZvbnQgfX07Cit9CisKK2Rpdi52aWV3Y29kZS1ibG9jazp0YXJnZXQgeworICAgIG1hcmdpbjogLTFweCAtM3B4OworICAgIHBhZGRpbmc6IDAgM3B4OworICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGRlYmY7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNhYzk7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYzk7Cit9CisKK3RkLmxpbmVub3MgcHJlIHsKKyAgICBwYWRkaW5nOiA1cHggMHB4OworICAgIGJvcmRlcjogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBjb2xvcjogI2FhYTsKKyAgICBtYXJnaW4tdG9wOiAtMTBwdDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2JjX3MucG5nIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9iY19zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWJmODYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9iY19zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2RlZmF1bHQuY3NzX3QgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2RlZmF1bHQuY3NzX3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4Mjc2OAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvZGVmYXVsdC5jc3NfdApAQCAtMCwwICsxLDE0IEBACitAaW1wb3J0IHVybCgiYWdvZ28uY3NzIik7CisKK3ByZSB7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOworICAgIGNvbG9yOiAjMjIyOworICAgIGxpbmUtaGVpZ2h0OiAxLjJlbTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCAjQzZDOUNCOworICAgIGZvbnQtc2l6ZTogMS4xZW07CisgICAgLyogbWFyZ2luOiAxLjVlbSAwIDEuNWVtIDA7ICovCisgICAgbWFyZ2luOiAwOworICAgIGJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKyAgICBib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKK30KZGlmZiAtLWdpdCBhL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvZG94eWdlbi5jc3MgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2RveHlnZW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1Yzc5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2RveHlnZW4uY3NzCkBAIC0wLDAgKzEsMTE1NyBAQAorLyogVGhlIHN0YW5kYXJkIENTUyBmb3IgZG94eWdlbiAqLworCitib2R5LCB0YWJsZSwgZGl2LCBwLCBkbCB7CisJZm9udC1mYW1pbHk6IEx1Y2lkYSBHcmFuZGUsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7CisJZm9udC1zaXplOiAxM3B4OworCWxpbmUtaGVpZ2h0OiAxLjM7Cit9CisKKy8qIEBncm91cCBIZWFkaW5nIExldmVscyAqLworCitoMSB7CisJZm9udC1zaXplOiAxNTAlOworfQorCisudGl0bGUgeworCWZvbnQtc2l6ZTogMTUwJTsKKwlmb250LXdlaWdodDogYm9sZDsKKwltYXJnaW46IDEwcHggMnB4OworfQorCitoMiB7CisJZm9udC1zaXplOiAxMjAlOworfQorCitoMyB7CisJZm9udC1zaXplOiAxMDAlOworfQorCitoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKKwktd2Via2l0LXRyYW5zaXRpb246IHRleHQtc2hhZG93IDAuNXMgbGluZWFyOworCS1tb3otdHJhbnNpdGlvbjogdGV4dC1zaGFkb3cgMC41cyBsaW5lYXI7CisJLW1zLXRyYW5zaXRpb246IHRleHQtc2hhZG93IDAuNXMgbGluZWFyOworCS1vLXRyYW5zaXRpb246IHRleHQtc2hhZG93IDAuNXMgbGluZWFyOworCXRyYW5zaXRpb246IHRleHQtc2hhZG93IDAuNXMgbGluZWFyOworCW1hcmdpbi1yaWdodDogMTVweDsKK30KKworaDEuZ2xvdywgaDIuZ2xvdywgaDMuZ2xvdywgaDQuZ2xvdywgaDUuZ2xvdywgaDYuZ2xvdyB7CisJdGV4dC1zaGFkb3c6IDAgMCAxNXB4IGN5YW47Cit9CisKK2R0IHsKKwlmb250LXdlaWdodDogYm9sZDsKK30KKworZGl2Lm11bHRpY29sIHsKKwktbW96LWNvbHVtbi1nYXA6IDFlbTsKKwktd2Via2l0LWNvbHVtbi1nYXA6IDFlbTsKKwktbW96LWNvbHVtbi1jb3VudDogMzsKKwktd2Via2l0LWNvbHVtbi1jb3VudDogMzsKK30KKworcC5zdGFydGxpLCBwLnN0YXJ0ZGQsIHAuc3RhcnR0ZCB7CisJbWFyZ2luLXRvcDogMnB4OworfQorCitwLmVuZGxpIHsKKwltYXJnaW4tYm90dG9tOiAwcHg7Cit9CisKK3AuZW5kZGQgeworCW1hcmdpbi1ib3R0b206IDRweDsKK30KKworcC5lbmR0ZCB7CisJbWFyZ2luLWJvdHRvbTogMnB4OworfQorCisvKiBAZW5kICovCisKK2NhcHRpb24geworCWZvbnQtd2VpZ2h0OiBib2xkOworfQorCitzcGFuLmxlZ2VuZCB7CisgICAgICAgIGZvbnQtc2l6ZTogNzAlOworICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2gzLnZlcnNpb24geworICAgICAgICBmb250LXNpemU6IDkwJTsKKyAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitkaXYucWluZGV4LCBkaXYubmF2dGFieworCWJhY2tncm91bmQtY29sb3I6ICNFRkVGRUY7CisJYm9yZGVyOiAxcHggc29saWQgI0I1QjVCNTsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2Rpdi5xaW5kZXgsIGRpdi5uYXZwYXRoIHsKKwl3aWR0aDogMTAwJTsKKwlsaW5lLWhlaWdodDogMTQwJTsKK30KKworZGl2Lm5hdnRhYiB7CisJbWFyZ2luLXJpZ2h0OiAxNXB4OworfQorCisvKiBAZ3JvdXAgTGluayBTdHlsaW5nICovCisKK2EgeworCWNvbG9yOiAjNTg1ODU4OworCWZvbnQtd2VpZ2h0OiBub3JtYWw7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKi5jb250ZW50cyBhOnZpc2l0ZWQgeworCWNvbG9yOiAjNjg2ODY4OworfSovCisKK2E6aG92ZXIgeworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCithLnFpbmRleCB7CisJZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2EucWluZGV4SEwgeworCWZvbnQtd2VpZ2h0OiBib2xkOworCWJhY2tncm91bmQtY29sb3I6ICNCMEIwQjA7CisJY29sb3I6ICNmZmZmZmY7CisJYm9yZGVyOiAxcHggZG91YmxlICM5RjlGOUY7Cit9CisKKy5jb250ZW50cyBhLnFpbmRleEhMOnZpc2l0ZWQgeworICAgICAgICBjb2xvcjogI2ZmZmZmZjsKK30KKworYS5lbCB7CisJZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2EuZWxSZWYgeworfQorCithLmNvZGUsIGEuY29kZTp2aXNpdGVkIHsKKwljb2xvcjogIzQ2NjVBMjsKK30KKworYS5jb2RlUmVmLCBhLmNvZGVSZWY6dmlzaXRlZCB7CisJY29sb3I6ICM0NjY1QTI7Cit9CisKKy8qIEBlbmQgKi8KKworZGwuZWwgeworCW1hcmdpbi1sZWZ0OiAtMWNtOworfQorCitwcmUuZnJhZ21lbnQgeworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjQzRDRkU1OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJGQ0ZEOworICAgICAgICBwYWRkaW5nOiA0cHggNnB4OworICAgICAgICBtYXJnaW46IDRweCA4cHggNHB4IDJweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAgICAgICAgZm9udC1zaXplOiAgOXB0OworICAgICAgICBsaW5lLWhlaWdodDogMTI1JTsKKyAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgZml4ZWQ7CisgICAgICAgIGZvbnQtc2l6ZTogMTA1JTsKK30KKworZGl2LmZyYWdtZW50IHsKKyAgICAgICAgcGFkZGluZzogNHB4OworICAgICAgICBtYXJnaW46IDRweDsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDOworCWJvcmRlcjogMXB4IHNvbGlkICNEMEQwRDA7Cit9CisKK2Rpdi5saW5lIHsKKwlmb250LWZhbWlseTogbW9ub3NwYWNlLCBmaXhlZDsKKyAgICAgICAgZm9udC1zaXplOiAxM3B4OworCW1pbi1oZWlnaHQ6IDEzcHg7CisJbGluZS1oZWlnaHQ6IDEuMDsKKwl0ZXh0LXdyYXA6IHVucmVzdHJpY3RlZDsKKwl3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDsgLyogTW96ICovCisJd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgIC8qIE9wZXJhIDQtNiAqLworCXdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgICAvKiBPcGVyYSA3ICovCisJd2hpdGUtc3BhY2U6IHByZS13cmFwOyAgICAgIC8qIENTUzMgICovCisJd29yZC13cmFwOiBicmVhay13b3JkOyAgICAgIC8qIElFIDUuNSsgKi8KKwl0ZXh0LWluZGVudDogLTUzcHg7CisJcGFkZGluZy1sZWZ0OiA1M3B4OworCXBhZGRpbmctYm90dG9tOiAwcHg7CisJbWFyZ2luOiAwcHg7CisJLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3gtc2hhZG93OworCS13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKKwktbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7CisJLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOworCS1tcy10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3gtc2hhZG93OworCS1tcy10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOworCS1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7CisJLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKKwl0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3gtc2hhZG93OworCXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7Cit9CisKK2Rpdi5saW5lLmdsb3cgeworCWJhY2tncm91bmQtY29sb3I6IGN5YW47CisJYm94LXNoYWRvdzogMCAwIDEwcHggY3lhbjsKK30KKworCitzcGFuLmxpbmVubyB7CisJcGFkZGluZy1yaWdodDogNHB4OworCXRleHQtYWxpZ246IHJpZ2h0OworCWJvcmRlci1yaWdodDogMnB4IHNvbGlkICMwRjA7CisJYmFja2dyb3VuZC1jb2xvcjogI0U4RThFODsKKyAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKK30KK3NwYW4ubGluZW5vIGEgeworCWJhY2tncm91bmQtY29sb3I6ICNEOEQ4RDg7Cit9CisKK3NwYW4ubGluZW5vIGE6aG92ZXIgeworCWJhY2tncm91bmQtY29sb3I6ICNDOEM4Qzg7Cit9CisKK2Rpdi5haCB7CisJYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisJZm9udC13ZWlnaHQ6IGJvbGQ7CisJY29sb3I6ICNmZmZmZmY7CisJbWFyZ2luLWJvdHRvbTogM3B4OworCW1hcmdpbi10b3A6IDNweDsKKwlwYWRkaW5nOiAwLjJlbTsKKwlib3JkZXI6IHNvbGlkIHRoaW4gIzMzMzsKKwlib3JkZXItcmFkaXVzOiAwLjVlbTsKKwktd2Via2l0LWJvcmRlci1yYWRpdXM6IC41ZW07CisJLW1vei1ib3JkZXItcmFkaXVzOiAuNWVtOworCWJveC1zaGFkb3c6IDJweCAycHggM3B4ICM5OTk7CisJLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMnB4IDNweCAjOTk5OworCS1tb3otYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjE1KSAycHggMnB4IDJweDsKKwliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNlZWUpLCB0bygjMDAwKSxjb2xvci1zdG9wKDAuMywgIzQ0NCkpOworCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGNlbnRlciB0b3AsICNlZWUgMCUsICM0NDQgNDAlLCAjMDAwKTsKK30KKworZGl2Lmdyb3VwSGVhZGVyIHsKKwltYXJnaW4tbGVmdDogMTZweDsKKwltYXJnaW4tdG9wOiAxMnB4OworCWZvbnQtd2VpZ2h0OiBib2xkOworfQorCitkaXYuZ3JvdXBUZXh0IHsKKwltYXJnaW4tbGVmdDogMTZweDsKKwlmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKK2JvZHkgeworCWJhY2tncm91bmQtY29sb3I6IHdoaXRlOworCWNvbG9yOiBibGFjazsKKyAgICAgICAgbWFyZ2luOiAwOworfQorCitkaXYuY29udGVudHMgeworCW1hcmdpbi10b3A6IDEwcHg7CisJbWFyZ2luLWxlZnQ6IDEycHg7CisJbWFyZ2luLXJpZ2h0OiA4cHg7Cit9CisKK3RkLmluZGV4a2V5IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRUZFRkVGOworCWZvbnQtd2VpZ2h0OiBib2xkOworCWJvcmRlcjogMXB4IHNvbGlkICNEMEQwRDA7CisJbWFyZ2luOiAycHggMHB4IDJweCAwOworCXBhZGRpbmc6IDJweCAxMHB4OworICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZC5pbmRleHZhbHVlIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRUZFRkVGOworCWJvcmRlcjogMXB4IHNvbGlkICNEMEQwRDA7CisJcGFkZGluZzogMnB4IDEwcHg7CisJbWFyZ2luOiAycHggMHB4OworfQorCit0ci5tZW1saXN0IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYxOworfQorCitwLmZvcm11bGFEc3AgeworCXRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nLmZvcm11bGFEc3AgeworCit9CisKK2ltZy5mb3JtdWxhSW5sIHsKKwl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworfQorCitkaXYuY2VudGVyIHsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgICAgIG1hcmdpbi10b3A6IDBweDsKKyAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OworICAgICAgICBwYWRkaW5nOiAwcHg7Cit9CisKK2Rpdi5jZW50ZXIgaW1nIHsKKwlib3JkZXI6IDBweDsKK30KKworYWRkcmVzcy5mb290ZXIgeworCXRleHQtYWxpZ246IHJpZ2h0OworCXBhZGRpbmctcmlnaHQ6IDEycHg7Cit9CisKK2ltZy5mb290ZXIgeworCWJvcmRlcjogMHB4OworCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy8qIEBncm91cCBDb2RlIENvbG9yaXphdGlvbiAqLworCitzcGFuLmtleXdvcmQgeworCWNvbG9yOiAjMDA4MDAwCit9CisKK3NwYW4ua2V5d29yZHR5cGUgeworCWNvbG9yOiAjNjA0MDIwCit9CisKK3NwYW4ua2V5d29yZGZsb3cgeworCWNvbG9yOiAjZTA4MDAwCit9CisKK3NwYW4uY29tbWVudCB7CisJY29sb3I6ICM4MDAwMDAKK30KKworc3Bhbi5wcmVwcm9jZXNzb3IgeworCWNvbG9yOiAjODA2MDIwCit9CisKK3NwYW4uc3RyaW5nbGl0ZXJhbCB7CisJY29sb3I6ICMwMDIwODAKK30KKworc3Bhbi5jaGFybGl0ZXJhbCB7CisJY29sb3I6ICMwMDgwODAKK30KKworc3Bhbi52aGRsZGlnaXQgeworCWNvbG9yOiAjZmYwMGZmCit9CisKK3NwYW4udmhkbGNoYXIgeworCWNvbG9yOiAjMDAwMDAwCit9CisKK3NwYW4udmhkbGtleXdvcmQgeworCWNvbG9yOiAjNzAwMDcwCit9CisKK3NwYW4udmhkbGxvZ2ljIHsKKwljb2xvcjogI2ZmMDAwMAorfQorCitibG9ja3F1b3RlIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjhGODsKKyAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQjBCMEIwOworICAgICAgICBtYXJnaW46IDAgMjRweCAwIDRweDsKKyAgICAgICAgcGFkZGluZzogMCAxMnB4IDAgMTZweDsKK30KKworLyogQGVuZCAqLworCisvKgorLnNlYXJjaCB7CisJY29sb3I6ICMwMDMzOTk7CisJZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2Zvcm0uc2VhcmNoIHsKKwltYXJnaW4tYm90dG9tOiAwcHg7CisJbWFyZ2luLXRvcDogMHB4OworfQorCitpbnB1dC5zZWFyY2ggeworCWZvbnQtc2l6ZTogNzUlOworCWNvbG9yOiAjMDAwMDgwOworCWZvbnQtd2VpZ2h0OiBub3JtYWw7CisJYmFja2dyb3VuZC1jb2xvcjogI2U4ZWVmMjsKK30KKyovCisKK3RkLnRpbnkgeworCWZvbnQtc2l6ZTogNzUlOworfQorCisuZGlydGFiIHsKKwlwYWRkaW5nOiA0cHg7CisJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKKwlib3JkZXI6IDFweCBzb2xpZCAjQjVCNUI1OworfQorCit0aC5kaXJ0YWIgeworCWJhY2tncm91bmQ6ICNFRkVGRUY7CisJZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2hyIHsKKwloZWlnaHQ6IDBweDsKKwlib3JkZXI6IG5vbmU7CisJYm9yZGVyLXRvcDogMXB4IHNvbGlkICM2RTZFNkU7Cit9CisKK2hyLmZvb3RlciB7CisJaGVpZ2h0OiAxcHg7Cit9CisKKy8qIEBncm91cCBNZW1iZXIgRGVzY3JpcHRpb25zICovCisKK3RhYmxlLm1lbWJlcmRlY2xzIHsKKwlib3JkZXItc3BhY2luZzogMHB4OworCXBhZGRpbmc6IDBweDsKK30KKworLm1lbWJlcmRlY2xzIHRkIHsKKwktd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7CisJLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOworCS1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKKwktbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7CisJLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7CisJLW1zLXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7CisJLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKKwktby10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOworCXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7CisJdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKK30KKworLm1lbWJlcmRlY2xzIHRkLmdsb3cgeworCWJhY2tncm91bmQtY29sb3I6IGN5YW47CisJYm94LXNoYWRvdzogMCAwIDE1cHggY3lhbjsKK30KKworLm1kZXNjTGVmdCwgLm1kZXNjUmlnaHQsCisubWVtSXRlbUxlZnQsIC5tZW1JdGVtUmlnaHQsCisubWVtVGVtcGxJdGVtTGVmdCwgLm1lbVRlbXBsSXRlbVJpZ2h0LCAubWVtVGVtcGxQYXJhbXMgeworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJYm9yZGVyOiBub25lOworCW1hcmdpbjogNHB4OworCXBhZGRpbmc6IDFweCAwIDAgOHB4OworfQorCisubWRlc2NMZWZ0LCAubWRlc2NSaWdodCB7CisJcGFkZGluZzogMHB4IDhweCA0cHggOHB4OworCWNvbG9yOiAjNTU1OworfQorCisubWVtSXRlbUxlZnQsIC5tZW1JdGVtUmlnaHQsIC5tZW1UZW1wbFBhcmFtcyB7CisJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNEMEQwRDA7Cit9CisKKy5tZW1JdGVtTGVmdCwgLm1lbVRlbXBsSXRlbUxlZnQgeworICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisubWVtSXRlbVJpZ2h0IHsKKwl3aWR0aDogMTAwJTsKK30KKworLm1lbVRlbXBsUGFyYW1zIHsKKwljb2xvcjogIzY4Njg2ODsKKyAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLyogQGVuZCAqLworCisvKiBAZ3JvdXAgTWVtYmVyIERldGFpbHMgKi8KKworLyogU3R5bGVzIGZvciBkZXRhaWxlZCBtZW1iZXIgZG9jdW1lbnRhdGlvbiAqLworCisubWVtdGVtcGxhdGUgeworCWZvbnQtc2l6ZTogODAlOworCWNvbG9yOiAjNjg2ODY4OworCWZvbnQtd2VpZ2h0OiBub3JtYWw7CisJbWFyZ2luLWxlZnQ6IDlweDsKK30KKworLm1lbW5hdiB7CisJYmFja2dyb3VuZC1jb2xvcjogI0VGRUZFRjsKKwlib3JkZXI6IDFweCBzb2xpZCAjQjVCNUI1OworCXRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDJweDsKKwltYXJnaW4tcmlnaHQ6IDE1cHg7CisJcGFkZGluZzogMnB4OworfQorCisubWVtcGFnZSB7CisJd2lkdGg6IDEwMCU7Cit9CisKKy5tZW1pdGVtIHsKKwlwYWRkaW5nOiAwOworCW1hcmdpbi1ib3R0b206IDEwcHg7CisJbWFyZ2luLXJpZ2h0OiA1cHg7CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKKyAgICAgICAgLW1vei10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMgbGluZWFyOworICAgICAgICAtbXMtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKKyAgICAgICAgLW8tdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKKyAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKKyAgICAgICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKKyAgICAgICAgd2lkdGg6IDEwMCU7Cit9CisKKy5tZW1pdGVtLmdsb3cgeworICAgICAgICAgYm94LXNoYWRvdzogMCAwIDE1cHggY3lhbjsKK30KKworLm1lbW5hbWUgeworICAgICAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDsKK30KKworLm1lbW5hbWUgdGQgeworCXZlcnRpY2FsLWFsaWduOiBib3R0b207Cit9CisKKy5tZW1wcm90bywgZGwucmVmbGlzdCBkdCB7CisgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQjlCOUI5OworICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCOUI5Qjk7CisgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCOUI5Qjk7CisgICAgICAgIHBhZGRpbmc6IDZweCAwcHggNnB4IDBweDsKKyAgICAgICAgY29sb3I6ICMzMjMyMzI7CisgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgICAgICB0ZXh0LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnbmF2X2YucG5nJyk7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4OworICAgICAgICAvKiBvcGVyYSBzcGVjaWZpYyBtYXJrdXAgKi8KKyAgICAgICAgYm94LXNoYWRvdzogNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKKyAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKKyAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OworICAgICAgICAvKiBmaXJlZm94IHNwZWNpZmljIG1hcmt1cCAqLworICAgICAgICAtbW96LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNSkgNXB4IDVweCA1cHg7CisgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4OworICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNHB4OworICAgICAgICAvKiB3ZWJraXQgc3BlY2lmaWMgbWFya3VwICovCisgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OworICAgICAgICAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKKworfQorCisubWVtZG9jLCBkbC5yZWZsaXN0IGRkIHsKKyAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCOUI5Qjk7CisgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0I5QjlCOTsKKyAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0I5QjlCOTsKKyAgICAgICAgcGFkZGluZzogNnB4IDEwcHggMnB4IDEwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0ZDRkM7CisgICAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCduYXZfZy5wbmcnKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7CisgICAgICAgIC8qIG9wZXJhIHNwZWNpZmljIG1hcmt1cCAqLworICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CisgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CisgICAgICAgIGJveC1zaGFkb3c6IDVweCA1cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CisgICAgICAgIC8qIGZpcmVmb3ggc3BlY2lmaWMgbWFya3VwICovCisgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA0cHg7CisgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNHB4OworICAgICAgICAtbW96LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNSkgNXB4IDVweCA1cHg7CisgICAgICAgIC8qIHdlYmtpdCBzcGVjaWZpYyBtYXJrdXAgKi8KKyAgICAgICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiA1cHggNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTUpOworfQorCitkbC5yZWZsaXN0IGR0IHsKKyAgICAgICAgcGFkZGluZzogNXB4OworfQorCitkbC5yZWZsaXN0IGRkIHsKKyAgICAgICAgbWFyZ2luOiAwcHggMHB4IDEwcHggMHB4OworICAgICAgICBwYWRkaW5nOiA1cHg7Cit9CisKKy5wYXJhbWtleSB7CisJdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy5wYXJhbXR5cGUgeworCXdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy5wYXJhbW5hbWUgeworCWNvbG9yOiAjNjAyMDIwOworCXdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisucGFyYW1uYW1lIGVtIHsKKwlmb250LXN0eWxlOiBub3JtYWw7Cit9CisucGFyYW1uYW1lIGNvZGUgeworICAgICAgICBsaW5lLWhlaWdodDogMTRweDsKK30KKworLnBhcmFtcywgLnJldHZhbCwgLmV4Y2VwdGlvbiwgLnRwYXJhbXMgeworICAgICAgICBtYXJnaW4tbGVmdDogMHB4OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDsKK30KKworLnBhcmFtcyAucGFyYW1uYW1lLCAucmV0dmFsIC5wYXJhbW5hbWUgeworICAgICAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworLnBhcmFtcyAucGFyYW10eXBlIHsKKyAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCisucGFyYW1zIC5wYXJhbWRpciB7CisgICAgICAgIGZvbnQtZmFtaWx5OiAiY291cmllciBuZXciLGNvdXJpZXIsbW9ub3NwYWNlOworICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0YWJsZS5tbGFiZWxzIHsKKwlib3JkZXItc3BhY2luZzogMHB4OworfQorCit0ZC5tbGFiZWxzLWxlZnQgeworCXdpZHRoOiAxMDAlOworCXBhZGRpbmc6IDBweDsKK30KKwordGQubWxhYmVscy1yaWdodCB7CisJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKKwlwYWRkaW5nOiAwcHg7CisJd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworc3Bhbi5tbGFiZWxzIHsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKK30KKworc3Bhbi5tbGFiZWwgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEY4RjhGOworICAgICAgICBib3JkZXItdG9wOjFweCBzb2xpZCAjNzg3ODc4OworICAgICAgICBib3JkZXItbGVmdDoxcHggc29saWQgIzc4Nzg3ODsKKyAgICAgICAgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRDBEMEQwOworICAgICAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRDBEMEQwOworCXRleHQtc2hhZG93OiBub25lOworICAgICAgICBjb2xvcjogd2hpdGU7CisgICAgICAgIG1hcmdpbi1yaWdodDogNHB4OworICAgICAgICBwYWRkaW5nOiAycHggM3B4OworICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAgICAgIGZvbnQtc2l6ZTogN3B0OworCXdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKworCisvKiBAZW5kICovCisKKy8qIHRoZXNlIGFyZSBmb3IgdHJlZSB2aWV3IHdoZW4gbm90IHVzZWQgYXMgbWFpbiBpbmRleCAqLworCitkaXYuZGlyZWN0b3J5IHsKKyAgICAgICAgbWFyZ2luOiAxMHB4IDBweDsKKyAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNBOEI4RDk7CisgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQThCOEQ5OworICAgICAgICB3aWR0aDogMTAwJTsKK30KKworLmRpcmVjdG9yeSB0YWJsZSB7CisgICAgICAgIGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsKKyAgICAgICAgd2lkdGg6IDEwMCU7Cit9CisKKy5kaXJlY3RvcnkgdGQgeworICAgICAgICBtYXJnaW46IDBweDsKKyAgICAgICAgcGFkZGluZzogMHB4OworCXZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKKy5kaXJlY3RvcnkgdGQuZW50cnkgeworICAgICAgICB3aWR0aDogMjAlOworICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgICAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7Cit9CisKKy5kaXJlY3RvcnkgdGQuZW50cnkgYSB7CisgICAgICAgIG91dGxpbmU6bm9uZTsKK30KKworLmRpcmVjdG9yeSB0ZC5lbnRyeSBhIGltZyB7CisgICAgICAgIGJvcmRlcjogbm9uZTsKK30KKworLmRpcmVjdG9yeSB0ZC5kZXNjIHsKKyAgICAgICAgd2lkdGg6IDgwJTsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiA2cHg7CisJcGFkZGluZy1yaWdodDogNnB4OworCWJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjA1KTsKK30KKworLmRpcmVjdG9yeSB0ci5ldmVuIHsKKwlwYWRkaW5nLWxlZnQ6IDZweDsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRjhGOEY4OworfQorCisuZGlyZWN0b3J5IGltZyB7CisJdmVydGljYWwtYWxpZ246IC0zMCU7Cit9CisKKy5kaXJlY3RvcnkgLmxldmVscyB7CisgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICAgICAgZm9udC1zaXplOiA5cHQ7Cit9CisKKy5kaXJlY3RvcnkgLmxldmVscyBzcGFuIHsKKyAgICAgICAgY3Vyc29yOiBwb2ludGVyOworICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKKyAgICAgICAgcGFkZGluZy1yaWdodDogMnB4OworCWNvbG9yOiAjNTg1ODU4OworfQorCitkaXYuZHluaGVhZGVyIHsKKyAgICAgICAgbWFyZ2luLXRvcDogOHB4OworCS13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKKwktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworCS1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsKKwktbW96LXVzZXItc2VsZWN0OiBub25lOworCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKKwl1c2VyLXNlbGVjdDogbm9uZTsKK30KKworYWRkcmVzcyB7CisJZm9udC1zdHlsZTogbm9ybWFsOworCWNvbG9yOiAjM0EzQTNBOworfQorCit0YWJsZS5kb3h0YWJsZSB7CisJYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOworICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CisgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDsKK30KKwordGFibGUuZG94dGFibGUgdGQsIHRhYmxlLmRveHRhYmxlIHRoIHsKKwlib3JkZXI6IDFweCBzb2xpZCAjM0YzRjNGOworCXBhZGRpbmc6IDNweCA3cHggMnB4OworfQorCit0YWJsZS5kb3h0YWJsZSB0aCB7CisJYmFja2dyb3VuZC1jb2xvcjogIzRGNEY0RjsKKwljb2xvcjogI0ZGRkZGRjsKKwlmb250LXNpemU6IDExMCU7CisJcGFkZGluZy1ib3R0b206IDRweDsKKwlwYWRkaW5nLXRvcDogNXB4OworfQorCit0YWJsZS5maWVsZHRhYmxlIHsKKyAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNCOUI5Qjk7CisgICAgICAgIGJvcmRlci1zcGFjaW5nOiAwcHg7CisgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OworICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKKyAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgICAgICAtbW96LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNSkgMnB4IDJweCAycHg7CisgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKKyAgICAgICAgYm94LXNoYWRvdzogMnB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKK30KKworLmZpZWxkdGFibGUgdGQsIC5maWVsZHRhYmxlIHRoIHsKKyAgICAgICAgcGFkZGluZzogM3B4IDdweCAycHg7Cit9CisKKy5maWVsZHRhYmxlIHRkLmZpZWxkdHlwZSwgLmZpZWxkdGFibGUgdGQuZmllbGRuYW1lIHsKKyAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0I5QjlCOTsKKyAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCOUI5Qjk7CisgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKKy5maWVsZHRhYmxlIHRkLmZpZWxkZG9jIHsKKyAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCOUI5Qjk7CisgICAgICAgIHdpZHRoOiAxMDAlOworfQorCisuZmllbGR0YWJsZSB0cjpsYXN0LWNoaWxkIHRkIHsKKyAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKK30KKworLmZpZWxkdGFibGUgdGggeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnbmF2X2YucG5nJyk7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4OworICAgICAgICBmb250LXNpemU6IDkwJTsKKyAgICAgICAgY29sb3I6ICMzMjMyMzI7CisgICAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7CisgICAgICAgIHBhZGRpbmctdG9wOiA1cHg7CisgICAgICAgIHRleHQtYWxpZ246bGVmdDsKKyAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDRweDsKKyAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiA0cHg7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OworICAgICAgICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CisgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKKyAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKKyAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNCOUI5Qjk7Cit9CisKKworLnRhYnNlYXJjaCB7CisJdG9wOiAwcHg7CisJbGVmdDogMTBweDsKKwloZWlnaHQ6IDM2cHg7CisJYmFja2dyb3VuZC1pbWFnZTogdXJsKCd0YWJfYi5wbmcnKTsKKwl6LWluZGV4OiAxMDE7CisJb3ZlcmZsb3c6IGhpZGRlbjsKKwlmb250LXNpemU6IDEzcHg7Cit9CisKKy5uYXZwYXRoIHVsCit7CisJZm9udC1zaXplOiAxMXB4OworCWJhY2tncm91bmQtaW1hZ2U6dXJsKCd0YWJfYi5wbmcnKTsKKwliYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDsKKwloZWlnaHQ6MzBweDsKKwlsaW5lLWhlaWdodDozMHB4OworCWNvbG9yOiNBMkEyQTI7CisJYm9yZGVyOnNvbGlkIDFweCAjQ0VDRUNFOworCW92ZXJmbG93OmhpZGRlbjsKKwltYXJnaW46MHB4OworCXBhZGRpbmc6MHB4OworfQorCisubmF2cGF0aCBsaQoreworCWxpc3Qtc3R5bGUtdHlwZTpub25lOworCWZsb2F0OmxlZnQ7CisJcGFkZGluZy1sZWZ0OjEwcHg7CisJcGFkZGluZy1yaWdodDoxNXB4OworCWJhY2tncm91bmQtaW1hZ2U6dXJsKCdiY19zLnBuZycpOworCWJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsKKwliYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0OworCWNvbG9yOiM0RDRENEQ7Cit9CisKKy5uYXZwYXRoIGxpLm5hdmVsZW0gYQoreworCWhlaWdodDozMnB4OworCWRpc3BsYXk6YmxvY2s7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCW91dGxpbmU6IG5vbmU7Cit9CisKKy5uYXZwYXRoIGxpLm5hdmVsZW0gYTpob3ZlcgoreworCWNvbG9yOiM4ODg4ODg7Cit9CisKKy5uYXZwYXRoIGxpLmZvb3RlcgoreworICAgICAgICBsaXN0LXN0eWxlLXR5cGU6bm9uZTsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHBhZGRpbmctbGVmdDoxMHB4OworICAgICAgICBwYWRkaW5nLXJpZ2h0OjE1cHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OworICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0OworICAgICAgICBjb2xvcjojNEQ0RDREOworICAgICAgICBmb250LXNpemU6IDhwdDsKK30KKworCitkaXYuc3VtbWFyeQoreworCWZsb2F0OiByaWdodDsKKwlmb250LXNpemU6IDhwdDsKKwlwYWRkaW5nLXJpZ2h0OiA1cHg7CisJd2lkdGg6IDUwJTsKKwl0ZXh0LWFsaWduOiByaWdodDsKK30KKworZGl2LnN1bW1hcnkgYQoreworCXdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKK2Rpdi5pbmdyb3VwcworeworCWZvbnQtc2l6ZTogOHB0OworCXdpZHRoOiA1MCU7CisJdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmluZ3JvdXBzIGEKK3sKKwl3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCitkaXYuaGVhZGVyCit7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCduYXZfaC5wbmcnKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwltYXJnaW46ICAwcHg7CisJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEMEQwRDA7Cit9CisKK2Rpdi5oZWFkZXJ0aXRsZQoreworCXBhZGRpbmc6IDVweCA1cHggNXB4IDdweDsKK30KKworZGwKK3sKKyAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKK30KKworLyogZGwubm90ZSwgZGwud2FybmluZywgZGwuYXR0ZW50aW9uLCBkbC5wcmUsIGRsLnBvc3QsIGRsLmludmFyaWFudCwgZGwuZGVwcmVjYXRlZCwgZGwudG9kbywgZGwudGVzdCwgZGwuYnVnICovCitkbC5zZWN0aW9uCit7CisJbWFyZ2luLWxlZnQ6IDBweDsKKwlwYWRkaW5nLWxlZnQ6IDBweDsKK30KKworZGwubm90ZQoreworICAgICAgICBtYXJnaW4tbGVmdDotN3B4OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOworICAgICAgICBib3JkZXItY29sb3I6ICNEMEMwMDA7Cit9CisKK2RsLndhcm5pbmcsIGRsLmF0dGVudGlvbgoreworICAgICAgICBtYXJnaW4tbGVmdDotN3B4OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOworICAgICAgICBib3JkZXItY29sb3I6ICNGRjAwMDA7Cit9CisKK2RsLnByZSwgZGwucG9zdCwgZGwuaW52YXJpYW50Cit7CisgICAgICAgIG1hcmdpbi1sZWZ0Oi03cHg7CisgICAgICAgIHBhZGRpbmctbGVmdDogM3B4OworICAgICAgICBib3JkZXItbGVmdDo0cHggc29saWQ7CisgICAgICAgIGJvcmRlci1jb2xvcjogIzAwRDAwMDsKK30KKworZGwuZGVwcmVjYXRlZAoreworICAgICAgICBtYXJnaW4tbGVmdDotN3B4OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOworICAgICAgICBib3JkZXItY29sb3I6ICM1MDUwNTA7Cit9CisKK2RsLnRvZG8KK3sKKyAgICAgICAgbWFyZ2luLWxlZnQ6LTdweDsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAzcHg7CisgICAgICAgIGJvcmRlcjo0cHggc29saWQ7CisgICAgICAgIGJvcmRlci1jb2xvcjogIzAwQzBFMDsKK30KKworZGwudGVzdAoreworICAgICAgICBtYXJnaW4tbGVmdDotN3B4OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOworICAgICAgICBib3JkZXItY29sb3I6ICMzMDMwRTA7Cit9CisKK2RsLmJ1ZworeworICAgICAgICBtYXJnaW4tbGVmdDotN3B4OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOworICAgICAgICBib3JkZXItY29sb3I6ICNDMDgwNTA7Cit9CisKK2RsLnNlY3Rpb24gZGQgeworCW1hcmdpbi1ib3R0b206IDZweDsKK30KKworCisjcHJvamVjdGxvZ28KK3sKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKKwlib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOworfQorCisjcHJvamVjdGxvZ28gaW1nCit7CisJYm9yZGVyOiAwcHggbm9uZTsKK30KKworI3Byb2plY3RuYW1lCit7CisJZm9udDogMzAwJSBUYWhvbWEsIEFyaWFsLHNhbnMtc2VyaWY7CisJbWFyZ2luOiAwcHg7CisJcGFkZGluZzogMnB4IDBweDsKK30KKworI3Byb2plY3RicmllZgoreworCWZvbnQ6IDEyMCUgVGFob21hLCBBcmlhbCxzYW5zLXNlcmlmOworCW1hcmdpbjogMHB4OworCXBhZGRpbmc6IDBweDsKK30KKworI3Byb2plY3RudW1iZXIKK3sKKwlmb250OiA1MCUgVGFob21hLCBBcmlhbCxzYW5zLXNlcmlmOworCW1hcmdpbjogMHB4OworCXBhZGRpbmc6IDBweDsKK30KKworI3RpdGxlYXJlYQoreworCXBhZGRpbmc6IDBweDsKKwltYXJnaW46IDBweDsKKwl3aWR0aDogMTAwJTsKKwlib3JkZXItYm90dG9tOiAxcHggc29saWQgIzc4Nzg3ODsKK30KKworLmltYWdlCit7CisgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLmRvdGdyYXBoCit7CisgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLm1zY2dyYXBoCit7CisgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLmNhcHRpb24KK3sKKwlmb250LXdlaWdodDogYm9sZDsKK30KKworZGl2Lnpvb20KK3sKKwlib3JkZXI6IDFweCBzb2xpZCAjQTZBNkE2OworfQorCitkbC5jaXRlbGlzdCB7CisgICAgICAgIG1hcmdpbi1ib3R0b206NTBweDsKK30KKworZGwuY2l0ZWxpc3QgZHQgeworICAgICAgICBjb2xvcjojNDg0ODQ4OworICAgICAgICBmbG9hdDpsZWZ0OworICAgICAgICBmb250LXdlaWdodDpib2xkOworICAgICAgICBtYXJnaW4tcmlnaHQ6MTBweDsKKyAgICAgICAgcGFkZGluZzo1cHg7Cit9CisKK2RsLmNpdGVsaXN0IGRkIHsKKyAgICAgICAgbWFyZ2luOjJweCAwOworICAgICAgICBwYWRkaW5nOjVweCAwOworfQorCitkaXYudG9jIHsKKyAgICAgICAgcGFkZGluZzogMTRweCAyNXB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjZGNkY2OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREZERkRGOworICAgICAgICBib3JkZXItcmFkaXVzOiA3cHggN3B4IDdweCA3cHg7CisgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgaGVpZ2h0OiBhdXRvOworICAgICAgICBtYXJnaW46IDAgMjBweCAxMHB4IDEwcHg7CisgICAgICAgIHdpZHRoOiAyMDBweDsKK30KKworZGl2LnRvYyBsaSB7CisgICAgICAgIGJhY2tncm91bmQ6IHVybCgiYmR3bi5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIDAgNXB4IHRyYW5zcGFyZW50OworICAgICAgICBmb250OiAxMHB4LzEuMiBWZXJkYW5hLERlamFWdSBTYW5zLEdlbmV2YSxzYW5zLXNlcmlmOworICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CisgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKKyAgICAgICAgcGFkZGluZy10b3A6IDJweDsKK30KKworZGl2LnRvYyBoMyB7CisgICAgICAgIGZvbnQ6IGJvbGQgMTJweC8xLjIgQXJpYWwsRnJlZVNhbnMsc2Fucy1zZXJpZjsKKwljb2xvcjogIzY4Njg2ODsKKyAgICAgICAgYm9yZGVyLWJvdHRvbTogMCBub25lOworICAgICAgICBtYXJnaW46IDA7Cit9CisKK2Rpdi50b2MgdWwgeworICAgICAgICBsaXN0LXN0eWxlOiBub25lIG91dHNpZGUgbm9uZTsKKyAgICAgICAgYm9yZGVyOiBtZWRpdW0gbm9uZTsKKyAgICAgICAgcGFkZGluZzogMHB4OworfQorCitkaXYudG9jIGxpLmxldmVsMSB7CisgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7Cit9CisKK2Rpdi50b2MgbGkubGV2ZWwyIHsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7Cit9CisKK2Rpdi50b2MgbGkubGV2ZWwzIHsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDMwcHg7Cit9CisKK2Rpdi50b2MgbGkubGV2ZWw0IHsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7Cit9CisKKy5pbmhlcml0X2hlYWRlciB7CisgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgICAgICBjb2xvcjogZ3JheTsKKyAgICAgICAgY3Vyc29yOiBwb2ludGVyOworCS13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKKwktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworCS1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsKKwktbW96LXVzZXItc2VsZWN0OiBub25lOworCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKKwl1c2VyLXNlbGVjdDogbm9uZTsKK30KKworLmluaGVyaXRfaGVhZGVyIHRkIHsKKyAgICAgICAgcGFkZGluZzogNnB4IDBweCAycHggNXB4OworfQorCisuaW5oZXJpdCB7CisgICAgICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3RyLmhlYWRpbmcgaDIgeworICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OworICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cit9CisKK0BtZWRpYSBwcmludAoreworICAjdG9wIHsgZGlzcGxheTogbm9uZTsgfQorICAjc2lkZS1uYXYgeyBkaXNwbGF5OiBub25lOyB9CisgICNuYXYtcGF0aCB7IGRpc3BsYXk6IG5vbmU7IH0KKyAgYm9keSB7IG92ZXJmbG93OnZpc2libGU7IH0KKyAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7IHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9CisgIC5zdW1tYXJ5IHsgZGlzcGxheTogbm9uZTsgfQorICAubWVtaXRlbSB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfQorICAjZG9jLWNvbnRlbnQKKyAgeworICAgIG1hcmdpbi1sZWZ0OjAgIWltcG9ydGFudDsKKyAgICBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OworICAgIHdpZHRoOmF1dG8gIWltcG9ydGFudDsKKyAgICBvdmVyZmxvdzppbmhlcml0OworICAgIGRpc3BsYXk6aW5saW5lOworICB9Cit9CmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL2ZvdW5kYXRpb24uY3NzIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9mb3VuZGF0aW9uLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjEzMzBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9mb3VuZGF0aW9uLmNzcwpAQCAtMCwwICsxLDc4OCBAQAorLmMtMSwgLmMtMiwgLmMtMywgLmMtNCwgLmMtNSwgLmMtNiwgLmMtNywgLmMtOCwgLmMtOSwgLmMtMTAsIC5jLTExLCAuYy0xMiB7IGZsb2F0OiBsZWZ0OyB9CisKKy5jLTEsIC5jLTIsIC5jLTMsIC5jLTQsIC5jLTUsIC5jLTYsIC5jLTcsIC5jLTgsIC5jLTksIC5jLTEwLCAuYy0xMSwgLmMtMTIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG1pbi1oZWlnaHQ6IDFweDsgcGFkZGluZzogMCAxNXB4OyB9CisKKy5jLTEgeyB3aWR0aDogOC4zMzMzMyU7IH0KKworLmMtMiB7IHdpZHRoOiAxNi42NjY2NyU7IH0KKworLmMtMyB7IHdpZHRoOiAyNSU7IH0KKworLmMtNCB7IHdpZHRoOiAzMy4zMzMzMyU7IH0KKworLmMtNSB7IHdpZHRoOiA0MS42NjY2NyU7IH0KKworLmMtNiB7IHdpZHRoOiA1MCU7IH0KKworLmMtNyB7IHdpZHRoOiA1OC4zMzMzMyU7IH0KKworLmMtOCB7IHdpZHRoOiA2Ni42NjY2NyU7IH0KKworLmMtOSB7IHdpZHRoOiA3NSU7IH0KKworLmMtMTAgeyB3aWR0aDogODMuMzMzMzMlOyB9CisKKy5jLTExIHsgd2lkdGg6IDkxLjY2NjY3JTsgfQorCisuYy0xMiB7IHdpZHRoOiAxMDAlOyB9CisKKy8qIFJlcXVpcmVzOiBub3JtYWxpemUuY3NzICovCisvKiBHbG9iYWwgUmVzZXQgJiBTdGFuZGFyZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworKiB7IC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CisKK2h0bWwgeyBmb250LXNpemU6IDYyLjUlOyB9CisKK2JvZHkgeyBiYWNrZ3JvdW5kOiB3aGl0ZTsgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsICJIZWx2ZXRpY2EiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxOyBjb2xvcjogIzIyMjIyMjsgcG9zaXRpb246IHJlbGF0aXZlOyAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgfQorCisvKiBMaW5rcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCithIHsgY29sb3I6ICNmZDc4MDA7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KKworYTpob3ZlciB7IGNvbG9yOiAjMjc5NWI2OyB9CisKK2E6Zm9jdXMgeyBjb2xvcjogI2ZkNzgwMDsgb3V0bGluZTogbm9uZTsgfQorCitwIGEsIHAgYTp2aXNpdGVkIHsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KKworLyogTWlzYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisubGVmdCB7IGZsb2F0OiBsZWZ0OyB9CitAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7IC5sZWZ0IHsgZmxvYXQ6IG5vbmU7IH0gfQorCisucmlnaHQgeyBmbG9hdDogcmlnaHQ7IH0KK0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsgLnJpZ2h0IHsgZmxvYXQ6IG5vbmU7IH0gfQorCisudGV4dC1sZWZ0IHsgdGV4dC1hbGlnbjogbGVmdDsgfQorCisudGV4dC1yaWdodCB7IHRleHQtYWxpZ246IHJpZ2h0OyB9CisKKy50ZXh0LWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlcjsgfQorCisuaGlkZSB7IGRpc3BsYXk6IG5vbmU7IH0KKworLmhpZ2hsaWdodCB7IGJhY2tncm91bmQ6ICNmZmZmOTk7IH0KKworI2dvb2dsZW1hcCBpbWcsIG9iamVjdCwgZW1iZWQgeyBtYXgtd2lkdGg6IG5vbmU7IH0KKworI21hcF9jYW52YXMgZW1iZWQgeyBtYXgtd2lkdGg6IG5vbmU7IH0KKworI21hcF9jYW52YXMgaW1nIHsgbWF4LXdpZHRoOiBub25lOyB9CisKKyNtYXBfY2FudmFzIG9iamVjdCB7IG1heC13aWR0aDogbm9uZTsgfQorCisvKiBSZXNldCBmb3Igc3RyYW5nZSBtYXJnaW5zIGJ5IGRlZmF1bHQgb24gPGZpZ3VyZT4gZWxlbWVudHMgKi8KK2ZpZ3VyZSB7IG1hcmdpbjogMDsgfQorCisvKiBCYXNlIFR5cGUgU3R5bGVzIFVzaW5nIE1vZHVsYXIgU2NhbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworYm9keSwgZGl2LCBkbCwgZHQsIGRkLCB1bCwgb2wsIGxpLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwcmUsIGZvcm0sIHAsIGJsb2NrcXVvdGUsIHRoLCB0ZCB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgZm9udC1zaXplOiAxNHB4OyBkaXJlY3Rpb246IGx0cjsgfQorCitwIHsgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsICJIZWx2ZXRpY2EiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXdlaWdodDogbm9ybWFsOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IG1hcmdpbi1ib3R0b206IDE3cHg7IH0KK3AubGVhZCB7IGZvbnQtc2l6ZTogMTcuNXB4OyBsaW5lLWhlaWdodDogMS42OyBtYXJnaW4tYm90dG9tOiAxN3B4OyB9CisKK2FzaWRlIHAgeyBmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjM1OyBmb250LXN0eWxlOiBpdGFsaWM7IH0KKworaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7IGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCAiSGVsdmV0aWNhIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjMjIyMjIyOyB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OyBsaW5lLWhlaWdodDogMS4wOyBtYXJnaW4tYm90dG9tOiAxNHB4OyBtYXJnaW4tdG9wOiAxNHB4OyB9CitoMSBzbWFsbCwgaDIgc21hbGwsIGgzIHNtYWxsLCBoNCBzbWFsbCwgaDUgc21hbGwsIGg2IHNtYWxsIHsgZm9udC1zaXplOiA2MCU7IGNvbG9yOiAjNmY2ZjZmOyBsaW5lLWhlaWdodDogMDsgfQorCitoMSB7IGZvbnQtc2l6ZTogMjRweDsgfQorCitoMiB7IGZvbnQtc2l6ZTogMThweDsgfQorCitoMyB7IGZvbnQtc2l6ZTogMTRweDsgfQorCitoNCB7IGZvbnQtc2l6ZTogMTJweDsgfQorCitoNSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IH0KKworaDYgeyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtc2l6ZTogMTJweDsgfQorCitociB7IGJvcmRlcjogc29saWQgI2M2YzZjNjsgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyBjbGVhcjogYm90aDsgbWFyZ2luOiAyMnB4IDAgMjFweDsgaGVpZ2h0OiAwOyB9CisKKy5zdWJoZWFkZXIgeyBsaW5lLWhlaWdodDogMS4zOyBjb2xvcjogIzZmNmY2ZjsgZm9udC13ZWlnaHQ6IDMwMDsgbWFyZ2luLWJvdHRvbTogMTdweDsgfQorCitlbSwgaSB7IGZvbnQtc3R5bGU6IGl0YWxpYzsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KKworc3Ryb25nLCBiIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB9CisKK3NtYWxsIHsgZm9udC1zaXplOiA2MCU7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB9CisKK2NvZGUgeyBmb250LXdlaWdodDogYm9sZDsgYmFja2dyb3VuZDogI2ZmZmY5OTsgfQorCisvKiBMaXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCit1bCwgb2wgeyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IG1hcmdpbi1ib3R0b206IDE3cHg7IGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZTsgfQorCit1bCBsaSB1bCwgdWwgbGkgb2wgeyBtYXJnaW4tbGVmdDogMjBweDsgbWFyZ2luLWJvdHRvbTogMDsgfQordWwuc3F1YXJlLCB1bC5jaXJjbGUsIHVsLmRpc2MgeyBtYXJnaW4tbGVmdDogMTdweDsgfQordWwuc3F1YXJlIHsgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7IH0KK3VsLnNxdWFyZSBsaSB1bCB7IGxpc3Qtc3R5bGU6IGluaGVyaXQ7IH0KK3VsLmNpcmNsZSB7IGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlOyB9Cit1bC5jaXJjbGUgbGkgdWwgeyBsaXN0LXN0eWxlOiBpbmhlcml0OyB9Cit1bC5kaXNjIHsgbGlzdC1zdHlsZS10eXBlOiBkaXNjOyB9Cit1bC5kaXNjIGxpIHVsIHsgbGlzdC1zdHlsZTogaW5oZXJpdDsgfQordWwubm8tYnVsbGV0IHsgbGlzdC1zdHlsZTogbm9uZTsgfQordWwubGFyZ2UgbGkgeyBsaW5lLWhlaWdodDogMjFweDsgfQorCitvbCBsaSB1bCwgb2wgbGkgb2wgeyBtYXJnaW4tbGVmdDogMjBweDsgbWFyZ2luLWJvdHRvbTogMDsgfQorCisvKiBCbG9ja3F1b3RlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCitibG9ja3F1b3RlLCBibG9ja3F1b3RlIHAgeyBsaW5lLWhlaWdodDogMS41OyB9CisKK2Jsb2NrcXVvdGUgeyBtYXJnaW46IDAgMCAxN3B4OyBwYWRkaW5nOiA5cHggMjBweCAwIDE5cHg7IH0KK2Jsb2NrcXVvdGUgY2l0ZSB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEzcHQ7IGNvbG9yOiAjNTU1NTU1OyB9CitibG9ja3F1b3RlIGNpdGU6YmVmb3JlIHsgY29udGVudDogIlwyMDE0IFwwMDIwIjsgfQorYmxvY2txdW90ZSBjaXRlIGEsIGJsb2NrcXVvdGUgY2l0ZSBhOnZpc2l0ZWQgeyBjb2xvcjogIzU1NTU1NTsgfQorCithYmJyLCBhY3JvbnltIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1zaXplOiA5MCU7IGNvbG9yOiAjMjIyMjIyOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsgY3Vyc29yOiBoZWxwOyB9CisKK2FiYnIgeyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfQorCisvKiBQcmludCBzdHlsZXMuICBJbmxpbmVkIHRvIGF2b2lkIHJlcXVpcmVkIEhUVFAgY29ubmVjdGlvbjogd3d3LnBocGllZC5jb20vZGVsYXktbG9hZGluZy15b3VyLXByaW50LWNzcy8gQ3JlZGl0IHRvIFBhdWwgSXJpc2ggYW5kIEhUTUw1IEJvaWxlcnBsYXRlIChodG1sNWJvaWxlcnBsYXRlLmNvbSkKKyovCisucHJpbnQtb25seSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQorCitAbWVkaWEgcHJpbnQgeyAqIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7IC1tcy1maWx0ZXI6IG5vbmUgIWltcG9ydGFudDsgfQorICAvKiBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zICovCisgIGEsIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CisgIGFbaHJlZl06YWZ0ZXIgeyBjb250ZW50OiAiICgiIGF0dHIoaHJlZikgIikiOyB9CisgIGFiYnJbdGl0bGVdOmFmdGVyIHsgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSI7IH0KKyAgLmlyIGE6YWZ0ZXIsIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsIGFbaHJlZl49IiMiXTphZnRlciB7IGNvbnRlbnQ6ICIiOyB9CisgIC8qIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rcyAqLworICBwcmUsIGJsb2NrcXVvdGUgeyBib3JkZXI6IDFweCBzb2xpZCAjOTk5OyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH0KKyAgdGhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH0KKyAgLyogaDVicC5jb20vdCAqLworICB0ciwgaW1nIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9CisgIGltZyB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIEBwYWdlIHsgbWFyZ2luOiAwLjVjbTsgfQorICBwLCBoMiwgaDMgeyBvcnBoYW5zOiAzOyB3aWRvd3M6IDM7IH0KKyAgaDIsIGgzIHsgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH0KKyAgLmhpZGUtb24tcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KKyAgLnByaW50LW9ubHkgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9IH0KKy8qIFJlcXVpcmVzIGdsb2JhbHMuY3NzICovCisvKiBTdGFuZGFyZCBGb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCitmb3JtIHsgbWFyZ2luOiAwIDAgMTkuNDE2NDFweDsgfQorCisucm93IGZvcm0gLnJvdyB7IG1hcmdpbjogMCAtNnB4OyB9Cisucm93IGZvcm0gLnJvdyAuY29sdW1uLCAucm93IGZvcm0gLnJvdyAuY29sdW1ucyB7IHBhZGRpbmc6IDAgNnB4OyB9Cisucm93IGZvcm0gLnJvdy5jb2xsYXBzZSB7IG1hcmdpbjogMDsgfQorLnJvdyBmb3JtIC5yb3cuY29sbGFwc2UgLmNvbHVtbiwgLnJvdyBmb3JtIC5yb3cuY29sbGFwc2UgLmNvbHVtbnMgeyBwYWRkaW5nOiAwOyB9CisKK2xhYmVsIHsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzRkNGQ0ZDsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBibG9jazsgZm9udC13ZWlnaHQ6IDUwMDsgbWFyZ2luLWJvdHRvbTogM3B4OyB9CitsYWJlbC5yaWdodCB7IGZsb2F0OiBub25lOyB0ZXh0LWFsaWduOiByaWdodDsgfQorbGFiZWwuaW5saW5lIHsgbGluZS1oZWlnaHQ6IDMycHg7IG1hcmdpbjogMCAwIDEycHggMDsgfQorCitAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7IGxhYmVsLnJpZ2h0IHsgdGV4dC1hbGlnbjogbGVmdDsgfSB9CisucHJlZml4LCAucG9zdGZpeCB7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDI7IHRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDEwMCU7IHBhZGRpbmctdG9wOiAwOyBwYWRkaW5nLWJvdHRvbTogMDsgaGVpZ2h0OiAzMnB4OyBsaW5lLWhlaWdodDogMzFweDsgfQorCithLmJ1dHRvbi5wcmVmaXgsIGEuYnV0dG9uLnBvc3RmaXggeyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmlnaHQ6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQorCitzcGFuLnByZWZpeCwgc3Bhbi5wb3N0Zml4IHsgYmFja2dyb3VuZDogI2YyZjJmMjsgYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYzsgfQorCisucHJlZml4IHsgbGVmdDogMnB4OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogMnB4OyAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDJweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDogMnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDJweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4OyBvdmVyZmxvdzogaGlkZGVuOyB9CisKKy5wb3N0Zml4IHsgcmlnaHQ6IDJweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiAycHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDJweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDJweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiAycHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsgfQorCitpbnB1dFt0eXBlPSJ0ZXh0Il0sIGlucHV0W3R5cGU9InBhc3N3b3JkIl0sIGlucHV0W3R5cGU9ImRhdGUiXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXSwgaW5wdXRbdHlwZT0iZW1haWwiXSwgaW5wdXRbdHlwZT0ibnVtYmVyIl0sIGlucHV0W3R5cGU9InNlYXJjaCJdLCBpbnB1dFt0eXBlPSJ0ZWwiXSwgaW5wdXRbdHlwZT0idGltZSJdLCBpbnB1dFt0eXBlPSJ1cmwiXSwgdGV4dGFyZWEgeyBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgIkhlbHZldGljYSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsgLW1zLWJvcmRlci1yYWRpdXM6IDJweDsgLW8tYm9yZGVyLXJhZGl1czogMnB4OyBib3JkZXItcmFkaXVzOiAycHg7IC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTsgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpOyBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpOyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjc1KTsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTRweDsgbWFyZ2luOiAwIDAgMTJweCAwOyBwYWRkaW5nOiA2cHg7IGhlaWdodDogMzJweDsgd2lkdGg6IDEwMCU7IC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMTVzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4xNXMgbGluZWFyOyAtby10cmFuc2l0aW9uOiBhbGwgMC4xNXMgbGluZWFyOyB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgbGluZWFyOyB9CitpbnB1dFt0eXBlPSJ0ZXh0Il0ub3ZlcnNpemUsIGlucHV0W3R5cGU9InBhc3N3b3JkIl0ub3ZlcnNpemUsIGlucHV0W3R5cGU9ImRhdGUiXS5vdmVyc2l6ZSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5vdmVyc2l6ZSwgaW5wdXRbdHlwZT0iZW1haWwiXS5vdmVyc2l6ZSwgaW5wdXRbdHlwZT0ibnVtYmVyIl0ub3ZlcnNpemUsIGlucHV0W3R5cGU9InNlYXJjaCJdLm92ZXJzaXplLCBpbnB1dFt0eXBlPSJ0ZWwiXS5vdmVyc2l6ZSwgaW5wdXRbdHlwZT0idGltZSJdLm92ZXJzaXplLCBpbnB1dFt0eXBlPSJ1cmwiXS5vdmVyc2l6ZSwgdGV4dGFyZWEub3ZlcnNpemUgeyBmb250LXNpemU6IDE3cHg7IHBhZGRpbmc6IDRweCA2cHg7IH0KK2lucHV0W3R5cGU9InRleHQiXTpmb2N1cywgaW5wdXRbdHlwZT0icGFzc3dvcmQiXTpmb2N1cywgaW5wdXRbdHlwZT0iZGF0ZSJdOmZvY3VzLCBpbnB1dFt0eXBlPSJkYXRldGltZSJdOmZvY3VzLCBpbnB1dFt0eXBlPSJlbWFpbCJdOmZvY3VzLCBpbnB1dFt0eXBlPSJudW1iZXIiXTpmb2N1cywgaW5wdXRbdHlwZT0ic2VhcmNoIl06Zm9jdXMsIGlucHV0W3R5cGU9InRlbCJdOmZvY3VzLCBpbnB1dFt0eXBlPSJ0aW1lIl06Zm9jdXMsIGlucHV0W3R5cGU9InVybCJdOmZvY3VzLCB0ZXh0YXJlYTpmb2N1cyB7IGJhY2tncm91bmQ6ICNmYWZhZmE7IG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjYjNiM2IzOyB9CitpbnB1dFt0eXBlPSJ0ZXh0Il1bZGlzYWJsZWRdLCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdW2Rpc2FibGVkXSwgaW5wdXRbdHlwZT0iZGF0ZSJdW2Rpc2FibGVkXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXVtkaXNhYmxlZF0sIGlucHV0W3R5cGU9ImVtYWlsIl1bZGlzYWJsZWRdLCBpbnB1dFt0eXBlPSJudW1iZXIiXVtkaXNhYmxlZF0sIGlucHV0W3R5cGU9InNlYXJjaCJdW2Rpc2FibGVkXSwgaW5wdXRbdHlwZT0idGVsIl1bZGlzYWJsZWRdLCBpbnB1dFt0eXBlPSJ0aW1lIl1bZGlzYWJsZWRdLCBpbnB1dFt0eXBlPSJ1cmwiXVtkaXNhYmxlZF0sIHRleHRhcmVhW2Rpc2FibGVkXSB7IGJhY2tncm91bmQtY29sb3I6ICNkZGQ7IH0KKwordGV4dGFyZWEgeyBoZWlnaHQ6IGF1dG87IH0KKworc2VsZWN0IHsgd2lkdGg6IDEwMCU7IH0KKworLyogRmllbGRzZXRzICovCitmaWVsZHNldCB7IGJvcmRlcjogc29saWQgMXB4ICNkZGQ7IGJvcmRlci1yYWRpdXM6IDNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7IC1tb3otYm9yZGVyLXJhZGl1czogM3B4OyBwYWRkaW5nOiAxMnB4IDEycHggMDsgbWFyZ2luOiAxOHB4IDA7IH0KK2ZpZWxkc2V0IGxlZ2VuZCB7IGZvbnQtd2VpZ2h0OiBib2xkOyBiYWNrZ3JvdW5kOiB3aGl0ZTsgcGFkZGluZzogMCAzcHg7IG1hcmdpbjogMDsgbWFyZ2luLWxlZnQ6IC0zcHg7IH0KKworLyogRXJyb3JzICovCisuZXJyb3IgaW5wdXQsIGlucHV0LmVycm9yLCAuZXJyb3IgdGV4dGFyZWEsIHRleHRhcmVhLmVycm9yIHsgYm9yZGVyLWNvbG9yOiAjYzYwZjEzOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE5OCwgMTUsIDE5LCAwLjEpOyB9CisKKy5lcnJvciBsYWJlbCwgbGFiZWwuZXJyb3IgeyBjb2xvcjogI2M2MGYxMzsgfQorCisuZXJyb3Igc21hbGwsIHNtYWxsLmVycm9yIHsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDZweCA0cHg7IG1hcmdpbi10b3A6IC0xM3B4OyBtYXJnaW4tYm90dG9tOiAxMnB4OyBiYWNrZ3JvdW5kOiAjYzYwZjEzOyBjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAxMnB4OyBmb250LXNpemU6IDEuMnJlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiAycHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogMnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7IH0KKworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyBpbnB1dFt0eXBlPSJ0ZXh0Il0ub25lLCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLm9uZSwgaW5wdXRbdHlwZT0iZGF0ZSJdLm9uZSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5vbmUsIGlucHV0W3R5cGU9ImVtYWlsIl0ub25lLCBpbnB1dFt0eXBlPSJudW1iZXIiXS5vbmUsIGlucHV0W3R5cGU9InNlYXJjaCJdLm9uZSwgaW5wdXRbdHlwZT0idGVsIl0ub25lLCBpbnB1dFt0eXBlPSJ0aW1lIl0ub25lLCBpbnB1dFt0eXBlPSJ1cmwiXS5vbmUsIHRleHRhcmVhLm9uZSwgLnJvdyB0ZXh0YXJlYS5vbmUgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS50d28sIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLnR3bywgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50d28sIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50d28sIGlucHV0W3R5cGU9ImRhdGUiXS50d28sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZSJdLnR3bywgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50d28sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50d28sIGlucHV0W3R5cGU9ImVtYWlsIl0udHdvLCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0udHdvLCBpbnB1dFt0eXBlPSJudW1iZXIiXS50d28sIC5yb3cgaW5wdXRbdHlwZT0ibnVtYmVyIl0udHdvLCBpbnB1dFt0eXBlPSJzZWFyY2giXS50d28sIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0udHdvLCBpbnB1dFt0eXBlPSJ0ZWwiXS50d28sIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0udHdvLCBpbnB1dFt0eXBlPSJ0aW1lIl0udHdvLCAucm93IGlucHV0W3R5cGU9InRpbWUiXS50d28sIGlucHV0W3R5cGU9InVybCJdLnR3bywgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS50d28sIHRleHRhcmVhLnR3bywgLnJvdyB0ZXh0YXJlYS50d28geyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS50aHJlZSwgLnJvdyBpbnB1dFt0eXBlPSJ0ZXh0Il0udGhyZWUsIGlucHV0W3R5cGU9InBhc3N3b3JkIl0udGhyZWUsIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50aHJlZSwgaW5wdXRbdHlwZT0iZGF0ZSJdLnRocmVlLCAucm93IGlucHV0W3R5cGU9ImRhdGUiXS50aHJlZSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50aHJlZSwgLnJvdyBpbnB1dFt0eXBlPSJkYXRldGltZSJdLnRocmVlLCBpbnB1dFt0eXBlPSJlbWFpbCJdLnRocmVlLCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0udGhyZWUsIGlucHV0W3R5cGU9Im51bWJlciJdLnRocmVlLCAucm93IGlucHV0W3R5cGU9Im51bWJlciJdLnRocmVlLCBpbnB1dFt0eXBlPSJzZWFyY2giXS50aHJlZSwgLnJvdyBpbnB1dFt0eXBlPSJzZWFyY2giXS50aHJlZSwgaW5wdXRbdHlwZT0idGVsIl0udGhyZWUsIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0udGhyZWUsIGlucHV0W3R5cGU9InRpbWUiXS50aHJlZSwgLnJvdyBpbnB1dFt0eXBlPSJ0aW1lIl0udGhyZWUsIGlucHV0W3R5cGU9InVybCJdLnRocmVlLCAucm93IGlucHV0W3R5cGU9InVybCJdLnRocmVlLCB0ZXh0YXJlYS50aHJlZSwgLnJvdyB0ZXh0YXJlYS50aHJlZSB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KKyAgaW5wdXRbdHlwZT0idGV4dCJdLmZvdXIsIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLmZvdXIsIGlucHV0W3R5cGU9InBhc3N3b3JkIl0uZm91ciwgLnJvdyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLmZvdXIsIGlucHV0W3R5cGU9ImRhdGUiXS5mb3VyLCAucm93IGlucHV0W3R5cGU9ImRhdGUiXS5mb3VyLCBpbnB1dFt0eXBlPSJkYXRldGltZSJdLmZvdXIsIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5mb3VyLCBpbnB1dFt0eXBlPSJlbWFpbCJdLmZvdXIsIC5yb3cgaW5wdXRbdHlwZT0iZW1haWwiXS5mb3VyLCBpbnB1dFt0eXBlPSJudW1iZXIiXS5mb3VyLCAucm93IGlucHV0W3R5cGU9Im51bWJlciJdLmZvdXIsIGlucHV0W3R5cGU9InNlYXJjaCJdLmZvdXIsIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0uZm91ciwgaW5wdXRbdHlwZT0idGVsIl0uZm91ciwgLnJvdyBpbnB1dFt0eXBlPSJ0ZWwiXS5mb3VyLCBpbnB1dFt0eXBlPSJ0aW1lIl0uZm91ciwgLnJvdyBpbnB1dFt0eXBlPSJ0aW1lIl0uZm91ciwgaW5wdXRbdHlwZT0idXJsIl0uZm91ciwgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS5mb3VyLCB0ZXh0YXJlYS5mb3VyLCAucm93IHRleHRhcmVhLmZvdXIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS5maXZlLCAucm93IGlucHV0W3R5cGU9InRleHQiXS5maXZlLCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLmZpdmUsIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS5maXZlLCBpbnB1dFt0eXBlPSJkYXRlIl0uZml2ZSwgLnJvdyBpbnB1dFt0eXBlPSJkYXRlIl0uZml2ZSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5maXZlLCAucm93IGlucHV0W3R5cGU9ImRhdGV0aW1lIl0uZml2ZSwgaW5wdXRbdHlwZT0iZW1haWwiXS5maXZlLCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0uZml2ZSwgaW5wdXRbdHlwZT0ibnVtYmVyIl0uZml2ZSwgLnJvdyBpbnB1dFt0eXBlPSJudW1iZXIiXS5maXZlLCBpbnB1dFt0eXBlPSJzZWFyY2giXS5maXZlLCAucm93IGlucHV0W3R5cGU9InNlYXJjaCJdLmZpdmUsIGlucHV0W3R5cGU9InRlbCJdLmZpdmUsIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0uZml2ZSwgaW5wdXRbdHlwZT0idGltZSJdLmZpdmUsIC5yb3cgaW5wdXRbdHlwZT0idGltZSJdLmZpdmUsIGlucHV0W3R5cGU9InVybCJdLmZpdmUsIC5yb3cgaW5wdXRbdHlwZT0idXJsIl0uZml2ZSwgdGV4dGFyZWEuZml2ZSwgLnJvdyB0ZXh0YXJlYS5maXZlIHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfQorICBpbnB1dFt0eXBlPSJ0ZXh0Il0uc2l4LCAucm93IGlucHV0W3R5cGU9InRleHQiXS5zaXgsIGlucHV0W3R5cGU9InBhc3N3b3JkIl0uc2l4LCAucm93IGlucHV0W3R5cGU9InBhc3N3b3JkIl0uc2l4LCBpbnB1dFt0eXBlPSJkYXRlIl0uc2l4LCAucm93IGlucHV0W3R5cGU9ImRhdGUiXS5zaXgsIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0uc2l4LCAucm93IGlucHV0W3R5cGU9ImRhdGV0aW1lIl0uc2l4LCBpbnB1dFt0eXBlPSJlbWFpbCJdLnNpeCwgLnJvdyBpbnB1dFt0eXBlPSJlbWFpbCJdLnNpeCwgaW5wdXRbdHlwZT0ibnVtYmVyIl0uc2l4LCAucm93IGlucHV0W3R5cGU9Im51bWJlciJdLnNpeCwgaW5wdXRbdHlwZT0ic2VhcmNoIl0uc2l4LCAucm93IGlucHV0W3R5cGU9InNlYXJjaCJdLnNpeCwgaW5wdXRbdHlwZT0idGVsIl0uc2l4LCAucm93IGlucHV0W3R5cGU9InRlbCJdLnNpeCwgaW5wdXRbdHlwZT0idGltZSJdLnNpeCwgLnJvdyBpbnB1dFt0eXBlPSJ0aW1lIl0uc2l4LCBpbnB1dFt0eXBlPSJ1cmwiXS5zaXgsIC5yb3cgaW5wdXRbdHlwZT0idXJsIl0uc2l4LCB0ZXh0YXJlYS5zaXgsIC5yb3cgdGV4dGFyZWEuc2l4IHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfQorICBpbnB1dFt0eXBlPSJ0ZXh0Il0uc2V2ZW4sIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLnNldmVuLCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLnNldmVuLCAucm93IGlucHV0W3R5cGU9InBhc3N3b3JkIl0uc2V2ZW4sIGlucHV0W3R5cGU9ImRhdGUiXS5zZXZlbiwgLnJvdyBpbnB1dFt0eXBlPSJkYXRlIl0uc2V2ZW4sIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0uc2V2ZW4sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5zZXZlbiwgaW5wdXRbdHlwZT0iZW1haWwiXS5zZXZlbiwgLnJvdyBpbnB1dFt0eXBlPSJlbWFpbCJdLnNldmVuLCBpbnB1dFt0eXBlPSJudW1iZXIiXS5zZXZlbiwgLnJvdyBpbnB1dFt0eXBlPSJudW1iZXIiXS5zZXZlbiwgaW5wdXRbdHlwZT0ic2VhcmNoIl0uc2V2ZW4sIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0uc2V2ZW4sIGlucHV0W3R5cGU9InRlbCJdLnNldmVuLCAucm93IGlucHV0W3R5cGU9InRlbCJdLnNldmVuLCBpbnB1dFt0eXBlPSJ0aW1lIl0uc2V2ZW4sIC5yb3cgaW5wdXRbdHlwZT0idGltZSJdLnNldmVuLCBpbnB1dFt0eXBlPSJ1cmwiXS5zZXZlbiwgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS5zZXZlbiwgdGV4dGFyZWEuc2V2ZW4sIC5yb3cgdGV4dGFyZWEuc2V2ZW4geyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS5laWdodCwgLnJvdyBpbnB1dFt0eXBlPSJ0ZXh0Il0uZWlnaHQsIGlucHV0W3R5cGU9InBhc3N3b3JkIl0uZWlnaHQsIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS5laWdodCwgaW5wdXRbdHlwZT0iZGF0ZSJdLmVpZ2h0LCAucm93IGlucHV0W3R5cGU9ImRhdGUiXS5laWdodCwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5laWdodCwgLnJvdyBpbnB1dFt0eXBlPSJkYXRldGltZSJdLmVpZ2h0LCBpbnB1dFt0eXBlPSJlbWFpbCJdLmVpZ2h0LCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0uZWlnaHQsIGlucHV0W3R5cGU9Im51bWJlciJdLmVpZ2h0LCAucm93IGlucHV0W3R5cGU9Im51bWJlciJdLmVpZ2h0LCBpbnB1dFt0eXBlPSJzZWFyY2giXS5laWdodCwgLnJvdyBpbnB1dFt0eXBlPSJzZWFyY2giXS5laWdodCwgaW5wdXRbdHlwZT0idGVsIl0uZWlnaHQsIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0uZWlnaHQsIGlucHV0W3R5cGU9InRpbWUiXS5laWdodCwgLnJvdyBpbnB1dFt0eXBlPSJ0aW1lIl0uZWlnaHQsIGlucHV0W3R5cGU9InVybCJdLmVpZ2h0LCAucm93IGlucHV0W3R5cGU9InVybCJdLmVpZ2h0LCB0ZXh0YXJlYS5laWdodCwgLnJvdyB0ZXh0YXJlYS5laWdodCB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KKyAgaW5wdXRbdHlwZT0idGV4dCJdLm5pbmUsIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLm5pbmUsIGlucHV0W3R5cGU9InBhc3N3b3JkIl0ubmluZSwgLnJvdyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLm5pbmUsIGlucHV0W3R5cGU9ImRhdGUiXS5uaW5lLCAucm93IGlucHV0W3R5cGU9ImRhdGUiXS5uaW5lLCBpbnB1dFt0eXBlPSJkYXRldGltZSJdLm5pbmUsIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5uaW5lLCBpbnB1dFt0eXBlPSJlbWFpbCJdLm5pbmUsIC5yb3cgaW5wdXRbdHlwZT0iZW1haWwiXS5uaW5lLCBpbnB1dFt0eXBlPSJudW1iZXIiXS5uaW5lLCAucm93IGlucHV0W3R5cGU9Im51bWJlciJdLm5pbmUsIGlucHV0W3R5cGU9InNlYXJjaCJdLm5pbmUsIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0ubmluZSwgaW5wdXRbdHlwZT0idGVsIl0ubmluZSwgLnJvdyBpbnB1dFt0eXBlPSJ0ZWwiXS5uaW5lLCBpbnB1dFt0eXBlPSJ0aW1lIl0ubmluZSwgLnJvdyBpbnB1dFt0eXBlPSJ0aW1lIl0ubmluZSwgaW5wdXRbdHlwZT0idXJsIl0ubmluZSwgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS5uaW5lLCB0ZXh0YXJlYS5uaW5lLCAucm93IHRleHRhcmVhLm5pbmUgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLnRlbiwgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50ZW4sIGlucHV0W3R5cGU9ImRhdGUiXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZSJdLnRlbiwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50ZW4sIGlucHV0W3R5cGU9ImVtYWlsIl0udGVuLCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0udGVuLCBpbnB1dFt0eXBlPSJudW1iZXIiXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0ibnVtYmVyIl0udGVuLCBpbnB1dFt0eXBlPSJzZWFyY2giXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0udGVuLCBpbnB1dFt0eXBlPSJ0ZWwiXS50ZW4sIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0udGVuLCBpbnB1dFt0eXBlPSJ0aW1lIl0udGVuLCAucm93IGlucHV0W3R5cGU9InRpbWUiXS50ZW4sIGlucHV0W3R5cGU9InVybCJdLnRlbiwgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS50ZW4sIHRleHRhcmVhLnRlbiwgLnJvdyB0ZXh0YXJlYS50ZW4geyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLmVsZXZlbiwgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS5lbGV2ZW4sIGlucHV0W3R5cGU9ImRhdGUiXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZSJdLmVsZXZlbiwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS5lbGV2ZW4sIGlucHV0W3R5cGU9ImVtYWlsIl0uZWxldmVuLCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0uZWxldmVuLCBpbnB1dFt0eXBlPSJudW1iZXIiXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0ibnVtYmVyIl0uZWxldmVuLCBpbnB1dFt0eXBlPSJzZWFyY2giXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0uZWxldmVuLCBpbnB1dFt0eXBlPSJ0ZWwiXS5lbGV2ZW4sIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0uZWxldmVuLCBpbnB1dFt0eXBlPSJ0aW1lIl0uZWxldmVuLCAucm93IGlucHV0W3R5cGU9InRpbWUiXS5lbGV2ZW4sIGlucHV0W3R5cGU9InVybCJdLmVsZXZlbiwgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS5lbGV2ZW4sIHRleHRhcmVhLmVsZXZlbiwgLnJvdyB0ZXh0YXJlYS5lbGV2ZW4geyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CisgIGlucHV0W3R5cGU9InRleHQiXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0idGV4dCJdLnR3ZWx2ZSwgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0icGFzc3dvcmQiXS50d2VsdmUsIGlucHV0W3R5cGU9ImRhdGUiXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZSJdLnR3ZWx2ZSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXS50d2VsdmUsIGlucHV0W3R5cGU9ImVtYWlsIl0udHdlbHZlLCAucm93IGlucHV0W3R5cGU9ImVtYWlsIl0udHdlbHZlLCBpbnB1dFt0eXBlPSJudW1iZXIiXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0ibnVtYmVyIl0udHdlbHZlLCBpbnB1dFt0eXBlPSJzZWFyY2giXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0ic2VhcmNoIl0udHdlbHZlLCBpbnB1dFt0eXBlPSJ0ZWwiXS50d2VsdmUsIC5yb3cgaW5wdXRbdHlwZT0idGVsIl0udHdlbHZlLCBpbnB1dFt0eXBlPSJ0aW1lIl0udHdlbHZlLCAucm93IGlucHV0W3R5cGU9InRpbWUiXS50d2VsdmUsIGlucHV0W3R5cGU9InVybCJdLnR3ZWx2ZSwgLnJvdyBpbnB1dFt0eXBlPSJ1cmwiXS50d2VsdmUsIHRleHRhcmVhLnR3ZWx2ZSwgLnJvdyB0ZXh0YXJlYS50d2VsdmUgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9IH0KKy8qIEN1c3RvbSBGb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCitmb3JtLmN1c3RvbSB7IC8qIEN1c3RvbSBpbnB1dCwgZGlzYWJsZWQgKi8gfQorZm9ybS5jdXN0b20gc3Bhbi5jdXN0b20geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAycHg7IGJvcmRlcjogc29saWQgMXB4ICNjY2M7IGJhY2tncm91bmQ6ICNmZmY7IH0KK2Zvcm0uY3VzdG9tIHNwYW4uY3VzdG9tLnJhZGlvIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDBweDsgLW1vei1ib3JkZXItcmFkaXVzOiAxMDBweDsgLW1zLWJvcmRlci1yYWRpdXM6IDEwMHB4OyAtby1ib3JkZXItcmFkaXVzOiAxMDBweDsgYm9yZGVyLXJhZGl1czogMTAwcHg7IH0KK2Zvcm0uY3VzdG9tIHNwYW4uY3VzdG9tLmNoZWNrYm94OmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgbGluZS1oZWlnaHQ6IDAuODsgaGVpZ2h0OiAxNHB4OyB3aWR0aDogMTRweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogI2ZmZjsgfQorZm9ybS5jdXN0b20gc3Bhbi5jdXN0b20ucmFkaW8uY2hlY2tlZDpiZWZvcmUgeyBjb250ZW50OiAiIjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4cHg7IGhlaWdodDogOHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDEwMHB4OyAtbXMtYm9yZGVyLXJhZGl1czogMTAwcHg7IC1vLWJvcmRlci1yYWRpdXM6IDEwMHB4OyBib3JkZXItcmFkaXVzOiAxMDBweDsgYmFja2dyb3VuZDogIzIyMjsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDNweDsgbGVmdDogM3B4OyB9Citmb3JtLmN1c3RvbSBzcGFuLmN1c3RvbS5jaGVja2JveC5jaGVja2VkOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMDBkNyI7IGNvbG9yOiAjMjIyOyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIHsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IGF1dG87IGhlaWdodDogMjhweDsgbWFyZ2luLWJvdHRvbTogOXB4OyBtYXJnaW4tdG9wOiAycHg7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24gYS5jdXJyZW50IHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiBhdXRvOyBsaW5lLWhlaWdodDogMjZweDsgbWluLWhlaWdodDogMjhweDsgcGFkZGluZzogMDsgcGFkZGluZy1sZWZ0OiA2cHg7IHBhZGRpbmctcmlnaHQ6IDM4cHg7IGJvcmRlcjogc29saWQgMXB4ICNkZGQ7IGNvbG9yOiAjMTQxNDE0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIGEuc2VsZWN0b3IgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAyN3B4OyBoZWlnaHQ6IDI4cHg7IGRpc3BsYXk6IGJsb2NrOyByaWdodDogMDsgdG9wOiAwOyBib3JkZXI6IHNvbGlkIDFweCAjZGRkOyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIGEuc2VsZWN0b3I6YWZ0ZXIgeyBjb250ZW50OiAiIjsgZGlzcGxheTogYmxvY2s7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiBzb2xpZCA1cHg7IGJvcmRlci1jb2xvcjogI2FhYWFhYSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRvcDogNTAlOyBtYXJnaW4tdG9wOiAtMnB4OyBtYXJnaW4tbGVmdDogLTVweDsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93bjpob3ZlciBhLnNlbGVjdG9yOmFmdGVyLCBmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duLm9wZW4gYS5zZWxlY3RvcjphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiBzb2xpZCA1cHg7IGJvcmRlci1jb2xvcjogIzIyMjIyMiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93bi5vcGVuIHVsIHsgZGlzcGxheTogYmxvY2s7IHotaW5kZXg6IDEwOyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duLnNtYWxsIHsgd2lkdGg6IDEzNHB4ICFpbXBvcnRhbnQ7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24ubWVkaXVtIHsgd2lkdGg6IDI1NHB4ICFpbXBvcnRhbnQ7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24ubGFyZ2UgeyB3aWR0aDogNDM0cHggIWltcG9ydGFudDsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93bi5leHBhbmQgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duLm9wZW4uc21hbGwgdWwgeyB3aWR0aDogMTM0cHggIWltcG9ydGFudDsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93bi5vcGVuLm1lZGl1bSB1bCB7IHdpZHRoOiAyNTRweCAhaW1wb3J0YW50OyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duLm9wZW4ubGFyZ2UgdWwgeyB3aWR0aDogNDM0cHggIWltcG9ydGFudDsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93bi5vcGVuLmV4cGFuZCB1bCB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24gdWwgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiBhdXRvOyBkaXNwbGF5OiBub25lOyBtYXJnaW46IDA7IGxlZnQ6IDA7IHRvcDogMjdweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpOyBib3JkZXI6IHNvbGlkIDFweCAjY2NjY2NjOyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIHVsIGxpIHsgY29sb3I6ICM1NTU7IGZvbnQtc2l6ZTogMTNweDsgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAzcHg7IHBhZGRpbmctbGVmdDogNnB4OyBwYWRkaW5nLXJpZ2h0OiAzOHB4OyBtaW4taGVpZ2h0OiAxOHB4OyBsaW5lLWhlaWdodDogMThweDsgbWFyZ2luOiAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBsaXN0LXN0eWxlOiBub25lOyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIHVsIGxpLnNlbGVjdGVkIHsgYmFja2dyb3VuZDogI2NkZWJmNTsgY29sb3I6ICMwMDA7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24gdWwgbGkuc2VsZWN0ZWQ6YWZ0ZXIgeyBjb250ZW50OiAiXDIwMTMiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxMHB4OyB9Citmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIHVsIGxpOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2UzZjRmOTsgY29sb3I6ICMyMjI7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24gdWwgbGk6aG92ZXI6YWZ0ZXIgeyBjb250ZW50OiAiXDIwMTMiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxMHB4OyBjb2xvcjogIzhlZDNlNzsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93biB1bCBsaS5zZWxlY3RlZDpob3ZlciB7IGJhY2tncm91bmQ6ICNjZGViZjU7IGN1cnNvcjogZGVmYXVsdDsgY29sb3I6ICMwMDA7IH0KK2Zvcm0uY3VzdG9tIGRpdi5jdXN0b20uZHJvcGRvd24gdWwgbGkuc2VsZWN0ZWQ6aG92ZXI6YWZ0ZXIgeyBjb2xvcjogIzAwMDsgfQorZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93biB1bC5zaG93IHsgZGlzcGxheTogYmxvY2s7IH0KK2Zvcm0uY3VzdG9tIC5jdXN0b20uZGlzYWJsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOyB9CisKKy8qIENvcnJlY3QgRkYgY3VzdG9tIGRyb3Bkb3duIGhlaWdodCAqLworQC1tb3otZG9jdW1lbnQgdXJsLXByZWZpeCgpIHsgZm9ybS5jdXN0b20gZGl2LmN1c3RvbS5kcm9wZG93biBhLnNlbGVjdG9yIHsgaGVpZ2h0OiAzMHB4OyB9IH0KKworLmx0LWllOSBmb3JtLmN1c3RvbSBkaXYuY3VzdG9tLmRyb3Bkb3duIGEuc2VsZWN0b3IgeyBoZWlnaHQ6IDMwcHg7IH0KKworLyogVGhlIEdyaWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLnJvdyB7IHdpZHRoOiAxMDAwcHg7IG1heC13aWR0aDogMTAwJTsgbWluLXdpZHRoOiA3NjhweDsgbWFyZ2luOiAwIGF1dG87IH0KKy5yb3cgLnJvdyB7IHdpZHRoOiBhdXRvOyBtYXgtd2lkdGg6IG5vbmU7IG1pbi13aWR0aDogMDsgbWFyZ2luOiAwIC0xNXB4OyB9Cisucm93LmNvbGxhcHNlIC5jb2x1bW4sIC5yb3cuY29sbGFwc2UgLmNvbHVtbnMgeyBwYWRkaW5nOiAwOyB9Cisucm93IC5yb3cgeyB3aWR0aDogYXV0bzsgbWF4LXdpZHRoOiBub25lOyBtaW4td2lkdGg6IDA7IG1hcmdpbjogMCAtMTVweDsgfQorLnJvdyAucm93LmNvbGxhcHNlIHsgbWFyZ2luOiAwOyB9CisKKy5jb2x1bW4sIC5jb2x1bW5zIHsgZmxvYXQ6IGxlZnQ7IG1pbi1oZWlnaHQ6IDFweDsgcGFkZGluZzogMCAxNXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KKy5jb2x1bW4uY2VudGVyZWQsIC5jb2x1bW5zLmNlbnRlcmVkIHsgZmxvYXQ6IG5vbmU7IG1hcmdpbjogMCBhdXRvOyB9CisKK1tjbGFzcyo9ImNvbHVtbiJdICsgW2NsYXNzKj0iY29sdW1uIl06bGFzdC1jaGlsZCB7IGZsb2F0OiByaWdodDsgfQorCitbY2xhc3MqPSJjb2x1bW4iXSArIFtjbGFzcyo9ImNvbHVtbiJdLmVuZCB7IGZsb2F0OiBsZWZ0OyB9CisKKy5vbmUsIC5yb3cgLm9uZSB7IHdpZHRoOiA4LjMzMzMzJTsgfQorCisudHdvLCAucm93IC50d28geyB3aWR0aDogMTYuNjY2NjclOyB9CisKKy50aHJlZSwgLnJvdyAudGhyZWUgeyB3aWR0aDogMjUlOyB9CisKKy5mb3VyLCAucm93IC5mb3VyIHsgd2lkdGg6IDMzLjMzMzMzJTsgfQorCisuZml2ZSwgLnJvdyAuZml2ZSB7IHdpZHRoOiA0MS42NjY2NyU7IH0KKworLnNpeCwgLnJvdyAuc2l4IHsgd2lkdGg6IDUwJTsgfQorCisuc2V2ZW4sIC5yb3cgLnNldmVuIHsgd2lkdGg6IDU4LjMzMzMzJTsgfQorCisuZWlnaHQsIC5yb3cgLmVpZ2h0IHsgd2lkdGg6IDY2LjY2NjY3JTsgfQorCisubmluZSwgLnJvdyAubmluZSB7IHdpZHRoOiA3NSU7IH0KKworLnRlbiwgLnJvdyAudGVuIHsgd2lkdGg6IDgzLjMzMzMzJTsgfQorCisuZWxldmVuLCAucm93IC5lbGV2ZW4geyB3aWR0aDogOTEuNjY2NjclOyB9CisKKy50d2VsdmUsIC5yb3cgLnR3ZWx2ZSB7IHdpZHRoOiAxMDAlOyB9CisKKy5yb3cgLm9mZnNldC1ieS1vbmUgeyBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH0KKworLnJvdyAub2Zmc2V0LWJ5LXR3byB7IG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH0KKworLnJvdyAub2Zmc2V0LWJ5LXRocmVlIHsgbWFyZ2luLWxlZnQ6IDI1JTsgfQorCisucm93IC5vZmZzZXQtYnktZm91ciB7IG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH0KKworLnJvdyAub2Zmc2V0LWJ5LWZpdmUgeyBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9CisKKy5yb3cgLm9mZnNldC1ieS1zaXggeyBtYXJnaW4tbGVmdDogNTAlOyB9CisKKy5yb3cgLm9mZnNldC1ieS1zZXZlbiB7IG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH0KKworLnJvdyAub2Zmc2V0LWJ5LWVpZ2h0IHsgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfQorCisucm93IC5vZmZzZXQtYnktbmluZSB7IG1hcmdpbi1sZWZ0OiA3NSU7IH0KKworLnJvdyAub2Zmc2V0LWJ5LXRlbiB7IG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7IH0KKworLnB1c2gtdHdvIHsgbGVmdDogMTYuNjY2NjclOyB9CisKKy5wdWxsLXR3byB7IHJpZ2h0OiAxNi42NjY2NyU7IH0KKworLnB1c2gtdGhyZWUgeyBsZWZ0OiAyNSU7IH0KKworLnB1bGwtdGhyZWUgeyByaWdodDogMjUlOyB9CisKKy5wdXNoLWZvdXIgeyBsZWZ0OiAzMy4zMzMzMyU7IH0KKworLnB1bGwtZm91ciB7IHJpZ2h0OiAzMy4zMzMzMyU7IH0KKworLnB1c2gtZml2ZSB7IGxlZnQ6IDQxLjY2NjY3JTsgfQorCisucHVsbC1maXZlIHsgcmlnaHQ6IDQxLjY2NjY3JTsgfQorCisucHVzaC1zaXggeyBsZWZ0OiA1MCU7IH0KKworLnB1bGwtc2l4IHsgcmlnaHQ6IDUwJTsgfQorCisucHVzaC1zZXZlbiB7IGxlZnQ6IDU4LjMzMzMzJTsgfQorCisucHVsbC1zZXZlbiB7IHJpZ2h0OiA1OC4zMzMzMyU7IH0KKworLnB1c2gtZWlnaHQgeyBsZWZ0OiA2Ni42NjY2NyU7IH0KKworLnB1bGwtZWlnaHQgeyByaWdodDogNjYuNjY2NjclOyB9CisKKy5wdXNoLW5pbmUgeyBsZWZ0OiA3NSU7IH0KKworLnB1bGwtbmluZSB7IHJpZ2h0OiA3NSU7IH0KKworLnB1c2gtdGVuIHsgbGVmdDogODMuMzMzMzMlOyB9CisKKy5wdWxsLXRlbiB7IHJpZ2h0OiA4My4zMzMzMyU7IH0KKworaW1nLCBvYmplY3QsIGVtYmVkIHsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH0KKworb2JqZWN0LCBlbWJlZCB7IGhlaWdodDogMTAwJTsgfQorCitpbWcgeyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyB9CisKKyNtYXBfY2FudmFzIGltZywgLm1hcF9jYW52YXMgaW1nIHsgbWF4LXdpZHRoOiBub25lIWltcG9ydGFudDsgfQorCisvKiBOaWNvbGFzIEdhbGxhZ2hlcidzIG1pY3JvIGNsZWFyZml4ICovCisucm93IHsgKnpvb206IDE7IH0KKy5yb3c6YmVmb3JlLCAucm93OmFmdGVyIHsgY29udGVudDogIiI7IGRpc3BsYXk6IHRhYmxlOyB9Cisucm93OmFmdGVyIHsgY2xlYXI6IGJvdGg7IH0KKworLyogTW9iaWxlIEdyaWQgYW5kIE92ZXJyaWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCitAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7IGJvZHkgeyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiBub25lOyB3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAwOyBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLXJpZ2h0OiAwOyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmlnaHQ6IDA7IH0KKyAgLnJvdyB7IHdpZHRoOiBhdXRvOyBtaW4td2lkdGg6IDA7IG1hcmdpbi1sZWZ0OiAwOyBtYXJnaW4tcmlnaHQ6IDA7IH0KKyAgLmNvbHVtbiwgLmNvbHVtbnMgeyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyBmbG9hdDogbm9uZTsgfQorICAuY29sdW1uOmxhc3QtY2hpbGQsIC5jb2x1bW5zOmxhc3QtY2hpbGQgeyBmbG9hdDogbm9uZTsgfQorICBbY2xhc3MqPSJjb2x1bW4iXSArIFtjbGFzcyo9ImNvbHVtbiJdOmxhc3QtY2hpbGQgeyBmbG9hdDogbm9uZTsgfQorICAuY29sdW1uOmJlZm9yZSwgLmNvbHVtbnM6YmVmb3JlLCAuY29sdW1uOmFmdGVyLCAuY29sdW1uczphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiB0YWJsZTsgfQorICAuY29sdW1uOmFmdGVyLCAuY29sdW1uczphZnRlciB7IGNsZWFyOiBib3RoOyB9CisgIC5vZmZzZXQtYnktb25lLCAub2Zmc2V0LWJ5LXR3bywgLm9mZnNldC1ieS10aHJlZSwgLm9mZnNldC1ieS1mb3VyLCAub2Zmc2V0LWJ5LWZpdmUsIC5vZmZzZXQtYnktc2l4LCAub2Zmc2V0LWJ5LXNldmVuLCAub2Zmc2V0LWJ5LWVpZ2h0LCAub2Zmc2V0LWJ5LW5pbmUsIC5vZmZzZXQtYnktdGVuIHsgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfQorICAucHVzaC10d28sIC5wdXNoLXRocmVlLCAucHVzaC1mb3VyLCAucHVzaC1maXZlLCAucHVzaC1zaXgsIC5wdXNoLXNldmVuLCAucHVzaC1laWdodCwgLnB1c2gtbmluZSwgLnB1c2gtdGVuIHsgbGVmdDogYXV0bzsgfQorICAucHVsbC10d28sIC5wdWxsLXRocmVlLCAucHVsbC1mb3VyLCAucHVsbC1maXZlLCAucHVsbC1zaXgsIC5wdWxsLXNldmVuLCAucHVsbC1laWdodCwgLnB1bGwtbmluZSwgLnB1bGwtdGVuIHsgcmlnaHQ6IGF1dG87IH0KKyAgLyogTW9iaWxlIDQtY29sdW1uIEdyaWQgKi8KKyAgLnJvdyAubW9iaWxlLW9uZSB7IHdpZHRoOiAyNSUgIWltcG9ydGFudDsgZmxvYXQ6IGxlZnQ7IHBhZGRpbmc6IDAgMTVweDsgfQorICAucm93IC5tb2JpbGUtb25lOmxhc3QtY2hpbGQgeyBmbG9hdDogcmlnaHQ7IH0KKyAgLnJvdy5jb2xsYXBzZSAubW9iaWxlLW9uZSB7IHBhZGRpbmc6IDA7IH0KKyAgLnJvdyAubW9iaWxlLXR3byB7IHdpZHRoOiA1MCUgIWltcG9ydGFudDsgZmxvYXQ6IGxlZnQ7IHBhZGRpbmc6IDAgMTVweDsgfQorICAucm93IC5tb2JpbGUtdHdvOmxhc3QtY2hpbGQgeyBmbG9hdDogcmlnaHQ7IH0KKyAgLnJvdy5jb2xsYXBzZSAubW9iaWxlLXR3byB7IHBhZGRpbmc6IDA7IH0KKyAgLnJvdyAubW9iaWxlLXRocmVlIHsgd2lkdGg6IDc1JSAhaW1wb3J0YW50OyBmbG9hdDogbGVmdDsgcGFkZGluZzogMCAxNXB4OyB9CisgIC5yb3cgLm1vYmlsZS10aHJlZTpsYXN0LWNoaWxkIHsgZmxvYXQ6IHJpZ2h0OyB9CisgIC5yb3cuY29sbGFwc2UgLm1vYmlsZS10aHJlZSB7IHBhZGRpbmc6IDA7IH0KKyAgLnJvdyAubW9iaWxlLWZvdXIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBmbG9hdDogbGVmdDsgcGFkZGluZzogMCAxNXB4OyB9CisgIC5yb3cgLm1vYmlsZS1mb3VyOmxhc3QtY2hpbGQgeyBmbG9hdDogcmlnaHQ7IH0KKyAgLnJvdy5jb2xsYXBzZSAubW9iaWxlLWZvdXIgeyBwYWRkaW5nOiAwOyB9CisgIC5wdXNoLW9uZS1tb2JpbGUgeyBsZWZ0OiAyNSU7IH0KKyAgLnB1bGwtb25lLW1vYmlsZSB7IHJpZ2h0OiAyNSU7IH0KKyAgLnB1c2gtdHdvLW1vYmlsZSB7IGxlZnQ6IDUwJTsgfQorICAucHVsbC10d28tbW9iaWxlIHsgcmlnaHQ6IDUwJTsgfQorICAucHVzaC10aHJlZS1tb2JpbGUgeyBsZWZ0OiA3NSU7IH0KKyAgLnB1bGwtdGhyZWUtbW9iaWxlIHsgcmlnaHQ6IDc1JTsgfSB9CisvKiBCbG9jayBHcmlkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBUaGVzZSBhcmUgMi11cCwgMy11cCwgNC11cCBhbmQgNS11cCBVTHMsIHN1aXRlZAorZm9yIHJlcGVhdGluZyBibG9ja3Mgb2YgY29udGVudC4gQWRkICdtb2JpbGUnIHRvCit0aGVtIHRvIHN3aXRjaCB0aGVtIGp1c3QgbGlrZSB0aGUgbGF5b3V0IGdyaWQKKyhvbmUgaXRlbSBwZXIgbGluZSkgb24gcGhvbmVzCisKK0ZvciBJRTcvOCBjb21wYXRpYmlsaXR5IGJsb2NrLWdyaWQgaXRlbXMgbmVlZCB0byBiZQordGhlIHNhbWUgaGVpZ2h0LiBZb3UgY2FuIG9wdGlvbmFsbHkgdW5jb21tZW50IHRoZQorbGluZXMgYmVsb3cgdG8gc3VwcG9ydCBhcmJpdHJhcnkgaGVpZ2h0LCBidXQga25vdwordGhhdCBJRTcvOCBkbyBub3Qgc3VwcG9ydCA6bnRoLWNoaWxkLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy5ibG9jay1ncmlkIHsgZGlzcGxheTogYmxvY2s7IG92ZXJmbG93OiBoaWRkZW47IHBhZGRpbmc6IDA7IH0KKy5ibG9jay1ncmlkID4gbGkgeyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiBhdXRvOyBmbG9hdDogbGVmdDsgfQorLmJsb2NrLWdyaWQub25lLXVwIHsgbWFyZ2luOiAwOyB9CisuYmxvY2stZ3JpZC5vbmUtdXAgPiBsaSB7IHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAwIDAgMTVweDsgfQorLmJsb2NrLWdyaWQudHdvLXVwIHsgbWFyZ2luOiAwIC0xNXB4OyB9CisuYmxvY2stZ3JpZC50d28tdXAgPiBsaSB7IHdpZHRoOiA1MCU7IHBhZGRpbmc6IDAgMTVweCAxNXB4OyB9CisuYmxvY2stZ3JpZC50d28tdXAgPiBsaTpudGgtY2hpbGQoMm4rMSkgeyBjbGVhcjogYm90aDsgfQorLmJsb2NrLWdyaWQudGhyZWUtdXAgeyBtYXJnaW46IDAgLTEycHg7IH0KKy5ibG9jay1ncmlkLnRocmVlLXVwID4gbGkgeyB3aWR0aDogMzMuMzMlOyBwYWRkaW5nOiAwIDEycHggMTJweDsgfQorLmJsb2NrLWdyaWQudGhyZWUtdXAgPiBsaTpudGgtY2hpbGQoM24rMSkgeyBjbGVhcjogYm90aDsgfQorLmJsb2NrLWdyaWQuZm91ci11cCB7IG1hcmdpbjogMCAtMTBweDsgfQorLmJsb2NrLWdyaWQuZm91ci11cCA+IGxpIHsgd2lkdGg6IDI1JTsgcGFkZGluZzogMCAxMHB4IDEwcHg7IH0KKy5ibG9jay1ncmlkLmZvdXItdXAgPiBsaTpudGgtY2hpbGQoNG4rMSkgeyBjbGVhcjogYm90aDsgfQorLmJsb2NrLWdyaWQuZml2ZS11cCB7IG1hcmdpbjogMCAtOHB4OyB9CisuYmxvY2stZ3JpZC5maXZlLXVwID4gbGkgeyB3aWR0aDogMjAlOyBwYWRkaW5nOiAwIDhweCA4cHg7IH0KKy5ibG9jay1ncmlkLmZpdmUtdXAgPiBsaTpudGgtY2hpbGQoNW4rMSkgeyBjbGVhcjogYm90aDsgfQorCisvKiBNb2JpbGUgQmxvY2sgR3JpZHMgKi8KK0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsgLmJsb2NrLWdyaWQubW9iaWxlID4gbGkgeyBmbG9hdDogbm9uZTsgd2lkdGg6IDEwMCU7IG1hcmdpbi1sZWZ0OiAwOyB9CisgIC5ibG9jay1ncmlkID4gbGkgeyBjbGVhcjogbm9uZSAhaW1wb3J0YW50OyB9CisgIC5ibG9jay1ncmlkLm1vYmlsZS10d28tdXAgPiBsaSB7IHdpZHRoOiA1MCU7IH0KKyAgLmJsb2NrLWdyaWQubW9iaWxlLXR3by11cCA+IGxpOm50aC1jaGlsZCgybisxKSB7IGNsZWFyOiBib3RoOyB9CisgIC5ibG9jay1ncmlkLm1vYmlsZS10aHJlZS11cCA+IGxpIHsgd2lkdGg6IDMzLjMzJTsgfQorICAuYmxvY2stZ3JpZC5tb2JpbGUtdGhyZWUtdXAgPiBsaTpudGgtY2hpbGQoM24rMSkgeyBjbGVhcjogYm90aCAhaW1wb3J0YW50OyB9CisgIC5ibG9jay1ncmlkLm1vYmlsZS1mb3VyLXVwID4gbGkgeyB3aWR0aDogMjUlOyB9CisgIC5ibG9jay1ncmlkLm1vYmlsZS1mb3VyLXVwID4gbGk6bnRoLWNoaWxkKDRuKzEpIHsgY2xlYXI6IGJvdGg7IH0KKyAgLmJsb2NrLWdyaWQubW9iaWxlLWZpdmUtdXAgPiBsaTpudGgtY2hpbGQoNW4rMSkgeyBjbGVhcjogYm90aDsgfSB9CisvKiBSZXF1aXJlcyBnbG9iYWxzLmNzcyAqLworLyogTm9ybWFsIEJ1dHRvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLmJ1dHRvbiB7IHdpZHRoOiBhdXRvOyBiYWNrZ3JvdW5kOiAjZmQ3ODAwOyBib3JkZXI6IDFweCBzb2xpZCAjY2U2MjAwOyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyBib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsICJIZWx2ZXRpY2EiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBsaW5lLWhlaWdodDogMTsgbWFyZ2luOiAwOyBvdXRsaW5lOiBub25lOyBwYWRkaW5nOiAxMHB4IDIwcHggMTFweDsgcG9zaXRpb246IHJlbGF0aXZlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0OyAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQ7IC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQ7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQ7IC8qIEhvdmVycyAqLyAvKiBTaXplcyAqLyAvKiBDb2xvcnMgKi8gLyogUmFkaWkgKi8gLyogTGF5b3V0ICovIC8qIERpc2FibGVkIC0tLS0tLS0tLS0gKi8gfQorLmJ1dHRvbjpob3ZlciB7IGNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogI2NlNjIwMDsgfQorLmJ1dHRvbjphY3RpdmUgeyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpIGluc2V0OyAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpIGluc2V0OyBib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSBpbnNldDsgfQorLmJ1dHRvbjpmb2N1cyB7IC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDRweCAjZmQ3ODAwLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgLW1vei1ib3gtc2hhZG93OiAwIDAgNHB4ICNmZDc4MDAsIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyBib3gtc2hhZG93OiAwIDAgNHB4ICNmZDc4MDAsIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyBjb2xvcjogd2hpdGU7IH0KKy5idXR0b24ubGFyZ2UgeyBmb250LXNpemU6IDE3cHg7IHBhZGRpbmc6IDE1cHggMzBweCAxNnB4OyB9CisuYnV0dG9uLm1lZGl1bSB7IGZvbnQtc2l6ZTogMTRweDsgfQorLmJ1dHRvbi5zbWFsbCB7IGZvbnQtc2l6ZTogMTFweDsgcGFkZGluZzogN3B4IDE0cHggOHB4OyB9CisuYnV0dG9uLnRpbnkgeyBmb250LXNpemU6IDEwcHg7IHBhZGRpbmc6IDVweCAxMHB4IDZweDsgfQorLmJ1dHRvbi5leHBhbmQgeyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyOyB9CisuYnV0dG9uLnByaW1hcnkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmQ3ODAwOyBib3JkZXI6IDFweCBzb2xpZCAjMWU3MjhjOyB9CisuYnV0dG9uLnByaW1hcnk6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjI4NGExOyB9CisuYnV0dG9uLnByaW1hcnk6Zm9jdXMgeyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA0cHggI2ZkNzgwMCwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IC1tb3otYm94LXNoYWRvdzogMCAwIDRweCAjZmQ3ODAwLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgYm94LXNoYWRvdzogMCAwIDRweCAjZmQ3ODAwLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgfQorLmJ1dHRvbi5zdWNjZXNzIHsgYmFja2dyb3VuZC1jb2xvcjogIzVkYTQyMzsgYm9yZGVyOiAxcHggc29saWQgIzM5NjUxNjsgfQorLmJ1dHRvbi5zdWNjZXNzOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzQ1N2ExYTsgfQorLmJ1dHRvbi5zdWNjZXNzOmZvY3VzIHsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNXB4ICM1ZGE0MjMsIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyAtbW96LWJveC1zaGFkb3c6IDAgMCA1cHggIzVkYTQyMywgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IGJveC1zaGFkb3c6IDAgMCA1cHggIzVkYTQyMywgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IH0KKy5idXR0b24uYWxlcnQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYzYwZjEzOyBib3JkZXI6IDFweCBzb2xpZCAjN2YwYTBjOyB9CisuYnV0dG9uLmFsZXJ0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzk3MGIwZTsgfQorLmJ1dHRvbi5hbGVydDpmb2N1cyB7IC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDRweCAjYzYwZjEzLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgLW1vei1ib3gtc2hhZG93OiAwIDAgNHB4ICNjNjBmMTMsIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyBib3gtc2hhZG93OiAwIDAgNHB4ICNjNjBmMTMsIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyB9CisuYnV0dG9uLnNlY29uZGFyeSB7IGJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7IGNvbG9yOiAjMWQxZDFkOyBib3JkZXI6IDFweCBzb2xpZCAjYzNjM2MzOyB9CisuYnV0dG9uLnNlY29uZGFyeTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNkMGQwZDA7IH0KKy5idXR0b24uc2Vjb25kYXJ5OmZvY3VzIHsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNXB4ICNlOWU5ZTksIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIGluc2V0OyAtbW96LWJveC1zaGFkb3c6IDAgMCA1cHggI2U5ZTllOSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IGJveC1zaGFkb3c6IDAgMCA1cHggI2U5ZTllOSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IH0KKy5idXR0b24ucmFkaXVzIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7IC1tb3otYm9yZGVyLXJhZGl1czogM3B4OyAtbXMtYm9yZGVyLXJhZGl1czogM3B4OyAtby1ib3JkZXItcmFkaXVzOiAzcHg7IGJvcmRlci1yYWRpdXM6IDNweDsgfQorLmJ1dHRvbi5yb3VuZCB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwMHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDEwMDBweDsgLW1zLWJvcmRlci1yYWRpdXM6IDEwMDBweDsgLW8tYm9yZGVyLXJhZGl1czogMTAwMHB4OyBib3JkZXItcmFkaXVzOiAxMDAwcHg7IH0KKy5idXR0b24uZnVsbC13aWR0aCB7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50OyB9CisuYnV0dG9uLmxlZnQtYWxpZ24geyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMTJweDsgfQorLmJ1dHRvbi5kaXNhYmxlZCwgLmJ1dHRvbltkaXNhYmxlZF0geyBvcGFjaXR5OiAwLjY7IGN1cnNvcjogZGVmYXVsdDsgYmFja2dyb3VuZDogI2ZkNzgwMDsgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOyAtbW96LWJveC1zaGFkb3c6IG5vbmU7IGJveC1zaGFkb3c6IG5vbmU7IH0KKy5idXR0b24uZGlzYWJsZWQgOmhvdmVyLCAuYnV0dG9uW2Rpc2FibGVkXSA6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZmQ3ODAwOyB9CisuYnV0dG9uLmRpc2FibGVkLnN1Y2Nlc3MsIC5idXR0b25bZGlzYWJsZWRdLnN1Y2Nlc3MgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNWRhNDIzOyB9CisuYnV0dG9uLmRpc2FibGVkLnN1Y2Nlc3M6aG92ZXIsIC5idXR0b25bZGlzYWJsZWRdLnN1Y2Nlc3M6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNWRhNDIzOyB9CisuYnV0dG9uLmRpc2FibGVkLmFsZXJ0LCAuYnV0dG9uW2Rpc2FibGVkXS5hbGVydCB7IGJhY2tncm91bmQtY29sb3I6ICNjNjBmMTM7IH0KKy5idXR0b24uZGlzYWJsZWQuYWxlcnQ6aG92ZXIsIC5idXR0b25bZGlzYWJsZWRdLmFsZXJ0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2M2MGYxMzsgfQorLmJ1dHRvbi5kaXNhYmxlZC5zZWNvbmRhcnksIC5idXR0b25bZGlzYWJsZWRdLnNlY29uZGFyeSB7IGJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7IH0KKy5idXR0b24uZGlzYWJsZWQuc2Vjb25kYXJ5OmhvdmVyLCAuYnV0dG9uW2Rpc2FibGVkXS5zZWNvbmRhcnk6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5OyB9CisKKy8qIERvbid0IHVzZSBuYXRpdmUgYnV0dG9ucyBvbiBpT1MgKi8KK2lucHV0W3R5cGU9c3VibWl0XS5idXR0b24sIGJ1dHRvbi5idXR0b24geyAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH0KKworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyAuYnV0dG9uIHsgZGlzcGxheTogYmxvY2s7IH0KKyAgYnV0dG9uLmJ1dHRvbiwgaW5wdXRbdHlwZT0ic3VibWl0Il0uYnV0dG9uIHsgd2lkdGg6IDEwMCU7IHBhZGRpbmctbGVmdDogMDsgcGFkZGluZy1yaWdodDogMDsgfSB9CisvKiBDb3JyZWN0IEZGIGJ1dHRvbiBwYWRkaW5nICovCitALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCkgeyBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsIGlucHV0W3R5cGU9InJlc2V0Il06Oi1tb3otZm9jdXMtaW5uZXIsIGlucHV0W3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLCBpbnB1dFt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lciwgaW5wdXRbdHlwZT0iZmlsZSJdID4gaW5wdXRbdHlwZT0iYnV0dG9uIl06Oi1tb3otZm9jdXMtaW5uZXIgeyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDA7IH0KKyAgaW5wdXRbdHlwZT0ic3VibWl0Il0udGlueS5idXR0b24geyBwYWRkaW5nOiAzcHggMTBweCA0cHg7IH0KKyAgaW5wdXRbdHlwZT0ic3VibWl0Il0uc21hbGwuYnV0dG9uIHsgcGFkZGluZzogNXB4IDE0cHggNnB4OyB9CisgIGlucHV0W3R5cGU9InN1Ym1pdCJdLmJ1dHRvbiwgaW5wdXRbdHlwZT1zdWJtaXRdLm1lZGl1bS5idXR0b24geyBwYWRkaW5nOiA4cHggMjBweCA5cHg7IH0KKyAgaW5wdXRbdHlwZT0ic3VibWl0Il0ubGFyZ2UuYnV0dG9uIHsgcGFkZGluZzogMTNweCAzMHB4IDE0cHg7IH0gfQorCisvKiBCdXR0b25zIHdpdGggRHJvcGRvd25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy5idXR0b24uZHJvcGRvd24geyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmctcmlnaHQ6IDQ0cHg7IC8qIFNpemVzICovIC8qIFRyaWFuZ2xlcyAqLyAvKiBGbHlvdXQgTGlzdCAqLyAvKiBTcGxpdCBEcm9wZG93biBCdXR0b25zICovIH0KKy5idXR0b24uZHJvcGRvd24ubGFyZ2UgeyBwYWRkaW5nLXJpZ2h0OiA2MHB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNtYWxsIHsgcGFkZGluZy1yaWdodDogMjhweDsgfQorLmJ1dHRvbi5kcm9wZG93bi50aW55IHsgcGFkZGluZy1yaWdodDogMjBweDsgfQorLmJ1dHRvbi5kcm9wZG93bjphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiBzb2xpZCA2cHg7IGJvcmRlci1jb2xvcjogd2hpdGUgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IHJpZ2h0OiAyMHB4OyBtYXJnaW4tdG9wOiAtMnB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLmxhcmdlOmFmdGVyIHsgY29udGVudDogIiI7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBib3JkZXI6IHNvbGlkIDdweDsgYm9yZGVyLWNvbG9yOiB3aGl0ZSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgbWFyZ2luLXRvcDogLTNweDsgcmlnaHQ6IDMwcHg7IH0KKy5idXR0b24uZHJvcGRvd24uc21hbGw6YWZ0ZXIgeyBjb250ZW50OiAiIjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IGJvcmRlcjogc29saWQgNXB4OyBib3JkZXItY29sb3I6IHdoaXRlIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyBtYXJnaW4tdG9wOiAtMnB4OyByaWdodDogMTRweDsgfQorLmJ1dHRvbi5kcm9wZG93bi50aW55OmFmdGVyIHsgY29udGVudDogIiI7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBib3JkZXI6IHNvbGlkIDRweDsgYm9yZGVyLWNvbG9yOiB3aGl0ZSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgbWFyZ2luLXRvcDogLTFweDsgcmlnaHQ6IDEwcHg7IH0KKy5idXR0b24uZHJvcGRvd24gPiB1bCB7IC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC0xcHg7IGJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYzsgYm9yZGVyLXRvcDogbm9uZTsgbWluLXdpZHRoOiAxMDAlOyB6LWluZGV4OiA0MDsgfQorLmJ1dHRvbi5kcm9wZG93biA+IHVsIGxpIHsgd2lkdGg6IDEwMCU7IGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZzogMDsgbWluLWhlaWdodDogMThweDsgbGluZS1oZWlnaHQ6IDE4cHg7IG1hcmdpbjogMDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgbGlzdC1zdHlsZTogbm9uZTsgfQorLmJ1dHRvbi5kcm9wZG93biA+IHVsIGxpIGEgeyBkaXNwbGF5OiBibG9jazsgY29sb3I6ICM1NTU7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgcGFkZGluZzogNnB4IDE0cHg7IHRleHQtYWxpZ246IGxlZnQ7IH0KKy5idXR0b24uZHJvcGRvd24gPiB1bCBsaTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlM2Y0Zjk7IGNvbG9yOiAjMjIyOyB9CisuYnV0dG9uLmRyb3Bkb3duID4gdWwgbGkuZGl2aWRlciB7IG1pbi1oZWlnaHQ6IDA7IHBhZGRpbmc6IDA7IGhlaWdodDogMXB4OyBtYXJnaW46IDRweCAwOyBiYWNrZ3JvdW5kOiAjZWRlZGVkOyB9CisuYnV0dG9uLmRyb3Bkb3duLnVwID4gdWwgeyBib3JkZXItdG9wOiAxcHggc29saWQgI2NjY2NjYzsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQorLmJ1dHRvbi5kcm9wZG93biB1bC5uby1ob3Zlci5zaG93LWRyb3Bkb3duIHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQorLmJ1dHRvbi5kcm9wZG93bjpob3ZlciA+IHVsLm5vLWhvdmVyIHsgZGlzcGxheTogbm9uZTsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdCB7IHBhZGRpbmc6IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogU2l6ZXMgKi8gLyogVHJpYW5nbGUgU3BhbnMgKi8gLyogQ29sb3JzICovIH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQ6YWZ0ZXIgeyBkaXNwbGF5OiBub25lOyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZkNzgwMDsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC5hbGVydDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNjNjBmMTM7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQuc3VjY2Vzczpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICM1ZGE0MjM7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQuc2Vjb25kYXJ5OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdCA+IGEgeyBjb2xvcjogd2hpdGU7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAxMHB4IDUwcHggMTFweCAyMHB4OyBwYWRkaW5nLWxlZnQ6IDIwcHg7IHBhZGRpbmctcmlnaHQ6IDUwcHg7IC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dDsgLW1vei10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0OyAtby10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0OyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0ID4gYTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICMyMjg0YTE7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQubGFyZ2UgPiBhIHsgcGFkZGluZzogMTVweCA3NXB4IDE2cHggMzBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwYWRkaW5nLXJpZ2h0OiA3NXB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LnNtYWxsID4gYSB7IHBhZGRpbmc6IDdweCAzNXB4IDhweCAxNHB4OyBwYWRkaW5nLWxlZnQ6IDE0cHg7IHBhZGRpbmctcmlnaHQ6IDM1cHg7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQudGlueSA+IGEgeyBwYWRkaW5nOiA1cHggMjVweCA2cHggMTBweDsgcGFkZGluZy1sZWZ0OiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAyNXB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0ID4gc3BhbiB7IGJhY2tncm91bmQtY29sb3I6ICNmZDc4MDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IHRvcDogMDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMzBweDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMWU3MjhjOyAtd2Via2l0LWJveC1zaGFkb3c6IDFweCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IC1tb3otYm94LXNoYWRvdzogMXB4IDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgYm94LXNoYWRvdzogMXB4IDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0OyAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQ7IC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQ7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQ7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQgPiBzcGFuOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzIyODRhMTsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdCA+IHNwYW46YWZ0ZXIgeyBjb250ZW50OiAiIjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IGJvcmRlcjogc29saWQgNnB4OyBib3JkZXItY29sb3I6IHdoaXRlIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IG1hcmdpbi1sZWZ0OiAtNnB4OyBtYXJnaW4tdG9wOiAtMnB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LnNlY29uZGFyeSA+IHNwYW46YWZ0ZXIgeyBjb250ZW50OiAiIjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IGJvcmRlcjogc29saWQgNnB4OyBib3JkZXItY29sb3I6ICMxZDFkMWQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQubGFyZ2Ugc3BhbiB7IHdpZHRoOiA0NXB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LnNtYWxsIHNwYW4geyB3aWR0aDogMjFweDsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC50aW55IHNwYW4geyB3aWR0aDogMTVweDsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC5sYXJnZSBzcGFuOmFmdGVyIHsgY29udGVudDogIiI7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBib3JkZXI6IHNvbGlkIDdweDsgYm9yZGVyLWNvbG9yOiB3aGl0ZSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgbWFyZ2luLXRvcDogLTNweDsgbWFyZ2luLWxlZnQ6IC03cHg7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQuc21hbGwgc3BhbjphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiBzb2xpZCA0cHg7IGJvcmRlci1jb2xvcjogd2hpdGUgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IG1hcmdpbi10b3A6IC0xcHg7IG1hcmdpbi1sZWZ0OiAtNHB4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LnRpbnkgc3BhbjphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiBzb2xpZCAzcHg7IGJvcmRlci1jb2xvcjogd2hpdGUgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IG1hcmdpbi10b3A6IC0xcHg7IG1hcmdpbi1sZWZ0OiAtM3B4OyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LmFsZXJ0ID4gc3BhbiB7IGJhY2tncm91bmQtY29sb3I6ICNjNjBmMTM7IGJvcmRlci1sZWZ0LWNvbG9yOiAjN2YwYTBjOyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LnN1Y2Nlc3MgPiBzcGFuIHsgYmFja2dyb3VuZC1jb2xvcjogIzVkYTQyMzsgYm9yZGVyLWxlZnQtY29sb3I6ICMzOTY1MTY7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQuc2Vjb25kYXJ5ID4gc3BhbiB7IGJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7IGJvcmRlci1sZWZ0LWNvbG9yOiAjYzNjM2MzOyB9CisuYnV0dG9uLmRyb3Bkb3duLnNwbGl0LnNlY29uZGFyeSA+IGEgeyBjb2xvcjogIzFkMWQxZDsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC5hbGVydCA+IGE6aG92ZXIsIC5idXR0b24uZHJvcGRvd24uc3BsaXQuYWxlcnQgPiBzcGFuOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzk3MGIwZTsgfQorLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC5zdWNjZXNzID4gYTpob3ZlciwgLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC5zdWNjZXNzID4gc3Bhbjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICM0NTdhMWE7IH0KKy5idXR0b24uZHJvcGRvd24uc3BsaXQuc2Vjb25kYXJ5ID4gYTpob3ZlciwgLmJ1dHRvbi5kcm9wZG93bi5zcGxpdC5zZWNvbmRhcnkgPiBzcGFuOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2QwZDBkMDsgfQorCisvKiBCdXR0b24gR3JvdXBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK3VsLmJ1dHRvbi1ncm91cCB7IGxpc3Qtc3R5bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1hcmdpbjogMCAwIDEycHg7ICp6b29tOiAxOyB9Cit1bC5idXR0b24tZ3JvdXA6YmVmb3JlLCB1bC5idXR0b24tZ3JvdXA6YWZ0ZXIgeyBjb250ZW50OiAiIjsgZGlzcGxheTogdGFibGU7IH0KK3VsLmJ1dHRvbi1ncm91cDphZnRlciB7IGNsZWFyOiBib3RoOyB9Cit1bC5idXR0b24tZ3JvdXAgbGkgeyBwYWRkaW5nOiAwOyBtYXJnaW46IDAgMCAwIC0xcHg7IGZsb2F0OiBsZWZ0OyB9Cit1bC5idXR0b24tZ3JvdXAgbGk6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tbGVmdDogMDsgfQordWwuYnV0dG9uLWdyb3VwLnJhZGl1cyBsaSBhLmJ1dHRvbiwgdWwuYnV0dG9uLWdyb3VwLnJhZGl1cyBsaSBhLmJ1dHRvbi5yYWRpdXMsIHVsLmJ1dHRvbi1ncm91cC5yYWRpdXMgbGkgYS5idXR0b24tcm91bmRlZCB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDBweDsgLW1zLWJvcmRlci1yYWRpdXM6IDBweDsgLW8tYm9yZGVyLXJhZGl1czogMHB4OyBib3JkZXItcmFkaXVzOiAwcHg7IH0KK3VsLmJ1dHRvbi1ncm91cC5yYWRpdXMgbGk6Zmlyc3QtY2hpbGQgYS5idXR0b24sIHVsLmJ1dHRvbi1ncm91cC5yYWRpdXMgbGk6Zmlyc3QtY2hpbGQgYS5idXR0b24ucmFkaXVzIHsgLW1vei1ib3JkZXItcmFkaXVzLWxlZnQzcHg6IDVweDsgLXdlYmtpdC1ib3JkZXItbGVmdC0zcHgtcmFkaXVzOiA1cHg7IGJvcmRlci1sZWZ0LTNweC1yYWRpdXM6IDVweDsgfQordWwuYnV0dG9uLWdyb3VwLnJhZGl1cyBsaTpmaXJzdC1jaGlsZCBhLmJ1dHRvbi5yb3VuZGVkIHsgLW1vei1ib3JkZXItcmFkaXVzLWxlZnQxMDAwcHg6IDVweDsgLXdlYmtpdC1ib3JkZXItbGVmdC0xMDAwcHgtcmFkaXVzOiA1cHg7IGJvcmRlci1sZWZ0LTEwMDBweC1yYWRpdXM6IDVweDsgfQordWwuYnV0dG9uLWdyb3VwLnJhZGl1cyBsaTpsYXN0LWNoaWxkIGEuYnV0dG9uLCB1bC5idXR0b24tZ3JvdXAucmFkaXVzIGxpOmxhc3QtY2hpbGQgYS5idXR0b24ucmFkaXVzIHsgLW1vei1ib3JkZXItcmFkaXVzLXJpZ2h0M3B4OiA1cHg7IC13ZWJraXQtYm9yZGVyLXJpZ2h0LTNweC1yYWRpdXM6IDVweDsgYm9yZGVyLXJpZ2h0LTNweC1yYWRpdXM6IDVweDsgfQordWwuYnV0dG9uLWdyb3VwLnJhZGl1cyBsaTpsYXN0LWNoaWxkIGEuYnV0dG9uLnJvdW5kZWQgeyAtbW96LWJvcmRlci1yYWRpdXMtcmlnaHQxMDAwcHg6IDVweDsgLXdlYmtpdC1ib3JkZXItcmlnaHQtMTAwMHB4LXJhZGl1czogNXB4OyBib3JkZXItcmlnaHQtMTAwMHB4LXJhZGl1czogNXB4OyB9Cit1bC5idXR0b24tZ3JvdXAuZXZlbiBhLmJ1dHRvbiB7IHdpZHRoOiAxMDAlOyB9Cit1bC5idXR0b24tZ3JvdXAuZXZlbi50d28tdXAgbGkgeyB3aWR0aDogNTAlOyB9Cit1bC5idXR0b24tZ3JvdXAuZXZlbi50aHJlZS11cCBsaSB7IHdpZHRoOiAzMy4zJTsgfQordWwuYnV0dG9uLWdyb3VwLmV2ZW4udGhyZWUtdXAgbGk6Zmlyc3QtY2hpbGQgeyB3aWR0aDogMzMuNCU7IH0KK3VsLmJ1dHRvbi1ncm91cC5ldmVuLmZvdXItdXAgbGkgeyB3aWR0aDogMjUlOyB9Cit1bC5idXR0b24tZ3JvdXAuZXZlbi5maXZlLXVwIGxpIHsgd2lkdGg6IDIwJTsgfQorCitAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7IC5idXR0b24tZ3JvdXAgYnV0dG9uLmJ1dHRvbiwgLmJ1dHRvbi1ncm91cCBpbnB1dFt0eXBlPSJzdWJtaXQiXS5idXR0b24geyB3aWR0aDogYXV0bzsgcGFkZGluZzogMTBweCAyMHB4IDExcHg7IH0KKyAgLmJ1dHRvbi1ncm91cCBidXR0b24uYnV0dG9uLmxhcmdlLCAuYnV0dG9uLWdyb3VwIGlucHV0W3R5cGU9InN1Ym1pdCJdLmJ1dHRvbi5sYXJnZSB7IHBhZGRpbmc6IDE1cHggMzBweCAxNnB4OyB9CisgIC5idXR0b24tZ3JvdXAgYnV0dG9uLmJ1dHRvbi5tZWRpdW0sIC5idXR0b24tZ3JvdXAgaW5wdXRbdHlwZT0ic3VibWl0Il0uYnV0dG9uLm1lZGl1bSB7IHBhZGRpbmc6IDEwcHggMjBweCAxMXB4OyB9CisgIC5idXR0b24tZ3JvdXAgYnV0dG9uLmJ1dHRvbi5zbWFsbCwgLmJ1dHRvbi1ncm91cCBpbnB1dFt0eXBlPSJzdWJtaXQiXS5idXR0b24uc21hbGwgeyBwYWRkaW5nOiA3cHggMTRweCA4cHg7IH0KKyAgLmJ1dHRvbi1ncm91cCBidXR0b24uYnV0dG9uLnRpbnksIC5idXR0b24tZ3JvdXAgaW5wdXRbdHlwZT0ic3VibWl0Il0uYnV0dG9uLnRpbnkgeyBwYWRkaW5nOiA1cHggMTBweCA2cHg7IH0KKyAgLmJ1dHRvbi1ncm91cC5ldmVuIGJ1dHRvbi5idXR0b24sIC5idXR0b24tZ3JvdXAuZXZlbiBpbnB1dFt0eXBlPSJzdWJtaXQiXS5idXR0b24geyB3aWR0aDogMTAwJTsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyB9IH0KK2Rpdi5idXR0b24tYmFyIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfQorZGl2LmJ1dHRvbi1iYXIgdWwuYnV0dG9uLWdyb3VwIHsgZmxvYXQ6IGxlZnQ7IG1hcmdpbi1yaWdodDogOHB4OyB9CitkaXYuYnV0dG9uLWJhciB1bC5idXR0b24tZ3JvdXA6bGFzdC1jaGlsZCB7IG1hcmdpbi1sZWZ0OiAwOyB9CisKKy8qIENTUyBmb3IgalF1ZXJ5IFJldmVhbCBQbHVnaW4gTWFpbnRhaW5lZCBmb3IgRm91bmRhdGlvbi4gZm91bmRhdGlvbi56dXJiLmNvbSBGcmVlIHRvIHVzZSB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwICovCisvKiBSZXZlYWwgTW9kYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy5yZXZlYWwtbW9kYWwtYmcgeyBwb3NpdGlvbjogZml4ZWQ7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICMwMDA7IGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40NSk7IHotaW5kZXg6IDQwOyBkaXNwbGF5OiBub25lOyB0b3A6IDA7IGxlZnQ6IDA7IH0KKworLnJldmVhbC1tb2RhbCB7IGJhY2tncm91bmQ6IHdoaXRlOyB2aXNpYmlsaXR5OiBoaWRkZW47IGRpc3BsYXk6IG5vbmU7IHRvcDogMTAwcHg7IGxlZnQ6IDUwJTsgbWFyZ2luLWxlZnQ6IC0yNjBweDsgd2lkdGg6IDUyMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDQxOyBwYWRkaW5nOiAzMHB4OyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC40KTsgLW1vei1ib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC40KTsgfQorLnJldmVhbC1tb2RhbCAqOmZpcnN0LWNoaWxkIHsgbWFyZ2luLXRvcDogMDsgfQorLnJldmVhbC1tb2RhbCAqOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiAwOyB9CisucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBmb250LXNpemU6IDIycHg7IGZvbnQtc2l6ZTogMi4ycmVtOyBsaW5lLWhlaWdodDogLjU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA4cHg7IHJpZ2h0OiAxMXB4OyBjb2xvcjogI2FhYTsgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjYpOyBmb250LXdlaWdodDogYm9sZDsgY3Vyc29yOiBwb2ludGVyOyB9CisucmV2ZWFsLW1vZGFsLnNtYWxsIHsgd2lkdGg6IDMwJTsgbWFyZ2luLWxlZnQ6IC0xNSU7IH0KKy5yZXZlYWwtbW9kYWwubWVkaXVtIHsgd2lkdGg6IDQwJTsgbWFyZ2luLWxlZnQ6IC0yMCU7IH0KKy5yZXZlYWwtbW9kYWwubGFyZ2UgeyB3aWR0aDogNjAlOyBtYXJnaW4tbGVmdDogLTMwJTsgfQorLnJldmVhbC1tb2RhbC54bGFyZ2UgeyB3aWR0aDogNzAlOyBtYXJnaW4tbGVmdDogLTM1JTsgfQorLnJldmVhbC1tb2RhbC5leHBhbmQgeyB3aWR0aDogOTAlOyBtYXJnaW4tbGVmdDogLTQ1JTsgfQorLnJldmVhbC1tb2RhbCAucm93IHsgbWluLXdpZHRoOiAwOyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9CisKKy8qIE1vYmlsZSAqLworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyAucmV2ZWFsLW1vZGFsLWJnIHsgcG9zaXRpb246IGFic29sdXRlOyB9CisgIC5yZXZlYWwtbW9kYWwsIC5yZXZlYWwtbW9kYWwuc21hbGwsIC5yZXZlYWwtbW9kYWwubWVkaXVtLCAucmV2ZWFsLW1vZGFsLmxhcmdlLCAucmV2ZWFsLW1vZGFsLnhsYXJnZSB7IHdpZHRoOiA4MCU7IHRvcDogMTVweDsgbGVmdDogNTAlOyBtYXJnaW4tbGVmdDogLTQwJTsgcGFkZGluZzogMjBweDsgaGVpZ2h0OiBhdXRvOyB9IH0KKyAgLyogTk9URVMgQ2xvc2UgYnV0dG9uIGVudGl0eSBpcyAmIzIxNTsKKyBFeGFtcGxlIG1hcmt1cCA8ZGl2IGlkPSJteU1vZGFsIiBjbGFzcz0icmV2ZWFsLW1vZGFsIj4gPGgyPkF3ZXNvbWUuIEkgaGF2ZSBpdC48L2gyPiA8cCBjbGFzcz0ibGVhZCI+WW91ciBjb3VjaC4gIEkgaXQncyBtaW5lLjwvcD4gPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gSW4gdWx0cmljZXMgYWxpcXVldCBwbGFjZXJhdC4gRHVpcyBwdWx2aW5hciBvcmNpIGV0IG5pc2kgZXVpc21vZCB2aXRhZSB0ZW1wdXMgbG9yZW0gY29uc2VjdGV0dXIuIER1aXMgYXQgbWFnbmEgcXVpcyB0dXJwaXMgbWF0dGlzIHZlbmVuYXRpcyBlZ2V0IGlkIGRpYW0uIDwvcD4gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiA8L2Rpdj4gKi8KKy8qIFJlcXVpcmVzIC1nbG9iYWxzLmNzcyAtYXBwLmpzICovCisvKiBUYWJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK2RsLnRhYnMgeyBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2U2ZTZlNjsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogNDBweDsgcGFkZGluZzogMDsgbWFyZ2luLWJvdHRvbTogMjBweDsgfQorZGwudGFicy5jb250YWluZWQgeyBtYXJnaW4tYm90dG9tOiAwOyB9CitkbC50YWJzIGR0IHsgY29sb3I6ICNiM2IzYjM7IGN1cnNvcjogZGVmYXVsdDsgZGlzcGxheTogYmxvY2s7IGZsb2F0OiBsZWZ0OyBmb250LXNpemU6IDEycHg7IGhlaWdodDogNDBweDsgbGluZS1oZWlnaHQ6IDQwcHg7IHBhZGRpbmc6IDA7IHBhZGRpbmctcmlnaHQ6IDlweDsgcGFkZGluZy1sZWZ0OiAyMHB4OyB3aWR0aDogYXV0bzsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQorZGwudGFicyBkdDpmaXJzdC1jaGlsZCB7IHBhZGRpbmc6IDA7IHBhZGRpbmctcmlnaHQ6IDlweDsgfQorZGwudGFicyBkZCB7IGRpc3BsYXk6IGJsb2NrOyBmbG9hdDogbGVmdDsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyB9CitkbC50YWJzIGRkIGEgeyBjb2xvcjogIzZmNmY2ZjsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTRweDsgaGVpZ2h0OiA0MHB4OyBsaW5lLWhlaWdodDogNDBweDsgcGFkZGluZzogMHB4IDIzLjhweDsgfQorZGwudGFicyBkZCBhOmZvY3VzIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjZmQ3ODAwOyB9CitkbC50YWJzIGRkLmFjdGl2ZSB7IGJvcmRlci10b3A6IDNweCBzb2xpZCAjZmQ3ODAwOyBtYXJnaW4tdG9wOiAtM3B4OyB9CitkbC50YWJzIGRkLmFjdGl2ZSBhIHsgY3Vyc29yOiBkZWZhdWx0OyBjb2xvcjogIzNjM2MzYzsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTZlNmU2OyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTZlNmU2OyBmb250LXdlaWdodDogYm9sZDsgfQorZGwudGFicyBkZDpmaXJzdC1jaGlsZCB7IG1hcmdpbi1sZWZ0OiAwOyB9CitkbC50YWJzLnZlcnRpY2FsIHsgaGVpZ2h0OiBhdXRvOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U2ZTZlNjsgfQorZGwudGFicy52ZXJ0aWNhbCBkdCwgZGwudGFicy52ZXJ0aWNhbCBkZCB7IGZsb2F0OiBub25lOyBoZWlnaHQ6IGF1dG87IH0KK2RsLnRhYnMudmVydGljYWwgZGQgeyBib3JkZXItbGVmdDogM3B4IHNvbGlkICNjY2NjY2M7IH0KK2RsLnRhYnMudmVydGljYWwgZGQgYSB7IGJhY2tncm91bmQ6ICNmMmYyZjI7IGJvcmRlcjogbm9uZTsgYm9yZGVyOiAxcHggc29saWQgI2U2ZTZlNjsgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMDsgY29sb3I6ICM1NTU7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDE0cHg7IGhlaWdodDogYXV0bzsgbGluZS1oZWlnaHQ6IDE7IHBhZGRpbmc6IDE1cHggMjBweDsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSBpbnNldDsgYm94LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgaW5zZXQ7IH0KK2RsLnRhYnMudmVydGljYWwgZGQuYWN0aXZlIHsgbWFyZ2luLXRvcDogMDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0ZDRkNGQ7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzFhMWExYTsgfQorZGwudGFicy52ZXJ0aWNhbCBkZC5hY3RpdmUgYSB7IGJhY2tncm91bmQ6ICM0ZDRkNGQ7IGJvcmRlcjogbm9uZTsgY29sb3I6ICNmZmY7IGhlaWdodDogYXV0bzsgbWFyZ2luOiAwOyBwb3NpdGlvbjogc3RhdGljOyB0b3A6IDA7IC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDA7IC1tb3otYm94LXNoYWRvdzogMCAwIDA7IGJveC1zaGFkb3c6IDAgMCAwOyB9CitkbC50YWJzLnZlcnRpY2FsIGRkOmZpcnN0LWNoaWxkIGEuYWN0aXZlIHsgbWFyZ2luOiAwOyB9CitkbC50YWJzLnBpbGwgeyBib3JkZXItYm90dG9tOiBub25lOyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9CitkbC50YWJzLnBpbGwgZGQgeyBtYXJnaW4tcmlnaHQ6IDEwcHg7IH0KK2RsLnRhYnMucGlsbCBkZDpsYXN0LWNoaWxkIHsgbWFyZ2luLXJpZ2h0OiAwOyB9CitkbC50YWJzLnBpbGwgZGQgYSB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwMHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDEwMDBweDsgLW1zLWJvcmRlci1yYWRpdXM6IDEwMDBweDsgLW8tYm9yZGVyLXJhZGl1czogMTAwMHB4OyBib3JkZXItcmFkaXVzOiAxMDAwcHg7IGJhY2tncm91bmQ6ICNlNmU2ZTY7IGhlaWdodDogMjZweDsgbGluZS1oZWlnaHQ6IDI2cHg7IGNvbG9yOiAjNjY2OyB9CitkbC50YWJzLnBpbGwgZGQuYWN0aXZlIHsgYm9yZGVyOiBub25lOyBtYXJnaW4tdG9wOiAwOyB9CitkbC50YWJzLnBpbGwgZGQuYWN0aXZlIGEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmQ3ODAwOyBib3JkZXI6IG5vbmU7IGNvbG9yOiAjZmZmOyB9CitkbC50YWJzLnBpbGwuY29udGFpbmVkIHsgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICNlZWU7IG1hcmdpbi1ib3R0b206IDA7IH0KK2RsLnRhYnMucGlsbC50d28tdXAgZGQsIGRsLnRhYnMucGlsbC50aHJlZS11cCBkZCwgZGwudGFicy5waWxsLmZvdXItdXAgZGQsIGRsLnRhYnMucGlsbC5maXZlLXVwIGRkIHsgbWFyZ2luLXJpZ2h0OiAwOyB9CitkbC50YWJzLnR3by11cCBkdCBhLCBkbC50YWJzLnR3by11cCBkZCBhLCBkbC50YWJzLnRocmVlLXVwIGR0IGEsIGRsLnRhYnMudGhyZWUtdXAgZGQgYSwgZGwudGFicy5mb3VyLXVwIGR0IGEsIGRsLnRhYnMuZm91ci11cCBkZCBhLCBkbC50YWJzLmZpdmUtdXAgZHQgYSwgZGwudGFicy5maXZlLXVwIGRkIGEgeyBwYWRkaW5nOiAwIDE3cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgb3ZlcmZsb3c6IGhpZGRlbjsgfQorZGwudGFicy50d28tdXAgZHQsIGRsLnRhYnMudHdvLXVwIGRkIHsgd2lkdGg6IDUwJTsgfQorZGwudGFicy50aHJlZS11cCBkdCwgZGwudGFicy50aHJlZS11cCBkZCB7IHdpZHRoOiAzMy4zMyU7IH0KK2RsLnRhYnMuZm91ci11cCBkdCwgZGwudGFicy5mb3VyLXVwIGRkIHsgd2lkdGg6IDI1JTsgfQorZGwudGFicy5maXZlLXVwIGR0LCBkbC50YWJzLmZpdmUtdXAgZGQgeyB3aWR0aDogMjAlOyB9CisKK3VsLnRhYnMtY29udGVudCB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDAgMCAyMHB4OyBwYWRkaW5nOiAwOyB9Cit1bC50YWJzLWNvbnRlbnQgPiBsaSB7IGRpc3BsYXk6IG5vbmU7IH0KK3VsLnRhYnMtY29udGVudCA+IGxpLmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9Cit1bC50YWJzLWNvbnRlbnQuY29udGFpbmVkIHsgcGFkZGluZzogMDsgfQordWwudGFicy1jb250ZW50LmNvbnRhaW5lZCA+IGxpIHsgYm9yZGVyOiBzb2xpZCAwICNlNmU2ZTY7IGJvcmRlci13aWR0aDogMCAxcHggMXB4IDFweDsgcGFkZGluZzogMjBweDsgfQordWwudGFicy1jb250ZW50LmNvbnRhaW5lZC52ZXJ0aWNhbCA+IGxpIHsgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDFweCAxcHg7IH0KKworLm5vLWpzIHVsLnRhYnMtY29udGVudCA+IGxpIHsgZGlzcGxheTogYmxvY2s7IH0KKworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyBkbC50YWJzLm1vYmlsZSB7IHdpZHRoOiBhdXRvOyBtYXJnaW46IDIwcHggLTIwcHggNDBweDsgaGVpZ2h0OiBhdXRvOyB9CisgIGRsLnRhYnMubW9iaWxlIGR0LCBkbC50YWJzLm1vYmlsZSBkZCB7IGZsb2F0OiBub25lOyBoZWlnaHQ6IGF1dG87IH0KKyAgZGwudGFicy5tb2JpbGUgZGQgYSB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyBwYWRkaW5nOiAxOHB4IDIwcHg7IGxpbmUtaGVpZ2h0OiAxOyBib3JkZXI6IHNvbGlkIDAgI2NjYzsgYm9yZGVyLXdpZHRoOiAxcHggMCAwOyBtYXJnaW46IDA7IGNvbG9yOiAjNTU1OyBiYWNrZ3JvdW5kOiAjZWVlOyBmb250LXNpemU6IDE1cHg7IGZvbnQtc2l6ZTogMS41cmVtOyB9CisgIGRsLnRhYnMubW9iaWxlIGRkIGEuYWN0aXZlIHsgaGVpZ2h0OiBhdXRvOyBtYXJnaW46IDA7IGJvcmRlci13aWR0aDogMXB4IDAgMDsgfQorICAudGFicy5tb2JpbGUgeyBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2NjYzsgaGVpZ2h0OiBhdXRvOyB9CisgIC50YWJzLm1vYmlsZSBkZCBhIHsgcGFkZGluZzogMThweCAyMHB4OyBib3JkZXI6IG5vbmU7IGJvcmRlci1sZWZ0OiBub25lOyBib3JkZXItcmlnaHQ6IG5vbmU7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjOyBiYWNrZ3JvdW5kOiAjZmZmOyB9CisgIC50YWJzLm1vYmlsZSBkZCBhLmFjdGl2ZSB7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogI2ZkNzgwMDsgY29sb3I6ICNmZmY7IG1hcmdpbjogMDsgcG9zaXRpb246IHN0YXRpYzsgdG9wOiAwOyBoZWlnaHQ6IGF1dG87IH0KKyAgLnRhYnMubW9iaWxlIGRkOmZpcnN0LWNoaWxkIGEuYWN0aXZlIHsgbWFyZ2luOiAwOyB9CisgIGRsLmNvbnRhaW5lZC5tb2JpbGUgeyBtYXJnaW4tYm90dG9tOiAwOyB9CisgIGRsLmNvbnRhaW5lZC50YWJzLm1vYmlsZSBkZCBhIHsgcGFkZGluZzogMThweCAyMHB4OyB9CisgIGRsLnRhYnMubW9iaWxlICsgdWwuY29udGFpbmVkIHsgbWFyZ2luLWxlZnQ6IC0yMHB4OyBtYXJnaW4tcmlnaHQ6IC0yMHB4OyBib3JkZXItd2lkdGg6IDAgMCAxcHggMDsgfSB9CisvKiBSZXF1aXJlczogZ2xvYmFscy5jc3MgKi8KKy8qIFRhYmxlIG9mIENvbnRlbnRzCisKKzo6IFZpc2liaWxpdHkKKzo6IEFsZXJ0cworOjogTGFiZWxzCis6OiBUb29sdGlwcworOjogUGFuZWxzCis6OiBBY2NvcmRpb24KKzo6IFNpZGUgTmF2Cis6OiBTdWIgTmF2Cis6OiBQYWdpbmF0aW9uCis6OiBCcmVhZGNydW1icworOjogTGlzdHMKKzo6IExpbmsgTGlzdHMKKzo6IEtleXN0cm9rZSBDaGFycworOjogSW1hZ2UgVGh1bWJuYWlscworOjogVmlkZW8KKzo6IFRhYmxlcworOjogTWljcm9mb3JtYXRzCis6OiBQcm9ncmVzcyBCYXJzCisKKyovCisvKiBWaXNpYmlsaXR5IENsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogU3RhbmRhcmQgKGxhcmdlKSBkaXNwbGF5IHRhcmdldGluZyAqLworLnNob3ctZm9yLXNtYWxsLCAuc2hvdy1mb3ItbWVkaXVtLCAuc2hvdy1mb3ItbWVkaXVtLWRvd24sIC5oaWRlLWZvci1sYXJnZSwgLmhpZGUtZm9yLWxhcmdlLXVwLCAuc2hvdy1mb3IteGxhcmdlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CisKKy5oaWRlLWZvci14bGFyZ2UsIC5zaG93LWZvci1sYXJnZSwgLnNob3ctZm9yLWxhcmdlLXVwLCAuaGlkZS1mb3Itc21hbGwsIC5oaWRlLWZvci1tZWRpdW0sIC5oaWRlLWZvci1tZWRpdW0tZG93biB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KKworLyogVmVyeSBsYXJnZSBkaXNwbGF5IHRhcmdldGluZyAqLworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDQxcHgpIHsgLmhpZGUtZm9yLXNtYWxsLCAuaGlkZS1mb3ItbWVkaXVtLCAuaGlkZS1mb3ItbWVkaXVtLWRvd24sIC5oaWRlLWZvci1sYXJnZSwgLnNob3ctZm9yLWxhcmdlLXVwLCAuc2hvdy1mb3IteGxhcmdlIHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQorICAuc2hvdy1mb3Itc21hbGwsIC5zaG93LWZvci1tZWRpdW0sIC5zaG93LWZvci1tZWRpdW0tZG93biwgLnNob3ctZm9yLWxhcmdlLCAuaGlkZS1mb3ItbGFyZ2UtdXAsIC5oaWRlLWZvci14bGFyZ2UgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfQorLyogTWVkaXVtIGRpc3BsYXkgdGFyZ2V0aW5nICovCitAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyNzlweCkgYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7IC5oaWRlLWZvci1zbWFsbCwgLnNob3ctZm9yLW1lZGl1bSwgLnNob3ctZm9yLW1lZGl1bS1kb3duLCAuaGlkZS1mb3ItbGFyZ2UsIC5oaWRlLWZvci1sYXJnZS11cCwgLmhpZGUtZm9yLXhsYXJnZSB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KKyAgLnNob3ctZm9yLXNtYWxsLCAuaGlkZS1mb3ItbWVkaXVtLCAuaGlkZS1mb3ItbWVkaXVtLWRvd24sIC5zaG93LWZvci1sYXJnZSwgLnNob3ctZm9yLWxhcmdlLXVwLCAuc2hvdy1mb3IteGxhcmdlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH0KKy8qIFNtYWxsIGRpc3BsYXkgdGFyZ2V0aW5nICovCitAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7IC5zaG93LWZvci1zbWFsbCwgLmhpZGUtZm9yLW1lZGl1bSwgLnNob3ctZm9yLW1lZGl1bS1kb3duLCAuaGlkZS1mb3ItbGFyZ2UsIC5oaWRlLWZvci1sYXJnZS11cCwgLmhpZGUtZm9yLXhsYXJnZSB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KKyAgLmhpZGUtZm9yLXNtYWxsLCAuc2hvdy1mb3ItbWVkaXVtLCAuaGlkZS1mb3ItbWVkaXVtLWRvd24sIC5zaG93LWZvci1sYXJnZSwgLnNob3ctZm9yLWxhcmdlLXVwLCAuc2hvdy1mb3IteGxhcmdlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH0KKy8qIE9yaWVudGF0aW9uIHRhcmdldGluZyAqLworLnNob3ctZm9yLWxhbmRzY2FwZSwgLmhpZGUtZm9yLXBvcnRyYWl0IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQorCisuaGlkZS1mb3ItbGFuZHNjYXBlLCAuc2hvdy1mb3ItcG9ydHJhaXQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KKworQG1lZGlhIHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHsgLnNob3ctZm9yLWxhbmRzY2FwZSwgLmhpZGUtZm9yLXBvcnRyYWl0IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQorICAuaGlkZS1mb3ItbGFuZHNjYXBlLCAuc2hvdy1mb3ItcG9ydHJhaXQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfQorQG1lZGlhIHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgeyAuc2hvdy1mb3ItcG9ydHJhaXQsIC5oaWRlLWZvci1sYW5kc2NhcGUgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CisgIC5oaWRlLWZvci1wb3J0cmFpdCwgLnNob3ctZm9yLWxhbmRzY2FwZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9CisvKiBUb3VjaC1lbmFibGVkIGRldmljZSB0YXJnZXRpbmcgKi8KKy5zaG93LWZvci10b3VjaCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQorCisuaGlkZS1mb3ItdG91Y2ggeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CisKKy50b3VjaCAuc2hvdy1mb3ItdG91Y2ggeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CisKKy50b3VjaCAuaGlkZS1mb3ItdG91Y2ggeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KKworLyogU3BlY2lmaWMgb3ZlcnJpZGVzIGZvciBlbGVtZW50cyB0aGF0IHJlcXVpcmUgc29tZXRoaW5nIG90aGVyIHRoYW4gZGlzcGxheTogYmxvY2sgKi8KK3RhYmxlLnNob3ctZm9yLXhsYXJnZSwgdGFibGUuc2hvdy1mb3ItbGFyZ2UsIHRhYmxlLmhpZGUtZm9yLXNtYWxsLCB0YWJsZS5oaWRlLWZvci1tZWRpdW0geyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9CisKK0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI3OXB4KSBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsgLnRvdWNoIHRhYmxlLmhpZGUtZm9yLXhsYXJnZSwgLnRvdWNoIHRhYmxlLmhpZGUtZm9yLWxhcmdlLCAudG91Y2ggdGFibGUuaGlkZS1mb3Itc21hbGwsIC50b3VjaCB0YWJsZS5zaG93LWZvci1tZWRpdW0geyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9IH0KK0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsgdGFibGUuaGlkZS1mb3IteGxhcmdlLCB0YWJsZS5oaWRlLWZvci1sYXJnZSwgdGFibGUuaGlkZS1mb3ItbWVkaXVtLCB0YWJsZS5zaG93LWZvci1zbWFsbCB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH0gfQorLyogQWxlcnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK2Rpdi5hbGVydC1ib3ggeyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogNnB4IDdweCA3cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkNzgwMDsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOyBtYXJnaW4tYm90dG9tOiAxMnB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7IC1tcy1ib3JkZXItcmFkaXVzOiAzcHg7IC1vLWJvcmRlci1yYWRpdXM6IDNweDsgYm9yZGVyLXJhZGl1czogM3B4OyB0ZXh0LXNoYWRvdzogMCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTsgcG9zaXRpb246IHJlbGF0aXZlOyB9CitkaXYuYWxlcnQtYm94LnN1Y2Nlc3MgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNWRhNDIzOyBjb2xvcjogI2ZmZjsgdGV4dC1zaGFkb3c6IDAgLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7IH0KK2Rpdi5hbGVydC1ib3guYWxlcnQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYzYwZjEzOyBjb2xvcjogI2ZmZjsgdGV4dC1zaGFkb3c6IDAgLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7IH0KK2Rpdi5hbGVydC1ib3guc2Vjb25kYXJ5IHsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTsgY29sb3I6ICM1MDUwNTA7IHRleHQtc2hhZG93OiAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IH0KK2Rpdi5hbGVydC1ib3ggYS5jbG9zZSB7IGNvbG9yOiAjMzMzOyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiA0cHg7IHRvcDogLTFweDsgZm9udC1zaXplOiAxN3B4OyBvcGFjaXR5OiAwLjI7IHBhZGRpbmc6IDRweDsgfQorZGl2LmFsZXJ0LWJveCBhLmNsb3NlOmhvdmVyLCBkaXYuYWxlcnQtYm94IGEuY2xvc2U6Zm9jdXMgeyBvcGFjaXR5OiAwLjQ7IH0KKworLyogTGFiZWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCisvKiBUb29sdGlwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisuaGFzLXRpcCB7IGJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggI2NjY2NjYzsgY3Vyc29yOiBoZWxwOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICMzMzMzMzM7IH0KKy5oYXMtdGlwOmhvdmVyIHsgYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAjMTk2MTc3OyBjb2xvcjogI2ZkNzgwMDsgfQorLmhhcy10aXAudGlwLWxlZnQsIC5oYXMtdGlwLnRpcC1yaWdodCB7IGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0KKworLnRvb2x0aXAgeyBkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kOiBibGFjazsgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjg1KTsgcG9zaXRpb246IGFic29sdXRlOyBjb2xvcjogd2hpdGU7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IGZvbnQtc2l6ZTogMS4ycmVtOyBwYWRkaW5nOiA1cHg7IHotaW5kZXg6IDk5OTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7IC1tb3otYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IH0KKy50b29sdGlwID4gLm51YiB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBib3JkZXI6IHNvbGlkIDVweDsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCBibGFjayB0cmFuc3BhcmVudDsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCByZ2JhKDAsIDAsIDAsIDAuODUpIHRyYW5zcGFyZW50OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTEwcHg7IGxlZnQ6IDEwcHg7IH0KKy50b29sdGlwLnRpcC1vdmVycmlkZSA+IC5udWIgeyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IGJsYWNrIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgcmdiYSgwLCAwLCAwLCAwLjg1KSB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB0b3A6IC0xMHB4ICFpbXBvcnRhbnQ7IH0KKy50b29sdGlwLnRpcC10b3AgPiAubnViIHsgYm9yZGVyLWNvbG9yOiBibGFjayB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB0b3A6IGF1dG87IGJvdHRvbTogLTEwcHg7IH0KKy50b29sdGlwLnRpcC1sZWZ0LCAudG9vbHRpcC50aXAtcmlnaHQgeyBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9CisudG9vbHRpcC50aXAtbGVmdCA+IC5udWIgeyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IGJsYWNrOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHJnYmEoMCwgMCwgMCwgMC44NSk7IHJpZ2h0OiAtMTBweDsgbGVmdDogYXV0bzsgfQorLnRvb2x0aXAudGlwLXJpZ2h0ID4gLm51YiB7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgYmxhY2sgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgcmdiYSgwLCAwLCAwLCAwLjg1KSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgcmlnaHQ6IGF1dG87IGxlZnQ6IC0xMHB4OyB9CisudG9vbHRpcC5ub3JhZGl1cyB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsgLW1vei1ib3JkZXItcmFkaXVzOiAwOyAtbXMtYm9yZGVyLXJhZGl1czogMDsgLW8tYm9yZGVyLXJhZGl1czogMDsgYm9yZGVyLXJhZGl1czogMDsgfQorLnRvb2x0aXAub3BlbmVkIHsgY29sb3I6ICNmZDc4MDAgIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAjMTk2MTc3ICFpbXBvcnRhbnQ7IH0KKworLnRhcC10by1jbG9zZSB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEwcHg7IGZvbnQtc2l6ZTogMXJlbTsgY29sb3I6ICM4ODg4ODg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IH0KKworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyAudG9vbHRpcCB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zaXplOiAxLjRyZW07IGxpbmUtaGVpZ2h0OiAxLjQ7IHBhZGRpbmc6IDdweCAxMHB4IDlweCAxMHB4OyB9CisgIC50b29sdGlwID4gLm51YiwgLnRvb2x0aXAudG9wID4gLm51YiwgLnRvb2x0aXAubGVmdCA+IC5udWIsIC50b29sdGlwLnJpZ2h0ID4gLm51YiB7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgYmxhY2sgdHJhbnNwYXJlbnQ7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgcmdiYSgwLCAwLCAwLCAwLjg1KSB0cmFuc3BhcmVudDsgdG9wOiAtMTJweDsgbGVmdDogMTBweDsgfSB9CisvKiBQYW5lbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLnBhbmVsIHsgYmFja2dyb3VuZDogI2YyZjJmMjsgYm9yZGVyOiBzb2xpZCAxcHggI2U2ZTZlNjsgbWFyZ2luOiAwIDAgMjJweCAwOyBwYWRkaW5nOiAyMHB4OyB9CisucGFuZWwgPiA6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAwOyB9CisucGFuZWwgPiA6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KKy5wYW5lbC5jYWxsb3V0IHsgYmFja2dyb3VuZDogI2ZkNzgwMDsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogIzIyODRhMTsgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwcHggMXB4IDBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IC1tb3otYm94LXNoYWRvdzogaW5zZXQgMHB4IDFweCAwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyBib3gtc2hhZG93OiBpbnNldCAwcHggMXB4IDBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH0KKy5wYW5lbC5jYWxsb3V0IGEgeyBjb2xvcjogI2ZmZjsgfQorLnBhbmVsLmNhbGxvdXQgLmJ1dHRvbiB7IGJhY2tncm91bmQ6IHdoaXRlOyBib3JkZXI6IG5vbmU7IGNvbG9yOiAjZmQ3ODAwOyB0ZXh0LXNoYWRvdzogbm9uZTsgfQorLnBhbmVsLmNhbGxvdXQgLmJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsgfQorLnBhbmVsLnJhZGl1cyB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OyAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsgLW1zLWJvcmRlci1yYWRpdXM6IDNweDsgLW8tYm9yZGVyLXJhZGl1czogM3B4OyBib3JkZXItcmFkaXVzOiAzcHg7IH0KKworLyogQWNjb3JkaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK3VsLmFjY29yZGlvbiB7IG1hcmdpbjogMCAwIDIycHggMDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWU5ZTk7IH0KK3VsLmFjY29yZGlvbiA+IGxpIHsgbGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZTllOTsgfQordWwuYWNjb3JkaW9uID4gbGkgLnRpdGxlIHsgY3Vyc29yOiBwb2ludGVyOyBiYWNrZ3JvdW5kOiAjZjZmNmY2OyBwYWRkaW5nOiAxNXB4OyBtYXJnaW46IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTllOWU5OyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTllOWU5OyAtd2Via2l0LXRyYW5zaXRpb246IDAuMTVzIGJhY2tncm91bmQgbGluZWFyOyAtbW96LXRyYW5zaXRpb246IDAuMTVzIGJhY2tncm91bmQgbGluZWFyOyAtby10cmFuc2l0aW9uOiAwLjE1cyBiYWNrZ3JvdW5kIGxpbmVhcjsgdHJhbnNpdGlvbjogMC4xNXMgYmFja2dyb3VuZCBsaW5lYXI7IH0KK3VsLmFjY29yZGlvbiA+IGxpIC50aXRsZSBoMSwgdWwuYWNjb3JkaW9uID4gbGkgLnRpdGxlIGgyLCB1bC5hY2NvcmRpb24gPiBsaSAudGl0bGUgaDMsIHVsLmFjY29yZGlvbiA+IGxpIC50aXRsZSBoNCwgdWwuYWNjb3JkaW9uID4gbGkgLnRpdGxlIGg1IHsgbWFyZ2luOiAwOyB9Cit1bC5hY2NvcmRpb24gPiBsaSAudGl0bGU6YWZ0ZXIgeyBjb250ZW50OiAiIjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IGJvcmRlcjogc29saWQgNnB4OyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM5ZDlkOWQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDE1cHg7IHRvcDogMjFweDsgfQordWwuYWNjb3JkaW9uID4gbGkgLmNvbnRlbnQgeyBkaXNwbGF5OiBub25lOyBwYWRkaW5nOiAxNXB4OyB9Cit1bC5hY2NvcmRpb24gPiBsaS5hY3RpdmUgeyBib3JkZXItdG9wOiAzcHggc29saWQgI2ZkNzgwMDsgfQordWwuYWNjb3JkaW9uID4gbGkuYWN0aXZlIC50aXRsZSB7IGJhY2tncm91bmQ6IHdoaXRlOyBwYWRkaW5nLXRvcDogMTNweDsgfQordWwuYWNjb3JkaW9uID4gbGkuYWN0aXZlIC50aXRsZTphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiBzb2xpZCA2cHg7IGJvcmRlci1jb2xvcjogIzlkOWQ5ZCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfQordWwuYWNjb3JkaW9uID4gbGkuYWN0aXZlIC5jb250ZW50IHsgYmFja2dyb3VuZDogd2hpdGU7IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlOWU5ZTk7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlOWU5ZTk7IH0KKworLyogU2lkZSBOYXYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwordWwuc2lkZS1uYXYgeyBkaXNwbGF5OiBibG9jazsgbGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAxN3B4IDA7IH0KK3VsLnNpZGUtbmF2IGxpIHsgZGlzcGxheTogYmxvY2s7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMCAwIDdweCAwOyB9Cit1bC5zaWRlLW5hdiBsaSBhIHsgZGlzcGxheTogYmxvY2s7IH0KK3VsLnNpZGUtbmF2IGxpLmFjdGl2ZSBhIHsgY29sb3I6ICM0ZDRkNGQ7IGZvbnQtd2VpZ2h0OiBib2xkOyB9Cit1bC5zaWRlLW5hdiBsaS5kaXZpZGVyIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7IGhlaWdodDogMDsgcGFkZGluZzogMDsgfQorCisvKiBTdWIgTmF2cyBodHRwOi8vd3d3Lnp1cmIuY29tL2FydGljbGUvMjkyL2hvdy10by1jcmVhdGUtc2ltcGxlLWFuZC1lZmZlY3RpdmUtc3ViLW5hIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK2RsLnN1Yi1uYXYgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IGF1dG87IG92ZXJmbG93OiBoaWRkZW47IG1hcmdpbjogLTRweCAwIDE4cHg7IG1hcmdpbi1yaWdodDogMDsgbWFyZ2luLWxlZnQ6IC05cHg7IHBhZGRpbmctdG9wOiA0cHg7IH0KK2RsLnN1Yi1uYXYgZHQsIGRsLnN1Yi1uYXYgZGQgeyBmbG9hdDogbGVmdDsgZGlzcGxheTogaW5saW5lOyBtYXJnaW4tbGVmdDogOXB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9CitkbC5zdWItbmF2IGR0IHsgY29sb3I6ICM5OTk7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IH0KK2RsLnN1Yi1uYXYgZGQgYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czogMTAwMHB4OyAtbXMtYm9yZGVyLXJhZGl1czogMTAwMHB4OyAtby1ib3JkZXItcmFkaXVzOiAxMDAwcHg7IGJvcmRlci1yYWRpdXM6IDEwMDBweDsgfQorZGwuc3ViLW5hdiBkZC5hY3RpdmUgYSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBiYWNrZ3JvdW5kOiAjZmQ3ODAwOyBjb2xvcjogI2ZmZjsgcGFkZGluZzogM3B4IDlweDsgY3Vyc29yOiBkZWZhdWx0OyB9CisKKy8qIFBhZ2luYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwordWwucGFnaW5hdGlvbiB7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDI0cHg7IG1hcmdpbi1sZWZ0OiAtNXB4OyB9Cit1bC5wYWdpbmF0aW9uIGxpIHsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDI0cHg7IGNvbG9yOiAjOTk5OyBmb250LXNpemU6IDE0cHg7IG1hcmdpbi1sZWZ0OiA1cHg7IH0KK3VsLnBhZ2luYXRpb24gbGkgYSB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAxcHggN3B4IDFweDsgY29sb3I6ICM1NTU7IH0KK3VsLnBhZ2luYXRpb24gbGk6aG92ZXIgYSwgdWwucGFnaW5hdGlvbiBsaSBhOmZvY3VzIHsgYmFja2dyb3VuZDogI2U2ZTZlNjsgfQordWwucGFnaW5hdGlvbiBsaS51bmF2YWlsYWJsZSBhIHsgY3Vyc29yOiBkZWZhdWx0OyBjb2xvcjogIzk5OTsgfQordWwucGFnaW5hdGlvbiBsaS51bmF2YWlsYWJsZTpob3ZlciBhLCB1bC5wYWdpbmF0aW9uIGxpLnVuYXZhaWxhYmxlIGE6Zm9jdXMgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQordWwucGFnaW5hdGlvbiBsaS5jdXJyZW50IGEgeyBiYWNrZ3JvdW5kOiAjZmQ3ODAwOyBjb2xvcjogd2hpdGU7IGZvbnQtd2VpZ2h0OiBib2xkOyBjdXJzb3I6IGRlZmF1bHQ7IH0KK3VsLnBhZ2luYXRpb24gbGkuY3VycmVudCBhOmhvdmVyIHsgYmFja2dyb3VuZDogI2ZkNzgwMDsgfQorCisvKiBCcmVhZGNydW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK3VsLmJyZWFkY3J1bWJzIHsgZGlzcGxheTogYmxvY2s7IGJhY2tncm91bmQ6ICNmNmY2ZjY7IHBhZGRpbmc6IDZweCAxMHB4IDdweDsgYm9yZGVyOiAxcHggc29saWQgI2U5ZTllOTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7IC1tb3otYm9yZGVyLXJhZGl1czogMnB4OyAtbXMtYm9yZGVyLXJhZGl1czogMnB4OyAtby1ib3JkZXItcmFkaXVzOiAycHg7IGJvcmRlci1yYWRpdXM6IDJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgfQordWwuYnJlYWRjcnVtYnMgbGkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgMTJweCAwIDA7IGZsb2F0OiBsZWZ0OyBsaXN0LXN0eWxlOiBub25lOyB9Cit1bC5icmVhZGNydW1icyBsaSBhLCB1bC5icmVhZGNydW1icyBsaSBzcGFuIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1zaXplOiAxMXB4OyBmb250LXNpemU6IDEuMXJlbTsgcGFkZGluZy1sZWZ0OiAxMnB4OyB9Cit1bC5icmVhZGNydW1icyBsaTpmaXJzdC1jaGlsZCBhLCB1bC5icmVhZGNydW1icyBsaTpmaXJzdC1jaGlsZCBzcGFuIHsgcGFkZGluZy1sZWZ0OiAwOyB9Cit1bC5icmVhZGNydW1icyBsaTpiZWZvcmUgeyBjb250ZW50OiAiLyI7IGNvbG9yOiAjYWFhOyB9Cit1bC5icmVhZGNydW1icyBsaTpmaXJzdC1jaGlsZDpiZWZvcmUgeyBjb250ZW50OiAiICI7IH0KK3VsLmJyZWFkY3J1bWJzIGxpLmN1cnJlbnQgYSB7IGN1cnNvcjogZGVmYXVsdDsgY29sb3I6ICMzMzM7IH0KK3VsLmJyZWFkY3J1bWJzIGxpOmhvdmVyIGEsIHVsLmJyZWFkY3J1bWJzIGxpIGE6Zm9jdXMgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQordWwuYnJlYWRjcnVtYnMgbGkuY3VycmVudDpob3ZlciBhLCB1bC5icmVhZGNydW1icyBsaS5jdXJyZW50IGE6Zm9jdXMgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KK3VsLmJyZWFkY3J1bWJzIGxpLnVuYXZhaWxhYmxlIGEgeyBjb2xvcjogIzk5OTsgfQordWwuYnJlYWRjcnVtYnMgbGkudW5hdmFpbGFibGU6aG92ZXIgYSwgdWwuYnJlYWRjcnVtYnMgbGkudW5hdmFpbGFibGUgYTpmb2N1cyB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICM5OTk7IGN1cnNvcjogZGVmYXVsdDsgfQorCisvKiBMaW5rIExpc3QgKi8KK3VsLmxpbmstbGlzdCB7IG1hcmdpbjogMCAwIDE3cHggLTIycHg7IHBhZGRpbmc6IDA7IGxpc3Qtc3R5bGU6IG5vbmU7IG92ZXJmbG93OiBoaWRkZW47IH0KK3VsLmxpbmstbGlzdCBsaSB7IGxpc3Qtc3R5bGU6IG5vbmU7IGZsb2F0OiBsZWZ0OyBtYXJnaW4tbGVmdDogMjJweDsgZGlzcGxheTogYmxvY2s7IH0KK3VsLmxpbmstbGlzdCBsaSBhIHsgZGlzcGxheTogYmxvY2s7IH0KKworLyogS2V5dHJva2UgQ2hhcmFjdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisua2V5c3Ryb2tlLCBrYmQgeyBmb250LWZhbWlseTogIkNvbnNvbGFzIiwgIk1lbmxvIiwgIkNvdXJpZXIiLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTNweDsgcGFkZGluZzogMnB4IDRweCAwcHg7IG1hcmdpbjogMDsgYmFja2dyb3VuZDogI2VkZWRlZDsgYm9yZGVyOiBzb2xpZCAxcHggI2RiZGJkYjsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7IC1tb3otYm9yZGVyLXJhZGl1czogM3B4OyAtbXMtYm9yZGVyLXJhZGl1czogM3B4OyAtby1ib3JkZXItcmFkaXVzOiAzcHg7IGJvcmRlci1yYWRpdXM6IDNweDsgfQorCisvKiBJbWFnZSBUaHVtYm5haWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy50aCB7IGRpc3BsYXk6IGJsb2NrOyB9CisudGggaW1nIHsgZGlzcGxheTogYmxvY2s7IGJvcmRlcjogc29saWQgNHB4ICNmZmY7IC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgLW1vei1ib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpOyBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7IC1tcy1ib3JkZXItcmFkaXVzOiAzcHg7IC1vLWJvcmRlci1yYWRpdXM6IDNweDsgYm9yZGVyLXJhZGl1czogM3B4OyAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGJvcmRlciwgYm94LXNoYWRvdzsgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBib3JkZXIsIGJveC1zaGFkb3c7IC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGJvcmRlciwgYm94LXNoYWRvdzsgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYm9yZGVyLCBib3gtc2hhZG93OyAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zOyAtbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zOyAtby10cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtczsgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7IH0KKy50aDpob3ZlciBpbWcgeyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4IHJnYmEoNDMsIDE2NiwgMjAzLCAwLjUpOyAtbW96LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4IHJnYmEoNDMsIDE2NiwgMjAzLCAwLjUpOyBib3gtc2hhZG93OiAwIDAgNnB4IDFweCByZ2JhKDQzLCAxNjYsIDIwMywgMC41KTsgfQorCisvKiBWaWRlbyAtIE1hZCBwcm9wcyB0byBodHRwOi8vd3d3LmFsaXN0YXBhcnQuY29tL2FydGljbGVzL2NyZWF0aW5nLWludHJpbnNpYy1yYXRpb3MtZm9yLXZpZGVvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisuZmxleC12aWRlbyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZy10b3A6IDI1cHg7IHBhZGRpbmctYm90dG9tOiA2Ny41JTsgaGVpZ2h0OiAwOyBtYXJnaW4tYm90dG9tOiAxNnB4OyBvdmVyZmxvdzogaGlkZGVuOyB9CisuZmxleC12aWRlby53aWRlc2NyZWVuIHsgcGFkZGluZy1ib3R0b206IDU3LjI1JTsgfQorLmZsZXgtdmlkZW8udmltZW8geyBwYWRkaW5nLXRvcDogMDsgfQorLmZsZXgtdmlkZW8gaWZyYW1lLCAuZmxleC12aWRlbyBvYmplY3QsIC5mbGV4LXZpZGVvIGVtYmVkLCAuZmxleC12aWRlbyB2aWRlbyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9CmRpZmYgLS1naXQgYS9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL25hbWVkX2RhdGFfZG94eWdlbi5jc3MgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL25hbWVkX2RhdGFfZG94eWdlbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiY2JmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvbmFtZWRfZGF0YV9kb3h5Z2VuLmNzcwpAQCAtMCwwICsxLDc3NiBAQAorQGltcG9ydCB1cmwoImJhc2UuY3NzIik7CisKK0BpbXBvcnQgdXJsKCJmb3VuZGF0aW9uLmNzcyIpOworCit0YWJsZSB7CisgICAgICBib3JkZXI6IDA7Cit9CisKK3ByZSB7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOworICAgIGNvbG9yOiAjMjIyOworICAgIGxpbmUtaGVpZ2h0OiAxLjBlbTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCAjQzZDOUNCOworICAgIGZvbnQtc2l6ZTogMC45ZW07CisgICAgLyogbWFyZ2luOiAxLjVlbSAwIDEuNWVtIDA7ICovCisgICAgbWFyZ2luOiAwOworICAgIGJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKyAgICBib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKK30KKworLyogR2VuZXJhbCAqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKK2E6bGluayB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorYTp2aXNpdGVkIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CithOmFjdGl2ZSwKK2E6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworaDEsaDIsaDMsaDQsaDUsaDYgeworICAgIGNvbG9yOiAjMDAwOworICAgIG1hcmdpbi1ib3R0b206IDE4cHg7Cit9CisKK2gxIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiAyNHB4OyBsaW5lLWhlaWdodDogMjRweDsgIH0KK2gyIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMThweDsgIH0KK2gzIHsgZm9udC13ZWlnaHQ6IGJvbGQ7ICAgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMThweDsgfQoraDQgeyBmb250LXdlaWdodDogbm9ybWFsOyBmb250LXNpemU6IDE4cHg7IGxpbmUtaGVpZ2h0OiAxNzhweDsgfQorCitociB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzZjNjsKKyAgICBib3JkZXI6MDsKKyAgICBoZWlnaHQ6IDFweDsKKyAgICBtYXJnaW4tYm90dG9tOiAxOHB4OworICAgIGNsZWFyOmJvdGg7Cit9CisKK2Rpdi5ociB7CisgIGhlaWdodDogMXB4OworICBiYWNrZ3JvdW5kOiAjYzZjNmM2OworfQorCitkaXYuaHIyIHsKKyAgaGVpZ2h0OiAxcHg7CisgIGJhY2tncm91bmQ6ICNjNmM2YzY7Cit9CisKK2Rpdi5ociBociwgZGl2LmhyMiBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3AgeworICAgIHBhZGRpbmc6IDAgMCAwLjVlbTsKKyAgICBsaW5lLWhlaWdodDoxLjZlbTsKK30KK3VsIHsKKyAgICBsaXN0LXN0eWxlOiBzcXVhcmU7CisgICAgbWFyZ2luOiAwIDAgMThweCAwOworfQorb2wgeworICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7CisgICAgbWFyZ2luOiAwIDAgMThweCAxLjVlbTsKK30KK29sIG9sIHsKKyAgICBsaXN0LXN0eWxlOnVwcGVyLWFscGhhOworfQorb2wgb2wgb2wgeworICAgIGxpc3Qtc3R5bGU6bG93ZXItcm9tYW47Cit9CitvbCBvbCBvbCBvbCB7CisgICAgbGlzdC1zdHlsZTpsb3dlci1hbHBoYTsKK30KK3VsIHVsLAorb2wgb2wsCit1bCBvbCwKK29sIHVsIHsKKyAgICBtYXJnaW4tYm90dG9tOjA7Cit9CitkbCB7CisgICAgbWFyZ2luOjAgMCAyNHB4IDA7Cit9CitkdCB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CitkZCB7CisgICAgbWFyZ2luLWJvdHRvbTogMThweDsKK30KK3N0cm9uZyB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgY29sb3I6ICMwMDA7Cit9CitjaXRlLAorZW0sCitpIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgYm9yZGVyOiBub25lOworfQorYmlnIHsKKyAgICBmb250LXNpemU6IDEzMS4yNSU7Cit9CitpbnMgeworICAgIGJhY2tncm91bmQ6ICNGRkZGQ0M7CisgICAgYm9yZGVyOiBub25lOworICAgIGNvbG9yOiAjMzMzOworfQorZGVsIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKKyAgICBjb2xvcjogIzU1NTsKK30KK2Jsb2NrcXVvdGUgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBwYWRkaW5nOiAwIDNlbTsKK30KK2Jsb2NrcXVvdGUgY2l0ZSwKK2Jsb2NrcXVvdGUgZW0sCitibG9ja3F1b3RlIGkgeworICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKK30KK3ByZSB7CisgICAgYmFja2dyb3VuZDogI2Y3ZjdmNzsKKyAgICBjb2xvcjogIzIyMjsKKyAgICBwYWRkaW5nOiAxLjVlbTsKK30KK2FiYnIsCithY3JvbnltIHsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzY2NjsKKyAgICBjdXJzb3I6IGhlbHA7Cit9CitpbnMgeworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KK3N1cCwKK3N1YiB7CisgICAgaGVpZ2h0OiAwOworICAgIGxpbmUtaGVpZ2h0OiAxOworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZm9udC1zaXplOiAxMHB4OworfQorc3VwIHsKKyAgICBib3R0b206IDFleDsKK30KK3N1YiB7CisgICAgdG9wOiAuNWV4OworfQorCitwLAordWwsCitvbCwKK2RkLAoraHIgeworICAgIG1hcmdpbi1ib3R0b206MTBweDsKK30KK3VsIHVsLAorb2wgb2wsCit1bCBvbCwKK29sIHVsIHsKKyAgICBtYXJnaW4tYm90dG9tOjA7Cit9CitwcmUsCitrYmQsCit0dCwKK3ZhciB7Cit9Citjb2RlIHsKKyAgICBmb250LXNpemU6IDEzcHg7Cit9CitzdHJvbmcsCitiLAorZHQsCit0aCB7CisgICAgY29sb3I6ICMwMDA7Cit9CisKKworLyogbWFpbl9jb250YWluZXIgKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjd3JhcHBlciB7CisgICAgcGFkZGluZzogMHB4IDBweDsKKyAgICBtYXJnaW4tdG9wOiAyMHB4OworfQorCisvKiBoZWFkZXIqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKyNzZWFyY2gtaGVhZGVyeworICAgIG1hcmdpbi10b3A6MTVweDsKKyAgICBwYWRkaW5nLWJvdHRvbToxM3B4OworfQorCisjc2VhcmNoLWhlYWRlciAjc2VhcmNoeworICAgIGJhY2tncm91bmQ6ICMyMjI7CisKK30KKworI3NlYXJjaC1oZWFkZXIgI3NlYXJjaCAjc3sKKyAgICBiYWNrZ3JvdW5kOiAjMjIyOworICAgIGZvbnQtc2l6ZToxMnB4OworICAgIGNvbG9yOiAjYWFhOworfQorCisjaGVhZGVyX2NvbnRhaW5lcnsKKyAgICBwYWRkaW5nLWJvdHRvbTogMjVweDsKKyAgICBwYWRkaW5nLXRvcDogMHB4OworICAgIGJhY2tncm91bmQ6ICNmZmY7Cit9CisKKyNoZWFkZXIgeworCit9CisKKyNoZWFkZXIyIHsKKworfQorCisjY29udGVudF9jb250YWluZXJ7CisgICAgcGFkZGluZy10b3A6IDE1cHg7Cit9CisKKyNsZWZ0LWNvbCB7CisgICAgcGFkZGluZzogMTBweCAyMHB4OworICAgIHBhZGRpbmctbGVmdDogMHB4OworICAgIGJhY2tncm91bmQ6ICNmZmY7CisKK30KKworCisvKmZvb3RlciovCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KKworCisjZm9vdGVyIHsKKyAgICBwYWRkaW5nOiA1cHggMjBweDsKKyAgICBiYWNrZ3JvdW5kOiAjZGRkOworfQorCisjZm9vdGVyLWNvbnRhaW5lcnsKKyAgICBwYWRkaW5nOiA1cHggMjBweDsKKyAgICBiYWNrZ3JvdW5kOiAjMzAzMDMwOworICAgIGJvcmRlci10b3A6IDhweCBzb2xpZCAjMDAwOworICAgIGZvbnQtc2l6ZToxMXB4OworfQorCisjZm9vdGVyLWluZm8geworICAgIGNvbG9yOiNjY2M7CisgICAgdGV4dC1hbGlnbjpsZWZ0OworICAgIGJhY2tncm91bmQ6ICMxYjFiMWI7CisgICAgcGFkZGluZzogMjBweCAwOworfQorCisKKyNmb290ZXItaW5mbyBheworICAgIHRleHQtZGVjb3JhdGlvbjpub25lOworICAgIGNvbG9yOiAjZmZmOworfQorCisjZm9vdGVyLWluZm8gYTpob3ZlcnsKKyAgICBjb2xvcjogI2ViZWJlYjsKK30KKworI2NvcHlyaWdodHtmbG9hdDogbGVmdDt9CisKKy5zY3JvbGwtdG9wIHsKKyAgICB0ZXh0LWFsaWduOnJpZ2h0OworfQorCisjZm9vdGVyLXdpZGdldHsKKyAgICBwYWRkaW5nOiA4cHggMHB4IDhweCAwcHg7CisgICAgY29sb3I6IzZmNmY2ZjsKK30KKworI2Zvb3Rlci13aWRnZXQgI3NlYXJjaCB7CisgICAgd2lkdGg6MTIwcHg7CisgICAgaGVpZ2h0OjI4cHg7CisgICAgYmFja2dyb3VuZDogIzIyMjsKKyAgICBtYXJnaW4tbGVmdDogMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjNjY2OworfQorCisjZm9vdGVyLXdpZGdldCAjc2VhcmNoICNzIHsKKyAgICB3aWR0aDoxMTBweDsKKyAgICBoZWlnaHQ6MjNweDsKKyAgICBib3JkZXI6MHB4OworICAgIG1hcmdpbi1sZWZ0OjdweDsKKyAgICBtYXJnaW4tcmlnaHQ6MTBweDsKKyAgICBtYXJnaW4tdG9wOjNweDsKKyAgICBjb2xvcjojZmZmOworICAgIGRpc3BsYXk6IGlubGluZTsKKyAgICBiYWNrZ3JvdW5kOiAjMjIyOworICAgIGZsb2F0OiBsZWZ0OworfQorCisjZm9vdGVyLXdpZGdldCAjY2FsZW5kYXJfd3JhcCB7CisgICAgcGFkZGluZzogOHB4IDBweDsKK30KKworI2Zvb3Rlci13aWRnZXQgI3dwLWNhbGVuZGFyIHRkeworICAgIHBhZGRpbmc6MnB4OworfQorCisKKyNmb290ZXItd2lkZ2V0IC50ZXh0d2lkZ2V0IHsKKyAgICBwYWRkaW5nOiA1cHggMHB4OworICAgIGxpbmUtaGVpZ2h0OiAyM3B4OworfQorCisKKyNmb290ZXItd2lkZ2V0IC53aWRnZXRfdGFnX2Nsb3VkIGF7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIG1hcmdpbjogNXB4OworICAgIGxpbmUtaGVpZ2h0OiAyNHB4OworICAgIG1hcmdpbi1sZWZ0OiAwcHg7CisgICAgY29sb3I6ICM2ZjZmNmY7Cit9CisKKyNmb290ZXItd2lkZ2V0IC53aWRnZXRfdGFnX2Nsb3VkIGE6aG92ZXJ7CisgICAgY29sb3I6ICNmZmY7Cit9CisKKyNmb290ZXItd2lkZ2V0IC53aWRnZXQtY29udGFpbmVyIHVsIGxpIGEgICAgeworICAgIGNvbG9yOiNmZDc4MDA7Cit9CisKKyNmb290ZXItd2lkZ2V0IC53aWRnZXQtY29udGFpbmVyIHVsIGxpIGE6aG92ZXIgICAgeworICAgIGNvbG9yOiAjY2NjOworfQorCisjZm9vdGVyLXdpZGdldCAud2lkZ2V0LWNvbnRhaW5lciBoMyB7CisgICAgY29sb3I6ICNhNWE1YTU7CisgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKKyAgICBtYXJnaW4tYm90dG9tOiAwcHg7CisgICAgcGFkZGluZy10b3A6IDEwcHg7CisgICAgcGFkZGluZy1sZWZ0OiAwcHg7CisgICAgZm9udC1zaXplOiAyNXB4OworICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKyNmb290ZXItd2lkZ2V0IC53aWRnZXQtY29udGFpbmVyIHVsIGxpIHsKKyAgICBwYWRkaW5nOiA1cHggMHB4OworICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgfQorCisjZm9vdGVyLXdpZGdldCB1bCB7CisgICAgbWFyZ2luLWxlZnQ6IDBweDsKKyAgICB9CisKKyNmb290ZXItYmFyMSB7CisgICAgcGFkZGluZy1yaWdodDogNDBweDsKK30KKyNmb290ZXItYmFyMiB7CisgICAgcGFkZGluZy1yaWdodDogNDBweDsKK30KKyNmb290ZXItYmFyMyB7Cit9CisjZm9vdGVyLWJhcjQgeworfQorCitzcGFuI2ZvbGxvdy1ib3h7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiAxMDBweDsKK30KKworc3BhbiNmb2xsb3ctYm94IGltZ3sKKyAgICBtYXJnaW46IDAgMnB4OworfQorCisvKmxvZ28qLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKyNsb2dvIHsKKyAgICBtYXJnaW46IDBweCAwcHggMHB4IDBweDsKK30KKworI2xvZ28yIHsKKyAgICBtYXJnaW46IDBweCAwcHggMHB4IDBweDsKK30KKworI2xvZ28gaW1neworICAgIGJvcmRlcjogbm9uZTsKK30KKworI2xvZ28yeworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBmb250LXNpemU6IDQycHg7CisgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHQ7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgZm9udC1mYW1pbHk6YXJpYWwsICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICBsaW5lLWhlaWdodDogNTdweDsKKyAgICBwYWRkaW5nLWxlZnQ6IDBweDsKK30KKworI2xvZ28yIGEsICNzbG9nYW57CisgICAgY29sb3I6ICNmZDc4MDA7Cit9CisKKyNzbG9nYW57CisgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICBwYWRkaW5nLWxlZnQ6IDBweDsKK30KKworLypzZWFyY2gqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKyNzZWFyY2ggeworICAgIHdpZHRoOjE4MHB4OworICAgIGhlaWdodDoyOHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CisgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisjc2lkZWJhciAjc2VhcmNoIHsKKyAgICBtYXJnaW4tdG9wOiAyMHB4OworfQorCisjc2VhcmNoICNzZWFyY2hzdWJtaXQgeworICAgIGJhY2tncm91bmQ6dXJsKGltYWdlcy9nby1idG4ucG5nKSBuby1yZXBlYXQgdG9wIHJpZ2h0OworICAgIHdpZHRoOjI4cHg7CisgICAgaGVpZ2h0OjI4cHg7CisgICAgYm9yZGVyOjBweDsKKyAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICByaWdodDogLTM1cHg7Cit9CisKKyNzZWFyY2ggI3MgeworICAgIHdpZHRoOjE3MHB4OworICAgIGhlaWdodDoyM3B4OworICAgIGJvcmRlcjowcHg7CisgICAgbWFyZ2luLWxlZnQ6N3B4OworICAgIG1hcmdpbi1yaWdodDoxMHB4OworICAgIG1hcmdpbi10b3A6M3B4OworICAgIGNvbG9yOiMwMDA7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIGZsb2F0OiBsZWZ0OworfQorCisvKm1lbnUgYmFyKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjbWVudV9jb250YWluZXJ7CisgICAgcGFkZGluZy10b3A6IDBweDsKK30KKworCisvKnJlc3BvbnNpdmUgbWVudSovCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KKworLyogZGVmYXVsdCBzdHlsZSAqLworLnNlbGVjdG5hdiB7IGRpc3BsYXk6IG5vbmU7IH0KKworLyogc21hbGwgc2NyZWVuICovCitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkgeworICAuanMgI25hdiB7IGRpc3BsYXk6IG5vbmU7IH0KKyAgIC5qcyAjbmF2MiB7IGRpc3BsYXk6IG5vbmU7IH0KKyAgLmpzIC5zZWxlY3RuYXYgeyBkaXNwbGF5OiBibG9jazsgfQorfQorCisKKy8qd2VsY29tZSovCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KKyN3ZWxjb21lX2NvbnRhaW5lciBoMXsKKyAgICBtYXJnaW4tdG9wOiAwcHg7Cit9CisKKy8qaG9tZXBhZ2UgYm94ZXMqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKyNib3hfY29udGFpbmVyeworICAgIHBhZGRpbmctdG9wOiAzNXB4OworICAgIHBhZGRpbmctYm90dG9tOiAxNXB4OworfQorCisuYm94LWhlYWQgeworICAgIGZsb2F0OiBsZWZ0OworICAgIHBhZGRpbmctYm90dG9tOiAyMHB4OworfQorCisuYm94LWhlYWQgaW1neworCit9CisKKy50aXRsZS1oZWFkeworICAgIHBhZGRpbmctdG9wOjJweDsKK30KKworLnRpdGxlLWJveHsKKyAgICBjb2xvcjogIzMzMzsKKyAgICBsaW5lLWhlaWdodDogMTVweDsKKyAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCisudGl0bGUtYm94IGgxIHsKKyAgICBmb250LXNpemU6IDE4cHg7CisgICAgbWFyZ2luLWJvdHRvbTogM3B4OworfQorCisuYm94LWNvbnRlbnQgeworICAgIGZsb2F0OiBsZWZ0OworICAgIHBhZGRpbmctdG9wOiAxMHB4OworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworfQorCisKKy8qIFBPU1QgKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisKKy5wb3N0IHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworCit9CisKKy5wb3N0LXNoYWRvd3sKKyAgICBiYWNrZ3JvdW5kOiB1cmwoImltYWdlcy9wb3N0X3NoYWRvdy5wbmciKSBuby1yZXBlYXQgYm90dG9tOworICAgIGhlaWdodDogOXB4OworICAgIG1hcmdpbi1ib3R0b206IDI1cHg7Cit9CisKKy5wb3N0IG9seworICAgIG1hcmdpbi1sZWZ0OiAyMHB4OworfQorCisucG9zdCB1bCB7CisgICAgbWFyZ2luLWxlZnQ6IDE1cHg7Cit9CisucG9zdC1lbnRyeSB1bCB7IG1hcmdpbjogMCAwIDEwcHggMTBweDsgfQorLnBvc3QtZW50cnkgdWwgbGkgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIG1hcmdpbjogNXB4IDA7CisgICAgcGFkZGluZzogMCAwIDAgMjBweDsKKyAgICAvKmJhY2tncm91bmQ6IHVybChpbWFnZXMvYnVsbGV0LnBuZykgbm8tcmVwZWF0IDAgN3B4OyovCit9CisKKy5wb3N0LWVudHJ5IG9sIHsKKyAgICBsaXN0LXN0eWxlOiBkZWNpbWFsOworICAgIG1hcmdpbjogMCAwIDE4cHggMS42ZW07Cit9CisucG9zdC1lbnRyeSBvbCBsaSB7CisgICAgbGlzdC1zdHlsZTogZGVjaW1hbDsKKyB9CisKKy5wb3N0LWVudHJ5IHsKKyAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKKyAgICBwYWRkaW5nLXRvcDogMTBweDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworCit9CisKKy5wb3N0LWhlYWQgeworICAgIG1hcmdpbi1ib3R0b206IDVweDsKKyAgICBwYWRkaW5nLXRvcDogMTVweDsKK30KKworLnBvc3QtaGVhZCBoMSBhLCAucG9zdC1oZWFkIGgxIHsKKyAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKKyAgICBjb2xvcjojMDAwOworICAgIG1hcmdpbjogMHB4OworICAgIGZvbnQtc2l6ZTogMjdweDsKK30KKworLnBvc3QtaGVhZCBoMSBhOmhvdmVyIHsKKyAgICBjb2xvcjojNzc3OworfQorCisKKy5wb3N0LWhlYWQtbm90Zm91bmQgaDEsIC5wb3N0LWhlYWQtNDA0IGgxLCAucG9zdC1oZWFkLWFyY2hpdmUgaDEsIC5wb3N0LWhlYWQtc2VhcmNoIGgxIHsKKyAgICBtYXJnaW4tYm90dG9tOiAxMHB4OworICAgIGZvbnQtd2VpZ2h0Om5vcm1hbDsKKyAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKKyAgICBjb2xvcjojMDAwOworICAgIGZvbnQtc2l6ZTogMjdweDsKK30KKworLnBvc3QtdGh1bWIgaW1nIHsKKyAgICBib3JkZXI6IDBweCBzb2xpZCAjZWJlYmViOworfQorCisucG9zdC1lbnRyeSBpbWd7CisgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKKyAgICBoZWlnaHQ6YXV0bzsKKyAgICBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OworfQorCisubWV0YS1kYXRheworICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIHBhZGRpbmc6IDZweCAzcHg7CisgICAgbWFyZ2luLWJvdHRvbTogM3B4OworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZTllOTsKK30KKworLm1ldGEtZGF0YSBheworICAgIGNvbG9yOiAjZmQ3ODAwOworfQorCisubWV0YS1kYXRhIGE6aG92ZXJ7CisgICAgY29sb3I6ICM3Nzc7Cit9CisKKy5yZWFkLW1vcmUgeworY29sb3I6ICMwMDA7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICAgIHBhZGRpbmc6IDRweCA4cHg7CisgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICBmb250LXNpemU6IDExcHg7CisgICAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOworICAgICAgY3Vyc29yOiBwb2ludGVyOworICAgICAgbWFyZ2luLXRvcDogMjBweDsKK30KKworLnJlYWQtbW9yZTpob3ZlcnsKKyAgICBiYWNrZ3JvdW5kOiAjZmZmOworICAgIGNvbG9yOiAjNjY2OworfQorCisuY2xlYXIgeworICAgIGNsZWFyOmJvdGg7Cit9CisKKy5zdGlja3kgeworCit9CisKKy8qIGNvbnRlbnQgKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworI2NvbnRlbnRfY29udGFpbmVyIHRhYmxlIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3OworICAgIG1hcmdpbjogMCAtMXB4IDI0cHggMDsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIHdpZHRoOiAxMDAlOworCit9CisjY29udGVudF9jb250YWluZXIgdHIgdGgsCisjY29udGVudF9jb250YWluZXIgdGhlYWQgdGggeworICAgIGNvbG9yOiAjODg4OworICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBsaW5lLWhlaWdodDogMThweDsKKyAgICBwYWRkaW5nOiA5cHggMTBweDsKK30KKyNjb250ZW50X2NvbnRhaW5lciB0ciB0ZCB7CisKKyAgICBwYWRkaW5nOiA2cHggMTBweDsKK30KKyNjb250ZW50X2NvbnRhaW5lciB0ci5vZGQgdGQgeworICAgIGJhY2tncm91bmQ6ICNmMmY3ZmM7Cit9CisKKy8qLS1uYXZpZ2F0aW9uLS0qLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKy5uYXZpZ2F0aW9uIHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBtYXJnaW46IDIwcHggMDsKK30KKworCisubmF2aWdhdGlvbiAuYWxpZ25sZWZ0IGEgeworICAgIGZsb2F0OiBsZWZ0OworfQorCisubmF2aWdhdGlvbiAuYWxpZ25yaWdodCBhIHsKKyAgICBmbG9hdDogcmlnaHQ7Cit9CisKKyNuYXYtc2luZ2xlIHsKKyAgICBvdmVyZmxvdzpoaWRkZW47CisgICAgbWFyZ2luLXRvcDoyMHB4OworICAgIG1hcmdpbi1ib3R0b206MTBweDsKK30KKy5uYXYtcHJldmlvdXMgeworICAgIGZsb2F0OiBsZWZ0OworICAgIHdpZHRoOiA1MCU7Cit9CisubmF2LW5leHQgeworICAgIGZsb2F0OiByaWdodDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICB3aWR0aDogNTAlOworfQorCisvKi0tc3ViIGhlYWQgYW5kIGJyZWFkY3J1bWJzLS0qLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKyNzdWJoZWFkX2NvbnRhaW5lcnsKKyAgICBwYWRkaW5nOiA3cHggMHB4OworfQorCisjc3ViaGVhZCBoMXsKKyAgICBjb2xvcjogIzAwMDsKKyAgICBwYWRkaW5nLXRvcDogMTBweDsKKyAgICBwYWRkaW5nLWxlZnQ6IDBweDsKKyAgICBmb250LXNpemU6IDMwcHg7Cit9CisKKyNicmVhZGNydW1icyB7CisgICAgcGFkZGluZy1sZWZ0OiAyNXB4OworICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CisgICAgY29sb3I6ICM5ZTllOWU7CisgICAgbWFyZ2luOjAgYXV0bzsKKyAgICB3aWR0aDogOTY0cHg7CisgICAgZm9udC1zaXplOiAxMHB4OworfQorCisjYnJlYWRjcnVtYnMgYXsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6ICM5ZTllOWU7Cit9CisKKy8qQWxpZ25tZW50cyAqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKy5hbGlnbmxlZnQsCitpbWcuYWxpZ25sZWZ0IHsKKyAgICBkaXNwbGF5OiBpbmxpbmU7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgbWFyZ2luLXJpZ2h0OiAyMnB4OworICAgIG1hcmdpbi10b3A6IDlweDsKK30KKworLmFsaWducmlnaHQsCitpbWcuYWxpZ25yaWdodCB7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIGZsb2F0OiByaWdodDsKKyAgICBtYXJnaW4tbGVmdDogMjJweDsKKyAgICBtYXJnaW4tdG9wOiA4cHg7Cit9CisuYWxpZ25jZW50ZXIsCitpbWcuYWxpZ25jZW50ZXIgeworICAgIGNsZWFyOiBib3RoOworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIG1hcmdpbi1sZWZ0OiBhdXRvOworICAgIG1hcmdpbi1yaWdodDogYXV0bzsKK30KKworLmFsaWdubGVmdCwKKy5hbGlnbnJpZ2h0LAorLmFsaWduY2VudGVyLAoraW1nLmFsaWdubGVmdCwKK2ltZy5hbGlnbnJpZ2h0LAoraW1nLmFsaWduY2VudGVyCit7CisgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKK30KKworCithIGltZy5hbGlnbmNlbnRlciB7CisgICAgZGlzcGxheTpibG9jazsKKyAgICBtYXJnaW4tbGVmdDphdXRvOworICAgIG1hcmdpbi1yaWdodDphdXRvOworfQorCitpbWcgeyAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfQpkaWZmIC0tZ2l0IGEvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9uYW1lZF9kYXRhX3N0eWxlLmNzc190IGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9uYW1lZF9kYXRhX3N0eWxlLmNzc190Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZGZiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvc3RhdGljL25hbWVkX2RhdGFfc3R5bGUuY3NzX3QKQEAgLTAsMCArMSw4MTMgQEAKK0BpbXBvcnQgdXJsKCJiYXNlLmNzcyIpOworCitAaW1wb3J0IHVybCgiZm91bmRhdGlvbi5jc3MiKTsKKwordGFibGUgeworICAgICAgYm9yZGVyOiAwOworfQorCitwcmUgeworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsKKyAgICBjb2xvcjogIzIyMjsKKyAgICAvKiBsaW5lLWhlaWdodDogMS4wZW07ICovCisgICAgYm9yZGVyOiAycHggc29saWQgI0M2QzlDQjsKKyAgICBmb250LXNpemU6IDAuOWVtOworICAgIC8qIG1hcmdpbjogMS41ZW0gMCAxLjVlbSAwOyAqLworICAgIG1hcmdpbjogMDsKKyAgICBib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7CisgICAgYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7Cit9CisKKy8qIEdlbmVyYWwgKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCithOmxpbmsgeworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KK2E6dmlzaXRlZCB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorYTphY3RpdmUsCithOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2IHsKKyAgICBjb2xvcjogIzAwMDsKKyAgICBtYXJnaW4tYm90dG9tOiAxOHB4OworfQorCitoMSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDI0cHg7IH0KK2gyIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMThweDsgfQoraDMgeyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxNnB4OyB9CitoNCB7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE0cHg7IH0KKworaHIgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNjNmM2YzY7CisgICAgYm9yZGVyOjA7CisgICAgaGVpZ2h0OiAxcHg7CisgICAgbWFyZ2luLWJvdHRvbTogMThweDsKKyAgICBjbGVhcjpib3RoOworfQorCitkaXYuaHIgeworICBoZWlnaHQ6IDFweDsKKyAgYmFja2dyb3VuZDogI2M2YzZjNjsKK30KKworZGl2LmhyMiB7CisgIGhlaWdodDogMXB4OworICBiYWNrZ3JvdW5kOiAjYzZjNmM2OworfQorCitkaXYuaHIgaHIsIGRpdi5ocjIgaHIgeworICBkaXNwbGF5OiBub25lOworfQorCitwIHsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpbmUtaGVpZ2h0OjEuNmVtOworfQordWwgeworICAgIGxpc3Qtc3R5bGU6IHNxdWFyZTsKKyAgICBtYXJnaW46IDAgMCAxOHB4IDA7Cit9CitvbCB7CisgICAgbGlzdC1zdHlsZTogZGVjaW1hbDsKKyAgICBtYXJnaW46IDAgMCAxOHB4IDEuNWVtOworfQorb2wgb2wgeworICAgIGxpc3Qtc3R5bGU6dXBwZXItYWxwaGE7Cit9CitvbCBvbCBvbCB7CisgICAgbGlzdC1zdHlsZTpsb3dlci1yb21hbjsKK30KK29sIG9sIG9sIG9sIHsKKyAgICBsaXN0LXN0eWxlOmxvd2VyLWFscGhhOworfQordWwgdWwsCitvbCBvbCwKK3VsIG9sLAorb2wgdWwgeworICAgIG1hcmdpbi1ib3R0b206MDsKK30KK2RsIHsKKyAgICBtYXJnaW46MCAwIDI0cHggMDsKK30KK2R0IHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KK2RkIHsKKyAgICBtYXJnaW4tYm90dG9tOiAxOHB4OworfQorc3Ryb25nIHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogIzAwMDsKK30KK2NpdGUsCitlbSwKK2kgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBib3JkZXI6IG5vbmU7Cit9CitiaWcgeworICAgIGZvbnQtc2l6ZTogMTMxLjI1JTsKK30KK2lucyB7CisgICAgYmFja2dyb3VuZDogI0ZGRkZDQzsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgY29sb3I6ICMzMzM7Cit9CitkZWwgeworICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOworICAgIGNvbG9yOiAjNTU1OworfQorYmxvY2txdW90ZSB7CisgICAgcGFkZGluZzogMCAzZW07Cit9CitibG9ja3F1b3RlIGNpdGUsCitibG9ja3F1b3RlIGVtLAorYmxvY2txdW90ZSBpIHsKKyAgICBmb250LXN0eWxlOiBub3JtYWw7Cit9CitwcmUgeworICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7CisgICAgY29sb3I6ICMyMjI7CisgICAgcGFkZGluZzogMS41ZW07Cit9CithYmJyLAorYWNyb255bSB7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2NjY7CisgICAgY3Vyc29yOiBoZWxwOworfQoraW5zIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CitzdXAsCitzdWIgeworICAgIGhlaWdodDogMDsKKyAgICBsaW5lLWhlaWdodDogMTsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGZvbnQtc2l6ZTogMTBweDsKK30KK3N1cCB7CisgICAgYm90dG9tOiAxZXg7Cit9CitzdWIgeworICAgIHRvcDogLjVleDsKK30KKworcCwKK3VsLAorb2wsCitkZCwKK2hyIHsKKyAgICBtYXJnaW4tYm90dG9tOjEwcHg7Cit9Cit1bCB1bCwKK29sIG9sLAordWwgb2wsCitvbCB1bCB7CisgICAgbWFyZ2luLWJvdHRvbTowOworfQorcHJlLAora2JkLAordHQsCit2YXIgeworfQorY29kZSB7CisgICAgZm9udC1zaXplOiAxM3B4OworfQorc3Ryb25nLAorYiwKK2R0LAordGggeworICAgIGNvbG9yOiAjMDAwOworfQorCisKKy8qIG1haW5fY29udGFpbmVyICovCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KKworI3dyYXBwZXIgeworICAgIHBhZGRpbmc6IDBweCAwcHg7CisgICAgbWFyZ2luLXRvcDogMjBweDsKK30KKworLyogaGVhZGVyKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjc2VhcmNoLWhlYWRlcnsKKyAgICBtYXJnaW4tdG9wOjE1cHg7CisgICAgcGFkZGluZy1ib3R0b206MTNweDsKK30KKworI3NlYXJjaC1oZWFkZXIgI3NlYXJjaHsKKyAgICBiYWNrZ3JvdW5kOiAjMjIyOworCit9CisKKyNzZWFyY2gtaGVhZGVyICNzZWFyY2ggI3N7CisgICAgYmFja2dyb3VuZDogIzIyMjsKKyAgICBmb250LXNpemU6MTJweDsKKyAgICBjb2xvcjogI2FhYTsKK30KKworI2hlYWRlcl9jb250YWluZXJ7CisgICAgcGFkZGluZy1ib3R0b206IDI1cHg7CisgICAgcGFkZGluZy10b3A6IDBweDsKKyAgICBiYWNrZ3JvdW5kOiAjZmZmOworfQorCisjaGVhZGVyIHsKKworfQorCisjaGVhZGVyMiB7CisKK30KKworI2NvbnRlbnRfY29udGFpbmVyeworICAgIHBhZGRpbmctdG9wOiAxNXB4OworfQorCisjbGVmdC1jb2wgeworICAgIHBhZGRpbmc6IDEwcHggMjBweDsKKyAgICBwYWRkaW5nLWxlZnQ6IDBweDsKKyAgICBiYWNrZ3JvdW5kOiAjZmZmOworCit9CisKKworLypmb290ZXIqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKworI2Zvb3RlciB7CisgICAgcGFkZGluZzogNXB4IDIwcHg7CisgICAgYmFja2dyb3VuZDogI2RkZDsKK30KKworI2Zvb3Rlci1jb250YWluZXJ7CisgICAgcGFkZGluZzogNXB4IDIwcHg7CisgICAgYmFja2dyb3VuZDogIzMwMzAzMDsKKyAgICBib3JkZXItdG9wOiA4cHggc29saWQgIzAwMDsKKyAgICBmb250LXNpemU6MTFweDsKK30KKworI2Zvb3Rlci1pbmZvIHsKKyAgICBjb2xvcjojY2NjOworICAgIHRleHQtYWxpZ246bGVmdDsKKyAgICBiYWNrZ3JvdW5kOiAjMWIxYjFiOworICAgIHBhZGRpbmc6IDIwcHggMDsKK30KKworCisjZm9vdGVyLWluZm8gYXsKKyAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKKyAgICBjb2xvcjogI2ZmZjsKK30KKworI2Zvb3Rlci1pbmZvIGE6aG92ZXJ7CisgICAgY29sb3I6ICNlYmViZWI7Cit9CisKKyNjb3B5cmlnaHR7ZmxvYXQ6IGxlZnQ7fQorCisuc2Nyb2xsLXRvcCB7CisgICAgdGV4dC1hbGlnbjpyaWdodDsKK30KKworI2Zvb3Rlci13aWRnZXR7CisgICAgcGFkZGluZzogOHB4IDBweCA4cHggMHB4OworICAgIGNvbG9yOiM2ZjZmNmY7Cit9CisKKyNmb290ZXItd2lkZ2V0ICNzZWFyY2ggeworICAgIHdpZHRoOjEyMHB4OworICAgIGhlaWdodDoyOHB4OworICAgIGJhY2tncm91bmQ6ICMyMjI7CisgICAgbWFyZ2luLWxlZnQ6IDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzY2NjsKK30KKworI2Zvb3Rlci13aWRnZXQgI3NlYXJjaCAjcyB7CisgICAgd2lkdGg6MTEwcHg7CisgICAgaGVpZ2h0OjIzcHg7CisgICAgYm9yZGVyOjBweDsKKyAgICBtYXJnaW4tbGVmdDo3cHg7CisgICAgbWFyZ2luLXJpZ2h0OjEwcHg7CisgICAgbWFyZ2luLXRvcDozcHg7CisgICAgY29sb3I6I2ZmZjsKKyAgICBkaXNwbGF5OiBpbmxpbmU7CisgICAgYmFja2dyb3VuZDogIzIyMjsKKyAgICBmbG9hdDogbGVmdDsKK30KKworI2Zvb3Rlci13aWRnZXQgI2NhbGVuZGFyX3dyYXAgeworICAgIHBhZGRpbmc6IDhweCAwcHg7Cit9CisKKyNmb290ZXItd2lkZ2V0ICN3cC1jYWxlbmRhciB0ZHsKKyAgICBwYWRkaW5nOjJweDsKK30KKworCisjZm9vdGVyLXdpZGdldCAudGV4dHdpZGdldCB7CisgICAgcGFkZGluZzogNXB4IDBweDsKKyAgICBsaW5lLWhlaWdodDogMjNweDsKK30KKworCisjZm9vdGVyLXdpZGdldCAud2lkZ2V0X3RhZ19jbG91ZCBheworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBtYXJnaW46IDVweDsKKyAgICBsaW5lLWhlaWdodDogMjRweDsKKyAgICBtYXJnaW4tbGVmdDogMHB4OworICAgIGNvbG9yOiAjNmY2ZjZmOworfQorCisjZm9vdGVyLXdpZGdldCAud2lkZ2V0X3RhZ19jbG91ZCBhOmhvdmVyeworICAgIGNvbG9yOiAjZmZmOworfQorCisjZm9vdGVyLXdpZGdldCAud2lkZ2V0LWNvbnRhaW5lciB1bCBsaSBhICAgIHsKKyAgICBjb2xvcjojZmQ3ODAwOworfQorCisjZm9vdGVyLXdpZGdldCAud2lkZ2V0LWNvbnRhaW5lciB1bCBsaSBhOmhvdmVyICAgIHsKKyAgICBjb2xvcjogI2NjYzsKK30KKworI2Zvb3Rlci13aWRnZXQgLndpZGdldC1jb250YWluZXIgaDMgeworICAgIGNvbG9yOiAjYTVhNWE1OworICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CisgICAgbWFyZ2luLWJvdHRvbTogMHB4OworICAgIHBhZGRpbmctdG9wOiAxMHB4OworICAgIHBhZGRpbmctbGVmdDogMHB4OworICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogOHB4OworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisjZm9vdGVyLXdpZGdldCAud2lkZ2V0LWNvbnRhaW5lciB1bCBsaSB7CisgICAgcGFkZGluZzogNXB4IDBweDsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworICAgIH0KKworI2Zvb3Rlci13aWRnZXQgdWwgeworICAgIG1hcmdpbi1sZWZ0OiAwcHg7CisgICAgfQorCisjZm9vdGVyLWJhcjEgeworICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7Cit9CisjZm9vdGVyLWJhcjIgeworICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7Cit9CisjZm9vdGVyLWJhcjMgeworfQorI2Zvb3Rlci1iYXI0IHsKK30KKworc3BhbiNmb2xsb3ctYm94eworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMTAwcHg7Cit9CisKK3NwYW4jZm9sbG93LWJveCBpbWd7CisgICAgbWFyZ2luOiAwIDJweDsKK30KKworLypsb2dvKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjbG9nbyB7CisgICAgbWFyZ2luOiAwcHggMHB4IDBweCAwcHg7Cit9CisKKyNsb2dvMiB7CisgICAgbWFyZ2luOiAwcHggMHB4IDBweCAwcHg7Cit9CisKKyNsb2dvIGltZ3sKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKyNsb2dvMnsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgZm9udC1zaXplOiA0MnB4OworICAgIGxldHRlci1zcGFjaW5nOiAtMXB0OworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIGZvbnQtZmFtaWx5OmFyaWFsLCAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOworICAgIHRleHQtYWxpZ246IGxlZnQ7CisgICAgbGluZS1oZWlnaHQ6IDU3cHg7CisgICAgcGFkZGluZy1sZWZ0OiAwcHg7Cit9CisKKyNsb2dvMiBhLCAjc2xvZ2FueworICAgIGNvbG9yOiAjZmQ3ODAwOworfQorCisjc2xvZ2FueworICAgIHRleHQtYWxpZ246IGxlZnQ7CisgICAgcGFkZGluZy1sZWZ0OiAwcHg7Cit9CisKKy8qc2VhcmNoKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjc2VhcmNoIHsKKyAgICB3aWR0aDoxODBweDsKKyAgICBoZWlnaHQ6MjhweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOworICAgIG1hcmdpbi1sZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworI3NpZGViYXIgI3NlYXJjaCB7CisgICAgbWFyZ2luLXRvcDogMjBweDsKK30KKworI3NlYXJjaCAjc2VhcmNoc3VibWl0IHsKKyAgICBiYWNrZ3JvdW5kOnVybChpbWFnZXMvZ28tYnRuLnBuZykgbm8tcmVwZWF0IHRvcCByaWdodDsKKyAgICB3aWR0aDoyOHB4OworICAgIGhlaWdodDoyOHB4OworICAgIGJvcmRlcjowcHg7CisgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgcmlnaHQ6IC0zNXB4OworfQorCisjc2VhcmNoICNzIHsKKyAgICB3aWR0aDoxNzBweDsKKyAgICBoZWlnaHQ6MjNweDsKKyAgICBib3JkZXI6MHB4OworICAgIG1hcmdpbi1sZWZ0OjdweDsKKyAgICBtYXJnaW4tcmlnaHQ6MTBweDsKKyAgICBtYXJnaW4tdG9wOjNweDsKKyAgICBjb2xvcjojMDAwOworICAgIGRpc3BsYXk6IGlubGluZTsKKyAgICBmbG9hdDogbGVmdDsKK30KKworLyptZW51IGJhciovCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KKworI21lbnVfY29udGFpbmVyeworICAgIHBhZGRpbmctdG9wOiAwcHg7Cit9CisKKworLypyZXNwb25zaXZlIG1lbnUqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKy8qIGRlZmF1bHQgc3R5bGUgKi8KKy5zZWxlY3RuYXYgeyBkaXNwbGF5OiBub25lOyB9CisKKy8qIHNtYWxsIHNjcmVlbiAqLworQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHsKKyAgLmpzICNuYXYgeyBkaXNwbGF5OiBub25lOyB9CisgICAuanMgI25hdjIgeyBkaXNwbGF5OiBub25lOyB9CisgIC5qcyAuc2VsZWN0bmF2IHsgZGlzcGxheTogYmxvY2s7IH0KK30KKworCisvKndlbGNvbWUqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisjd2VsY29tZV9jb250YWluZXIgaDF7CisgICAgbWFyZ2luLXRvcDogMHB4OworfQorCisvKmhvbWVwYWdlIGJveGVzKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjYm94X2NvbnRhaW5lcnsKKyAgICBwYWRkaW5nLXRvcDogMzVweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsKK30KKworLmJveC1oZWFkIHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKK30KKworLmJveC1oZWFkIGltZ3sKKworfQorCisudGl0bGUtaGVhZHsKKyAgICBwYWRkaW5nLXRvcDoycHg7Cit9CisKKy50aXRsZS1ib3h7CisgICAgY29sb3I6ICMzMzM7CisgICAgbGluZS1oZWlnaHQ6IDE1cHg7CisgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworLnRpdGxlLWJveCBoMSB7CisgICAgZm9udC1zaXplOiAxOHB4OworICAgIG1hcmdpbi1ib3R0b206IDNweDsKK30KKworLmJveC1jb250ZW50IHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICBwYWRkaW5nLXRvcDogMTBweDsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKK30KKworCisvKiBQT1NUICovCisvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KKworCisucG9zdCB7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKworfQorCisucG9zdC1zaGFkb3d7CisgICAgYmFja2dyb3VuZDogdXJsKCJpbWFnZXMvcG9zdF9zaGFkb3cucG5nIikgbm8tcmVwZWF0IGJvdHRvbTsKKyAgICBoZWlnaHQ6IDlweDsKKyAgICBtYXJnaW4tYm90dG9tOiAyNXB4OworfQorCisucG9zdCBvbHsKKyAgICBtYXJnaW4tbGVmdDogMjBweDsKK30KKworLnBvc3QgdWwgeworICAgIG1hcmdpbi1sZWZ0OiAxNXB4OworfQorLnBvc3QtZW50cnkgdWwgeyBtYXJnaW46IDAgMCAxMHB4IDEwcHg7IH0KKy5wb3N0LWVudHJ5IHVsIGxpIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBtYXJnaW46IDVweCAwOworICAgIHBhZGRpbmc6IDAgMCAwIDIwcHg7CisgICAgLypiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2J1bGxldC5wbmcpIG5vLXJlcGVhdCAwIDdweDsqLworfQorCisucG9zdC1lbnRyeSBvbCB7CisgICAgbGlzdC1zdHlsZTogZGVjaW1hbDsKKyAgICBtYXJnaW46IDAgMCAxOHB4IDEuNmVtOworfQorLnBvc3QtZW50cnkgb2wgbGkgeworICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7CisgfQorCisucG9zdC1lbnRyeSB7CisgICAgcGFkZGluZy1ib3R0b206IDEwcHg7CisgICAgcGFkZGluZy10b3A6IDEwcHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKworfQorCisucG9zdC1oZWFkIHsKKyAgICBtYXJnaW4tYm90dG9tOiA1cHg7CisgICAgcGFkZGluZy10b3A6IDE1cHg7Cit9CisKKy5wb3N0LWhlYWQgaDEgYSwgLnBvc3QtaGVhZCBoMSB7CisgICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CisgICAgY29sb3I6IzAwMDsKKyAgICBtYXJnaW46IDBweDsKKyAgICBmb250LXNpemU6IDI3cHg7Cit9CisKKy5wb3N0LWhlYWQgaDEgYTpob3ZlciB7CisgICAgY29sb3I6Izc3NzsKK30KKworCisucG9zdC1oZWFkLW5vdGZvdW5kIGgxLCAucG9zdC1oZWFkLTQwNCBoMSwgLnBvc3QtaGVhZC1hcmNoaXZlIGgxLCAucG9zdC1oZWFkLXNlYXJjaCBoMSB7CisgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKKyAgICBmb250LXdlaWdodDpub3JtYWw7CisgICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CisgICAgY29sb3I6IzAwMDsKKyAgICBmb250LXNpemU6IDI3cHg7Cit9CisKKy5wb3N0LXRodW1iIGltZyB7CisgICAgYm9yZGVyOiAwcHggc29saWQgI2ViZWJlYjsKK30KKworLnBvc3QtZW50cnkgaW1neworICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CisgICAgaGVpZ2h0OmF1dG87CisgICAgICBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OworfQorCisubWV0YS1kYXRheworICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIHBhZGRpbmc6IDZweCAzcHg7CisgICAgbWFyZ2luLWJvdHRvbTogM3B4OworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZTllOTsKK30KKworLm1ldGEtZGF0YSBheworICAgIGNvbG9yOiAjZmQ3ODAwOworfQorCisubWV0YS1kYXRhIGE6aG92ZXJ7CisgICAgY29sb3I6ICM3Nzc7Cit9CisKKy5yZWFkLW1vcmUgeworY29sb3I6ICMwMDA7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICAgIHBhZGRpbmc6IDRweCA4cHg7CisgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICBmb250LXNpemU6IDExcHg7CisgICAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOworICAgICAgY3Vyc29yOiBwb2ludGVyOworICAgICAgbWFyZ2luLXRvcDogMjBweDsKK30KKworLnJlYWQtbW9yZTpob3ZlcnsKKyAgICBiYWNrZ3JvdW5kOiAjZmZmOworICAgIGNvbG9yOiAjNjY2OworfQorCisuY2xlYXIgeworICAgIGNsZWFyOmJvdGg7Cit9CisKKy5zdGlja3kgeworCit9CisKKy8qIGNvbnRlbnQgKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworI2NvbnRlbnRfY29udGFpbmVyIHRhYmxlIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3OworICAgIG1hcmdpbjogMCAtMXB4IDI0cHggMDsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIHdpZHRoOiAxMDAlOworCit9CisjY29udGVudF9jb250YWluZXIgdHIgdGgsCisjY29udGVudF9jb250YWluZXIgdGhlYWQgdGggeworICAgIGNvbG9yOiAjODg4OworICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBsaW5lLWhlaWdodDogMThweDsKKyAgICBwYWRkaW5nOiA5cHggMTBweDsKK30KKyNjb250ZW50X2NvbnRhaW5lciB0ciB0ZCB7CisKKyAgICBwYWRkaW5nOiA2cHggMTBweDsKK30KKyNjb250ZW50X2NvbnRhaW5lciB0ci5vZGQgdGQgeworICAgIGJhY2tncm91bmQ6ICNmMmY3ZmM7Cit9CisKKy8qIHNpZGViYXIqLworLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCisKKyNzaWRlYmFyIHsKKyAgICBwYWRkaW5nOjBweCAyMHB4IDIwcHggMHB4OworfQorCisjc2lkZWJhciB1bCAgeworICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKyNzaWRlYmFyIHsgd29yZC13cmFwOiBicmVhay13b3JkO30KKworCisvKi0tbmF2aWdhdGlvbi0tKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisubmF2aWdhdGlvbiB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luOiAyMHB4IDA7Cit9CisKKworLm5hdmlnYXRpb24gLmFsaWdubGVmdCBhIHsKKyAgICBmbG9hdDogbGVmdDsKK30KKworLm5hdmlnYXRpb24gLmFsaWducmlnaHQgYSB7CisgICAgZmxvYXQ6IHJpZ2h0OworfQorCisjbmF2LXNpbmdsZSB7CisgICAgb3ZlcmZsb3c6aGlkZGVuOworICAgIG1hcmdpbi10b3A6MjBweDsKKyAgICBtYXJnaW4tYm90dG9tOjEwcHg7Cit9CisubmF2LXByZXZpb3VzIHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB3aWR0aDogNTAlOworfQorLm5hdi1uZXh0IHsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgd2lkdGg6IDUwJTsKK30KKworLyotLXNsaWRlci0tKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjc2xpZGVyX2NvbnRhaW5lciB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKK30KKworLmZsZXgtY2FwdGlvbnsKK2JhY2tncm91bmQ6ICMyMzIzMjM7Citjb2xvcjogI2ZmZjsKK3BhZGRpbmc6IDdweDsKK30KKworLmZsZXhzbGlkZXIgcHsKKyAgICBtYXJnaW46IDBweDsKK30KKworLyotLXN1YiBoZWFkIGFuZCBicmVhZGNydW1icy0tKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisjc3ViaGVhZF9jb250YWluZXJ7CisgICAgcGFkZGluZzogN3B4IDBweDsKK30KKworI3N1YmhlYWQgaDF7CisgICAgY29sb3I6ICMwMDA7CisgICAgcGFkZGluZy10b3A6IDEwcHg7CisgICAgcGFkZGluZy1sZWZ0OiAwcHg7CisgICAgZm9udC1zaXplOiAzMHB4OworfQorCisjYnJlYWRjcnVtYnMgeworICAgIHBhZGRpbmctbGVmdDogMjVweDsKKyAgICBtYXJnaW4tYm90dG9tOiAxNXB4OworICAgIGNvbG9yOiAjOWU5ZTllOworICAgIG1hcmdpbjowIGF1dG87CisgICAgd2lkdGg6IDk2NHB4OworICAgIGZvbnQtc2l6ZTogMTBweDsKK30KKworI2JyZWFkY3J1bWJzIGF7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGNvbG9yOiAjOWU5ZTllOworfQorCisvKkFsaWdubWVudHMgKi8KKy8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLworCisuYWxpZ25sZWZ0LAoraW1nLmFsaWdubGVmdCB7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIGZsb2F0OiBsZWZ0OworICAgIG1hcmdpbi1yaWdodDogMjJweDsKKyAgICBtYXJnaW4tdG9wOiA5cHg7Cit9CisKKy5hbGlnbnJpZ2h0LAoraW1nLmFsaWducmlnaHQgeworICAgIGRpc3BsYXk6IGlubGluZTsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgbWFyZ2luLWxlZnQ6IDIycHg7CisgICAgbWFyZ2luLXRvcDogOHB4OworfQorLmFsaWduY2VudGVyLAoraW1nLmFsaWduY2VudGVyIHsKKyAgICBjbGVhcjogYm90aDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBtYXJnaW4tbGVmdDogYXV0bzsKKyAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cit9CisKKy5hbGlnbmxlZnQsCisuYWxpZ25yaWdodCwKKy5hbGlnbmNlbnRlciwKK2ltZy5hbGlnbmxlZnQsCitpbWcuYWxpZ25yaWdodCwKK2ltZy5hbGlnbmNlbnRlcgoreworICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cit9CisKKworYSBpbWcuYWxpZ25jZW50ZXIgeworICAgIGRpc3BsYXk6YmxvY2s7CisgICAgbWFyZ2luLWxlZnQ6YXV0bzsKKyAgICBtYXJnaW4tcmlnaHQ6YXV0bzsKK30KKworCit0YWJsZSB7CisgICAgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOworfQordGFibGUsIHRoLCB0ZCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgcGFkZGluZzogNXB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvbmF2X2YucG5nIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy9uYXZfZi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA5YWMyZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvbmF2X2YucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvdGFiX2IucG5nIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3N0YXRpYy90YWJfYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxZmI0ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS9zdGF0aWMvdGFiX2IucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvbmFtZWRfZGF0YV90aGVtZS90aGVtZS5jb25mIGIvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL3RoZW1lLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE1YTdmZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbmFtZWRfZGF0YV90aGVtZS90aGVtZS5jb25mCkBAIC0wLDAgKzEsMTUgQEAKK1t0aGVtZV0KK2luaGVyaXQgPSBhZ29nbworc3R5bGVzaGVldCA9IG5hbWVkX2RhdGFfc3R5bGUuY3NzCisjIHB5Z21lbnRzX3N0eWxlID0gc3BoaW54CisKK3RoZW1lX2JvZHlmb250ID0gIm5vcm1hbCAxMnB4IFZlcmRhbmEsIHNhbnMtc2VyaWYiCit0aGVtZV9iZ2NvbG9yID0gIiNjY2MiCisKK3RoZW1lX2RvY3VtZW50d2lkdGggPSAiMTAwJSIKK3RoZW1lX3RleHRhbGlnbiA9ICJsZWZ0IgorCitbb3B0aW9uc10KKworc3RpY2t5c2lkZWJhciA9IHRydWUKK2NvbGxhcHNpYmxlc2lkZWJhciA9IHRydWUKZGlmZiAtLWdpdCBhL25zbC5jb25mLnNhbXBsZS5pbiBiL25zbC5jb25mLnNhbXBsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbnNsLmNvbmYuc2FtcGxlLmluCmRpZmYgLS1naXQgYS90ZXN0cy9ib29zdC10ZXN0LmhwcCBiL3Rlc3RzL2Jvb3N0LXRlc3QuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYjg1NzkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9ib29zdC10ZXN0LmhwcApAQCAtMCwwICsxLDM3IEBACisvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsICBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsCisgKiAgICAgICAgICAgICAgICAgICAgICBBcml6b25hIEJvYXJkIG9mIFJlZ2VudHMsCisgKiAgICAgICAgICAgICAgICAgICAgICBDb2xvcmFkbyBTdGF0ZSBVbml2ZXJzaXR5LAorICogICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0eSBQaWVycmUgJiBNYXJpZSBDdXJpZSwgU29yYm9ubmUgVW5pdmVyc2l0eSwKKyAqICAgICAgICAgICAgICAgICAgICAgIFdhc2hpbmd0b24gVW5pdmVyc2l0eSBpbiBTdC4gTG91aXMsCisgKiAgICAgICAgICAgICAgICAgICAgICBCZWlqaW5nIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LAorICogICAgICAgICAgICAgICAgICAgICAgVGhlIFVuaXZlcnNpdHkgb2YgTWVtcGhpcworICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5GRCAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIEZvcndhcmRpbmcgRGFlbW9uKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5GRCBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkZEIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIE5GRCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORkQsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIE5GRF9URVNUU19CT09TVF9URVNUX0hQUAorI2RlZmluZSBORkRfVEVTVFNfQk9PU1RfVEVTVF9IUFAKKworLy8gc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSBCb29zdC5UZXN0CisjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCisjcHJhZ21hIGNsYW5nIHN5c3RlbV9oZWFkZXIKKworI2luY2x1ZGUgPGJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcD4KKyNpbmNsdWRlIDxib29zdC9jb25jZXB0X2NoZWNrLmhwcD4KKyNpbmNsdWRlIDxib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHA+CisKKyNlbmRpZiAvLyBORkRfVEVTVFNfQk9PU1RfVEVTVF9IUFAKZGlmZiAtLWdpdCBhL3Rlc3RzL21haW4uY3BwIGIvdGVzdHMvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczMzYzNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL21haW4uY3BwCkBAIC0wLDAgKzEsMjggQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCAgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLAorICogICAgICAgICAgICAgICAgICAgICBBcml6b25hIEJvYXJkIG9mIFJlZ2VudHMsCisgKiAgICAgICAgICAgICAgICAgICAgIENvbG9yYWRvIFN0YXRlIFVuaXZlcnNpdHksCisgKiAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdHkgUGllcnJlICYgTWFyaWUgQ3VyaWUsIFNvcmJvbm5lIFVuaXZlcnNpdHksCisgKiAgICAgICAgICAgICAgICAgICAgIFdhc2hpbmd0b24gVW5pdmVyc2l0eSBpbiBTdC4gTG91aXMsCisgKiAgICAgICAgICAgICAgICAgICAgIEJlaWppbmcgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBORkQgKE5hbWVkIERhdGEgTmV0d29ya2luZyBGb3J3YXJkaW5nIERhZW1vbikuCisgKiBTZWUgQVVUSE9SUy5tZCBmb3IgY29tcGxldGUgbGlzdCBvZiBORkQgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5GRCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORkQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOworICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogTkZELCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKiovCisKKyNkZWZpbmUgQk9PU1RfVEVTVF9NQUlOIDEKKyNkZWZpbmUgQk9PU1RfVEVTVF9EWU5fTElOSyAxCisKKyNpbmNsdWRlICJib29zdC10ZXN0LmhwcCIKZGlmZiAtLWdpdCBhL3Rlc3RzL3dzY3JpcHQgYi90ZXN0cy93c2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNTNmN2MKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy93c2NyaXB0CkBAIC0wLDAgKzEsNTUgQEAKKyMgLSotIE1vZGU6IHB5dGhvbjsgcHktaW5kZW50LW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjb2Rpbmc6IHV0Zi04OyAtKi0KKworIiIiCitDb3B5cmlnaHQgKGMpIDIwMTQsICBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgTlNMIChORE4gU2lnbmF0dXJlIExvZ2dlcikuCitTZWUgQVVUSE9SUy5tZCBmb3IgY29tcGxldGUgbGlzdCBvZiBOU0wgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorCitOU0wgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKK29mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKK2VpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK05TTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7Cit3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorTlNMLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisiIiIKKwordG9wID0gJy4uJworCitkZWYgYnVpbGQoYmxkKToKKyAgICAjIFVuaXQgdGVzdHMKKyAgICBpZiBibGQuZW52WydXSVRIX1RFU1RTJ106CisgICAgICAgICMgbWFpbigpCisgICAgICAgIHVuaXRfdGVzdF9tYWluID0gYmxkKAorICAgICAgICAgICAgdGFyZ2V0PSd1bml0LXRlc3RzLW1haW4nLAorICAgICAgICAgICAgbmFtZT0ndW5pdC10ZXN0cy1tYWluJywKKyAgICAgICAgICAgIGZlYXR1cmVzPSdjeHgnLAorICAgICAgICAgICAgdXNlPSdjb3JlLW9iamVjdHMnLAorICAgICAgICAgICAgc291cmNlPSdtYWluLmNwcCcsCisgICAgICAgICAgICBpbnN0YWxsX3BhdGg9Tm9uZSwKKyAgICAgICAgICApCisKKyAgICAgICAgIyBjb21tb24gdGVzdCBtb2R1bGVzCisgICAgICAgIHVuaXRfdGVzdF9iYXNlID0gYmxkKAorICAgICAgICAgICAgdGFyZ2V0PSd1bml0LXRlc3RzLWJhc2UnLAorICAgICAgICAgICAgbmFtZT0ndW5pdC10ZXN0cy1iYXNlJywKKyAgICAgICAgICAgIGZlYXR1cmVzPSdjeHgnLAorICAgICAgICAgICAgc291cmNlPWJsZC5wYXRoLmFudF9nbG9iKFsnKi5jcHAnXSwgZXhjbD0nbWFpbi5jcHAnKSwKKyAgICAgICAgICAgIHVzZT0nY29yZS1vYmplY3RzJywKKyAgICAgICAgICAgIGhlYWRlcnM9Jy4uL2NvbW1vbi5ocHAgYm9vc3QtdGVzdC5ocHAnLAorICAgICAgICAgICAgaW5zdGFsbF9wYXRoPU5vbmUsCisgICAgICAgICAgKQorCisgICAgICAgICMgdW5pdCB0ZXN0cworICAgICAgICB1bml0X3Rlc3RzID0gYmxkLnByb2dyYW0oCisgICAgICAgICAgICB0YXJnZXQ9Jy4uL3VuaXQtdGVzdHMnLAorICAgICAgICAgICAgZmVhdHVyZXM9J2N4eCBjeHhwcm9ncmFtJywKKyAgICAgICAgICAgIHNvdXJjZT1ibGQucGF0aC5hbnRfZ2xvYihbJ2NvcmUvKiovKi5jcHAnLCAnZGFlbW9uLyoqLyouY3BwJ10pLAorICAgICAgICAgICAgdXNlPSdjb3JlLW9iamVjdHMgZGFlbW9uLW9iamVjdHMgdW5pdC10ZXN0cy1iYXNlIHVuaXQtdGVzdHMtbWFpbicsCisgICAgICAgICAgICBpbmNsdWRlcz0nLicsCisgICAgICAgICAgICBpbnN0YWxsX3BhdGg9Tm9uZSwKKyAgICAgICAgICApCmRpZmYgLS1naXQgYS90b29scy93c2NyaXB0IGIvdG9vbHMvd3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDc1MGMyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvd3NjcmlwdApAQCAtMCwwICsxLDQyIEBACisjIC0qLSBNb2RlOiBweXRob247IHB5LWluZGVudC1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgY29kaW5nOiB1dGYtODsgLSotCisKKyIiIgorQ29weXJpZ2h0IChjKSAyMDE0LCAgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIE5TTCAoTkROIFNpZ25hdHVyZSBMb2dnZXIpLgorU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTlNMIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKworTlNMIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zCitvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCitlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCitOU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOword2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKK05TTCwgZS5nLiwgaW4gQ09QWUlORy5tZCBmaWxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIiIiCisKK2Zyb20gd2FmbGliIGltcG9ydCBVdGlscworCit0b3AgPSAnLi4nCisKK2RlZiBjb25maWd1cmUoY29uZik6CisgICAgY29uZi5maW5kX3Byb2dyYW0oJ3NoJykKKworZGVmIGJ1aWxkKGJsZCk6CisgICAgZm9yIGFwcCBpbiBibGQucGF0aC5hbnRfZ2xvYignKi5jcHAnKToKKyAgICAgICAgYmxkKGZlYXR1cmVzPVsnY3h4JywgJ2N4eHByb2dyYW0nXSwKKyAgICAgICAgICAgIHRhcmdldCA9ICclcycgJSAoc3RyKGFwcC5jaGFuZ2VfZXh0KCcnLCcuY3BwJykpKSwKKyAgICAgICAgICAgIHNvdXJjZSA9IGFwcCwKKyAgICAgICAgICAgIHVzZSA9ICdkYWVtb24tb2JqZWN0cycsCisgICAgICAgICAgICApCisKKyAgICBibGQoZmVhdHVyZXMgPSAic3Vic3QiLAorICAgICAgICBzb3VyY2UgPSBibGQucGF0aC5hbnRfZ2xvYihbJ3dyYXBwZXIvKi5zaCddKSwKKyAgICAgICAgdGFyZ2V0ID0gWyclcycgJSBub2RlLmNoYW5nZV9leHQoJycsICcuc2gnKQorICAgICAgICAgICAgICAgICAgZm9yIG5vZGUgaW4gYmxkLnBhdGguYW50X2dsb2IoWyd3cmFwcGVyLyouc2gnXSldLAorICAgICAgICBpbnN0YWxsX3BhdGggPSAiJHtCSU5ESVJ9IiwKKyAgICAgICAgY2htb2QgPSBVdGlscy5PNzU1LAorICAgICAgICkKZGlmZiAtLWdpdCBhL3ZlcnNpb24uaHBwLmluIGIvdmVyc2lvbi5ocHAuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ0N2M3ZAotLS0gL2Rldi9udWxsCisrKyBiL3ZlcnNpb24uaHBwLmluCkBAIC0wLDAgKzEsNzAgQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5TTCAoTkROIFNpZ25hdHVyZSBMb2dnZXIpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTlNMIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKyAqCisgKiBOU0wgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTlNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5TTCwgZS5nLiwgaW4gQ09QWUlORy5tZCBmaWxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIFxhdXRob3IgWWluZ2RpIFl1IDx5aW5nZGlAY3MudWNsYS5lZHU+CisgKi8KKworI2lmbmRlZiBOU0xfVkVSU0lPTl9IUFAKKyNkZWZpbmUgTlNMX1ZFUlNJT05fSFBQCisKK25hbWVzcGFjZSBuc2wgeworCisvKiogTlNMIHZlcnNpb24gZm9sbG93cyBTZW1hbnRpYyBWZXJzaW9uaW5nIDIuMC4wIHNwZWNpZmljYXRpb24KKyAqICBodHRwOi8vc2VtdmVyLm9yZy8KKyAqLworCisvLyBUbyBjaGFuZ2UgdmVyc2lvbiBudW1iZXIsIG1vZGlmeSBWRVJTSU9OIHZhcmlhYmxlIGluIHRvcC1sZXZlbCB3c2NyaXB0LgorCisvKiogXGJyaWVmIE5TTCB2ZXJzaW9uIHJlcHJlc2VudGVkIGFzIGFuIGludGVnZXIKKyAqCisgKiAgTUFKT1IqMTAwMDAwMCArIE1JTk9SKjEwMDAgKyBQQVRDSAorICovCisjZGVmaW5lIE5TTF9WRVJTSU9OIEBWRVJTSU9OQAorCisvKiogXGJyaWVmIE5TTCB2ZXJzaW9uIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nCisgKgorICogIE1BSk9SLk1JTk9SLlBBVENICisgKi8KKyNkZWZpbmUgTlNMX1ZFUlNJT05fU1RSSU5HICJAVkVSU0lPTl9TVFJJTkdAIgorCisvKiogXGJyaWVmIE5TTCB2ZXJzaW9uIHN0cmluZywgaW5jbHVkaW5nIGdpdCBjb21taXQgaW5mb3JtYXRpb24sIGlmIE5TTAorICogICAgICAgICBpcyBidWlsZCBmcm9tIHNwZWNpZmljIGdpdCBjb21taXQKKyAqCisgKiBOU0xfVkVSU0lPTl9CVUlMRF9TVFJJTkcgaXMgb2J0YWluZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIChgTlNMLWAgcHJlZml4IGlzCisgKiBhZnRlcndhcmRzIHJlbW92ZWQpOgorICoKKyAqICAgIGBnaXQgZGVzY3JpYmUgLS1tYXRjaCAnTlNMLSonYAorICoKKyAqIFdoZW4gTlNMIGlzIGJ1aWx0IG5vdCBmcm9tIGdpdCwgTlNMX1ZFUlNJT05fQlVJTERfU1RSSU5HIGVxdWFscyBOU0xfVkVSU0lPTl9TVFJJTkcKKyAqCisgKiBNQUpPUi5NSU5PUi5QQVRDSCgtcmVsZWFzZS1jYW5kaWRhdGUtdGFnKSgtKG51bWJlci1vZi1jb21taXRzLXNpbmNlLXRhZyktQ09NTUlULUhBU0gpCisgKgorICogRXhhbXBsZSwgMC4xLjAtcmMxLTEtZzVjODY1NzAKKyAqLworI2RlZmluZSBOU0xfVkVSU0lPTl9CVUlMRF9TVFJJTkcgIkBWRVJTSU9OX0JVSUxEQCIKKworLy8vIE1BSk9SIHZlcnNpb24KKyNkZWZpbmUgTlNMX1ZFUlNJT05fTUFKT1IgQFZFUlNJT05fTUFKT1JACisvLy8gTUlOT1IgdmVyc2lvbgorI2RlZmluZSBOU0xfVkVSU0lPTl9NSU5PUiBAVkVSU0lPTl9NSU5PUkAKKy8vLyBQQVRDSCB2ZXJzaW9uCisjZGVmaW5lIE5TTF9WRVJTSU9OX1BBVENIIEBWRVJTSU9OX1BBVENIQAorCit9IC8vIG5hbWVzcGFjZSBuc2wKKworI2VuZGlmIC8vIE5TTF9WRVJTSU9OX0hQUApkaWZmIC0tZ2l0IGEvd2FmIGIvd2FmCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJhYmYzNjUKLS0tIC9kZXYvbnVsbAorKysgYi93YWYKQEAgLTAsMCArMSwxNjggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogSVNPODg1OS0xCisjIFRob21hcyBOYWd5LCAyMDA1LTIwMTQKKworIiIiCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKworMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKzMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUgorSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HCitJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiCisKK2ltcG9ydCBvcywgc3lzCisKK1ZFUlNJT049IjEuOC4wIgorUkVWSVNJT049IjhiNzk2YzA2OGIzNDc2YzY5OTI0NmY4NDMxMTAzMWYwIgorSU5TVEFMTD0nJworQzE9JyMuJworQzI9JyMtJworQzM9JyMlJworY3dkID0gb3MuZ2V0Y3dkKCkKK2pvaW4gPSBvcy5wYXRoLmpvaW4KKworCitXQUY9J3dhZicKK2RlZiBiKHgpOgorCXJldHVybiB4CitpZiBzeXMuaGV4dmVyc2lvbj4weDMwMDAwMGY6CisJV0FGPSd3YWYzJworCWRlZiBiKHgpOgorCQlyZXR1cm4geC5lbmNvZGUoKQorCitkZWYgZXJyKG0pOgorCXByaW50KCgnXDAzM1s5MW1FcnJvcjogJXNcMDMzWzBtJyAlIG0pKQorCXN5cy5leGl0KDEpCisKK2RlZiB1bnBhY2tfd2FmZGlyKGRpcik6CisJZiA9IG9wZW4oc3lzLmFyZ3ZbMF0sJ3JiJykKKwljID0gJ2NvcnJ1cHQgYXJjaGl2ZSAoJWQpJworCXdoaWxlIDE6CisJCWxpbmUgPSBmLnJlYWRsaW5lKCkKKwkJaWYgbm90IGxpbmU6IGVycigncnVuIHdhZi1saWdodCBmcm9tIGEgZm9sZGVyIGNvbnRhaW5pbmcgd2FmbGliJykKKwkJaWYgbGluZSA9PSBiKCcjPT0+XG4nKToKKwkJCXR4dCA9IGYucmVhZGxpbmUoKQorCQkJaWYgbm90IHR4dDogZXJyKGMgJSAxKQorCQkJaWYgZi5yZWFkbGluZSgpICE9IGIoJyM8PT1cbicpOiBlcnIoYyAlIDIpCisJCQlicmVhaworCWlmIG5vdCB0eHQ6IGVycihjICUgMykKKwl0eHQgPSB0eHRbMTotMV0ucmVwbGFjZShiKEMxKSwgYignXG4nKSkucmVwbGFjZShiKEMyKSwgYignXHInKSkucmVwbGFjZShiKEMzKSwgYignXHgwMCcpKQorCisJaW1wb3J0IHNodXRpbCwgdGFyZmlsZQorCXRyeTogc2h1dGlsLnJtdHJlZShkaXIpCisJZXhjZXB0IE9TRXJyb3I6IHBhc3MKKwl0cnk6CisJCWZvciB4IGluICgnVG9vbHMnLCAnZXh0cmFzJyk6CisJCQlvcy5tYWtlZGlycyhqb2luKGRpciwgJ3dhZmxpYicsIHgpKQorCWV4Y2VwdCBPU0Vycm9yOgorCQllcnIoIkNhbm5vdCB1bnBhY2sgd2FmIGxpYiBpbnRvICVzXG5Nb3ZlIHdhZiBpbiBhIHdyaXRhYmxlIGRpcmVjdG9yeSIgJSBkaXIpCisKKwlvcy5jaGRpcihkaXIpCisJdG1wID0gJ3QuYnoyJworCXQgPSBvcGVuKHRtcCwnd2InKQorCXRyeTogdC53cml0ZSh0eHQpCisJZmluYWxseTogdC5jbG9zZSgpCisKKwl0cnk6CisJCXQgPSB0YXJmaWxlLm9wZW4odG1wKQorCWV4Y2VwdDoKKwkJdHJ5OgorCQkJb3Muc3lzdGVtKCdidW56aXAyIHQuYnoyJykKKwkJCXQgPSB0YXJmaWxlLm9wZW4oJ3QnKQorCQkJdG1wID0gJ3QnCisJCWV4Y2VwdDoKKwkJCW9zLmNoZGlyKGN3ZCkKKwkJCXRyeTogc2h1dGlsLnJtdHJlZShkaXIpCisJCQlleGNlcHQgT1NFcnJvcjogcGFzcworCQkJZXJyKCJXYWYgY2Fubm90IGJlIHVucGFja2VkLCBjaGVjayB0aGF0IGJ6aXAyIHN1cHBvcnQgaXMgcHJlc2VudCIpCisKKwl0cnk6CisJCWZvciB4IGluIHQ6IHQuZXh0cmFjdCh4KQorCWZpbmFsbHk6CisJCXQuY2xvc2UoKQorCisJZm9yIHggaW4gKCdUb29scycsICdleHRyYXMnKToKKwkJb3MuY2htb2Qoam9pbignd2FmbGliJyx4KSwgNDkzKQorCisJaWYgc3lzLmhleHZlcnNpb248MHgzMDAwMDBmOgorCQlzeXMucGF0aCA9IFtqb2luKGRpciwgJ3dhZmxpYicpXSArIHN5cy5wYXRoCisJCWltcG9ydCBmaXhweTIKKwkJZml4cHkyLmZpeGRpcihkaXIpCisKKwlvcy5yZW1vdmUodG1wKQorCW9zLmNoZGlyKGN3ZCkKKworCXRyeTogZGlyID0gdW5pY29kZShkaXIsICdtYmNzJykKKwlleGNlcHQ6IHBhc3MKKwl0cnk6CisJCWZyb20gY3R5cGVzIGltcG9ydCB3aW5kbGwKKwkJd2luZGxsLmtlcm5lbDMyLlNldEZpbGVBdHRyaWJ1dGVzVyhkaXIsIDIpCisJZXhjZXB0OgorCQlwYXNzCisKK2RlZiB0ZXN0KGRpcik6CisJdHJ5OgorCQlvcy5zdGF0KGpvaW4oZGlyLCAnd2FmbGliJykpCisJCXJldHVybiBvcy5wYXRoLmFic3BhdGgoZGlyKQorCWV4Y2VwdCBPU0Vycm9yOgorCQlwYXNzCisKK2RlZiBmaW5kX2xpYigpOgorCW5hbWUgPSBzeXMuYXJndlswXQorCWJhc2UgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKG5hbWUpKQorCisJI2RldnMgdXNlICRXQUZESVIKKwl3PXRlc3Qob3MuZW52aXJvbi5nZXQoJ1dBRkRJUicsICcnKSkKKwlpZiB3OiByZXR1cm4gdworCisJI3dhZi1saWdodAorCWlmIG5hbWUuZW5kc3dpdGgoJ3dhZi1saWdodCcpOgorCQl3ID0gdGVzdChiYXNlKQorCQlpZiB3OiByZXR1cm4gdworCQllcnIoJ3dhZi1saWdodCByZXF1aXJlcyB3YWZsaWIgLT4gZXhwb3J0IFdBRkRJUj0vZm9sZGVyJykKKworCWRpcm5hbWUgPSAnJXMtJXMtJXMnICUgKFdBRiwgVkVSU0lPTiwgUkVWSVNJT04pCisJZm9yIGkgaW4gKElOU1RBTEwsJy91c3InLCcvdXNyL2xvY2FsJywnL29wdCcpOgorCQl3ID0gdGVzdChpICsgJy9saWIvJyArIGRpcm5hbWUpCisJCWlmIHc6IHJldHVybiB3CisKKwkjd2FmLWxvY2FsCisJZGlyID0gam9pbihiYXNlLCAoc3lzLnBsYXRmb3JtICE9ICd3aW4zMicgYW5kICcuJyBvciAnJykgKyBkaXJuYW1lKQorCXcgPSB0ZXN0KGRpcikKKwlpZiB3OiByZXR1cm4gdworCisJI3VucGFjaworCXVucGFja193YWZkaXIoZGlyKQorCXJldHVybiBkaXIKKword2FmZGlyID0gZmluZF9saWIoKQorc3lzLnBhdGguaW5zZXJ0KDAsIHdhZmRpcikKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKworCWZyb20gd2FmbGliIGltcG9ydCBTY3JpcHRpbmcKKwlTY3JpcHRpbmcud2FmX2VudHJ5X3BvaW50KGN3ZCwgVkVSU0lPTiwgd2FmZGlyKQorCisjPT0+CisjQlpoOTFBWSZTWVqYIvEDGLZ///+8Akj///////////////+AhiKip1DAIyWRIyUBID4UBFhh5Bxu9roQIyUjJSMlIyUjJSMlIyUjJSMlIyUjJSMl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bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKK2VpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK05TTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7Cit3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorTlNMLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisiIiIKKworZnJvbSB3YWZsaWIgaW1wb3J0IExvZ3MsIFV0aWxzLCBDb250ZXh0CitpbXBvcnQgb3MKKworVkVSU0lPTiA9ICIwLjEuMCIKK0FQUE5BTUUgPSAibnNsIgorCitkZWYgb3B0aW9ucyhvcHQpOgorICAgIG9wdC5sb2FkKFsnY29tcGlsZXJfY3h4JywgJ2dudV9kaXJzJywgJ2Nfb3N4J10pCisgICAgb3B0LmxvYWQoWydkZWZhdWx0LWNvbXBpbGVyLWZsYWdzJywgJ2Jvb3N0JywgJ2NyeXB0b3BwJywKKyAgICAgICAgICAgICAgJ3NxbGl0ZTMnLCAnZG94eWdlbicsICdzcGhpbnhfYnVpbGQnXSwKKyAgICAgICAgICAgICB0b29sZGlyPVsnLndhZi10b29scyddKQorCisgICAgb3B0ID0gb3B0LmFkZF9vcHRpb25fZ3JvdXAoJ05TTCBPcHRpb25zJykKKworICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdGVzdHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBkZXN0PSd3aXRoX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ2J1aWxkIHVuaXQgdGVzdHMnJycpCisKKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXRvb2xzJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwgZGVzdD0nd2l0aF90b29scycsCisgICAgICAgICAgICAgICAgICAgaGVscD0nJydEbyBub3QgYnVpbGQgdG9vbHMnJycpCisKKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXNxbGl0ZS1sb2NraW5nJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICBkZXN0PSd3aXRoX3NxbGl0ZV9sb2NraW5nJywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ0Rpc2FibGUgZmlsZXN5c3RlbSBsb2NraW5nIGluIHNxbGl0ZTMgZGF0YWJhc2UgJycnCisgICAgICAgICAgICAgICAgICAgICAgICAnJycodXNlIHVuaXgtZG90IGxvY2tpbmcgbWVjaGFuaXNtIGluc3RlYWQpLiAnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICcnJ1RoaXMgb3B0aW9uIG1heSBiZSBuZWNlc3NhcnkgaWYgaG9tZSBkaXJlY3RvcnkgaXMgaG9zdGVkIG9uIE5GUy4nJycpCisKK2RlZiBjb25maWd1cmUoY29uZik6CisgICAgY29uZi5sb2FkKFsnY29tcGlsZXJfY3h4JywgJ2dudV9kaXJzJywgJ2Nfb3N4JywKKyAgICAgICAgICAgICAgICdkZWZhdWx0LWNvbXBpbGVyLWZsYWdzJywgJ2Jvb3N0JywgJ2NyeXB0b3BwJywKKyAgICAgICAgICAgICAgICdzcWxpdGUzJywgJ2RveHlnZW4nLCAnc3BoaW54X2J1aWxkJ10pCisKKyAgICBjb25mLmVudlsnV0lUSF9URVNUUyddID0gY29uZi5vcHRpb25zLndpdGhfdGVzdHMKKyAgICBjb25mLmVudlsnV0lUSF9UT09MUyddID0gY29uZi5vcHRpb25zLndpdGhfdG9vbHMKKworICAgIGNvbmYuZmluZF9wcm9ncmFtKCdzaCcsIHZhcj0nU0gnLCBtYW5kYXRvcnk9VHJ1ZSkKKworICAgIGNvbmYuY2hlY2tfY3h4KGxpYj0ncHRocmVhZCcsIHVzZWxpYl9zdG9yZT0nUFRIUkVBRCcsIGRlZmluZV9uYW1lPSdIQVZFX1BUSFJFQUQnLAorICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeT1GYWxzZSkKKyAgICBjb25mLmNoZWNrX3NxbGl0ZTMobWFuZGF0b3J5PVRydWUpCisgICAgY29uZi5jaGVja19jcnlwdG9wcChtYW5kYXRvcnk9VHJ1ZSwgdXNlPSdQVEhSRUFEJykKKworICAgIGNvbmYuY2hlY2tfY2ZnKHBhY2thZ2U9J2xpYm5kbi1jeHgnLCBhcmdzPVsnLS1jZmxhZ3MnLCAnLS1saWJzJ10sCisgICAgICAgICAgICAgICAgICAgdXNlbGliX3N0b3JlPSdORE5fQ1hYJywgbWFuZGF0b3J5PVRydWUpCisKKyAgICBVU0VEX0JPT1NUX0xJQlMgPSBbJ3N5c3RlbScsICdmaWxlc3lzdGVtJywgJ2RhdGVfdGltZScsICdpb3N0cmVhbXMnLAorICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3JhbV9vcHRpb25zJywgJ2Nocm9ubyddCisgICAgaWYgY29uZi5lbnZbJ1dJVEhfVEVTVFMnXToKKyAgICAgICAgVVNFRF9CT09TVF9MSUJTICs9IFsndW5pdF90ZXN0X2ZyYW1ld29yayddCisgICAgICAgIGNvbmYuZGVmaW5lKCdIQVZFX1RFU1RTJywgMSkKKworICAgIGNvbmYuY2hlY2tfYm9vc3QobGliPVVTRURfQk9PU1RfTElCUywgbWFuZGF0b3J5PVRydWUpCisgICAgaWYgY29uZi5lbnYuQk9PU1RfVkVSU0lPTl9OVU1CRVIgPCAxMDQ4MDA6CisgICAgICAgIExvZ3MuZXJyb3IoIk1pbmltdW0gcmVxdWlyZWQgYm9vc3QgdmVyc2lvbiBpcyAxLjQ4LjAiKQorICAgICAgICBMb2dzLmVycm9yKCJQbGVhc2UgdXBncmFkZSB5b3VyIGRpc3RyaWJ1dGlvbiBvciBpbnN0YWxsIGN1c3RvbSBib29zdCBsaWJyYXJpZXMiICsKKyAgICAgICAgICAgICAgICAgICAgIiAoaHR0cDovL3JlZG1pbmUubmFtZWQtZGF0YS5uZXQvcHJvamVjdHMvbmZkL3dpa2kvQm9vc3RfRkFRKSIpCisgICAgICAgIHJldHVybgorCisgICAgaWYgbm90IGNvbmYub3B0aW9ucy53aXRoX3NxbGl0ZV9sb2NraW5nOgorICAgICAgICBjb25mLmRlZmluZSgnRElTQUJMRV9TUUxJVEUzX0ZTX0xPQ0tJTkcnLCAxKQorCisgICAgY29uZi5kZWZpbmUoJ0RFRkFVTFRfQ09ORklHX0ZJTEUnLCAnJXMvbmRuL25zbC5jb25mJyAlIGNvbmYuZW52WydTWVNDT05GRElSJ10pCisKKyAgICBjb25mLndyaXRlX2NvbmZpZ19oZWFkZXIoJ2NvbmZpZy5ocHAnKQorCitkZWYgYnVpbGQoYmxkKToKKyAgICB2ZXJzaW9uKGJsZCkKKworICAgIGJsZChmZWF0dXJlcz0ic3Vic3QiLAorICAgICAgICBuYW1lPSd2ZXJzaW9uJywKKyAgICAgICAgc291cmNlPSd2ZXJzaW9uLmhwcC5pbicsCisgICAgICAgIHRhcmdldD0ndmVyc2lvbi5ocHAnLAorICAgICAgICBpbnN0YWxsX3BhdGg9Tm9uZSwKKyAgICAgICAgVkVSU0lPTl9TVFJJTkc9VkVSU0lPTl9CQVNFLAorICAgICAgICBWRVJTSU9OX0JVSUxEPVZFUlNJT04sCisgICAgICAgIFZFUlNJT049aW50KFZFUlNJT05fU1BMSVRbMF0pICogMTAwMDAwMCArCisgICAgICAgICAgICAgICAgaW50KFZFUlNJT05fU1BMSVRbMV0pICogMTAwMCArCisgICAgICAgICAgICAgICAgaW50KFZFUlNJT05fU1BMSVRbMl0pLAorICAgICAgICBWRVJTSU9OX01BSk9SPVZFUlNJT05fU1BMSVRbMF0sCisgICAgICAgIFZFUlNJT05fTUlOT1I9VkVSU0lPTl9TUExJVFsxXSwKKyAgICAgICAgVkVSU0lPTl9QQVRDSD1WRVJTSU9OX1NQTElUWzJdLAorICAgICAgICApCisKKyAgICBjb3JlID0gYmxkKAorICAgICAgICB0YXJnZXQ9J2NvcmUtb2JqZWN0cycsCisgICAgICAgIG5hbWU9J2NvcmUtb2JqZWN0cycsCisgICAgICAgIGZlYXR1cmVzPSdjeHgnLAorICAgICAgICBzb3VyY2U9YmxkLnBhdGguYW50X2dsb2IoWydjb3JlLyoqLyouY3BwJ10pLAorICAgICAgICB1c2U9J3ZlcnNpb24gQk9PU1QgTkROX0NYWCBDUllQVE9QUCBTUUxJVEUzJywKKyAgICAgICAgaW5jbHVkZXM9Jy4gY29yZScsCisgICAgICAgIGV4cG9ydF9pbmNsdWRlcz0nLiBjb3JlJywKKyAgICAgICAgaGVhZGVycz0nY29tbW9uLmhwcCcsCisgICAgICAgICkKKworICAgIGxvZ2dlcl9vYmplY3RzID0gYmxkKAorICAgICAgICB0YXJnZXQ9J2RhZW1vbi1vYmplY3RzJywKKyAgICAgICAgbmFtZT0nZGFlbW9uLW9iamVjdHMnLAorICAgICAgICBmZWF0dXJlcz0nY3h4JywKKyAgICAgICAgc291cmNlPWJsZC5wYXRoLmFudF9nbG9iKFsnZGFlbW9uLyoqLyouY3BwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsPVsnZGFlbW9uL21haW4uY3BwJ10pLAorICAgICAgICB1c2U9J2NvcmUtb2JqZWN0cycsCisgICAgICAgIGluY2x1ZGVzPSdkYWVtb24nLAorICAgICAgICBleHBvcnRfaW5jbHVkZXM9J2RhZW1vbicsCisgICAgICAgICkKKworICAgIGJsZCh0YXJnZXQ9J2Jpbi9uc2wnLAorICAgICAgICBmZWF0dXJlcz0nY3h4IGN4eHByb2dyYW0nLAorICAgICAgICBzb3VyY2U9J2RhZW1vbi9tYWluLmNwcCcsCisgICAgICAgIHVzZT0nZGFlbW9uLW9iamVjdHMnLAorICAgICAgICApCisKKyAgICBpZiBibGQuZW52WydXSVRIX1RFU1RTJ106CisgICAgICAgIGJsZC5yZWN1cnNlKCd0ZXN0cycpCisKKyAgICBpZiBibGQuZW52WydXSVRIX1RPT0xTJ106CisgICAgICAgIGJsZC5yZWN1cnNlKCJ0b29scyIpCisKKyAgICBibGQoZmVhdHVyZXM9InN1YnN0IiwKKyAgICAgICAgc291cmNlPSduc2wuY29uZi5zYW1wbGUuaW4nLAorICAgICAgICB0YXJnZXQ9J25zbC5jb25mLnNhbXBsZScsCisgICAgICAgIGluc3RhbGxfcGF0aD0iJHtTWVNDT05GRElSfS9uZG4iLAorICAgICAgICApCisKKyAgICBpZiBibGQuZW52WydTUEhJTlhfQlVJTEQnXToKKyAgICAgICAgYmxkKGZlYXR1cmVzPSJzcGhpbngiLAorICAgICAgICAgICAgYnVpbGRlcj0ibWFuIiwKKyAgICAgICAgICAgIG91dGRpcj0iZG9jcy9tYW5wYWdlcyIsCisgICAgICAgICAgICBjb25maWc9ImRvY3MvY29uZi5weSIsCisgICAgICAgICAgICBzb3VyY2U9YmxkLnBhdGguYW50X2dsb2IoJ2RvY3MvbWFucGFnZXMvKiovKi5yc3QnKSwKKyAgICAgICAgICAgIGluc3RhbGxfcGF0aD0iJHtNQU5ESVJ9LyIsCisgICAgICAgICAgICBWRVJTSU9OPVZFUlNJT04pCisKK2RlZiBkb2NzKGJsZCk6CisgICAgZnJvbSB3YWZsaWIgaW1wb3J0IE9wdGlvbnMKKyAgICBPcHRpb25zLmNvbW1hbmRzID0gWydkb3h5Z2VuJywgJ3NwaGlueCddICsgT3B0aW9ucy5jb21tYW5kcworCitkZWYgZG94eWdlbihibGQpOgorICAgIHZlcnNpb24oYmxkKQorCisgICAgaWYgbm90IGJsZC5lbnYuRE9YWUdFTjoKKyAgICAgICAgTG9ncy5lcnJvcigiRVJST1I6IGNhbm5vdCBidWlsZCBkb2N1bWVudGF0aW9uIChgZG94eWdlbicgaXMgbm90IGZvdW5kIGluICRQQVRIKSIpCisgICAgZWxzZToKKyAgICAgICAgYmxkKGZlYXR1cmVzPSJzdWJzdCIsCisgICAgICAgICAgICBuYW1lPSJkb3h5Z2VuLWNvbmYiLAorICAgICAgICAgICAgc291cmNlPVsiZG9jcy9kb3h5Z2VuLmNvbmYuaW4iLAorICAgICAgICAgICAgICAgICAgICAiZG9jcy9uYW1lZF9kYXRhX3RoZW1lL25hbWVkX2RhdGFfZm9vdGVyLXdpdGgtYW5hbHl0aWNzLmh0bWwuaW4iXSwKKyAgICAgICAgICAgIHRhcmdldD1bImRvY3MvZG94eWdlbi5jb25mIiwKKyAgICAgICAgICAgICAgICAgICAgImRvY3MvbmFtZWRfZGF0YV90aGVtZS9uYW1lZF9kYXRhX2Zvb3Rlci13aXRoLWFuYWx5dGljcy5odG1sIl0sCisgICAgICAgICAgICBWRVJTSU9OPVZFUlNJT04sCisgICAgICAgICAgICBIVE1MX0ZPT1RFUj0iLi4vYnVpbGQvZG9jcy9uYW1lZF9kYXRhX3RoZW1lL25hbWVkX2RhdGFfZm9vdGVyLXdpdGgtYW5hbHl0aWNzLmh0bWwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MuZ2V0ZW52KCdHT09HTEVfQU5BTFlUSUNTJywgTm9uZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICIuLi9kb2NzL25hbWVkX2RhdGFfdGhlbWUvbmFtZWRfZGF0YV9mb290ZXIuaHRtbCIsCisgICAgICAgICAgICBHT09HTEVfQU5BTFlUSUNTPW9zLmdldGVudignR09PR0xFX0FOQUxZVElDUycsICIiKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBibGQoZmVhdHVyZXM9ImRveHlnZW4iLAorICAgICAgICAgICAgZG94eWZpbGU9J2RvY3MvZG94eWdlbi5jb25mJywKKyAgICAgICAgICAgIHVzZT0iZG94eWdlbi1jb25mIikKKworZGVmIHNwaGlueChibGQpOgorICAgIHZlcnNpb24oYmxkKQorCisgICAgaWYgbm90IGJsZC5lbnYuU1BISU5YX0JVSUxEOgorICAgICAgICBibGQuZmF0YWwoIkVSUk9SOiBjYW5ub3QgYnVpbGQgZG9jdW1lbnRhdGlvbiAoYHNwaGlueC1idWlsZCcgaXMgbm90IGZvdW5kIGluICRQQVRIKSIpCisgICAgZWxzZToKKyAgICAgICAgYmxkKGZlYXR1cmVzPSJzcGhpbngiLAorICAgICAgICAgICAgb3V0ZGlyPSJkb2NzIiwKKyAgICAgICAgICAgIHNvdXJjZT1ibGQucGF0aC5hbnRfZ2xvYigiZG9jcy8qKi8qLnJzdCIpLAorICAgICAgICAgICAgY29uZmlnPSJkb2NzL2NvbmYucHkiLAorICAgICAgICAgICAgVkVSU0lPTj1WRVJTSU9OKQorCisKK2RlZiB2ZXJzaW9uKGN0eCk6CisgICAgaWYgZ2V0YXR0cihDb250ZXh0LmdfbW9kdWxlLCAnVkVSU0lPTl9CQVNFJywgTm9uZSk6CisgICAgICAgIHJldHVybgorCisgICAgQ29udGV4dC5nX21vZHVsZS5WRVJTSU9OX0JBU0UgPSBDb250ZXh0LmdfbW9kdWxlLlZFUlNJT04KKyAgICBDb250ZXh0LmdfbW9kdWxlLlZFUlNJT05fU1BMSVQgPSBbdiBmb3IgdiBpbiBWRVJTSU9OX0JBU0Uuc3BsaXQoJy4nKV0KKworICAgIHRyeToKKyAgICAgICAgY21kID0gWydnaXQnLCAnZGVzY3JpYmUnLCAnLS1tYXRjaCcsICduc2wtKiddCisgICAgICAgIHAgPSBVdGlscy5zdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PVV0aWxzLnN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPU5vbmUsIHN0ZGluPU5vbmUpCisgICAgICAgIG91dCA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCisgICAgICAgIGlmIHAucmV0dXJuY29kZSA9PSAwIGFuZCBvdXQgIT0gIiI6CisgICAgICAgICAgICBDb250ZXh0LmdfbW9kdWxlLlZFUlNJT04gPSBvdXRbODpdCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCg==