ZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL0FkZC1lcnJvci1zaWduYWwtZW1pc3Npb24tZm9yLW1pc3NpbmctcGx1Z2lucy5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL0FkZC1lcnJvci1zaWduYWwtZW1pc3Npb24tZm9yLW1pc3NpbmctcGx1Z2lucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTJkNDZkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoCkBAIC0wLDAgKzEsMjUyIEBACitGcm9tIGQ2NGM3ZWRiNjZmNGE2NGZmNDljNDMwNmNmNzdmZDI2OWI3MDc5YWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxNiBNYXIgMjAxNSAxMzo0NTozMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgZXJyb3Igc2lnbmFsIGVtaXNzaW9uIGZvciBtaXNzaW5nIHBsdWdpbnMKKworQWRkIGEgbWlzc2luZyBwbHVnaW5zIGVycm9yIHNpZ25hbCB0byBnc3QtcGxheWVyLiBOb3RlIHRoYXQgdGhpcyBlcnJvcgorZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGUgcGxheWJhY2sgaGFzIGNvbXBsZXRlbHkgZmFpbGVkLCBidXQgaW4KK3ByYWN0aWNlIHRoZSB1c2VyIGV4cGVyaWVuY2Ugd2lsbCBiZSBiYWQgKHRoaW5rLCBlLmcuIG9mIGEgbXA0IGZpbGUKK3doZXJlIEguMjY0IGNvZGVjIGlzIG1pc3Npbmc6IEFBQyBwbGF5YmFjayBzdGlsbCB3b3Jrcy4uLikuCisKK1VzZSB0aGUgc2lnbmFsIGluIGd0ay1wbGF5IHRvIHNob3cgYSBpbmZvYmFyIGlmIHBsdWdpbnMgYXJlIG1pc3NpbmcuCisKK1N1Ym1pdHRlZCB1cHN0cmVhbSBhdCBodHRwczovL2dpdGh1Yi5jb20vc2Ryb2VnZS9nc3QtcGxheWVyL3B1bGwvMTEKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8ICAyICstCisgZ3RrL2d0ay1wbGF5LmMgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgfCAyMiArKysrKysrKysrKysrKysrKysrCisgbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmggfCAgMyArKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDkwYWI3NGMuLjZjZGI0ZWIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTUzLDcgKzUzLDcgQEAgQUNfU1VCU1QoTFRfQUdFKQorIFBLR19QUk9HX1BLR19DT05GSUcKKyAKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCLCBbZ2xpYi0yLjAgZ29iamVjdC0yLjBdKQorLVBLR19DSEVDS19NT0RVTEVTKEdTVFJFQU1FUiwgW2dzdHJlYW1lci0xLjAgPj0gMS40IGdzdHJlYW1lci12aWRlby0xLjAgPj0gMS40XSkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhHU1RSRUFNRVIsIFtnc3RyZWFtZXItMS4wID49IDEuNCBnc3RyZWFtZXItdmlkZW8tMS4wID49IDEuNCBnc3RyZWFtZXItcGJ1dGlscy0xLjBdKQorIAorIEdMSUJfUFJFRklYPSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ2xpYi0yLjBgIgorIEFDX1NVQlNUKEdMSUJfUFJFRklYKQorZGlmZiAtLWdpdCBhL2d0ay9ndGstcGxheS5jIGIvZ3RrL2d0ay1wbGF5LmMKK2luZGV4IGI5Mjc3M2IuLmUyYjYwNWEgMTAwNjQ0CistLS0gYS9ndGsvZ3RrLXBsYXkuYworKysrIGIvZ3RrL2d0ay1wbGF5LmMKK0BAIC0zMCw2ICszMCw4IEBAIHR5cGVkZWYgc3RydWN0CisgICBHdGtXaWRnZXQgKnByZXZfYnV0dG9uLCAqbmV4dF9idXR0b247CisgICBHdGtXaWRnZXQgKnNlZWtiYXI7CisgICBHdGtXaWRnZXQgKnZpZGVvX2FyZWE7CisrICBHdGtXaWRnZXQgKmluZm9fbGFiZWw7CisrICBHdGtXaWRnZXQgKmluZm9fYmFyOworICAgR3RrV2lkZ2V0ICp2b2x1bWVfYnV0dG9uOworICAgZ3Vsb25nIHNlZWtiYXJfdmFsdWVfY2hhbmdlZF9zaWduYWxfaWQ7CisgICBnYm9vbGVhbiBwbGF5aW5nOworQEAgLTE0MSw2ICsxNDMsMTMgQEAgcGxheV9wYXVzZV9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQorIH0KKyAKKyBzdGF0aWMgdm9pZAorK2NsZWFyX21pc3NpbmdfcGx1Z2lucyAoR3RrUGxheSAqIHBsYXkpCisreworKyAgZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwgKHBsYXktPmluZm9fbGFiZWwpLCAiIik7CisrICBndGtfd2lkZ2V0X2hpZGUgKHBsYXktPmluZm9fYmFyKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKyBza2lwX3ByZXZfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKKyB7CisgICBHTGlzdCAqcHJldjsKK0BAIC0xNTUsNiArMTY0LDcgQEAgc2tpcF9wcmV2X2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgR3RrUGxheSAqIHBsYXkpCisgCisgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPm5leHRfYnV0dG9uLCBUUlVFKTsKKyAgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheS0+cGxheWVyLCBwcmV2LT5kYXRhKTsKKysgIGNsZWFyX21pc3NpbmdfcGx1Z2lucyAocGxheSk7CisgICBnc3RfcGxheWVyX3BsYXkgKHBsYXktPnBsYXllcik7CisgICBzZXRfdGl0bGUgKHBsYXksIHByZXYtPmRhdGEpOworICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlIChwbGF5LT5wcmV2X2J1dHRvbiwgZ19saXN0X3ByZXZpb3VzIChwcmV2KSAhPSBOVUxMKTsKK0BAIC0xNzUsNiArMTg1LDcgQEAgc2tpcF9uZXh0X2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgR3RrUGxheSAqIHBsYXkpCisgCisgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPnByZXZfYnV0dG9uLCBUUlVFKTsKKyAgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheS0+cGxheWVyLCBuZXh0LT5kYXRhKTsKKysgIGNsZWFyX21pc3NpbmdfcGx1Z2lucyAocGxheSk7CisgICBnc3RfcGxheWVyX3BsYXkgKHBsYXktPnBsYXllcik7CisgICBzZXRfdGl0bGUgKHBsYXksIG5leHQtPmRhdGEpOworICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlIChwbGF5LT5uZXh0X2J1dHRvbiwgZ19saXN0X25leHQgKG5leHQpICE9IE5VTEwpOworQEAgLTE5MywxMCArMjA0LDE2IEBAIHZvbHVtZV9jaGFuZ2VkX2NiIChHdGtTY2FsZUJ1dHRvbiAqIGJ1dHRvbiwgZ2RvdWJsZSB2YWx1ZSwgR3RrUGxheSAqIHBsYXkpCisgICBnc3RfcGxheWVyX3NldF92b2x1bWUgKHBsYXktPnBsYXllciwgdmFsdWUpOworIH0KKyAKKyt2b2lkCisraW5mb19iYXJfcmVzcG9uc2VfY2IgKEd0a0luZm9CYXIgKiBiYXIsIGdpbnQgcmVzcG9uc2UsIEd0a1BsYXkgKiBwbGF5KQorK3sKKysgIGd0a193aWRnZXRfaGlkZSAoR1RLX1dJREdFVCAoYmFyKSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgY3JlYXRlX3VpIChHdGtQbGF5ICogcGxheSkKKyB7CistICBHdGtXaWRnZXQgKmNvbnRyb2xzLCAqbWFpbl9oYm94LCAqbWFpbl92Ym94OworKyAgR3RrV2lkZ2V0ICpjb250cm9scywgKm1haW5faGJveCwgKm1haW5fdmJveCwgKmluZm9fYmFyLCAqY29udGVudF9hcmVhOworIAorICAgcGxheS0+d2luZG93ID0gZ3RrX3dpbmRvd19uZXcgKEdUS19XSU5ET1dfVE9QTEVWRUwpOworICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHBsYXktPndpbmRvdyksICJkZWxldGUtZXZlbnQiLAorQEAgLTIwOCw2ICsyMjUsMjAgQEAgY3JlYXRlX3VpIChHdGtQbGF5ICogcGxheSkKKyAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXktPnZpZGVvX2FyZWEsICJyZWFsaXplIiwKKyAgICAgICBHX0NBTExCQUNLICh2aWRlb19hcmVhX3JlYWxpemVfY2IpLCBwbGF5KTsKKyAKKysgIHBsYXktPmluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldyAoKTsKKysgIGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlIChHVEtfSU5GT19CQVIgKHBsYXktPmluZm9fYmFyKSwKKysgICAgICBHVEtfTUVTU0FHRV9XQVJOSU5HKTsKKysgIC8vZ3RrX2luZm9fYmFyX3NldF9zaG93X2Nsb3NlX2J1dHRvbiAoR1RLX0lORk9fQkFSIChwbGF5LT5pbmZvX2JhciksCisrICAvLyAgICBUUlVFKTsKKysgIGd0a193aWRnZXRfc2V0X25vX3Nob3dfYWxsIChwbGF5LT5pbmZvX2JhciwgVFJVRSk7CisrICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LT5pbmZvX2JhciwgInJlc3BvbnNlIiwKKysgICAgICBHX0NBTExCQUNLIChpbmZvX2Jhcl9yZXNwb25zZV9jYiksIHBsYXkpOworKworKyAgY29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEgKEdUS19JTkZPX0JBUiAocGxheS0+aW5mb19iYXIpKTsKKysgIHBsYXktPmluZm9fbGFiZWwgPSBndGtfbGFiZWxfbmV3ICgiIik7CisrICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoY29udGVudF9hcmVhKSwgcGxheS0+aW5mb19sYWJlbCk7CisrICBndGtfd2lkZ2V0X3Nob3cgKHBsYXktPmluZm9fbGFiZWwpOworKworICAgLyogVW5pZmllZCBwbGF5L3BhdXNlIGJ1dHRvbiAqLworICAgcGxheS0+cGxheV9wYXVzZV9idXR0b24gPQorICAgICAgIGd0a19idXR0b25fbmV3X2Zyb21faWNvbl9uYW1lICgibWVkaWEtcGxheWJhY2stcGF1c2UiLAorQEAgLTI1OCw2ICsyODksNyBAQCBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQorIAorICAgbWFpbl92Ym94ID0gZ3RrX2JveF9uZXcgKEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKG1haW5fdmJveCksIG1haW5faGJveCwgVFJVRSwgVFJVRSwgMCk7CisrICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKG1haW5fdmJveCksIHBsYXktPmluZm9fYmFyLCBGQUxTRSwgRkFMU0UsIDApOworICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChtYWluX3Zib3gpLCBjb250cm9scywgRkFMU0UsIEZBTFNFLCAwKTsKKyAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChwbGF5LT53aW5kb3cpLCBtYWluX3Zib3gpOworIAorQEAgLTMyMiw2ICszNTQsNyBAQCBlb3NfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgR3RrUGxheSAqIHBsYXkpCisgICAgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlIChwbGF5LT5uZXh0X2J1dHRvbiwgZ19saXN0X25leHQgKG5leHQpICE9IE5VTEwpOworIAorICAgICAgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheS0+cGxheWVyLCBuZXh0LT5kYXRhKTsKKysgICAgICBjbGVhcl9taXNzaW5nX3BsdWdpbnMgKHBsYXkpOworICAgICAgIGdzdF9wbGF5ZXJfcGxheSAocGxheS0+cGxheWVyKTsKKyAgICAgICBzZXRfdGl0bGUgKHBsYXksIG5leHQtPmRhdGEpOworICAgICB9IGVsc2UgeworQEAgLTMzMCw2ICszNjMsMjQgQEAgZW9zX2NiIChHc3RQbGF5ZXIgKiB1bnVzZWQsIEd0a1BsYXkgKiBwbGF5KQorICAgfQorIH0KKyAKKytzdGF0aWMgdm9pZAorK2Vycm9yX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIEdFcnJvciAqIGVyciwgR3RrUGxheSAqIHBsYXkpCisreworKyAgY2hhciAqbWVzc2FnZTsKKysKKysgIGlmIChnX2Vycm9yX21hdGNoZXMgKGVyciwgZ3N0X3BsYXllcl9lcnJvcl9xdWFyayAoKSwKKysgICAgICBHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOKSkgeworKyAgICAvLyBhZGQgbWVzc2FnZSB0byBlbmQgb2YgYW55IGV4aXN0aW5nIG1lc3NhZ2U6IHRoZXJlIG1heSBiZQorKyAgICAvLyBtdWx0aXBsZSBtaXNzaW5nIHBsdWdpbnMuCisrICAgIG1lc3NhZ2UgPSBnX3N0cmR1cF9wcmludGYgKCIlcyVzLiAiLAorKyAgICAgICAgZ3RrX2xhYmVsX2dldF90ZXh0IChHVEtfTEFCRUwgKHBsYXktPmluZm9fbGFiZWwpKSwgZXJyLT5tZXNzYWdlKTsKKysgICAgZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwgKHBsYXktPmluZm9fbGFiZWwpLCBtZXNzYWdlKTsKKysgICAgZ19mcmVlIChtZXNzYWdlKTsKKysKKysgICAgZ3RrX3dpZGdldF9zaG93IChwbGF5LT5pbmZvX2Jhcik7CisrICB9CisrfQorKworIGludAorIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiogYXJndikKKyB7CitAQCAtNDIyLDYgKzQ3Myw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiogYXJndikKKyAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXkucGxheWVyLCAidmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiwKKyAgICAgICBHX0NBTExCQUNLICh2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfY2IpLCAmcGxheSk7CisgICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LnBsYXllciwgImVuZC1vZi1zdHJlYW0iLCBHX0NBTExCQUNLIChlb3NfY2IpLCAmcGxheSk7CisrICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LnBsYXllciwgImVycm9yIiwgR19DQUxMQkFDSyAoZXJyb3JfY2IpLCAmcGxheSk7CisgCisgICAvKiBXZSBoYXZlIGZpbGUocykgdGhhdCBuZWVkIHBsYXlpbmcuICovCisgICBzZXRfdGl0bGUgKCZwbGF5LCBnX2xpc3RfZmlyc3QgKHBsYXkudXJpcyktPmRhdGEpOworZGlmZiAtLWdpdCBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKK2luZGV4IGJkNjgyZDkuLjc4ZTdiYTEgMTAwNjQ0CistLS0gYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYworKysrIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKK0BAIC00Nyw2ICs0Nyw3IEBACisgCisgI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisrI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgorIAorIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9wbGF5ZXJfZGVidWcpOworICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9wbGF5ZXJfZGVidWcKK0BAIC0yMzgsNiArMjM5LDcgQEAgZ3N0X3BsYXllcl9jbGFzc19pbml0IChHc3RQbGF5ZXJDbGFzcyAqIGtsYXNzKQorICAgICAgIGdfc2lnbmFsX25ldyAoInZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDIsIEdfVFlQRV9JTlQsIEdfVFlQRV9JTlQpOworKworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTYxOSw2ICs2MjEsMjEgQEAgZXJyb3JfY2IgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQorICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5wcml2LT5sb2NrKTsKKyB9CisgCisrc3RhdGljIHZvaWQKKytlbGVtZW50X2NiIChHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKKyt7CisrICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworKworKyAgaWYgKGdzdF9pc19taXNzaW5nX3BsdWdpbl9tZXNzYWdlIChtc2cpKSB7CisrICAgIGdjaGFyICpkZXNjOworKworKyAgICBkZXNjID0gZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uIChtc2cpOworKyAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwKKysgICAgICAgIEdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU4sICJNaXNzaW5nIHBsdWdpbiAnJXMnIiwgZGVzYykpOworKyAgICBnX2ZyZWUgKGRlc2MpOworKyAgfQorK30KKysKKyBzdGF0aWMgZ2Jvb2xlYW4KKyBlb3NfZGlzcGF0Y2ggKGdwb2ludGVyIHVzZXJfZGF0YSkKKyB7CitAQCAtMTA1OSw2ICsxMDc2LDggQEAgZ3N0X3BsYXllcl9tYWluIChncG9pbnRlciBkYXRhKQorICAgICAgIE5VTEwsIE5VTEwpOworICAgZ19zb3VyY2VfYXR0YWNoIChidXNfc291cmNlLCBzZWxmLT5wcml2LT5jb250ZXh0KTsKKyAKKysgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6ZWxlbWVudCIsCisrICAgICAgR19DQUxMQkFDSyAoZWxlbWVudF9jYiksIHNlbGYpOworICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplcnJvciIsIEdfQ0FMTEJBQ0sgKGVycm9yX2NiKSwKKyAgICAgICBzZWxmKTsKKyAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6ZW9zIiwgR19DQUxMQkFDSyAoZW9zX2NiKSwgc2VsZik7CitAQCAtMTU2MCw2ICsxNTc5LDcgQEAgZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZSAodm9pZCkKKyAgIHN0YXRpYyBnc2l6ZSBpZCA9IDA7CisgICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKKyAgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQpLCAiR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQiLCAiZmFpbGVkIn0sCisrICAgIHtDX0VOVU0gKEdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU4pLCAiR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTiIsICJtaXNzaW5nLXBsdWdpbiJ9LAorICAgICB7MCwgTlVMTCwgTlVMTH0KKyAgIH07CisgCitAQCAtMTU3Nyw2ICsxNTk3LDggQEAgZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZSAoR3N0UGxheWVyRXJyb3IgZXJyb3IpCisgICBzd2l0Y2ggKGVycm9yKSB7CisgICAgIGNhc2UgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQ6CisgICAgICAgcmV0dXJuICJmYWlsZWQiOworKyAgICBjYXNlIEdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU46CisrICAgICAgcmV0dXJuICJtaXNzaW5nLXBsdWdpbiI7CisgICB9CisgCisgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKK2RpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCitpbmRleCBjNDM4NTEzLi4zNWZiNWJiIDEwMDY0NAorLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKKysrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCitAQCAtNDQsNyArNDQsOCBAQCBHVHlwZSAgICAgICAgZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAodm9pZCk7CisgI2RlZmluZSAgICAgIEdTVF9UWVBFX1BMQVlFUl9FUlJPUiAgICAgICAgICAgICAgICAgICAgKGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUgKCkpCisgCisgdHlwZWRlZiBlbnVtIHsKKy0gIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEID0gMAorKyAgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQgPSAwLAorKyAgR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTgorIH0gR3N0UGxheWVyRXJyb3I7CisgCisgY29uc3QgZ2NoYXIgKmdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWUgICAgICAgICAgICAgICAgKEdzdFBsYXllckVycm9yIGVycm9yKTsKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9GaXgtcGF1c2UtcGxheS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODNjNDJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2gKQEAgLTAsMCArMSwxMDcgQEAKK0ZpeCBwYXVzZS9wbGF5CisKK1RoZSBjdXJyZW50IHBsYXllciBzdGF0ZSBpcyBub3cgbm90aWZpZWQgdmlhIHRoZSBzdGF0ZS1jaGFuZ2VkIHNpZ25hbCwKK2FuZCBpbiB0aGUgR1RLIFVJIGl0IHdhcyBvbmx5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgZGVzaXJlZCBzdGF0ZS4KKworVGhpcyBpcyBhIGJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCA3Mzg0NzljN2EwLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCistLS0KKyBndGsvZ3RrLXBsYXkuYyAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCisgbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgfCAxMiAtLS0tLS0tLS0tLS0KKyBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCB8ICAyIC0tCisgMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYworaW5kZXggNmU3YTA5OC4uZTJiNjA1YSAxMDA2NDQKKy0tLSBhL2d0ay9ndGstcGxheS5jCisrKysgYi9ndGsvZ3RrLXBsYXkuYworQEAgLTM0LDYgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgIEd0a1dpZGdldCAqaW5mb19iYXI7CisgICBHdGtXaWRnZXQgKnZvbHVtZV9idXR0b247CisgICBndWxvbmcgc2Vla2Jhcl92YWx1ZV9jaGFuZ2VkX3NpZ25hbF9pZDsKKysgIGdib29sZWFuIHBsYXlpbmc7CisgfSBHdGtQbGF5OworIAorIC8qIENvbXBhdCBzdHVicyAqLworQEAgLTExOCwxMiArMTE5LDEzIEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKKyB7CisgICBHdGtXaWRnZXQgKmltYWdlOworIAorLSAgaWYgKGdzdF9wbGF5ZXJfaXNfcGxheWluZyAocGxheS0+cGxheWVyKSkgeworKyAgaWYgKHBsYXktPnBsYXlpbmcpIHsKKyAgICAgZ3N0X3BsYXllcl9wYXVzZSAocGxheS0+cGxheWVyKTsKKyAgICAgaW1hZ2UgPQorICAgICAgICAgZ3RrX2ltYWdlX25ld19mcm9tX2ljb25fbmFtZSAoIm1lZGlhLXBsYXliYWNrLXN0YXJ0IiwKKyAgICAgICAgIEdUS19JQ09OX1NJWkVfQlVUVE9OKTsKKyAgICAgZ3RrX2J1dHRvbl9zZXRfaW1hZ2UgKEdUS19CVVRUT04gKHBsYXktPnBsYXlfcGF1c2VfYnV0dG9uKSwgaW1hZ2UpOworKyAgICBwbGF5LT5wbGF5aW5nID0gRkFMU0U7CisgICB9IGVsc2UgeworICAgICBnY2hhciAqdGl0bGU7CisgCitAQCAtMTM2LDYgKzEzOCw3IEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKKyAgICAgdGl0bGUgPSBnc3RfcGxheWVyX2dldF91cmkgKHBsYXktPnBsYXllcik7CisgICAgIHNldF90aXRsZSAocGxheSwgdGl0bGUpOworICAgICBnX2ZyZWUgKHRpdGxlKTsKKysgICAgcGxheS0+cGxheWluZyA9IFRSVUU7CisgICB9CisgfQorIAorQEAgLTMzNSw3ICszMzgsNyBAQCB2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCisgc3RhdGljIHZvaWQKKyBlb3NfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgR3RrUGxheSAqIHBsYXkpCisgeworLSAgaWYgKGdzdF9wbGF5ZXJfaXNfcGxheWluZyAocGxheS0+cGxheWVyKSkgeworKyAgaWYgKHBsYXktPnBsYXlpbmcpIHsKKyAgICAgR0xpc3QgKm5leHQgPSBOVUxMOworICAgICBnY2hhciAqdXJpOworIAorQEAgLTQ1Miw2ICs0NTUsNyBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqIGFyZ3YpCisgICB9CisgCisgICBwbGF5LnBsYXllciA9IGdzdF9wbGF5ZXJfbmV3ICgpOworKyAgcGxheS5wbGF5aW5nID0gVFJVRTsKKyAKKyAgIGdfb2JqZWN0X3NldCAocGxheS5wbGF5ZXIsICJkaXNwYXRjaC10by1tYWluLWNvbnRleHQiLCBUUlVFLCBOVUxMKTsKKyAKK2RpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCitpbmRleCAwNjliMjg0Li43OGU3YmExIDEwMDY0NAorLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKKysrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCitAQCAtMTQyMiwxOCArMTQyMiw2IEBAIGdzdF9wbGF5ZXJfc2V0X3VyaSAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiB2YWwpCisgICBnX29iamVjdF9zZXQgKHNlbGYsICJ1cmkiLCB2YWwsIE5VTEwpOworIH0KKyAKKy1nYm9vbGVhbgorLWdzdF9wbGF5ZXJfaXNfcGxheWluZyAoR3N0UGxheWVyICogc2VsZikKKy17CistICBnYm9vbGVhbiB2YWw7CistCistICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIEZBTFNFKTsKKy0KKy0gIGdfb2JqZWN0X2dldCAoc2VsZiwgImlzLXBsYXlpbmciLCAmdmFsLCBOVUxMKTsKKy0KKy0gIHJldHVybiB2YWw7CistfQorLQorIEdzdENsb2NrVGltZQorIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChHc3RQbGF5ZXIgKiBzZWxmKQorIHsKK2RpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCitpbmRleCA2OTMzZGQ3Li4zNWZiNWJiIDEwMDY0NAorLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKKysrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCitAQCAtOTMsOCArOTMsNiBAQCBnY2hhciAqICAgICAgZ3N0X3BsYXllcl9nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKyB2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgKiB1cmkpOworIAorLWdib29sZWFuICAgICBnc3RfcGxheWVyX2lzX3BsYXlpbmcgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworLQorIEdzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworIEdzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9kdXJhdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworIAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9maWxlY2hvb3Nlci5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2ZpbGVjaG9vc2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZjFiMDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9maWxlY2hvb3Nlci5wYXRjaApAQCAtMCwwICsxLDU0IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA0M2Q0YjE5YWI2MTFkODQ0MTU2ZTI2YzQ4NDBjYzU0ZGRiNzNhZTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFRodSwgMjYgRmViIDIwMTUgMTc6MTc6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3RrLXBsYXk6IHNob3cgYSBmaWxlIGNob29zZXIgaWYgbm8gVVJJcyB3ZXJlIHBhc3NlZAorCistLS0KKyBndGsvZ3RrLXBsYXkuYyB8ICAgMjggKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYworaW5kZXggZjAxNTA3Ny4uOTc2NmE3MiAxMDA2NDQKKy0tLSBhL2d0ay9ndGstcGxheS5jCisrKysgYi9ndGsvZ3RrLXBsYXkuYworQEAgLTMxOSw4ICszMTksMzIgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKiBhcmd2KQorICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwbGF5bGlzdHMgYW5kIHN0dWZmCisgICAvKiBQYXJzZSB0aGUgbGlzdCBvZiB0aGUgZmlsZSBuYW1lcyB3ZSBoYXZlIHRvIHBsYXkuICovCisgICBpZiAoIWZpbGVfbmFtZXMpIHsKKy0gICAgZ19wcmludCAoIlVzYWdlOiAlcyBGSUxFKHMpfFVSSShzKVxuIiwgQVBQX05BTUUpOworLSAgICByZXR1cm4gMTsKKysgICAgR3RrV2lkZ2V0ICpjaG9vc2VyOworKyAgICBpbnQgcmVzOworKworKyAgICBjaG9vc2VyID0gZ3RrX2ZpbGVfY2hvb3Nlcl9kaWFsb2dfbmV3ICgiU2VsZWN0IGZpbGVzIHRvIHBsYXkiLCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19GSUxFX0NIT09TRVJfQUNUSU9OX09QRU4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9DYW5jZWwiLCBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfT3BlbiIsIEdUS19SRVNQT05TRV9BQ0NFUFQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisrICAgIGdfb2JqZWN0X3NldCAoY2hvb3NlciwKKysgICAgICAgICAgICAgICAgICAibG9jYWwtb25seSIsIEZBTFNFLAorKyAgICAgICAgICAgICAgICAgICJzZWxlY3QtbXVsdGlwbGUiLCBUUlVFLAorKyAgICAgICAgICAgICAgICAgIE5VTEwpOworKworKyAgICByZXMgPSBndGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoY2hvb3NlcikpOworKyAgICBpZiAocmVzID09IEdUS19SRVNQT05TRV9BQ0NFUFQpIHsKKysgICAgICBHU0xpc3QgKmw7CisrCisrICAgICAgbCA9IGd0a19maWxlX2Nob29zZXJfZ2V0X3VyaXMgKEdUS19GSUxFX0NIT09TRVIgKGNob29zZXIpKTsKKysgICAgICB3aGlsZSAobCkgeworKyAgICAgICAgcGxheS51cmlzID0gZ19saXN0X2FwcGVuZCAocGxheS51cmlzLCBsLT5kYXRhKTsKKysgICAgICAgIGwgPSBnX3NsaXN0X2RlbGV0ZV9saW5rIChsLCBsKTsKKysgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgZ3RrX3dpZGdldF9kZXN0cm95IChjaG9vc2VyKTsKKyAgIH0gZWxzZSB7CisgICAgIGd1aW50IGk7CisgCistLSAKKzEuNy4xMC40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2dzdC1wbGF5ZXIuZGVza3RvcCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2dzdC1wbGF5ZXIuZGVza3RvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmQyMDdiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZ3N0LXBsYXllci5kZXNrdG9wCkBAIC0wLDAgKzEsMTAgQEAKK1tEZXNrdG9wIEVudHJ5XQorTmFtZT1NZWRpYSBQbGF5ZXIKK0NvbW1lbnQ9QmFzaWMgbWVkaWEgcGxheWVyCitJY29uPWF1ZGlvLXBsYXllcgorVHJ5RXhlYz1ndGstcGxheQorRXhlYz1ndGstcGxheQorU3RhcnR1cE5vdGlmeT10cnVlCitUZXJtaW5hbD1mYWxzZQorVHlwZT1BcHBsaWNhdGlvbgorQ2F0ZWdvcmllcz1HVEs7QXVkaW9WaWRlbzsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2d0azIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9ndGsyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZDE4YmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9ndGsyLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0FzIHRoZSByZXN0IG9mIFNhdG8gaXMgR1RLKyAyLCBwYXRjaCBndGstcGxheSB0byB1c2UgR1RLKyAyLiAgV2hlbiB0aGUgcmVzdCBvZgorU2F0byBoYXMgYmVlbiBwb3J0ZWQgdG8gR1RLKyAzIHRoaXMgcGF0Y2ggY2FuIGJlIGRyb3BwZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiOGFmMTNiLi45MGFiNzRjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MCw3ICs2MCw3IEBAIEFDX1NVQlNUKEdMSUJfUFJFRklYKQorIEdTVF9QUkVGSVg9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCBnc3RyZWFtZXItMS4wYCIKKyBBQ19TVUJTVChHU1RfUFJFRklYKQorIAorLVBLR19DSEVDS19NT0RVTEVTKEdUSywgW2d0aystMy4wXSwgW2hhdmVfZ3RrPSJ5ZXMiXSwgW2hhdmVfZ3RrPSJubyJdKQorK1BLR19DSEVDS19NT0RVTEVTKEdUSywgW2d0aystMi4wXSwgW2hhdmVfZ3RrPSJ5ZXMiXSwgW2hhdmVfZ3RrPSJubyJdKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfR1RLLCB0ZXN0ICJ4JGhhdmVfZ3RrIiAhPSAieG5vIikKKyAKKyBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzEuMzEuMV0pCitkaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYworaW5kZXggZjAxNTA3Ny4uOTU0ZDZmYiAxMDA2NDQKKy0tLSBhL2d0ay9ndGstcGxheS5jCisrKysgYi9ndGsvZ3RrLXBsYXkuYworQEAgLTM0LDYgKzM0LDQ2IEBAIHR5cGVkZWYgc3RydWN0CisgICBndWxvbmcgc2Vla2Jhcl92YWx1ZV9jaGFuZ2VkX3NpZ25hbF9pZDsKKyB9IEd0a1BsYXk7CisgCisrLyogQ29tcGF0IHN0dWJzICovCisrR3RrV2lkZ2V0ICoKKytndGtfYm94X25ldyAoR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sCisrICAgICAgICAgICAgIGdpbnQgc3BhY2luZykKKyt7CisrICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CisrICBjYXNlIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMOgorKyAgICByZXR1cm4gZ3RrX2hib3hfbmV3IChGQUxTRSwgc3BhY2luZyk7CisrICBjYXNlIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTDoKKysgICAgcmV0dXJuIGd0a192Ym94X25ldyAoRkFMU0UsIHNwYWNpbmcpOworKyAgfQorK30KKysKKytHdGtXaWRnZXQqCisrZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUgKGNvbnN0IGdjaGFyICppY29uX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0a0ljb25TaXplICBzaXplKQorK3sKKysgIEd0a1dpZGdldCAqYnV0dG9uOworKyAgR3RrV2lkZ2V0ICppbWFnZTsKKysKKysgIGltYWdlID0gZ3RrX2ltYWdlX25ld19mcm9tX2ljb25fbmFtZSAoaWNvbl9uYW1lLCBzaXplKTsKKysgIGJ1dHRvbiA9ICBnX29iamVjdF9uZXcgKEdUS19UWVBFX0JVVFRPTiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlIiwgaW1hZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworKyAgcmV0dXJuIGJ1dHRvbjsKKyt9CisrCisrR3RrV2lkZ2V0ICoKKytndGtfc2NhbGVfbmV3X3dpdGhfcmFuZ2UgKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSBtaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIG1heCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgc3RlcCkKKyt7CisrICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CisrICBjYXNlIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMOgorKyAgICByZXR1cm4gZ3RrX2hzY2FsZV9uZXdfd2l0aF9yYW5nZSAobWluLCBtYXgsIHN0ZXApOworKyAgY2FzZSBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUw6CisrICAgIHJldHVybiBndGtfdnNjYWxlX25ld193aXRoX3JhbmdlIChtaW4sIG1heCwgc3RlcCk7CisrICB9CisrfQorIAorIHN0YXRpYyB2b2lkCisgc2V0X3RpdGxlIChHdGtQbGF5ICogcGxheSwgY29uc3QgZ2NoYXIgKiB0aXRsZSkKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGNmYmJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlk9IkdTdHJlYW1lciBwbGF5YmFjayBoZWxwZXIgbGlicmFyeSBhbmQgZXhhbXBsZXMiCisKK0xJQ0VOU0UgPSAiTEdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9MDNhZWNhOWQ4Mjk1ZjgxMTgxNzkwOTA3NWExNWZmNjUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3RrKyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Nkcm9lZ2UvZ3N0LXBsYXllci5naXQgXAorICAgICAgICAgICBmaWxlOi8vZmlsZWNob29zZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3RrMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9GaXgtcGF1c2UtcGxheS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtZXJyb3Itc2lnbmFsLWVtaXNzaW9uLWZvci1taXNzaW5nLXBsdWdpbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3N0LXBsYXllci5kZXNrdG9wIgorCitTUkNSRVYgPSAiNTM4NmM1Yjk4NGQ0MGVmNTQzNDY3M2VkNjIyMDRlNjlhYWY1MjY0NSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBsaWJfcGFja2FnZSBwa2djb25maWcKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJdG91Y2ggJHtTfS9DaGFuZ2VMb2cKK30KKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1ZBTEdSSU5EPW5vIGFjX2N2X3BhdGhfR0RCPW5vIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1tIDA2NDQgLUQgJHtXT1JLRElSfS9nc3QtcGxheWVyLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dzdC1wbGF5ZXIuZGVza3RvcAorfQorCitGSUxFU18ke1BOfS1iaW4gKz0gIiR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLyouZGVza3RvcCIKKworUkRFUEVORFNfJHtQTn0tYmluID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtcGxheWJhY2siCitSUkVDT01NRU5EU18ke1BOfS1iaW4gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1tZXRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC1tZXRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtbGliYXYiLCAiIiwgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LW1ldGEiLCAiIiwgZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMWJlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKQEAgLTAsMCArMSw1OCBAQAorUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICIgc3BsaXRfZ3N0cmVhbWVyMTBfcGFja2FnZXMgIgorUEFDS0FHRVNQTElURlVOQ1NfYXBwZW5kID0gIiBzZXRfbWV0YXBrZ19yZGVwZW5kcyAiCisKK3B5dGhvbiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAoKSB7CisgICAgZ3N0X2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0nKQorICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcsIFRydWUpCisgICAgZ2xpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKQorCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdnc3RyZWFtZXIgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgJ2xpYmdzdCguKilcLnNvJCcsIGQuZXhwYW5kKCcke1BOfS0lcycpLCAnR1N0cmVhbWVyIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz0nJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCAnbGliZ3N0KC4qKVwubGEkJywgZC5leHBhbmQoJyR7UE59LSVzLWRldicpLCAnR1N0cmVhbWVyIHBsdWdpbiBmb3IgJXMgKGRldmVsb3BtZW50IGZpbGVzKScsIGV4dHJhX2RlcGVuZHM9ZC5leHBhbmQoJyR7UE59LWRldicpKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsICdsaWJnc3QoLiopXC5hJCcsIGQuZXhwYW5kKCcke1BOfS0lcy1zdGF0aWNkZXYnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzIChzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMpJywgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0tc3RhdGljZGV2JykpCit9CisKK3B5dGhvbiBzZXRfbWV0YXBrZ19yZGVwZW5kcyAoKSB7CisgICAgaW1wb3J0IG9zCisKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCisgICAgbWV0YXBrZyA9ICBwbiArICctbWV0YScKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKKyAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQorICAgIGJsYWNrbGlzdCA9IFsgcG4sIHBuICsgJy1sb2NhbGUnLCBwbiArICctZGV2JywgcG4gKyAnLWRiZycsIHBuICsgJy1kb2MnLCBwbiArICctbWV0YScgXQorICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbXQorICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJywgVHJ1ZSkuc3BsaXQoKQorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcsIFRydWUpCisgICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06CisgICAgICAgIGlmIG5vdCBwa2cgaW4gYmxhY2tsaXN0IGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kZXYnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRiZycpIGFuZCBub3QgcGtnLmNvdW50KCdsb2NhbGUnKSBhbmQgbm90IHBrZy5jb3VudCgnLXN0YXRpY2RldicpOgorICAgICAgICAgICAgIyBTZWUgaWYgdGhlIHBhY2thZ2UgaXMgZW1wdHkgYnkgbG9va2luZyBhdCB0aGUgY29udGVudHMgb2YgaXRzIFBLR0RFU1Qgc3ViZGlyZWN0b3J5LiAKKyAgICAgICAgICAgICMgSWYgdGhpcyBzdWJkaXJlY3RvcnkgaXMgZW1wdHksIHRoZW4gdGhlIHBhY2thZ2UgaXMuCisgICAgICAgICAgICAjIEVtcHR5IHBhY2thZ2VzIGRvIG5vdCBnZXQgYWRkZWQgdG8gdGhlIG1ldGEgcGFja2FnZSdzIFJERVBFTkRTCisgICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZGlyKToKKyAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBvcy5saXN0ZGlyKHBrZ2Rpcikgb3IgW10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyX2NvbnRlbnRzID0gW10KKyAgICAgICAgICAgIGlzX2VtcHR5ID0gbGVuKGRpcl9jb250ZW50cykgPT0gMAorICAgICAgICAgICAgaWYgbm90IGlzX2VtcHR5OgorICAgICAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKKyAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQorICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgcG4gKyAnIG1ldGEgcGFja2FnZScpCit9CisKKyMgZWFjaCBwbHVnaW4tZGV2IGRlcGVuZHMgb24gUE4tZGV2LCBwbHVnaW4tc3RhdGljZGV2IG9uIFBOLXN0YXRpY2RldgorIyBzbyB3ZSBuZWVkIHRoZW0gZXZlbiB3aGVuIGVtcHR5IChsaWtlIGluIGdzdC1wbHVnaW5zLWdvb2QgY2FzZSkKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1kZXYgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXN0YXRpY2RldiA9ICIxIgorCitQQUNLQUdFUyArPSAiJHtQTn0tYXBwcyAke1BOfS1tZXRhICR7UE59LWdsaWIiCitGSUxFU18ke1BOfS1hcHBzID0gIiR7YmluZGlyfSIKKworUkRFUEVORFNfJHtQTn0tYXBwcyArPSAicGVybCIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BOfS1tZXRhIgorCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItJHtMSUJWfS8uZGVidWciCitGSUxFU18ke1BOfS1nbGliID0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYuaW5jIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlNmU5NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYuaW5jCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiTGliYXYtYmFzZWQgR1N0cmVhbWVyIDEueCBwbHVnaW4iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdzdHJlYW1lci5uZXQvIgorREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSB6bGliIGJ6aXAyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBDQVVUSU9OOiBVc2luZyB0aGUgc3lzdGVtIGxpYmF2IGlzIG5vdCByZWNvbW1lbmRlZC4gU2luY2UgdGhlIGxpYmF2IEFQSSBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUsCisjIGNvbXBpbGF0aW9uIGVycm9ycyAoYW5kIG90aGVyLCBtb3JlIHN1YnRsZSBidWdzKSBjYW4gaGFwcGVuLiBJdCBpcyB1c3VhbGx5IGJldHRlciB0byByZWx5IG9uIHRoZQorIyBsaWJhdiBjb3B5IGluY2x1ZGVkIGluIHRoZSBnc3QtbGliYXYgcGFja2FnZS4KK1BBQ0tBR0VDT05GSUcgPz89ICIgb3JjIHlhc20gIgorUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLS13aXRoLXN5c3RlbS1saWJhdiwsbGliYXYiCitQQUNLQUdFQ09ORklHW2xncGxdICA9ICItLWVuYWJsZS1sZ3BsLCwiCitQQUNLQUdFQ09ORklHW3lhc21dICA9ICItLWVuYWJsZS15YXNtLC0tZGlzYWJsZS15YXNtLHlhc20tbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tvcmNdICA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMiCisKKworR1NUUkVBTUVSXzFfMF9ERUJVRyA/PSAiLS1kaXNhYmxlLWRlYnVnIgorCitMSUJBVl9FWFRSQV9DT05GSUdVUkUgPSAiLS13aXRoLWxpYmF2LWV4dHJhLWNvbmZpZ3VyZSIKK0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT04gPSBcCisnJHtMSUJBVl9FWFRSQV9DT05GSUdVUkV9PSIke0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHfSInCisKK0VYVFJBX09FQ09ORiA9ICIke0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT059IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ5OWFkMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNTRiYmEyMjhlYTUyZDAxZmQ4NDk0MWQ5N2JlMjNjMDNmOTg2MmI2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KK0RhdGU6IFNhdCwgNiBBcHIgMjAxMyAwMToyMjoyMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHlhc20gZm9yIGxpYmF2IHdoZW4gLS1kaXNhYmxlLXlhc20KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjJlZGU4OC4uZWYzYzA1MCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzA1LDYgKzMwNSwxMiBAQCBlbHNlCisgICAgIGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzPSIkZW1ibGliYXZfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtZ3BsIgorICAgZmkKKworKyAgQUNfQVJHX0VOQUJMRSh5YXNtLAorKyAgICAgICAgICAgICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUteWFzbV0sIFtkaXNhYmxlIHVzZSBvZiB5YXNtIGFzc2VtYmxlcl0pXSkKKysgIGlmIHRlc3QgIngkZW5hYmxlX3lhc20iID0gInhubyI7IHRoZW4KKysgICAgZW1ibGliYXZfY29uZmlndXJlX2FyZ3M9IiRlbWJsaWJhdl9jb25maWd1cmVfYXJncyAtLWRpc2FibGUteWFzbSIKKysgIGZpCisrCisgICAjIGlmIHdlIGFyZSBjcm9zcy1jb21waWxpbmcsIHRlbGwgbGliYXYgc28KKyAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICAqYW5kcm9pZCopCistLSAKKzEuOC4yCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYWRlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Rlc2NyaXB0aW9uOiBXb3JrYXJvdW5kIHRvIGJ1aWxkIGxpYmF2IGZvciBpNTg2IHdpdGggZ2NjIDQuOS4yIGJ5IGF2b2lkaW5nIG1lbXNldAorQXV0aG9yOiBCZXJuaGFyZCDcYmVsYWNrZXIgPGJlcm5oYXJkdUB2ci13ZWIuZGU+CisKKy0tLQorQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgzMDgyCitMYXN0LVVwZGF0ZTogMjAxNS0wNC0yOAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0gZ3N0LWxpYmF2LTEuNC41Lm9yaWcvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9jYWJhYy5jCisrKysgZ3N0LWxpYmF2LTEuNC41L2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfY2FiYWMuYworQEAgLTIwMjAsNyArMjAyMCwxMSBAQCBkZWNvZGVfaW50cmFfbWI6CisgICAgICAgICAvLyBJbiBkZWJsb2NraW5nLCB0aGUgcXVhbnRpemVyIGlzIDAKKyAgICAgICAgIGgtPmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSA9IDA7CisgICAgICAgICAvLyBBbGwgY29lZmZzIGFyZSBwcmVzZW50CistICAgICAgICBtZW1zZXQoaC0+bm9uX3plcm9fY291bnRbbWJfeHldLCAxNiwgNDgpOworKyAgICAgICAgLyptZW1zZXQoaC0+bm9uX3plcm9fY291bnRbbWJfeHldLCAxNiwgNDgpOyovCisrICAgICAgICAgICAgLyogYXZvaWRpbmcgdGhpcyBtZW1zZXQgYmVjYXVzZSBpdCBsZWFkcyBhdCBsZWFzdCB3aXRoIGdjYzQuOS4yIHRvIGVycm9yOiAnYXNtJyBvcGVyYW5kIGhhcyBpbXBvc3NpYmxlIGNvbnN0cmFpbnRzICovCisrICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ4OyBpKyspIHsKKysgICAgICAgICAgICAoICh1bnNpZ25lZCBjaGFyKikoaC0+bm9uX3plcm9fY291bnRbbWJfeHldKSApIFtpXSA9IDE2OworKyAgICAgICAgfQorICAgICAgICAgaC0+Y3VyX3BpYy5tYl90eXBlW21iX3h5XSA9IG1iX3R5cGU7CisgICAgICAgICBoLT5sYXN0X3FzY2FsZV9kaWZmID0gMDsKKyAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjQuNS5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS40LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdmYzdlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS40LjUuYmIKQEAgLTAsMCArMSwyNyBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvTElDRU5TRTttZDU9ZWE2NmU5N2E3YWMxZGI5NzhjZjM1MjkwNjhhOGM5NDggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCisgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNDkyMmE0NmFkYmNiZTdiZDAxMzMxZmY1ZGM3OTc5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDVjNjI2MjQ2MDRmM2JiNWM4NzA4NDRjYzFmMjcxMTc3OWNjNTMzYjAwNGMyYWExZDhjMGQ1ODU1N2FmYmJjIgorCitMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSRyA9ICItLXRhcmdldC1vcz1saW51eCBcCisgIC0tY2M9JyR7Q0N9JyAtLWFzPScke0NDfScgLS1sZD0nJHtDQ30nIC0tbm09JyR7Tk19JyAtLWFyPScke0FSfScgXAorICAtLXJhbmxpYj0nJHtSQU5MSUJ9JyBcCisgICR7R1NUUkVBTUVSXzFfMF9ERUJVR30gXAorICAtLWNyb3NzLXByZWZpeD0nJHtIT1NUX1BSRUZJWH0nIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2X2dpdC5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMWI4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2X2dpdC5iYgpAQCAtMCwwICsxLDI5IEBACitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0xJQ0VOU0U7bWQ1PTIzYTU0ZjU5YjgyNTcyYzIwM2E1NTkzNDZlODllZDU3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1saWJhdjticmFuY2g9bWFzdGVyIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworU1JDUkVWID0gIjEyNzIwMmQ2ZjY1NTg0ODkxZGFiZjkyYmUwMzFmMGQxNzBiMGU3ZjEiCisKK0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHID0gIi0tdGFyZ2V0LW9zPWxpbnV4IFwKKyAgLS1jYz0nJHtDQ30nIC0tYXM9JyR7Q0N9JyAtLWxkPScke0NDfScgLS1ubT0nJHtOTX0nIC0tYXI9JyR7QVJ9JyBcCisgICR7R1NUUkVBTUVSXzFfMF9ERUJVR30gXAorICAtLWNyb3NzLXByZWZpeD0nJHtIT1NUX1BSRUZJWH0nIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwljZCAke1N9CisJLi9hdXRvZ2VuLnNoIC0tbm9jb25maWd1cmUKKwljZCAke0J9Cit9CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbWV0YS1iYXNlLmJiIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1tZXRhLWJhc2UuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmMTBjMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbWV0YS1iYXNlLmJiCkBAIC0wLDAgKzEsNjUgQEAKK0RFU0NSSVBUSU9OID0gIkdzdHJlYW1lcjEuMCBwYWNrYWdlIGdyb3VwcyIKK0xJQ0VOU0UgPSAiTUlUIgorCitpbmhlcml0IHBhY2thZ2Vncm91cAorCitDT01NRVJDSUFMX1BMVUdJTlMgPSAiJHtDT01NRVJDSUFMX0FVRElPX1BMVUdJTlN9ICR7Q09NTUVSQ0lBTF9WSURFT19QTFVHSU5TfSIKK0RFUEVORFNfVUdMWT0iJHtAJ2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHknIGlmICd1Z2x5JyBpbiBDT01NRVJDSUFMX1BMVUdJTlMuc3BsaXQoJy0nKSBlbHNlICcnfSIKK0RFUEVORFNfQkFEPSIke0AnZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkJyBpZiAnYmFkJyBpbiBDT01NRVJDSUFMX1BMVUdJTlMuc3BsaXQoJy0nKSBlbHNlICcnfSIKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCAke0RFUEVORFNfVUdMWX0gJHtERVBFTkRTX0JBRH0iCisKK1BBQ0tBR0VTID0gIlwKKyAgICBnc3RyZWFtZXIxLjAtbWV0YS1iYXNlIFwKKyAgICBnc3RyZWFtZXIxLjAtbWV0YS14MTEtYmFzZSBcCisgICAgZ3N0cmVhbWVyMS4wLW1ldGEtYXVkaW8gXAorICAgIGdzdHJlYW1lcjEuMC1tZXRhLWRlYnVnIFwKKyAgICBnc3RyZWFtZXIxLjAtbWV0YS12aWRlbyIKKworQUxMT1dfRU1QVFlfZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSA9ICIxIgorQUxMT1dfRU1QVFlfZ3N0cmVhbWVyMS4wLW1ldGEteDExLWJhc2UgPSAiMSIKK0FMTE9XX0VNUFRZX2dzdHJlYW1lcjEuMC1tZXRhLWF1ZGlvID0gIjEiCitBTExPV19FTVBUWV9nc3RyZWFtZXIxLjAtbWV0YS1kZWJ1ZyA9ICIxIgorQUxMT1dfRU1QVFlfZ3N0cmVhbWVyMS4wLW1ldGEtdmlkZW8gPSAiMSIKKworUkRFUEVORFNfZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSA9ICJcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3N0cmVhbWVyMS4wLW1ldGEteDExLWJhc2UnLCAnJywgZCl9IFwKKyAgICBnc3RyZWFtZXIxLjAgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtcGxheWJhY2sgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtZ2lvIFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLWFsc2EgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2Utdm9sdW1lIFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLWF1ZGlvY29udmVydCBcCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1hdWRpb3Jlc2FtcGxlIFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXR5cGVmaW5kZnVuY3Rpb25zIFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXZpZGVvc2NhbGUgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtdmlkZW9jb252ZXJ0IFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLWF1dG9kZXRlY3QgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2Qtc291cGh0dHBzcmMiCisKK1JSRUNPTU1FTkRTX2dzdHJlYW1lcjEuMC1tZXRhLXgxMS1iYXNlID0gIlwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXhpbWFnZXNpbmsgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UteHZpbWFnZXNpbmsiCisKK1JERVBFTkRTX2dzdHJlYW1lcjEuMC1tZXRhLWF1ZGlvID0gIlwKKyAgICBnc3RyZWFtZXIxLjAtbWV0YS1iYXNlIFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXZvcmJpcyBcCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1vZ2cgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2Qtd2F2cGFyc2UgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QtZmxhYyBcCisgICAgJHtDT01NRVJDSUFMX0FVRElPX1BMVUdJTlN9IgorCitSREVQRU5EU19nc3RyZWFtZXIxLjAtbWV0YS1kZWJ1ZyA9ICJcCisgICAgZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSBcCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC1kZWJ1ZyBcCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1hdWRpb3Rlc3RzcmMgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtdmlkZW90ZXN0c3JjIgorCitSREVQRU5EU19nc3RyZWFtZXIxLjAtbWV0YS12aWRlbyA9ICJcCisgICAgZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSBcCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC1hdmkgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QtbWF0cm9za2EgXAorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtdGhlb3JhIFwKKyAgICAke0NPTU1FUkNJQUxfVklERU9fUExVR0lOU30iCisKK1JSRUNPTU1FTkRTX2dzdHJlYW1lcjEuMC1tZXRhLXZpZGVvID0gIlwKKyAgICBnc3RyZWFtZXIxLjAtbWV0YS1hdWRpbyIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjk4OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiT3Blbk1BWCBJTCBwbHVnaW5zIGZvciBHU3RyZWFtZXIiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nc3RyZWFtZXIubmV0LyIKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgorUkRFUEVORFNfJHtQTn0gPSAibGlib214aWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2FjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKKworUFIgPSAicjEiCisKK0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCitHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS12YWxncmluZCAtLXdpdGgtb214LXRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCisKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiLCBUcnVlKQorICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106CisgICAgICAgIHNyY2RpciA9IGQuZ2V0VmFyKCJTIiwgVHJ1ZSkKKyAgICAgICAgIyBCZWxsYWdpbyBoZWFkZXJzIGFyZSBpbmNvbXBsZXRlICh0aGV5IGFyZSBtaXNzaW5nIHRoZSBPTVhfVkVSU0lPTl9NQUpPUiwjCisgICAgICAgICMgT01YX1ZFUlNJT05fTUlOT1IsIE9NWF9WRVJTSU9OX1JFVklTSU9OLCBhbmQgT01YX1ZFUlNJT05fU1RFUCBtYWNyb3MpOworICAgICAgICAjIGFwcGVuZGluZyBhIGRpcmVjdG9yeSBwYXRoIHRvIGdzdC1vbXgnIGludGVybmFsIE9wZW5NQVggSUwgaGVhZGVycyBmaXhlcyB0aGlzCisgICAgICAgIGQuYXBwZW5kVmFyKCJDRkxBR1MiLCAiIC1JJXMvb214L29wZW5tYXgiICUgc3JjZGlyKQorICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKKyAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYworICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIsIFRydWUpKQorfQorCitzZXRfb214X2NvcmVfbmFtZSgpIHsKKwlzZWQgLWkgLWUgInM7XmNvcmUtbmFtZT0uKjtjb3JlLW5hbWU9JHtHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUV9OyIgIiR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9nc3RvbXguY29uZiIKK30KK2RvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8wMDAxLW9teC1maXhlZC10eXBlLWVycm9yLWluLXByaW50Zi1jYWxsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwMS1vbXgtZml4ZWQtdHlwZS1lcnJvci1pbi1wcmludGYtY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDI4YWM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwMS1vbXgtZml4ZWQtdHlwZS1lcnJvci1pbi1wcmludGYtY2FsbC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGY2MjllMDQxZTlmNjc4ZmNkODZhZDc2NGExNTExN2RmZjYzYzI3MWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+CitEYXRlOiBTYXQsIDI3IEFwciAyMDEzIDAyOjUwOjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG9teDogZml4ZWQgdHlwZSBlcnJvciBpbiBwcmludGYgY2FsbAorCislenUgZXhwZWN0cyBzaXplX3QKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02OTkwMDhdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KKy0tLQorIG9teC9nc3RvbXguYyB8ICAgIDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL29teC9nc3RvbXguYyBiL29teC9nc3RvbXguYworaW5kZXggYTI5NDVlZC4uMWVjYTdjYyAxMDA2NDQKKy0tLSBhL29teC9nc3RvbXguYworKysrIGIvb214L2dzdG9teC5jCitAQCAtMTYzMCw3ICsxNjMwLDcgQEAgZ3N0X29teF9wb3J0X2FsbG9jYXRlX2J1ZmZlcnNfdW5sb2NrZWQgKEdzdE9NWFBvcnQgKiBwb3J0LAorIAorICAgR1NUX0lORk9fT0JKRUNUIChjb21wLT5wYXJlbnQsCisgICAgICAgIkFsbG9jYXRpbmcgJWQgYnVmZmVycyBvZiBzaXplICV6dSBmb3IgJXMgcG9ydCAldSIsIG4sCistICAgICAgcG9ydC0+cG9ydF9kZWYubkJ1ZmZlclNpemUsIGNvbXAtPm5hbWUsIChndWludCkgcG9ydC0+aW5kZXgpOworKyAgICAgIChzaXplX3QpIChwb3J0LT5wb3J0X2RlZi5uQnVmZmVyU2l6ZSksIGNvbXAtPm5hbWUsIChndWludCkgcG9ydC0+aW5kZXgpOworIAorICAgaWYgKCFwb3J0LT5idWZmZXJzKQorICAgICBwb3J0LT5idWZmZXJzID0gZ19wdHJfYXJyYXlfc2l6ZWRfbmV3IChuKTsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjIuMC5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlN2M5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjIuMC5iYgpAQCAtMCwwICsxLDEyIEBACitpbmNsdWRlIGdzdHJlYW1lcjEuMC1vbXguaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImQyNGU4YzAxNTNjMzVkZmVmZWUzZTI2YjFjMmMzNWY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiNDg3NDk2MWU2NDg4YWQ5ZTU4MDgxMTRiZDQ4NmVhOTgxYzU0MDkwNzI2MmNhYWIxNDE5MzU1ZmQ4MmQ3NDUiCisKK1MgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF9naXQuYmIgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljODQ2NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214X2dpdC5iYgpAQCAtMCwwICsxLDI2IEBACitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1vbXg7YnJhbmNoPW1hc3RlcjtuYW1lPWdzdC1vbXggXAorICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9jb21tb247ZGVzdHN1ZmZpeD1naXQvY29tbW9uO2JyYW5jaD1tYXN0ZXI7bmFtZT1jb21tb24gXAorICAgIGZpbGU6Ly8wMDAxLW9teC1maXhlZC10eXBlLWVycm9yLWluLXByaW50Zi1jYWxsLnBhdGNoIFwKKyAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NSQ1JFVl9nc3Qtb214ID0gImEyZGI3NmIwNDhkYjI3OGVmMGFhNzk4ZTEwNmI3NTk0MjY0ZTA2YzAiCitTUkNSRVZfY29tbW9uID0gIjVlZGNkODU3YjIxMDdjZDhiNzhjMTYyMzJkZDEwODc3NTEzZWMxNTciCisKK1NSQ1JFVl9GT1JNQVQgPSAiZ3N0LW9teCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJY2QgJHtTfQorCS4vYXV0b2dlbi5zaCAtLW5vY29uZmlndXJlCisJY2QgJHtCfQorfQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZWRiNjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwpAQCAtMCwwICsxLDEzNSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBsaWJwbmcganBlZyIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKKworU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgZ2V0dGV4dCBibHVldG9vdGgKKworIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCisjIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAorUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczInLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYicsICdkaXJlY3RmYicsICcnLCBkKX0gXAorICAgIG9yYyBjdXJsIHV2Y2gyNjQgbmVvbiBzbmRmaWxlIFwKKyAgICBobHMgc2JjIGRhc2ggYnoyIHNtb290aHN0cmVhbWluZyBcCisgICAgIgorCisjIGRhc2ggPSBEeW5hbWljIEFkYXB0aXZlIFN0cmVhbWluZyBvdmVyIEhUVFAKK1BBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCitQQUNLQUdFQ09ORklHW2N1cmxdICAgICAgICAgICAgPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWdsZXMyLC0tZGlzYWJsZS1nbGVzMix2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICAgICAgID0gIi0tZW5hYmxlLW9wZW5nbCwtLWRpc2FibGUtb3BlbmdsLHZpcnR1YWwvbGliZ2wgbGliZ2x1IgorUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWMsLS1kaXNhYmxlLWZhYWMsZmFhYyIKK1BBQ0tBR0VDT05GSUdbZmFhZF0gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFkLC0tZGlzYWJsZS1mYWFkLGZhYWQyIgorUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi0tZW5hYmxlLWxpYm1tcywtLWRpc2FibGUtbGlibW1zLGxpYm1tcyIKK1BBQ0tBR0VDT05GSUdbbW9kcGx1Z10gICAgICAgICA9ICItLWVuYWJsZS1tb2RwbHVnLC0tZGlzYWJsZS1tb2RwbHVnLGxpYm1vZHBsdWciCitQQUNLQUdFQ09ORklHW21wZzEyM10gICAgICAgICAgPSAiLS1lbmFibGUtbXBnMTIzLC0tZGlzYWJsZS1tcGcxMjMsbXBnMTIzIgorUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKK1BBQ0tBR0VDT05GSUdbZmxpdGVdICAgICAgICAgICA9ICItLWVuYWJsZS1mbGl0ZSwtLWRpc2FibGUtZmxpdGUsZmxpdGUtYWxzYSIKK1BBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuY3YsLS1kaXNhYmxlLW9wZW5jdixvcGVuY3YiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCAtLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLXdheWxhbmQgLS1kaXNhYmxlLWVnbCx3YXlsYW5kIHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1t1dmNoMjY0XSAgICAgICAgID0gIi0tZW5hYmxlLXV2Y2gyNjQsLS1kaXNhYmxlLXV2Y2gyNjQsbGlidXNiMSB1ZGV2IgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICAgICAgID0gIi0tZW5hYmxlLWRpcmVjdGZiLC0tZGlzYWJsZS1kaXJlY3RmYixkaXJlY3RmYiIKK1BBQ0tBR0VDT05GSUdbbmVvbl0gICAgICAgICAgICA9ICItLWVuYWJsZS1uZW9uLC0tZGlzYWJsZS1uZW9uLG5lb24iCitQQUNLQUdFQ09ORklHW29wZW5hbF0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmFsLC0tZGlzYWJsZS1vcGVuYWwsb3BlbmFsLXNvZnQiCitQQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzLC0tZGlzYWJsZS1obHMsZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLXNiYywtLWRpc2FibGUtc2JjLHNiYyIKK1BBQ0tBR0VDT05GSUdbZGFzaF0gICAgICAgICAgICA9ICItLWVuYWJsZS1kYXNoLC0tZGlzYWJsZS1kYXNoLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgICAgICAgPSAiLS1lbmFibGUtYnoyLC0tZGlzYWJsZS1iejIsYnppcDIiCitQQUNLQUdFQ09ORklHW2ZsdWlkc3ludGhdICAgICAgPSAiLS1lbmFibGUtZmx1aWRzeW50aCwtLWRpc2FibGUtZmx1aWRzeW50aCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdICAgID0gIi0tZW5hYmxlLXNjaHJvLC0tZGlzYWJsZS1zY2hybyxzY2hyb2VkaW5nZXIiCitQQUNLQUdFQ09ORklHW3Ntb290aHN0cmVhbWluZ10gPSAiLS1lbmFibGUtc21vb3Roc3RyZWFtaW5nLC0tZGlzYWJsZS1zbW9vdGhzdHJlYW1pbmcsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdICAgICAgICAgICA9ICItLWVuYWJsZS1ibHVleiwtLWRpc2FibGUtYmx1ZXosJHtCTFVFWn0iCitQQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLS1lbmFibGUtcnN2ZywtLWRpc2FibGUtcnN2ZyxsaWJyc3ZnIgorUEFDS0FHRUNPTkZJR1tzbmRmaWxlXSAgICAgICAgID0gIi0tZW5hYmxlLXNuZGZpbGUsLS1kaXNhYmxlLXNuZGZpbGUsbGlic25kZmlsZTEiCitQQUNLQUdFQ09ORklHW3dlYnBdICAgICAgICAgICAgPSAiLS1lbmFibGUtd2VicCwtLWRpc2FibGUtd2VicCxsaWJ3ZWJwIgorUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJ0bXAsLS1kaXNhYmxlLXJ0bXAscnRtcGR1bXAiCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdICAgICAgICAgPSAiLS1lbmFibGUtbGlic3NoMiwtLWRpc2FibGUtbGlic3NoMixsaWJzc2gyIgorCisjIHRoZXNlIHBsdWdpbnMgaGF2ZSBub3QgYmVlbiBwb3J0ZWQgdG8gMS4wICh5ZXQpOgorIyAgIGRpcmVjdGRyYXcgdmNkIGFwZXhzaW5rIGRjMTM5NCBsdjIgbGluc3lzIG11c2VwYWNrIG15dGh0dgorIyAgIG5hcyB0aW1pZGl0eSB0ZWxldGV4dGRlYyBzZGwgeHZpZCB3aW5pbmV0IGFjbSBnc2V0dGluZ3MKKyMgICBzbmRpbyBxdHdyYXBwZXIgY2R4YXBhcnNlIGRjY3AgZmFjZW92ZXJsYXkgaGR2cGFyc2UgdHRhCisjICAgbXZlIG51dmRlbXV4IG9zeF92aWRlbyBwYXRjaGRldGVjdCBxdWlja3RpbWUgcmVhbCBzZGkKKyMgICB2aWRlb21lYXN1cmUgZ3NldHRpbmdzCisKKyMgdGhlc2UgcGx1Z2lucyBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbiBPRS1jb3JlIG9yIG1ldGEtb3BlbmVtYmVkZGVkOgorIyAgIG9wZW5uaTIgd2lua3MgZGlyZWN0M2QgZGlyZWN0ZHJhdyBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgb3N4X3ZpZGVvCisjICAgYXBwbGVfbWVkaWEgYW5kcm9pZF9tZWRpYSBhdmMgY2hyb21hcHJpbnQgZGFhbGEgZHRzIGdtZSBnc20ga2F0ZSBsYWRzcGEgbWltaWMKKyMgICBtcGVnMmVuYyBtcGxleCBvZmEgb3BlbmpwZWcgb3BlbnNsZXMgcHZyIHJlc2luZHZkIHJ0bXAgc291bmR0b3VjaCBzcGFuZHNwIHNwYworIyAgIHNydHAgdmRwYXUgdm9hYWNlbmMgdm9hbXJ3YmVuYyB3YXNhcGkgemJhcgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgLS1lbmFibGUtZHZiIFwKKyAgICAtLWVuYWJsZS1zaG0gXAorICAgIC0tZW5hYmxlLWZiZGV2IFwKKyAgICAtLWVuYWJsZS1kZWNrbGluayBcCisgICAgLS1kaXNhYmxlLWFjbSBcCisgICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAorICAgIC0tZGlzYWJsZS1hcGV4c2luayBcCisgICAgLS1kaXNhYmxlLWFwcGxlX21lZGlhIFwKKyAgICAtLWRpc2FibGUtYXZjIFwKKyAgICAtLWRpc2FibGUtY2hyb21hcHJpbnQgXAorICAgIC0tZGlzYWJsZS1jb2NvYSBcCisgICAgLS1kaXNhYmxlLWRhYWxhIFwKKyAgICAtLWRpc2FibGUtZGMxMzk0IFwKKyAgICAtLWRpc2FibGUtZGlyZWN0M2QgXAorICAgIC0tZGlzYWJsZS1kaXJlY3RkcmF3IFwKKyAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAorICAgIC0tZGlzYWJsZS1kdHMgXAorICAgIC0tZGlzYWJsZS1nbWUgXAorICAgIC0tZGlzYWJsZS1nc2V0dGluZ3MgXAorICAgIC0tZGlzYWJsZS1nc20gXAorICAgIC0tZGlzYWJsZS1rYXRlIFwKKyAgICAtLWRpc2FibGUtbGFkc3BhIFwKKyAgICAtLWRpc2FibGUtbGluc3lzIFwKKyAgICAtLWRpc2FibGUtbHYyIFwKKyAgICAtLWRpc2FibGUtbWltaWMgXAorICAgIC0tZGlzYWJsZS1tcGVnMmVuYyBcCisgICAgLS1kaXNhYmxlLW1wbGV4IFwKKyAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAorICAgIC0tZGlzYWJsZS1teXRodHYgXAorICAgIC0tZGlzYWJsZS1uYXMgXAorICAgIC0tZGlzYWJsZS1vZmEgXAorICAgIC0tZGlzYWJsZS1vcGVuanBlZyBcCisgICAgLS1kaXNhYmxlLW9wZW5zbGVzIFwKKyAgICAtLWRpc2FibGUtb3N4X3ZpZGVvIFwKKyAgICAtLWRpc2FibGUtcHZyIFwKKyAgICAtLWRpc2FibGUtcXVpY2t0aW1lIFwKKyAgICAtLWRpc2FibGUtcmVzaW5kdmQgXAorICAgIC0tZGlzYWJsZS1zZGwgXAorICAgIC0tZGlzYWJsZS1zZGx0ZXN0IFwKKyAgICAtLWRpc2FibGUtc25kaW8gXAorICAgIC0tZGlzYWJsZS1zb3VuZHRvdWNoIFwKKyAgICAtLWRpc2FibGUtc3BhbmRzcCBcCisgICAgLS1kaXNhYmxlLXNwYyBcCisgICAgLS1kaXNhYmxlLXNydHAgXAorICAgIC0tZGlzYWJsZS10ZWxldGV4dGRlYyBcCisgICAgLS1kaXNhYmxlLXRpbWlkaXR5IFwKKyAgICAtLWRpc2FibGUtdmNkIFwKKyAgICAtLWRpc2FibGUtdmRwYXUgXAorICAgIC0tZGlzYWJsZS12b2FhY2VuYyBcCisgICAgLS1kaXNhYmxlLXZvYW1yd2JlbmMgXAorICAgIC0tZGlzYWJsZS13YXNhcGkgXAorICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCisgICAgLS1kaXNhYmxlLXdpbmluZXQgXAorICAgIC0tZGlzYWJsZS13aW5zY3JlZW5jYXAgXAorICAgIC0tZGlzYWJsZS14dmlkIFwKKyAgICAtLWRpc2FibGUtemJhciBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKKyAgICAiCisKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCitGSUxFU19nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQtb3BlbmN2ICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhZC8xLjAvb3BlbmN2KiIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdsLWRvLW5vdC1jaGVjay1mb3ItR0wtR0xVLUVHTC1HTEVTMi1saWJzLWlmLWRpc2FibGUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ2wtZG8tbm90LWNoZWNrLWZvci1HTC1HTFUtRUdMLUdMRVMyLWxpYnMtaWYtZGlzYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDJhMzJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdsLWRvLW5vdC1jaGVjay1mb3ItR0wtR0xVLUVHTC1HTEVTMi1saWJzLWlmLWRpc2FibGUucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBkZWJhMGRhNDVlYzgyMTIwOWE3ZWQxNDhhNDUyMWQ1NjJlNjUxMmNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAxNDo0NzoyNSArMDIwMAorU3ViamVjdDogW1BBVENIXSBnbDogZG8gbm90IGNoZWNrIGZvciBHTC9HTFUvRUdML0dMRVMyIGxpYnMgaWYgZGlzYWJsZWQgaW4KKyBjb25maWd1cmF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NTIyXQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+CistLS0KKyBjb25maWd1cmUuYWMgfCAxNCArKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxYTQ2YWZiLi5lODVkNGJhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NjEsMTAgKzY2MSwxNiBAQCBjYXNlICRob3N0IGluCisgICAgIGZpCisgICA7OworICAgKikKKy0gICAgQUdfR1NUX0NIRUNLX0xJQkhFQURFUihHTCwgR0wsIGdsVGV4SW1hZ2UyRCwsIEdML2dsLmgpCistICAgIEFHX0dTVF9DSEVDS19MSUJIRUFERVIoR0xVLCBHTFUsIGdsdVNwaGVyZSwsIEdML2dsdS5oKQorLSAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMRVMyLCBHTEVTdjIsIGdsVGV4SW1hZ2UyRCwsIEdMRVMyL2dsMi5oKQorLSAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCkKKysgICAgaWYgdGVzdCAieCRORUVEX0dMIiAhPSAieG5vIjsgdGhlbgorKyAgICAgIEFHX0dTVF9DSEVDS19MSUJIRUFERVIoR0wsIEdMLCBnbFRleEltYWdlMkQsLCBHTC9nbC5oKQorKyAgICAgIEFHX0dTVF9DSEVDS19MSUJIRUFERVIoR0xVLCBHTFUsIGdsdVNwaGVyZSwsIEdML2dsdS5oKQorKyAgICBmaQorKyAgICBpZiB0ZXN0ICJ4JE5FRURfR0xFUzIiICE9ICJ4bm8iOyB0aGVuCisrICAgICAgQUdfR1NUX0NIRUNLX0xJQkhFQURFUihHTEVTMiwgR0xFU3YyLCBnbFRleEltYWdlMkQsLCBHTEVTMi9nbDIuaCkKKysgICAgZmkKKysgICAgaWYgdGVzdCAieCRORUVEX0VHTCIgIT0gInhubyI7IHRoZW4KKysgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCkKKysgICAgZmkKKyAKKyAgICAgb2xkX0xJQlM9JExJQlMKKyAgICAgb2xkX0NGTEFHUz0kQ0ZMQUdTCistLSAKKzEuOC4zLjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MmFmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBmNTljNTI2OWY5MmQ1OWE1Mjk2Y2JmZWViNjgyZDQyMDk1Y2Q4OGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE4IFNlcCAyMDE0IDAyOjI0OjA3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZDogYWxsb3cgdG8gZGlzYWJsZSBsaWJzc2gyCisKK2xpYnNzaDIgaXMgYXV0b21hdGljYWxseSBsaW5rZWQgdG8gaWYgcHJlc2VudCwgdGhpcyB1bmRldGVybWluZWQKK2RlcGVuZGVuY3kgbWF5IGNhdXNlIGJ1aWxkIGVycm9ycyBsaWtlOgorCisgIC4uLi94ODZfNjQtcG9reS1saW51eC80LjkuMC9sZDogY2Fubm90IGZpbmQgLWxzc2gyCisKK2xpYnNzaDIgaXNuJ3QgYW4gb2UtY29yZSByZWNpcGUsIHNvIGFsbG93IHRvIGRpc2FibGUgaXQgZnJvbQorY29uZmlndXJlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAgIDIzICsrKysrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDBlOTVjNWMuLjEyMTUzYjQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE5MDEsNiArMTkwMSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tYXByaW50XSwgY2hyb21hcHJpbnQsIFsKKyBdKQorIAorIGRubCAqKiogQ3VybCAqKioKKytBQ19BUkdfRU5BQkxFKFtsaWJzc2gyXSwKKysgICAgIFsgIC0tZW5hYmxlLWxpYnNzaDIJCWVuYWJsZSBMSUJTU0gyIHN1cHBvcnQgQDw6QGRlZmF1bHQ9YXV0b0A6PkBdLAorKyAgICAgW2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKysgICAgICAgeWVzKSAgTkVFRF9TU0gyPXllcyA7OworKyAgICAgICBubykgICBORUVEX1NTSDI9bm8gOzsKKysgICAgICAgYXV0bykgTkVFRF9TU0gyPWF1dG8gOzsKKysgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1saWJzc2gyXSkgOzsKKysgICAgIGVzYWNdLFtORUVEX1NTSDI9YXV0b10pCisrCisgdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQ1VSTCwgdHJ1ZSkKKyBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMjEuMCwgWworQEAgLTE5MTUsMTIgKzE5MjQsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXSwgY3VybCwgWworICAgXSkKKyAgIEFDX1NVQlNUKENVUkxfQ0ZMQUdTKQorICAgQUNfU1VCU1QoQ1VSTF9MSUJTKQorLSAgUEtHX0NIRUNLX01PRFVMRVMoU1NIMiwgbGlic3NoMiA+PSAxLjQuMywgWworLSAgICBIQVZFX1NTSDI9InllcyIKKy0gICAgQUNfREVGSU5FKEhBVkVfU1NIMiwgMSwgW0RlZmluZSBpZiBsaWJzc2gyIGlzIGF2YWlsYWJsZV0pCistICBdLCBbCistICAgIEhBVkVfU1NIMj0ibm8iCistICBdKQorKyAgaWYgdGVzdCAieCRORUVEX1NTSDIiICE9ICJ4bm8iOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFNTSDIsIGxpYnNzaDIgPj0gMS40LjMsIFsKKysgICAgICBIQVZFX1NTSDI9InllcyIKKysgICAgICBBQ19ERUZJTkUoSEFWRV9TU0gyLCAxLCBbRGVmaW5lIGlmIGxpYnNzaDIgaXMgYXZhaWxhYmxlXSkKKysgICAgXSwgWworKyAgICAgIEhBVkVfU1NIMj0ibm8iCisrICAgIF0pCisrICBmaQorICAgQU1fQ09ORElUSU9OQUwoVVNFX1NTSDIsIHRlc3QgIngkSEFWRV9TU0gyIiA9ICJ4eWVzIikKKyAgIEFDX1NVQlNUKFNTSDJfQ0ZMQUdTKQorICAgQUNfU1VCU1QoU1NIMl9MSUJTKQorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS40LjUuYmIgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MDY1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuNC41LmJiCkBAIC0wLDAgKzEsMTQgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2ZpbHRlcnMuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9OGEwODI3MDY1NmYyZjhhZDdiYjM2NTViODMxMzhlNWEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTIxNjgyZTRlOGZlYTUyNDEzZmQyNmM2MGFjYjkwN2U1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC90dGEvY3JjMzIuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9MjdkYjI2OWM1NzVkMWU1MzE3ZmZmY2EyZDMzYjNiNTAiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdsLWRvLW5vdC1jaGVjay1mb3ItR0wtR0xVLUVHTC1HTEVTMi1saWJzLWlmLWRpc2FibGUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMGJiMzk0MTJjZjRhNDhmZTAzOTdiY2YzYTdjZDQ1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNTJmYWQ3MjUwNjgzZDcyZjlkZWIzNmM1Njg1NDI4MzM4MzY1ZmU0YTRjODdmZmUxNWUzODc4M2IxNGY5ODNjIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkX2dpdC5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwOTUwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkX2dpdC5iYgpAQCAtMCwwICsxLDI2IEBACitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2ZpbHRlcnMuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9OGEwODI3MDY1NmYyZjhhZDdiYjM2NTViODMxMzhlNWEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTIxNjgyZTRlOGZlYTUyNDEzZmQyNmM2MGFjYjkwN2U1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC90dGEvY3JjMzIuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9MjdkYjI2OWM1NzVkMWU1MzE3ZmZmY2EyZDMzYjNiNTAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NSQ1JFViA9ICI2ZTVkYjU3ZDI0NDZhNzUzYWFhNzZiZWUyNjhlMWY5NTYwMGIxNGNlIgorCitQQUNLQUdFQ09ORklHW3NiY10gPSAiLS1lbmFibGUtc2JjLC0tZGlzYWJsZS1zYmMsc2JjIgorUEFDS0FHRUNPTkZJR1tobHNdID0gIi0tZW5hYmxlLWhscywtLWRpc2FibGUtaGxzLGdudXRscyIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgIC1kaXNhYmxlLW9wZW5qcGVnIFwKKyAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWNkICR7U30KKwkuL2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQorCWNkICR7Qn0KK30KKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZjNmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKQEAgLTAsMCArMSwzOSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL2xpYngxMSBsaWJ4dicsICcnLCBkKX0iCitERVBFTkRTICs9ICJmcmVldHlwZSBsaWJvaWwgdXRpbC1saW51eCIKKworaW5oZXJpdCBnZXR0ZXh0CisKK1BBQ0tBR0VTX0RZTkFNSUMgPSsgIl5saWJnc3QuKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhJywgJ2Fsc2EnLCAnJywgZCl9IFwKKyAgICBvcmMgaXZvcmJpcyBvZ2cgdGhlb3JhIHZvcmJpcyBwYW5nbyBcCisgICAgIgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIiCitYMTFFTkFCTEVPUFRTID0gIi0tZW5hYmxlLXggLS1lbmFibGUteHZpZGVvIC0tZW5hYmxlLXhzaG0iCitYMTFESVNBQkxFT1BUUyA9ICItLWRpc2FibGUteCAtLWRpc2FibGUteHZpZGVvIC0tZGlzYWJsZS14c2htIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2l2b3JiaXNdID0gIi0tZW5hYmxlLWl2b3JiaXMsLS1kaXNhYmxlLWl2b3JiaXMsdHJlbW9yIgorUEFDS0FHRUNPTkZJR1tvZ2ddICAgICA9ICItLWVuYWJsZS1vZ2csLS1kaXNhYmxlLW9nZyxsaWJvZ2ciCitQQUNLQUdFQ09ORklHW3RoZW9yYV0gID0gIi0tZW5hYmxlLXRoZW9yYSwtLWRpc2FibGUtdGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdm9yYmlzXSAgPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1twYW5nb10gICA9ICItLWVuYWJsZS1wYW5nbywtLWRpc2FibGUtcGFuZ28scGFuZ28iCisKKworIyBjZHBhcmFub2lhIGFuZCBsaWJ2aXN1YWwgZG8gbm90IHNlZW0gdG8gZXhpc3QgYW55d2hlcmUgaW4gT0UKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLWRpc2FibGUtZnJlZXR5cGV0ZXN0IFwKKyAgICAtLWRpc2FibGUtY2RwYXJhbm9pYSBcCisgICAgLS1kaXNhYmxlLWxpYnZpc3VhbCBcCisiCisKK0ZJTEVTXyR7TUxQUkVGSVh9bGliZ3N0dGFnLTEuMCArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYXNlLzEuMC9saWNlbnNlLXRyYW5zbGF0aW9ucy5kaWN0IgorCitDQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfeDg2ID0gIiBhY19jdl9oZWFkZXJfZW1taW50cmluX2g9bm8gYWNfY3ZfaGVhZGVyX3htbWludHJpbl9oPW5vIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1iYXNldGV4dG92ZXJsYXktbWFrZS1tZW1vcnktY29weS13aGVuLXZpZGVvLWJ1ZmZlci1zLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1iYXNldGV4dG92ZXJsYXktbWFrZS1tZW1vcnktY29weS13aGVuLXZpZGVvLWJ1ZmZlci1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZGNhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLWJhc2V0ZXh0b3ZlcmxheS1tYWtlLW1lbW9yeS1jb3B5LXdoZW4tdmlkZW8tYnVmZmVyLXMucGF0Y2gKQEAgLTAsMCArMSwxMjkgQEAKK0Zyb20gMzc4MWQ0MDk0MGQ0NmQ3ZTZhNTAyMDkyZDI0YWFjNzk5N2Y2ZGE1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdrZSBXYW5nIDxtaW5na2Uud2FuZ0BmcmVlc2NhbGUuY29tPgorRGF0ZTogVGh1LCA1IE1hciAyMDE1IDEyOjA2OjIzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBiYXNldGV4dG92ZXJsYXk6IG1ha2UgbWVtb3J5IGNvcHkgd2hlbiB2aWRlbyBidWZmZXIncworIG1lbW9yeSBpcyByZWFkeSBvbmx5CisKKzEuIHNpbmNlIGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSBqdXN0IGxvb2t1cCB0aGUgcmVmY291bnQgdG8gZGV0ZXJtaW5lIGlmCisgICBhIGJ1ZmZlciBpcyB3cml0YWJsZSwgYW5kIGl0IHdpbGwgdXNlIF9nc3RfYnVmZmVyX2NvcHkoKSB3aGljaCBkb24ndAorICAgcGVyZm9ybSBhIGRlZXAgbWVtb3J5IGNvcHkgZXZlbiBpZiB0aGUgZmxhZyBvZiBhIG1lbW9yeSBpcyBzZXQgdG8KKyAgIEdTVF9NRU1PUllfRkxBR19SRUFET05MWS4gU28sIHdlIGRldGVjdCB0aGUgbWVtb3J5IGZsYWcgYW5kIHVzZQorICAgZ3N0X2J1ZmZlcl9jb3B5X3JlZ2lvbiB3aXRoIEdTVF9CVUZGRVJfQ09QWV9ERUVQIHBhcmFtZXRlciB0byBwZXJmb3JtCisgICBkZWVwIG1lbW9yeSBjb3B5LiBpZiB0aGUgYWxsb2NhdG9yIG9mIGEgbWVtb3J5IGRvbid0IHN1cHBvcnQgbWVtX2NvcHkKKyAgIGludGVyZmFjZSwgdGhlIGl0IHdpbGwgcmV0dXJuIE5VTEwsIGlmIHRoaXMgY2FzZSwgd2UgY2FuIHVzZQorICAgZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlKCkgdG8gZ2V0IGEgc2hhcmVkIG1lbW9yeSBidWZmZXIgb3IgdGhlIG9yaWduYWwKKyAgIGJ1ZmZlciBpZiB0aGUgYnVmZmVyJ3MgcmVmY291bnQgaXMgMS4KKzIuICBuZXcgZmVhdHVyZSBpcyBubyBhZGRlZCBpZiBjYXBzIGhhcyBubyBmZWF0dXJlIGR1cmluZyBjYXBzIG5lZ290aWF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NDk1XQorCitTaWduZWQtb2ZmLWJ5OiBNaW5na2UgV2FuZyA8bWluZ2tlLndhbmdAZnJlZXNjYWxlLmNvbT4KKworZGlmZiAtLWdpdCBhL2V4dC9wYW5nby9nc3RiYXNldGV4dG92ZXJsYXkuYyBiL2V4dC9wYW5nby9nc3RiYXNldGV4dG92ZXJsYXkuYworaW5kZXggYzkxOTg2MS4uM2MwYTFkNyAxMDA3NTUKKy0tLSBhL2V4dC9wYW5nby9nc3RiYXNldGV4dG92ZXJsYXkuYworKysrIGIvZXh0L3BhbmdvL2dzdGJhc2V0ZXh0b3ZlcmxheS5jCitAQCAtNzQ3LDYgKzc0Nyw3IEBAIGdzdF9iYXNlX3RleHRfb3ZlcmxheV9uZWdvdGlhdGUgKEdzdEJhc2VUZXh0T3ZlcmxheSAqIG92ZXJsYXksIEdzdENhcHMgKiBjYXBzKQorICAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgZiA9IGdzdF9jYXBzX2ZlYXR1cmVzX25ldworICAgICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OLCBOVUxMKTsKKysgICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMob3ZlcmxheV9jYXBzLCAwLCBmKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGYsCisgICAgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7CitAQCAtMTg5MCwxNiArMTg5MSw3MSBAQCBnc3RfYmFzZV90ZXh0X292ZXJsYXlfcHVzaF9mcmFtZSAoR3N0QmFzZVRleHRPdmVybGF5ICogb3ZlcmxheSwKKyAgIGlmIChnc3RfcGFkX2NoZWNrX3JlY29uZmlndXJlIChvdmVybGF5LT5zcmNwYWQpKQorICAgICBnc3RfYmFzZV90ZXh0X292ZXJsYXlfbmVnb3RpYXRlIChvdmVybGF5LCBOVUxMKTsKKyAKKy0gIHZpZGVvX2ZyYW1lID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlICh2aWRlb19mcmFtZSk7CistCisgICBpZiAob3ZlcmxheS0+YXR0YWNoX2NvbXBvX3RvX2J1ZmZlcikgeworICAgICBHU1RfREVCVUdfT0JKRUNUIChvdmVybGF5LCAiQXR0YWNoaW5nIHRleHQgb3ZlcmxheSBpbWFnZSB0byB2aWRlbyBidWZmZXIiKTsKKysgICAgdmlkZW9fZnJhbWUgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKHZpZGVvX2ZyYW1lKTsKKyAgICAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fb3ZlcmxheV9jb21wb3NpdGlvbl9tZXRhICh2aWRlb19mcmFtZSwKKyAgICAgICAgIG92ZXJsYXktPmNvbXBvc2l0aW9uKTsKKyAgICAgLyogRklYTUU6IGVtdWxhdGUgc2hhZGVkIGJhY2tncm91bmQgYm94IGlmIHdhbnRfc2hhZGluZz10cnVlICovCisgICAgIGdvdG8gZG9uZTsKKyAgIH0KKyAKKysgIGdpbnQgbSA9IGdzdF9idWZmZXJfbl9tZW1vcnkodmlkZW9fZnJhbWUpOworKyAgZ2Jvb2xlYW4gbWVtX3Jkb25seSA9IEZBTFNFOworKyAgR3N0TWVtb3J5ICptZW07CisrICBHc3RCdWZmZXIgKm9yaWcgPSB2aWRlb19mcmFtZTsKKysKKysgIHdoaWxlICgtLW0+PTApIHsKKysgICAgbWVtID0gZ3N0X2J1ZmZlcl9nZXRfbWVtb3J5KHZpZGVvX2ZyYW1lLCBtKTsKKysgICAgaWYgKEdTVF9NRU1PUllfSVNfUkVBRE9OTFkobWVtKSkgeworKyAgICAgIG1lbV9yZG9ubHkgPSBUUlVFOworKyAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKG1lbSk7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgZ3N0X21lbW9yeV91bnJlZiAobWVtKTsKKysgIH0KKysKKysgIGlmIChtZW1fcmRvbmx5KSB7CisrICAgIC8vIHNpbmNlIGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSBqdXN0IGxvb2t1cCB0aGUgcmVmY291bnQgdG8gZGV0ZXJtaW5lIGlmCisrICAgIC8vIGEgYnVmZmVyIGlzIHdyaXRhYmxlLCBhbmQgaXQgd2lsbCB1c2UgX2dzdF9idWZmZXJfY29weSgpIHdoaWNoIGRvbid0CisrICAgIC8vIHBlcmZvcm0gYSBkZWVwIG1lbW9yeSBjb3B5IGV2ZW4gaWYgdGhlIGZsYWcgb2YgYSBtZW1vcnkgaXMgc2V0IHRvCisrICAgIC8vIEdTVF9NRU1PUllfRkxBR19SRUFET05MWS4gU28sIHdlIGRldGVjdCB0aGUgbWVtb3J5IGZsYWcgYW5kIHVzZQorKyAgICAvLyBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIHdpdGggR1NUX0JVRkZFUl9DT1BZX0RFRVAgcGFyYW1ldGVyIHRvIHBlcmZvcm0KKysgICAgLy8gZGVlcCBtZW1vcnkgY29weS4gaWYgdGhlIGFsbG9jYXRvciBvZiBhIG1lbW9yeSBkb24ndCBzdXBwb3J0IG1lbV9jb3B5CisrICAgIC8vIGludGVyZmFjZSwgdGhlIGl0IHdpbGwgcmV0dXJuIE5VTEwsIGlmIHRoaXMgY2FzZSwgd2UgY2FuIHVzZQorKyAgICAvLyBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUoKSB0byBnZXQgYSBzaGFyZWQgbWVtb3J5IGJ1ZmZlciBvciB0aGUgb3JpZ25hbAorKyAgICAvLyBidWZmZXIgaWYgdGhlIGJ1ZmZlcidzIHJlZmNvdW50IGlzIDEuCisrICAgIEdzdEJ1ZmZlciAqbmV3X2J1ZiA9IGdzdF9idWZmZXJfY29weV9yZWdpb24gKHZpZGVvX2ZyYW1lLAorKyAgICAgICAgR1NUX0JVRkZFUl9DT1BZX0FMTCB8IEdTVF9CVUZGRVJfQ09QWV9ERUVQLCAwLCAtMSk7CisrCisrICAgIEdTVF9ERUJVR19PQkpFQ1QgKG92ZXJsYXksICJjb3B5ICVzIHZpZGVvIGZyYW1lIGJ1ZmZlciAlcCAtPiAlcCIsCisrICAgICAgICBnX3R5cGVfbmFtZSAoR1NUX01JTklfT0JKRUNUX1RZUEUgKHZpZGVvX2ZyYW1lKSksIHZpZGVvX2ZyYW1lLCBuZXdfYnVmKTsKKysKKysgICAgaWYgKCFuZXdfYnVmKSB7CisrICAgICAgLy9tYXliZSB0aGUgYWxsb2NhdG9yIGRvbid0IHN1cHBvcnQgbWVtX2NvcHkgaW50ZXJmYWNlLCB0aGUgd2UganVzdCB1c2UKKysgICAgICAvL2dzdF9idWZmZXJfbWFrZV93cml0YWJsZSgpIHRvIGdldCBhIHdyaXRhYmxlIGJ1ZmZlci4KKysgICAgICB2aWRlb19mcmFtZSA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSAodmlkZW9fZnJhbWUpOworKyAgICB9IGVsc2UgeworKyAgICAgIGdzdF9taW5pX29iamVjdF91bnJlZiAodmlkZW9fZnJhbWUpOworKyAgICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAobmV3X2J1ZiwgR1NUX0JVRkZFUl9GTEFHX1RBR19NRU1PUlkpOworKyAgICAgIHZpZGVvX2ZyYW1lID0gbmV3X2J1ZjsKKysgICAgfQorKworKyAgICBpZiAoIXZpZGVvX2ZyYW1lKSB7CisrICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChvdmVybGF5LCAibWFrZSB3cml0YWJsZSBidWZmZXIgZmFpbGVkIik7CisrICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworKyAgICB9CisrCisrICAgIG0gPSBnc3RfYnVmZmVyX25fbWVtb3J5KHZpZGVvX2ZyYW1lKTsKKysgICAgd2hpbGUgKC0tbT49MCkgeworKyAgICAgIG1lbSA9IGdzdF9idWZmZXJfZ2V0X21lbW9yeSh2aWRlb19mcmFtZSwgbSk7CisrICAgICAgR1NUX01FTU9SWV9GTEFHX1VOU0VUIChtZW0sIEdTVF9NRU1PUllfRkxBR19SRUFET05MWSk7CisrICAgICAgZ3N0X21lbW9yeV91bnJlZiAobWVtKTsKKysgICAgfQorKyAgfSBlbHNlIHsKKysgICAgdmlkZW9fZnJhbWUgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKHZpZGVvX2ZyYW1lKTsKKysgIH0KKysKKyAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmZyYW1lLCAmb3ZlcmxheS0+aW5mbywgdmlkZW9fZnJhbWUsCisgICAgICAgICAgIEdTVF9NQVBfUkVBRFdSSVRFKSkKKyAgICAgZ290byBpbnZhbGlkX2ZyYW1lOworQEAgLTE5MTgsNiArMTk3NCwxOCBAQCBnc3RfYmFzZV90ZXh0X292ZXJsYXlfcHVzaF9mcmFtZSAoR3N0QmFzZVRleHRPdmVybGF5ICogb3ZlcmxheSwKKyAKKyAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJmZyYW1lKTsKKyAKKysgIGlmIChtZW1fcmRvbmx5ICYmIG9yaWcgPT0gdmlkZW9fZnJhbWUpIHsKKysgICAgLy9pZiB3ZSB1c2VkIHRoZSBvcmlnaW5hbCBidWZmZXIgYW5kIGl0J3MgbWVtIGlzIHNldCB0byByZWFkIG9ubHksCisrICAgIC8vcmVjb3ZlciB0aGUgbWVtb3J5IHJlYWR5IG9ubHkgZmxhZyBzaW5jZSB3ZSB1bnNldCBpdCBiZWZvcmUKKysgICAgLy8gZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoKQorKyAgICBtID0gZ3N0X2J1ZmZlcl9uX21lbW9yeSh2aWRlb19mcmFtZSk7CisrICAgIHdoaWxlICgtLW0+PTApIHsKKysgICAgICBtZW0gPSBnc3RfYnVmZmVyX2dldF9tZW1vcnkodmlkZW9fZnJhbWUsIG0pOworKyAgICAgIEdTVF9NRU1PUllfRkxBR1MobWVtKSB8PSAoR1NUX01FTU9SWV9GTEFHX1JFQURPTkxZKTsKKysgICAgICBnc3RfbWVtb3J5X3VucmVmIChtZW0pOworKyAgICB9CisrICB9CisrCisgZG9uZToKKyAKKyAgIHJldHVybiBnc3RfcGFkX3B1c2ggKG92ZXJsYXktPnNyY3BhZCwgdmlkZW9fZnJhbWUpOworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtdmlkZW8tZnJhbWUtRG9uLXQtcmVmLWJ1ZmZlcnMtdHdpY2Utd2hlbi1tYXBwaW5nLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS12aWRlby1mcmFtZS1Eb24tdC1yZWYtYnVmZmVycy10d2ljZS13aGVuLW1hcHBpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RiNDcyNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtdmlkZW8tZnJhbWUtRG9uLXQtcmVmLWJ1ZmZlcnMtdHdpY2Utd2hlbi1tYXBwaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMjY5ZjY0MmM0NWQ4NWNmZDYzMGVkNDkwNDc4ZTZiZDZiNzFhNzY3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CitEYXRlOiBUdWUsIDE2IFNlcCAyMDE0IDAxOjA3OjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHZpZGVvLWZyYW1lOiBEb24ndCByZWYgYnVmZmVycyB0d2ljZSB3aGVuIG1hcHBpbmcKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS41LjFdCistLS0KKyBnc3QtbGlicy9nc3QvdmlkZW8vdmlkZW8tZnJhbWUuYyB8ICAgIDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby92aWRlby1mcmFtZS5jIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmMKK2luZGV4IDAxZjIzYzAuLjhhOWFlOTYgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vdmlkZW8tZnJhbWUuYworKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmMKK0BAIC0xMDUsNyArMTA1LDcgQEAgZ3N0X3ZpZGVvX2ZyYW1lX21hcF9pZCAoR3N0VmlkZW9GcmFtZSAqIGZyYW1lLCBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgICAgIGZyYW1lLT5kYXRhW2ldID0gZnJhbWUtPm1hcFswXS5kYXRhICsgaW5mby0+b2Zmc2V0W2ldOworICAgICB9CisgICB9CistICBmcmFtZS0+YnVmZmVyID0gZ3N0X2J1ZmZlcl9yZWYgKGJ1ZmZlcik7CisrICBmcmFtZS0+YnVmZmVyID0gYnVmZmVyOworICAgaWYgKChmbGFncyAmIEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYpID09IDApCisgICAgIGdzdF9idWZmZXJfcmVmIChmcmFtZS0+YnVmZmVyKTsKKyAKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLWdzdHBsYXlzaW5rLWRvbi10LXNldC1hc3luYy1vZi1jdXN0b20tdGV4dC1zaW5rLXRvLWYucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLWdzdHBsYXlzaW5rLWRvbi10LXNldC1hc3luYy1vZi1jdXN0b20tdGV4dC1zaW5rLXRvLWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljMTQ2YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItZ3N0cGxheXNpbmstZG9uLXQtc2V0LWFzeW5jLW9mLWN1c3RvbS10ZXh0LXNpbmstdG8tZi5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDBhNzg1NTVlYTZjOGMyZjFlZTI3ZWU0NzA3ZThkN2FhMDBhYjdhNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5na2UgV2FuZyA8bWluZ2tlLndhbmdAZnJlZXNjYWxlLmNvbT4KK0RhdGU6IFRodSwgMTkgTWFyIDIwMTUgMTQ6MTU6MjUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGdzdHBsYXlzaW5rOiBkb24ndCBzZXQgYXN5bmMgb2YgY3VzdG9tIHRleHQtc2luayB0bworIGZhbHNlCisKK3NldCBhc3luYyB0byBmYWxzZSBsZWFkIHRvIEEvViBzeW5jIHByb2JsZW0gd2hlbiBzZWVraW5nLgordGhlIHByZXJvbGwgbmVlZCB1c2UgR0FQIGV2ZW50IGluc3RlYWQgb2Ygc2V0IGFzeW5jIHRvIGZhbHNlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzQ5OV0KKworU2lnbmVkLW9mZi1ieTogTWluZ2tlIFdhbmcgPG1pbmdrZS53YW5nQGZyZWVzY2FsZS5jb20+CisKK2RpZmYgLS1naXQgYS9nc3QvcGxheWJhY2svZ3N0cGxheXNpbmsuYyBiL2dzdC9wbGF5YmFjay9nc3RwbGF5c2luay5jCitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggZjVhMmQ0Mi4uZmJhMDE3MgorLS0tIGEvZ3N0L3BsYXliYWNrL2dzdHBsYXlzaW5rLmMKKysrKyBiL2dzdC9wbGF5YmFjay9nc3RwbGF5c2luay5jCitAQCAtMjQwOCw3ICsyNDA4LDcgQEAgZ2VuX3RleHRfY2hhaW4gKEdzdFBsYXlTaW5rICogcGxheXNpbmspCisgICAgICAgICAgIEdfVFlQRV9CT09MRUFOKTsKKyAgICAgICBpZiAoZWxlbSkgeworICAgICAgICAgLyogbWFrZSBzdXJlIHRoZSBzcGFyc2Ugc3VidGl0bGVzIGRvbid0IHBhcnRpY2lwYXRlIGluIHRoZSBwcmVyb2xsICovCistICAgICAgICBnX29iamVjdF9zZXQgKGVsZW0sICJhc3luYyIsIEZBTFNFLCBOVUxMKTsKKysgICAgICAgIC8vZ19vYmplY3Rfc2V0IChlbGVtLCAiYXN5bmMiLCBGQUxTRSwgTlVMTCk7CisgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChwbGF5c2luaywgImFkZGluZyBjdXN0b20gdGV4dCBzaW5rIik7CisgICAgICAgICBnc3RfYmluX2FkZCAoYmluLCBjaGFpbi0+c2luayk7CisgICAgICAgICAvKiBOT1RFIHN0cmVhbXN5bmNocm9uaXplciBuZWVkcyBzdHJlYW1zIGRlY291cGxlZCAqLworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItdmlkZW8tZnJhbWUtQWRkLUdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLXZpZGVvLWZyYW1lLUFkZC1HU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NjViNWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLXZpZGVvLWZyYW1lLUFkZC1HU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGLnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gNDBhMjkzZDQ0ZDFhZWNjZjVlYjhlODZmMjNhMGIxMzY2NjExMWM1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CitEYXRlOiBGcmksIDEyIFNlcCAyMDE0IDE0OjM5OjE2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSB2aWRlby1mcmFtZTogQWRkIEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYKKworVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBub3QgcmVmZmVkIGFub3RoZXIgdGltZSB3aGVuCitzdG9yaW5nIGl0IGluIHRoZSBHc3RWaWRlb0ZyYW1lLCBrZWVwaW5nIGl0IHdyaXRhYmxlIGlmIGl0IHdhcword3JpdGFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzEuNS4xXQoraHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczNjExOAorLS0tCisgZ3N0LWxpYnMvZ3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmMgfCAgICA5ICsrKysrKysrLQorIGdzdC1saWJzL2dzdC92aWRlby92aWRlby1mcmFtZS5oIHwgICAxOCArKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby92aWRlby1mcmFtZS5jIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmMKK2luZGV4IDUzN2NmNzAuLjAxZjIzYzAgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vdmlkZW8tZnJhbWUuYworKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmMKK0BAIC0xMDYsNiArMTA2LDkgQEAgZ3N0X3ZpZGVvX2ZyYW1lX21hcF9pZCAoR3N0VmlkZW9GcmFtZSAqIGZyYW1lLCBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgICB9CisgICB9CisgICBmcmFtZS0+YnVmZmVyID0gZ3N0X2J1ZmZlcl9yZWYgKGJ1ZmZlcik7CisrICBpZiAoKGZsYWdzICYgR1NUX1ZJREVPX0ZSQU1FX01BUF9GTEFHX05PX1JFRikgPT0gMCkKKysgICAgZ3N0X2J1ZmZlcl9yZWYgKGZyYW1lLT5idWZmZXIpOworKworICAgZnJhbWUtPm1ldGEgPSBtZXRhOworIAorICAgLyogYnVmZmVyIGZsYWdzIGVuaGFuY2UgdGhlIGZyYW1lIGZsYWdzICovCitAQCAtMTg5LDExICsxOTIsMTMgQEAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwIChHc3RWaWRlb0ZyYW1lICogZnJhbWUpCisgICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKyAgIEdzdFZpZGVvTWV0YSAqbWV0YTsKKyAgIGdpbnQgaTsKKysgIEdzdE1hcEZsYWdzIGZsYWdzOworIAorICAgZ19yZXR1cm5faWZfZmFpbCAoZnJhbWUgIT0gTlVMTCk7CisgCisgICBidWZmZXIgPSBmcmFtZS0+YnVmZmVyOworICAgbWV0YSA9IGZyYW1lLT5tZXRhOworKyAgZmxhZ3MgPSBmcmFtZS0+bWFwWzBdLmZsYWdzOworIAorICAgaWYgKG1ldGEpIHsKKyAgICAgZm9yIChpID0gMDsgaSA8IGZyYW1lLT5pbmZvLmZpbmZvLT5uX3BsYW5lczsgaSsrKSB7CitAQCAtMjAyLDcgKzIwNyw5IEBAIGdzdF92aWRlb19mcmFtZV91bm1hcCAoR3N0VmlkZW9GcmFtZSAqIGZyYW1lKQorICAgfSBlbHNlIHsKKyAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmZnJhbWUtPm1hcFswXSk7CisgICB9CistICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworKworKyAgaWYgKChmbGFncyAmIEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYpID09IDApCisrICAgIGdzdF9idWZmZXJfdW5yZWYgKGZyYW1lLT5idWZmZXIpOworIH0KKyAKKyAvKioKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vdmlkZW8tZnJhbWUuaCBiL2dzdC1saWJzL2dzdC92aWRlby92aWRlby1mcmFtZS5oCitpbmRleCA2MjdmYWIwLi5mOGU2MzA0IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmgKKysrKyBiL2dzdC1saWJzL2dzdC92aWRlby92aWRlby1mcmFtZS5oCitAQCAtMTQ5LDYgKzE0OSwyNCBAQCB0eXBlZGVmIGVudW0geworICAgR1NUX1ZJREVPX0JVRkZFUl9GTEFHX0xBU1QgICAgICAgID0gKEdTVF9CVUZGRVJfRkxBR19MQVNUIDw8IDgpCisgfSBHc3RWaWRlb0J1ZmZlckZsYWdzOworIAorKy8qKgorKyAqIEdzdFZpZGVvQnVmZmVyRmxhZ3M6CisrICogQEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUY6ICBEb24ndCB0YWtlIGFub3RoZXIgcmVmZXJlbmNlIG9mIHRoZSBidWZmZXIgYW5kIHN0b3JlIGl0IGluCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgR3N0VmlkZW9GcmFtZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGJ1ZmZlciBzdGF5cworKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGUgd2hpbGUgdGhlIGZyYW1lIGlzIG1hcHBlZCwgYnV0IHJlcXVpcmVzIHRoYXQgdGhlCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIgcmVmZXJlbmNlIHN0YXlzIHZhbGlkIHVudGlsIHRoZSBmcmFtZSBpcyB1bm1hcHBlZCBhZ2Fpbi4KKysgKiBAR1NUX1ZJREVPX0ZSQU1FX01BUF9GTEFHX0xBU1Q6ICAgIE9mZnNldCB0byBkZWZpbmUgbW9yZSBmbGFncworKyAqCisrICogQWRkaXRpb25hbCBtYXBwaW5nIGZsYWdzIGZvciBnc3RfdmlkZW9fZnJhbWVfbWFwKCkuCisrICoKKysgKiBTaW5jZTogMS42CisrICovCisrdHlwZWRlZiBlbnVtIHsKKysgIEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYgICA9IChHU1RfTUFQX0ZMQUdfTEFTVCA8PCAwKSwKKysgIEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19MQVNUICAgICA9IChHU1RfTUFQX0ZMQUdfTEFTVCA8PCA4KQorKyAgLyogOCBtb3JlIGZsYWdzIHBvc3NpYmxlIGFmdGVyd2FyZHMgKi8KKyt9IEdzdFZpZGVvRnJhbWVNYXBGbGFnczsKKysKKyBHX0VORF9ERUNMUworIAorICNlbmRpZiAvKiBfX0dTVF9WSURFT19GUkFNRV9IX18gKi8KKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYmViZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaApAQCAtMCwwICsxLDIyNSBAQAorRnJvbSBiZTYxNjNjZmEzYTI1NTQ5M2Y5ZDc1YmFkOTU0MWNiZmUxNzIzZmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2tlIFdhbmcgPG1pbmdrZS53YW5nQGZyZWVzY2FsZS5jb20+CitEYXRlOiBUaHUsIDE5IE1hciAyMDE1IDE0OjE3OjEwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBzc2FwYXJzZTogZW5oYW5jZSBTU0EgdGV4dCBsaW5lcyBwYXJzaW5nLgorCitzb21lIHBhcnNlciB3aWxsIHBhc3MgaW4gdGhlIG9yaWdpbmFsIHNzYSB0ZXh0IGxpbmUgd2hpY2ggc3RhcnRzIHdpdGggIkRpYWxvZzoiCithbmQgdGhlcmUncyBhcmUgbWF5YmUgbXVsdGlwbGUgRGlhbG9nIGxpbmVzIGluIG9uZSBpbnB1dCBidWZmZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NDk2XQorCitTaWduZWQtb2ZmLWJ5OiBNaW5na2UgV2FuZyA8bWluZ2tlLndhbmdAZnJlZXNjYWxlLmNvbT4KKworZGlmZiAtLWdpdCBhL2dzdC9zdWJwYXJzZS9nc3Rzc2FwYXJzZS5jIGIvZ3N0L3N1YnBhcnNlL2dzdHNzYXBhcnNlLmMKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCAwNmVjZWY5Li4wYWI1ZGNlCistLS0gYS9nc3Qvc3VicGFyc2UvZ3N0c3NhcGFyc2UuYworKysrIGIvZ3N0L3N1YnBhcnNlL2dzdHNzYXBhcnNlLmMKK0BAIC0yNjAsNiArMjYwLDcgQEAgZ3N0X3NzYV9wYXJzZV9yZW1vdmVfb3ZlcnJpZGVfY29kZXMgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0KQorICAqIGdzdF9zc2FfcGFyc2VfcHVzaF9saW5lOgorICAqIEBwYXJzZTogY2FsbGVyIGVsZW1lbnQKKyAgKiBAdHh0OiB0ZXh0IHRvIHB1c2gKKysgKiBAc2l6ZTogdGV4dCBzaXplIG5lZWQgdG8gYmUgcGFyc2UKKyAgKiBAc3RhcnQ6IHRpbWVzdGFtcCBmb3IgdGhlIGJ1ZmZlcgorICAqIEBkdXJhdGlvbjogZHVyYXRpb24gZm9yIHRoZSBidWZmZXIKKyAgKgorQEAgLTI2OSwyNyArMjcwLDEzMyBAQCBnc3Rfc3NhX3BhcnNlX3JlbW92ZV9vdmVycmlkZV9jb2RlcyAoR3N0U3NhUGFyc2UgKiBwYXJzZSwgZ2NoYXIgKiB0eHQpCisgICogUmV0dXJuczogcmVzdWx0IG9mIHRoZSBwdXNoIG9mIHRoZSBjcmVhdGVkIGJ1ZmZlcgorICAqLworIHN0YXRpYyBHc3RGbG93UmV0dXJuCistZ3N0X3NzYV9wYXJzZV9wdXNoX2xpbmUgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0LAorK2dzdF9zc2FfcGFyc2VfcHVzaF9saW5lIChHc3RTc2FQYXJzZSAqIHBhcnNlLCBnY2hhciAqIHR4dCwgZ2ludCBzaXplLAorICAgICBHc3RDbG9ja1RpbWUgc3RhcnQsIEdzdENsb2NrVGltZSBkdXJhdGlvbikKKyB7CisgICBHc3RGbG93UmV0dXJuIHJldDsKKyAgIEdzdEJ1ZmZlciAqYnVmOworLSAgZ2NoYXIgKnQsICplc2NhcGVkOworKyAgZ2NoYXIgKnQsICp0ZXh0LCAqcCwgKmVzY2FwZWQsICpwX3N0YXJ0LCAqcF9lbmQ7CisgICBnaW50IG51bSwgaSwgbGVuOworKyAgR3N0Q2xvY2tUaW1lIHN0YXJ0X3RpbWUgPSBHX01BWFVJTlQ2NCwgZW5kX3RpbWUgPSAwOworIAorLSAgbnVtID0gYXRvaSAodHh0KTsKKy0gIEdTVF9MT0dfT0JKRUNUIChwYXJzZSwgIlBhcnNpbmcgbGluZSAjJWQgYXQgJSIgR1NUX1RJTUVfRk9STUFULAorLSAgICAgIG51bSwgR1NUX1RJTUVfQVJHUyAoc3RhcnQpKTsKKy0KKy0gIC8qIHNraXAgYWxsIG5vbi10ZXh0IGZpZWxkcyBiZWZvcmUgdGhlIGFjdHVhbCB0ZXh0ICovCisrICBwID0gdGV4dCA9IGdfbWFsbG9jKHNpemUgKyAxKTsKKysgICpwID0gJ1wwJzsKKyAgIHQgPSB0eHQ7CistICBmb3IgKGkgPSAwOyBpIDwgODsgKytpKSB7CistICAgIHQgPSBzdHJjaHIgKHQsICcsJyk7CisrCisrICAvKiB0aGVyZSBhcmUgbWF5IGhhdmUgbXVsdGlwbGUgZGlhbG9ndWUgbGluZXMgYXQgYSB0aW1lICovCisrICB3aGlsZSAoKnQpIHsKKysgICAgLyogaWdub3JlIGxlYWRpbmcgd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAqLworKyAgICB3aGlsZSAoaXNzcGFjZSgqdCkpCisrICAgICAgdCsrOworKworKyAgICAvKiBpZ25vcmUgRm9ybWF0OiBhbmQgU3R5bGU6IGxpbmVzICovCisrICAgIGlmIChzdHJuY21wKHQsICJGb3JtYXQ6IiwgNykgPT0gMCB8fCBzdHJuY21wKHQsICJTdHlsZToiLCA2KSA9PSAwKSB7CisrICAgICAgd2hpbGUgKCp0ICE9ICdcMCcgJiYgKnQgIT0gJ1xuJykgeworKyAgICAgICAgdCsrOworKyAgICAgIH0KKysgICAgfQorKworKyAgICBpZiAoKnQgPT0gJ1wwJykKKysgICAgICBicmVhazsKKysKKysgICAgLyogY29udGludWUgd2l0aCBuZXh0IGxpbmUgKi8KKysgICAgaWYgKCp0ID09ICdcbicpIHsKKysgICAgICB0Kys7CisrICAgICAgY29udGludWU7CisrICAgIH0KKysKKysgICAgaWYoc3RybmNtcCh0LCAiRGlhbG9ndWU6IiwgOSkgIT0gMCkgeworKyAgICAgIC8qIG5vdCBzdGFydGVkIHdpdGggIkRpYWxvZ3VlOiIsIGl0IG11c3QgYmUgYSBsaW5lIHRyaW1tZWQgYnkgZGVtdXhlciAqLworKyAgICAgIG51bSA9IGF0b2kgKHQpOworKyAgICAgIEdTVF9MT0dfT0JKRUNUIChwYXJzZSwgIlBhcnNpbmcgbGluZSAjJWQgYXQgJSIgR1NUX1RJTUVfRk9STUFULAorKyAgICAgICAgICBudW0sIEdTVF9USU1FX0FSR1MgKHN0YXJ0KSk7CisrCisrICAgICAgLyogc2tpcCBhbGwgbm9uLXRleHQgZmllbGRzIGJlZm9yZSB0aGUgYWN0dWFsIHRleHQgKi8KKysgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgKytpKSB7CisrICAgICAgICB0ID0gc3RyY2hyICh0LCAnLCcpOworKyAgICAgICAgaWYgKHQgPT0gTlVMTCkKKysgICAgICAgICAgYnJlYWs7CisrICAgICAgICArK3Q7CisrICAgICAgfQorKyAgICB9IGVsc2UgeworKyAgICAgIC8qIHN0YXJ0ZWQgd2l0aCAiRGlhbG9ndWU6IiwgdXBkYXRlIHRpbWVzdGFtcCBhbmQgZHVyYXRpb24gKi8KKysgICAgICAvKiB0aW1lIGZvcm1hdCBhcmUgbGlrZSBEaWFsb2c6TWFyaywwOjAwOjAxLjAyLDA6MDA6MDMuMDQseHgseHh4LC4uLiAqLworKyAgICAgIGd1aW50IGhvdXIsIG1pbiwgc2VjLCBtc2VjLCBsZW47CisrICAgICAgR3N0Q2xvY2tUaW1lIHRtcDsKKysgICAgICBnY2hhciB0X3N0clsxMl0gPSB7MH07CisrCisrICAgICAgLyogZmluZCB0aGUgZmlyc3QgJywnICovCisrICAgICAgcF9zdGFydCA9IHN0cmNociAodCwgJywnKTsKKysgICAgICBpZiAocF9zdGFydCkKKysgICAgICAgIHBfZW5kID0gc3RyY2hyICgrK3Bfc3RhcnQsICcsJyk7CisrCisrICAgICAgaWYgKHBfc3RhcnQgJiYgcF9lbmQpIHsKKysgICAgICAgIC8qIGNvcHkgdGV4dCBiZXR3ZWVuIGZpcnN0ICcsJyBhbmQgc2Vjb25kICcsJyAqLworKyAgICAgICAgc3RybmNweSh0X3N0ciwgcF9zdGFydCwgcF9lbmQgLSBwX3N0YXJ0KTsKKysgICAgICAgIGlmIChzc2NhbmYgKHRfc3RyLCAiJXU6JXU6JXUuJXUiLCAmaG91ciwgJm1pbiwgJnNlYywgJm1zZWMpID09IDQpIHsKKysgICAgICAgICAgdG1wID0gKChob3VyKjM2MDApICsgKG1pbio2MCkgKyBzZWMpICogR1NUX1NFQ09ORCArIG1zZWMqR1NUX01TRUNPTkQ7CisrICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhcnNlLCAiR2V0IHN0YXJ0IHRpbWU6JTAyZDolMDJkOiUwMmQ6JTAzZFxuIiwKKysgICAgICAgICAgICAgIGhvdXIsIG1pbiwgc2VjLCBtc2VjKTsKKysgICAgICAgICAgaWYgKHN0YXJ0X3RpbWUgPiB0bXApCisrICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRtcDsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocGFyc2UsCisrICAgICAgICAgICAgICAiZmFpbGVkIHRvIHBhcnNlIHNzYSBzdGFydCB0aW1lc3RhbXAgc3RyaW5nIDolcyIsIHRfc3RyKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHBfc3RhcnQgPSBwX2VuZDsKKysgICAgICAgIHBfZW5kID0gc3RyY2hyICgrK3Bfc3RhcnQsICcsJyk7CisrICAgICAgICBpZiAocF9lbmQpIHsKKysgICAgICAgICAgLyogY29weSB0ZXh0IGJldHdlZW4gc2Vjb25kICcsJyBhbmQgdGhpcmQgJywnICovCisrICAgICAgICAgIHN0cm5jcHkodF9zdHIsIHBfc3RhcnQsIHBfZW5kIC0gcF9zdGFydCk7CisrICAgICAgICAgIGlmIChzc2NhbmYgKHRfc3RyLCAiJXU6JXU6JXUuJXUiLCAmaG91ciwgJm1pbiwgJnNlYywgJm1zZWMpID09IDQpIHsKKysgICAgICAgICAgICB0bXAgPSAoKGhvdXIqMzYwMCkgKyAobWluKjYwKSArIHNlYykqR1NUX1NFQ09ORCArIG1zZWMqR1NUX01TRUNPTkQ7CisrICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwYXJzZSwgIkdldCBlbmQgdGltZTolMDJkOiUwMmQ6JTAyZDolMDNkXG4iLAorKyAgICAgICAgICAgICAgICBob3VyLCBtaW4sIHNlYywgbXNlYyk7CisrICAgICAgICAgICAgaWYgKGVuZF90aW1lIDwgdG1wKQorKyAgICAgICAgICAgICAgZW5kX3RpbWUgPSB0bXA7CisrICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChwYXJzZSwKKysgICAgICAgICAgICAgICAgImZhaWxlZCB0byBwYXJzZSBzc2EgZW5kIHRpbWVzdGFtcCBzdHJpbmcgOiVzIiwgdF9zdHIpOworKyAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgfQorKworKyAgICAgIC8qIG5vdyBza2lwIGFsbCBub24tdGV4dCBmaWVsZHMgYmVmb3JlIHRoZSBhY3R1YWwgdGV4dCAqLworKyAgICAgIGZvciAoaSA9IDA7IGkgPD0gODsgKytpKSB7CisrICAgICAgICB0ID0gc3RyY2hyICh0LCAnLCcpOworKyAgICAgICAgaWYgKHQgPT0gTlVMTCkKKysgICAgICAgICAgYnJlYWs7CisrICAgICAgICArK3Q7CisrICAgICAgfQorKyAgICB9CisrCisrICAgIC8qIGxpbmUgZW5kIGJlZm9yZSBleHBlY3RlZCBudW1iZXIgb2YgJywnLCBub3QgYSBEaWFsb2d1ZSBsaW5lICovCisgICAgIGlmICh0ID09IE5VTEwpCistICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworLSAgICArK3Q7CisrICAgICAgYnJlYWs7CisrCisrICAgIC8qIGlmIG5vdCB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBwcmV2aW91cyBsaW5lIGlzICdcMCcsCisrICAgICAqIHRoZW4gcmVwbGFjZSBpdCB3aXRoICdcTicgKi8KKysgICAgaWYgKHAgIT0gdGV4dCAmJiAqcCA9PSAnXDAnKSB7CisrICAgICAgKnArKyA9ICdcXCc7CisrICAgICAgKnArKyA9ICdOJzsKKysgICAgfQorKworKyAgICAvKiBjb3B5IGFsbCBhY3R1YWwgdGV4dCBvZiB0aGlzIGxpbmUgKi8KKysgICAgd2hpbGUgKCgqdCAhPSAnXDAnKSAmJiAoKnQgIT0gJ1xuJykpCisrICAgICAgKnArKyA9ICp0Kys7CisrCisrICAgIC8qIGFkZCBhIHRlcm1pbmF0b3IgYXQgdGhlIGVuZCAqLworKyAgICAqcCA9ICdcMCc7CisrICB9CisrCisrICAvKiBub3QgdmFsaWQgdGV4dCBmb3VuZCBpbiB0aGlzIGJ1ZmZlciByZXR1cm4gT0sgdG8gbGV0IGNhbGxlciB1bnJlZiBidWZmZXIgKi8KKysgIGlmIChzdHJsZW4odGV4dCkgPD0gMCkgeworKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHBhcnNlLCAiTm90IHZhbGlkIHRleHQgZm91bmQgaW4gdGhpcyBidWZmZXJcbiIpOworKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICB9CisgCisrICB0ID0gdGV4dDsKKyAgIEdTVF9MT0dfT0JKRUNUIChwYXJzZSwgIlRleHQgOiAlcyIsIHQpOworIAorICAgaWYgKGdzdF9zc2FfcGFyc2VfcmVtb3ZlX292ZXJyaWRlX2NvZGVzIChwYXJzZSwgdCkpIHsKK0BAIC0zMDcsMTMgKzQxNCwyMiBAQCBnc3Rfc3NhX3BhcnNlX3B1c2hfbGluZSAoR3N0U3NhUGFyc2UgKiBwYXJzZSwgZ2NoYXIgKiB0eHQsCisgICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZiwgMCwgZXNjYXBlZCwgbGVuICsgMSk7CisgICBnc3RfYnVmZmVyX3NldF9zaXplIChidWYsIGxlbik7CisgICBnX2ZyZWUgKGVzY2FwZWQpOworKyAgZ19mcmVlKHQpOworKworKyAgaWYgKHN0YXJ0X3RpbWUgIT0gR19NQVhVSU5UNjQpCisrICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpID0gc3RhcnRfdGltZTsKKysgIGVsc2UKKysgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSBzdGFydDsKKyAKKy0gIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpID0gc3RhcnQ7CistICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gZHVyYXRpb247CisrICBpZiAoZW5kX3RpbWUgPiBzdGFydF90aW1lKQorKyAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gZW5kX3RpbWUgLSBzdGFydF90aW1lOworKyAgZWxzZQorKyAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gZHVyYXRpb247CisgCisgICBHU1RfTE9HX09CSkVDVCAocGFyc2UsICJQdXNoaW5nIGJ1ZmZlciB3aXRoIHRpbWVzdGFtcCAlIiBHU1RfVElNRV9GT1JNQVQKKy0gICAgICAiIGFuZCBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKHN0YXJ0KSwKKy0gICAgICBHU1RfVElNRV9BUkdTIChkdXJhdGlvbikpOworKyAgICAgICIgYW5kIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwKKysgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSksCisrICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSkpOworIAorICAgcmV0ID0gZ3N0X3BhZF9wdXNoIChwYXJzZS0+c3JjcGFkLCBidWYpOworIAorQEAgLTMzMyw2ICs0NDksNyBAQCBnc3Rfc3NhX3BhcnNlX2NoYWluIChHc3RQYWQgKiBzaW5rcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKKyAgIEdzdENsb2NrVGltZSB0czsKKyAgIGdjaGFyICp0eHQ7CisgICBHc3RNYXBJbmZvIG1hcDsKKysgIGdpbnQgc2l6ZTsKKyAKKyAgIGlmIChHX1VOTElLRUxZICghcGFyc2UtPmZyYW1lZCkpCisgICAgIGdvdG8gbm90X2ZyYW1lZDsKK0BAIC0zNTAsMTMgKzQ2NywxNCBAQCBnc3Rfc3NhX3BhcnNlX2NoYWluIChHc3RQYWQgKiBzaW5rcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKKyAgIC8qIG1ha2UgZG91YmxlLXN1cmUgaXQncyAwLXRlcm1pbmF0ZWQgYW5kIGFsbCAqLworICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKKyAgIHR4dCA9IGdfc3RybmR1cCAoKGdjaGFyICopIG1hcC5kYXRhLCBtYXAuc2l6ZSk7CisrICBzaXplID0gbWFwLnNpemU7CisgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOworIAorICAgaWYgKHR4dCA9PSBOVUxMKQorICAgICBnb3RvIGVtcHR5X3RleHQ7CisgCisgICB0cyA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworLSAgcmV0ID0gZ3N0X3NzYV9wYXJzZV9wdXNoX2xpbmUgKHBhcnNlLCB0eHQsIHRzLCBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpKTsKKysgIHJldCA9IGdzdF9zc2FfcGFyc2VfcHVzaF9saW5lIChwYXJzZSwgdHh0LCBzaXplLCB0cywgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSk7CisgCisgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIEdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0cykpIHsKKyAgICAgR3N0U2VnbWVudCBzZWdtZW50OworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtdmlkZW9maWx0ZXItVXNlLW5ldy1HU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy12aWRlb2ZpbHRlci1Vc2UtbmV3LUdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyYmYwNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtdmlkZW9maWx0ZXItVXNlLW5ldy1HU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGLnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gM2E3Y2RjZGZjOWM1YjBkMjAzOTRmZTUxYjNiOGNkYTIzOTMxY2E2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CitEYXRlOiBGcmksIDEyIFNlcCAyMDE0IDE0OjQxOjAxICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSB2aWRlb2ZpbHRlcjogVXNlIG5ldyBHU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzEuNS4xXQoraHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczNjExOAorLS0tCisgZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZmlsdGVyLmMgfCAgIDIzICsrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9maWx0ZXIuYyBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2ZpbHRlci5jCitpbmRleCBlMWZhMmMxLi44NzRiMmU4IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZmlsdGVyLmMKKysrKyBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2ZpbHRlci5jCitAQCAtMjYwLDIzICsyNjAsMTUgQEAgZ3N0X3ZpZGVvX2ZpbHRlcl90cmFuc2Zvcm0gKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucywgR3N0QnVmZmVyICogaW5idWYsCisgICBpZiAoZmNsYXNzLT50cmFuc2Zvcm1fZnJhbWUpIHsKKyAgICAgR3N0VmlkZW9GcmFtZSBpbl9mcmFtZSwgb3V0X2ZyYW1lOworIAorLSAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZpbl9mcmFtZSwgJmZpbHRlci0+aW5faW5mbywgaW5idWYsIEdTVF9NQVBfUkVBRCkpCisrICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmluX2ZyYW1lLCAmZmlsdGVyLT5pbl9pbmZvLCBpbmJ1ZiwKKysgICAgICAgICAgICBHU1RfTUFQX1JFQUQgfCBHU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGKSkKKyAgICAgICBnb3RvIGludmFsaWRfYnVmZmVyOworIAorICAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZvdXRfZnJhbWUsICZmaWx0ZXItPm91dF9pbmZvLCBvdXRidWYsCistICAgICAgICAgICAgR1NUX01BUF9XUklURSkpCisrICAgICAgICAgICAgR1NUX01BUF9XUklURSB8IEdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYpKQorICAgICAgIGdvdG8gaW52YWxpZF9idWZmZXI7CisgCistICAgIC8qIEdzdFZpZGVvRnJhbWUgaGFzIGFub3RoZXIgcmVmZXJlbmNlLCBzbyB0aGUgYnVmZmVyIGxvb2tzIHVud3JpdGVhYmxlLAorLSAgICAgKiBtZWFuaW5nIHRoYXQgd2UgY2FuJ3QgYXR0YWNoIGFueSBtZXRhcyBvciBhbnl0aGluZyB0byBpdC4gT3RoZXIKKy0gICAgICogbWFwKCkgZnVuY3Rpb25zIGxpa2UgZ3N0X2J1ZmZlcl9tYXAoKSBkb24ndCBnZXQgYW5vdGhlciByZWZlcmVuY2UKKy0gICAgICogb2YgdGhlIGJ1ZmZlciBhbmQgZXhwZWN0IHRoZSBidWZmZXIgcmVmZXJlbmNlIHRvIGJlIGtlcHQgdW50aWwKKy0gICAgICogdGhlIGJ1ZmZlciBpcyB1bm1hcHBlZCBhZ2Fpbi4gKi8KKy0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOworLSAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOworICAgICByZXMgPSBmY2xhc3MtPnRyYW5zZm9ybV9mcmFtZSAoZmlsdGVyLCAmaW5fZnJhbWUsICZvdXRfZnJhbWUpOworLSAgICBnc3RfYnVmZmVyX3JlZiAoaW5idWYpOworLSAgICBnc3RfYnVmZmVyX3JlZiAob3V0YnVmKTsKKyAKKyAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmb3V0X2ZyYW1lKTsKKyAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmaW5fZnJhbWUpOworQEAgLTMxNyw3ICszMDksNyBAQCBnc3RfdmlkZW9fZmlsdGVyX3RyYW5zZm9ybV9pcCAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLCBHc3RCdWZmZXIgKiBidWYpCisgICAgIEdzdFZpZGVvRnJhbWUgZnJhbWU7CisgICAgIEdzdE1hcEZsYWdzIGZsYWdzOworIAorLSAgICBmbGFncyA9IEdTVF9NQVBfUkVBRDsKKysgICAgZmxhZ3MgPSBHU1RfTUFQX1JFQUQgfCBHU1RfVklERU9fRlJBTUVfTUFQX0ZMQUdfTk9fUkVGOworIAorICAgICBpZiAoIWdzdF9iYXNlX3RyYW5zZm9ybV9pc19wYXNzdGhyb3VnaCAodHJhbnMpKQorICAgICAgIGZsYWdzIHw9IEdTVF9NQVBfV1JJVEU7CitAQCAtMzI1LDE0ICszMTcsNyBAQCBnc3RfdmlkZW9fZmlsdGVyX3RyYW5zZm9ybV9pcCAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLCBHc3RCdWZmZXIgKiBidWYpCisgICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmZyYW1lLCAmZmlsdGVyLT5pbl9pbmZvLCBidWYsIGZsYWdzKSkKKyAgICAgICBnb3RvIGludmFsaWRfYnVmZmVyOworIAorLSAgICAvKiBHc3RWaWRlb0ZyYW1lIGhhcyBhbm90aGVyIHJlZmVyZW5jZSwgc28gdGhlIGJ1ZmZlciBsb29rcyB1bndyaXRlYWJsZSwKKy0gICAgICogbWVhbmluZyB0aGF0IHdlIGNhbid0IGF0dGFjaCBhbnkgbWV0YXMgb3IgYW55dGhpbmcgdG8gaXQuIE90aGVyCistICAgICAqIG1hcCgpIGZ1bmN0aW9ucyBsaWtlIGdzdF9idWZmZXJfbWFwKCkgZG9uJ3QgZ2V0IGFub3RoZXIgcmVmZXJlbmNlCistICAgICAqIG9mIHRoZSBidWZmZXIgYW5kIGV4cGVjdCB0aGUgYnVmZmVyIHJlZmVyZW5jZSB0byBiZSBrZXB0IHVudGlsCistICAgICAqIHRoZSBidWZmZXIgaXMgdW5tYXBwZWQgYWdhaW4uICovCistICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgIHJlcyA9IGZjbGFzcy0+dHJhbnNmb3JtX2ZyYW1lX2lwIChmaWx0ZXIsICZmcmFtZSk7CistICAgIGdzdF9idWZmZXJfcmVmIChidWYpOworIAorICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZmcmFtZSk7CisgICB9IGVsc2UgeworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODEzOTE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gZWQwOWM4ZmQyYzljMmI1Mzg0YjcyY2M3MGFmMzcyOGJlNjY5NGU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdrZSBXYW5nIDxtaW5na2Uud2FuZ0BmcmVlc2NhbGUuY29tPgorRGF0ZTogVGh1LCAxOSBNYXIgMjAxNSAxNDoyMDoyNiArMDgwMAorU3ViamVjdDogW1BBVENIIDQvNF0gc3VicGFyc2U6IHNldCBuZWVkX3NlZ21lbnQgYWZ0ZXIgc2luayBwYWQgcmVjZWl2ZWQKKyBHU1RfRVZFTlRfU0VHTUVOVAorCitzdWJwYXJzZSB3b3JrcyBpbiBwdXNoIG1vZGUsIGNoYWluIGZ1bmNpdG9uIHdpbGwgYmUgY2FsbGVkIG9uY2UKK3VwIHN0cmVhbSBlbGVtZW50IGZpbmlzaGVkIHRoZSBzZWVraW5nIGFuZCBmbHVzaGluZy4KK2lmIHNldCBuZWVkX3NlZ21lbnQgZmxhZyBpbiBzcmMgcGFkIGV2ZW50IGhhbmRsZXIsIHRoZSBzZWdtZW50CitldmVudCB3aWxsIGJlIHB1c2hlZCBlYXJsaWVyLCByZXN1bHQgaW4gdGhlIHN1YnRpdGxlIHRleHQgd2lsbAorYmUgc2VuZCBvdXQgdG8gZG93biBzdHJlYW0gZnJvbSB0aGUgYmVnaW5uaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzQ5OF0KKworU2lnbmVkLW9mZi1ieTogTWluZ2tlIFdhbmcgPG1pbmdrZS53YW5nQGZyZWVzY2FsZS5jb20+CisKK2RpZmYgLS1naXQgYS9nc3Qvc3VicGFyc2UvZ3N0c3VicGFyc2UuYyBiL2dzdC9zdWJwYXJzZS9nc3RzdWJwYXJzZS5jCitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggYjU2NWU5My4uNzc0MWNjYworLS0tIGEvZ3N0L3N1YnBhcnNlL2dzdHN1YnBhcnNlLmMKKysrKyBiL2dzdC9zdWJwYXJzZS9nc3RzdWJwYXJzZS5jCitAQCAtMjY2LDIyICsyNjYsMjAgQEAgZ3N0X3N1Yl9wYXJzZV9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQorICAgICAgICAgZ290byBiZWFjaDsKKyAgICAgICB9CisgCisrICAgICAgLyogQXBwbHkgdGhlIHNlZWsgdG8gb3VyIHNlZ21lbnQgKi8KKysgICAgICBnc3Rfc2VnbWVudF9kb19zZWVrICgmc2VsZi0+c2VnbWVudCwgcmF0ZSwgZm9ybWF0LCBmbGFncywKKysgICAgICAgICAgc3RhcnRfdHlwZSwgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgJnVwZGF0ZSk7CisrCisrICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNlZ21lbnQgYWZ0ZXIgc2VlazogJSIgR1NUX1NFR01FTlRfRk9STUFULAorKyAgICAgICAgICAmc2VsZi0+c2VnbWVudCk7CisrCisgICAgICAgLyogQ29udmVydCB0aGF0IHNlZWsgdG8gYSBzZWVraW5nIGluIGJ5dGVzIGF0IHBvc2l0aW9uIDAsCisgICAgICAgICAgRklYTUU6IGNvdWxkIHVzZSBhbiBpbmRleCAqLworICAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoc2VsZi0+c2lua3BhZCwKKyAgICAgICAgICAgZ3N0X2V2ZW50X25ld19zZWVrIChyYXRlLCBHU1RfRk9STUFUX0JZVEVTLCBmbGFncywKKyAgICAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAwLCBHU1RfU0VFS19UWVBFX05PTkUsIDApKTsKKyAKKy0gICAgICBpZiAocmV0KSB7CistICAgICAgICAvKiBBcHBseSB0aGUgc2VlayB0byBvdXIgc2VnbWVudCAqLworLSAgICAgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJnNlbGYtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsCistICAgICAgICAgICAgc3RhcnRfdHlwZSwgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgJnVwZGF0ZSk7CistCistICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2VnbWVudCBhZnRlciBzZWVrOiAlIiBHU1RfU0VHTUVOVF9GT1JNQVQsCistICAgICAgICAgICAgJnNlbGYtPnNlZ21lbnQpOworLQorLSAgICAgICAgc2VsZi0+bmVlZF9zZWdtZW50ID0gVFJVRTsKKy0gICAgICB9IGVsc2UgeworKyAgICAgIGlmICghcmV0KSB7CisgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJzZWVrIHRvIDAgYnl0ZXMgZmFpbGVkIik7CisgICAgICAgfQorIAorQEAgLTE2MzIsOCArMTYzMCwxMCBAQCBnc3Rfc3ViX3BhcnNlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQorICAgICAgIGdzdF9ldmVudF9wYXJzZV9zZWdtZW50IChldmVudCwgJnMpOworICAgICAgIGlmIChzLT5mb3JtYXQgPT0gR1NUX0ZPUk1BVF9USU1FKQorICAgICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZzZWxmLT5zZWdtZW50KTsKKy0gICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibmV3c2VnbWVudCAoJXMpIiwKKy0gICAgICAgICAgZ3N0X2Zvcm1hdF9nZXRfbmFtZSAoc2VsZi0+c2VnbWVudC5mb3JtYXQpKTsKKysgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibmV3c2VnbWVudCAoJXMpICUiIEdTVF9TRUdNRU5UX0ZPUk1BVCwKKysgICAgICAgICAgZ3N0X2Zvcm1hdF9nZXRfbmFtZSAoc2VsZi0+c2VnbWVudC5mb3JtYXQpLCAmc2VsZi0+c2VnbWVudCk7CisrCisrICAgICAgc2VsZi0+bmVlZF9zZWdtZW50ID0gVFJVRTsKKyAKKyAgICAgICAvKiBpZiBub3QgdGltZSBmb3JtYXQsIHdlJ2xsIGVpdGhlciBzdGFydCB3aXRoIGEgMCB0aW1lc3RhbXAgYW55d2F5IG9yCisgICAgICAgICogaXQncyBmb2xsb3dpbmcgYSBzZWVrIGluIHdoaWNoIGNhc2Ugd2UnbGwgaGF2ZSBzYXZlZCB0aGUgcmVxdWVzdGVkCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZG8tbm90LWNoYW5nZS1lb3MtZXZlbnQtdG8tZ2FwLWV2ZW50LWlmLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZG8tbm90LWNoYW5nZS1lb3MtZXZlbnQtdG8tZ2FwLWV2ZW50LWlmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNTVkZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9kby1ub3QtY2hhbmdlLWVvcy1ldmVudC10by1nYXAtZXZlbnQtaWYucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBiNjA4ZDAyN2ZmZjZlZmMyZDE5ODhlYmYxNjljYmUzYjJiNDRhNjFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogemhvdW1pbmcgPGI0MjU4NkBmcmVlc2NhbGUuY29tPgorRGF0ZTogVGh1LCA4IE1heSAyMDE0IDEyOjAxOjE3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEVOR1IwMDMxMjAzNDogZG8gbm90IGNoYW5nZSBlb3MgZXZlbnQgdG8gZ2FwIGV2ZW50IGlmIG5vCisgZGF0YSBoYXMgcGFzc2VkIHRvIHN0cmVhbXN5bmNocm9uaXplci4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzA3NAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogemhvdW1pbmcgPGI0MjU4NkBmcmVlc2NhbGUuY29tPgorLS0tCisgZ3N0L3BsYXliYWNrL2dzdHN0cmVhbXN5bmNocm9uaXplci5jIHwgICAgNSArKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMgYi9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMKK2luZGV4IDM5OTdkMWIuLjNlMTdjNTUgMTAwNjQ0CistLS0gYS9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMKKysrKyBiL2dzdC9wbGF5YmFjay9nc3RzdHJlYW1zeW5jaHJvbml6ZXIuYworQEAgLTQ4OCwxMiArNDg4LDExIEBAIGdzdF9zdHJlYW1fc3luY2hyb25pemVyX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgICAgICAgfQorICAgICAgICAgZ19zbGlzdF9mcmVlIChwYWRzKTsKKyAgICAgICB9IGVsc2UgeworLSAgICAgICAgLyogaWYgRU9TLCBidXQgbm8gZGF0YSBoYXMgcGFzc2VkLCB0aGVuIHNlbmQgc29tZXRoaW5nIHRvIHJlcGxhY2UgRU9TCistICAgICAgICAgKiBmb3IgcHJlcm9sbCBwdXJwb3NlcyAqLworKyAgICAgICAgLyogaWYgRU9TLCBidXQgbm8gZGF0YSBoYXMgcGFzc2VkLCB0aGVuIHNlbmQgRU9TIGV2ZW50ICovCisgICAgICAgICBpZiAoIXNlZW5fZGF0YSkgeworICAgICAgICAgICBHc3RFdmVudCAqZ2FwX2V2ZW50OworIAorLSAgICAgICAgICBnYXBfZXZlbnQgPSBnc3RfZXZlbnRfbmV3X2dhcCAodGltZXN0YW1wLCBHU1RfQ0xPQ0tfVElNRV9OT05FKTsKKysgICAgICAgICAgZ2FwX2V2ZW50ID0gZ3N0X2V2ZW50X25ld19lb3MgKCk7CisgICAgICAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoc3JjcGFkLCBnYXBfZXZlbnQpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgR3N0RXZlbnQgKmdhcF9ldmVudDsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9kby1ub3QtY2hhbmdlLWVvcy1ldmVudC10by1nYXAtZXZlbnQyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZG8tbm90LWNoYW5nZS1lb3MtZXZlbnQtdG8tZ2FwLWV2ZW50Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMjRiYzdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZG8tbm90LWNoYW5nZS1lb3MtZXZlbnQtdG8tZ2FwLWV2ZW50Mi5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitjb21taXQgZjk1MzY1NDRmNWFkMTgyYjRmNzhkMDE0M2QxZGFhNDVkZDY0ZTYyNAorQXV0aG9yOiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgorRGF0ZTogICBUaHUgT2N0IDkgMTc6Mzc6NDMgMjAxNCArMDgwMAorCitbZ3N0c3RyZWFtc3luY2hyb25pemVyXSBzZW5kIEVPUyBldmVudCBpbnN0ZXJkIG9mIEdBUCBldmVudCBhcyBHQVAKK2V2ZW50IGhhcyBpc3N1ZSB3aGVuIEEvViBoYXZlIGRpZmZlcmVudCBkdXJhdGlvbi4KKyAgICAKK3NlbmQgRU9TIGV2ZW50IGluc3RlcmQgb2YgR0FQIGV2ZW50IGFzIEdBUCBldmVudCBoYXMgaXNzdWUgd2hlbiBBL1YgaGF2ZSBkaWZmZXJlbnQgZHVyYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2NjU1XQorCitTaWduZWQtb2ZmLWJ5OiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgorCitkaWZmIC0tZ2l0IGEvZ3N0L3BsYXliYWNrL2dzdHN0cmVhbXN5bmNocm9uaXplci5jIGIvZ3N0L3BsYXliYWNrL2dzdHN0cmVhbXN5bmNocm9uaXplci5jCitpbmRleCAzZTE3YzU1Li5mZjQyZDcyIDEwMDY0NAorLS0tIGEvZ3N0L3BsYXliYWNrL2dzdHN0cmVhbXN5bmNocm9uaXplci5jCisrKysgYi9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMKK0BAIC00ODgsMTkgKzQ4OCwyNCBAQCBnc3Rfc3RyZWFtX3N5bmNocm9uaXplcl9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICAgICAgIH0KKyAgICAgICAgIGdfc2xpc3RfZnJlZSAocGFkcyk7CisgICAgICAgfSBlbHNlIHsKKy0gICAgICAgIC8qIGlmIEVPUywgYnV0IG5vIGRhdGEgaGFzIHBhc3NlZCwgdGhlbiBzZW5kIEVPUyBldmVudCAqLworKyAgICAgICAgLyogaWYgRU9TLCBidXQgbm8gZGF0YSBoYXMgcGFzc2VkLCB0aGVuIHNlbmQgc29tZXRoaW5nIHRvIHJlcGxhY2UgRU9TCisrICAgICAgICAgKiBmb3IgcHJlcm9sbCBwdXJwb3NlcyAqLworICAgICAgICAgaWYgKCFzZWVuX2RhdGEpIHsKKy0gICAgICAgICAgR3N0RXZlbnQgKmdhcF9ldmVudDsKKysgICAgICAgICAgR3N0RXZlbnQgKmVvc19ldmVudDsKKyAKKy0gICAgICAgICAgZ2FwX2V2ZW50ID0gZ3N0X2V2ZW50X25ld19lb3MgKCk7CistICAgICAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoc3JjcGFkLCBnYXBfZXZlbnQpOworKyAgICAgICAgICAvKiBGSVhNRTogY2hhbmdlIHRvIEVPUyBldmVudCBhcyBHQVAgZXZlbnQgaGFzIGlzc3VlIHdoZW4gQS9WIGhhdmUKKysgICAgICAgICAgICogZGlmZmVyZW50IGR1cmF0aW9uICovCisrICAgICAgICAgIGVvc19ldmVudCA9IGdzdF9ldmVudF9uZXdfZW9zICgpOworKyAgICAgICAgICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHNyY3BhZCwgZW9zX2V2ZW50KTsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgIEdzdEV2ZW50ICpnYXBfZXZlbnQ7CisrICAgICAgICAgIEdzdEV2ZW50ICplb3NfZXZlbnQ7CisgCisgICAgICAgICAgIC8qIEZJWE1FOiBBbHNvIHNlbmQgYSBHQVAgZXZlbnQgdG8gbGV0IGF1ZGlvIHNpbmtzIHN0YXJ0IHRoZWlyCisgICAgICAgICAgICAqIGNsb2NrIGluIGNhc2UgdGhleSBkaWQgbm90IGhhdmUgZW5vdWdoIGRhdGEgeWV0ICovCistICAgICAgICAgIGdhcF9ldmVudCA9IGdzdF9ldmVudF9uZXdfZ2FwICh0aW1lc3RhbXAsIEdTVF9DTE9DS19USU1FX05PTkUpOworLSAgICAgICAgICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHNyY3BhZCwgZ2FwX2V2ZW50KTsKKysgICAgICAgICAgLyogRklYTUU6IGNoYW5nZSB0byBFT1MgZXZlbnQgYXMgR0FQIGV2ZW50IGhhcyBpc3N1ZSB3aGVuIEEvViBoYXZlCisrICAgICAgICAgICAqIGRpZmZlcmVudCBkdXJhdGlvbiAqLworKyAgICAgICAgICBlb3NfZXZlbnQgPSBnc3RfZXZlbnRfbmV3X2VvcyAoKTsKKysgICAgICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChzcmNwYWQsIGVvc19ldmVudCk7CisgICAgICAgICB9CisgICAgICAgfQorICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNyY3BhZCk7CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9kby1ub3QtY2hhbmdlLWVvcy1ldmVudC10by1nYXAtZXZlbnQzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZG8tbm90LWNoYW5nZS1lb3MtZXZlbnQtdG8tZ2FwLWV2ZW50My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MzFiZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZG8tbm90LWNoYW5nZS1lb3MtZXZlbnQtdG8tZ2FwLWV2ZW50My5wYXRjaApAQCAtMCwwICsxLDMxIEBACitjb21taXQgM2Y3MDUyYWFjNWUwMTE4YTlhOWUwOWZmZjJmNjUwOTFiZTQ0ODk3MgorQXV0aG9yOiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgorRGF0ZTogICBUaHUgT2N0IDIzIDEzOjM1OjEzIDIwMTQgKzA4MDAKKworW3N0cmVhbXN5bmNocm9uaXplcl0gT25lIHN0cmVhbSBjYW4gZmluaXNoIHBsYXliYWNrLgorICAKK0FzIGNoYW5nZWQgR0FQIGV2ZW50IEVPUyBldmVudCwgc28gRU9TIHdpbGwgc2VuZCBtb3JlIHRpbWVzLCB3aGljaCB3aWxsCitjYXVzZSBzZW5kIGZ1bmN0aW9uIHJldHVybiBlcnJvci4KK1N0cmVhbXN5bmNocm9uaXplciB3aWxsIGRvbuKAmXQgc2VuZCBzZWNvbmQgdHJhY2sgRU9TIGV2ZW50IGlmIHNlbmQgdGhlCitmaXJzdCB0cmFjayBFT1MgcmV0dXJuIGZhaWwuIEZpeGVkIGJ5IGlnbm9yZSB0aGUgcmV0dXJuIGVycm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczNjY1NV0KKworU2lnbmVkLW9mZi1ieTogU29uZyBCaW5nIGIwNjQ5OEBmcmVlc2NhbGUuY29tCisKK2RpZmYgLS1naXQgYS9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMgYi9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMKK2luZGV4IGZmNDJkNzIuLmQxNzMyYzMgMTAwNjQ0CistLS0gYS9nc3QvcGxheWJhY2svZ3N0c3RyZWFtc3luY2hyb25pemVyLmMKKysrKyBiL2dzdC9wbGF5YmFjay9nc3RzdHJlYW1zeW5jaHJvbml6ZXIuYworQEAgLTQ4Miw3ICs0ODIsMTAgQEAgZ3N0X3N0cmVhbV9zeW5jaHJvbml6ZXJfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCisgICAgICAgICB3aGlsZSAoZXBhZCkgeworICAgICAgICAgICBwYWQgPSBlcGFkLT5kYXRhOworICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJQdXNoaW5nIEVPUyIpOworLSAgICAgICAgICByZXQgPSByZXQgJiYgZ3N0X3BhZF9wdXNoX2V2ZW50IChwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKKysgICAgICAgICAgLyogRklYTUU6IHJlbW92ZSBlcnJvciBjaGVjayBhcyBHQVAgY2hhbmdlZCB0byBFT1Mgd2lsbCBzZW5kIEVPUworKyAgICAgICAgICAgKiBtb3JlIHRpbWVzLCB3aGljaCB3aWxsIGNhdXNlIHJldHVybiBlcnJvciBhbmQgdGhlbiBkb24ndCBzZW5kCisrICAgICAgICAgICAqIEVPUyBldmVudCB0byBmb2xsb3dpbmcgdHJhY2tzLiAqLworKyAgICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworICAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworICAgICAgICAgICBlcGFkID0gZ19zbGlzdF9uZXh0IChlcGFkKTsKKyAgICAgICAgIH0KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNTY3MTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNTQwZTAyYzkyYzc1ZTA4YjkwMzI2ODYzZGM3ODdmYTVjYWRmOWRhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+CitEYXRlOiBGcmksIDEzIE1hciAyMDE1IDE4OjA0OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGVuY29kZWJpbjogTmVlZCBtb3JlIGJ1ZmZlcnMgaW4gb3V0cHV0IHF1ZXVlIGZvciBiZXR0ZXIKKyBwZXJmb3JtYW5jZQorCitOZWVkIG1vcmUgYnVmZmVycyBpbiBvdXRwdXQgcXVldWUgZm9yIGJldHRlciBwZXJmb3JtYW5jZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE5MV0KKworU2lnbmVkLW9mZi1ieTogU29uZyBCaW5nIDxiMDY0OThAZnJlZXNjYWxlLmNvbT4KKy0tLQorIGdzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYyB8ICAgIDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jIGIvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCitpbmRleCA2NzI4ZTU4Li4zMmRhYWU0IDEwMDY0NAorLS0tIGEvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCisrKysgYi9nc3QvZW5jb2RpbmcvZ3N0ZW5jb2RlYmluLmMKK0BAIC0xMTM4LDggKzExMzgsNyBAQCBfY3JlYXRlX3N0cmVhbV9ncm91cCAoR3N0RW5jb2RlQmluICogZWJpbiwgR3N0RW5jb2RpbmdQcm9maWxlICogc3Byb2YsCisgICAgKiBXZSBvbmx5IHVzZSBhIDFidWZmZXIgbG9uZyBxdWV1ZSBoZXJlLCB0aGUgYWN0dWFsIHF1ZXVlaW5nIHdpbGwgYmUgZG9uZQorICAgICogaW4gdGhlIGlucHV0IHF1ZXVlICovCisgICBsYXN0ID0gc2dyb3VwLT5vdXRxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInF1ZXVlIiwgTlVMTCk7CistICBnX29iamVjdF9zZXQgKHNncm91cC0+b3V0cXVldWUsICJtYXgtc2l6ZS1idWZmZXJzIiwgKGd1aW50MzIpIDEsCistICAgICAgIm1heC1zaXplLWJ5dGVzIiwgKGd1aW50MzIpIDAsICJtYXgtc2l6ZS10aW1lIiwgKGd1aW50NjQpIDAsCisrICBnX29iamVjdF9zZXQgKHNncm91cC0+b3V0cXVldWUsICJtYXgtc2l6ZS10aW1lIiwgKGd1aW50NjQpIDAsCisgICAgICAgInNpbGVudCIsIFRSVUUsIE5VTEwpOworIAorICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKGViaW4pLCBzZ3JvdXAtPm91dHF1ZXVlKTsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9maXgtaWQzZGVtdXgtdXRmMTYtdG8tdXRmOC1pc3N1ZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2ZpeC1pZDNkZW11eC11dGYxNi10by11dGY4LWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVmM2Y3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9maXgtaWQzZGVtdXgtdXRmMTYtdG8tdXRmOC1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDU0IEBACitBdXRob3I6IEx5b24gV2FuZyA8YjEyNjk2QGZyZWVzY2FsZS5jb20+CitEYXRlOiAgIFRodSBPY3QgOSAxNzozNzo0MyAyMDE0ICswODAwCisKK1tpZDN2MmZyYW1lc10gQnVnIGZpeCBmb3IgaWQzZGVtdXggaXNzdWUKKworRml4IHRoZSBpc3N1ZSB0aGF0IGlkMyB0YWdzIHV0ZjE2IGNoYXJhdGVycyBjYW5ub3QgYmUgZXh0cmVhY3RlZCBpbiBpZDNkZW11eAord2hlbiBJIHRyaWVkIHRvIGdldCB0aGUgaWQzdjIgdGFnIHN1Y2ggYXMgVElUMiwgVEFMQiBldGMuIGl0IHdpbGwgcmV0dXJuIGV4dHJhYworZmFpbGVkLgorCitDaGVja2VkIGluIGlkM3YyZnJhbWUuYywgIFdoZW4gcGFyc2UgdGhlIFVURi0xNiBzdHJlYW1zLCBpdCB1c2VkIGdfY29udmVydCgpIHRvCitjb252ZXJ0IHRoZSBidWZmZXIgZnJvbSBVVEYtMTYgdG8gVVRGLTgsIGhvd2V2ZXIgaXQgd2lsbCByZXR1cm4gZXJyIHRoYXQgdGhpcworY29udmVyc2lvbiBpcyBub3Qgc3VwcG9ydGVkIHdoaWNoIGNhdXNlIHRoZSBleHRyYWN0aW9uIGZhaWxlZCB3aXRoIHRoZXNlIFVURi0xNgorY2hhcmFjdGVycy4KKworSW4gdGhlIHBhdGNoLCB1c2UgZ191dGYxNl90b191dGY4KCkgaW5zdGVhZCBvZiBnX2NvbnZlcnQsIHdoaWNoIGNhbiBjb252ZXJ0IHRoZQorY2hhcmFjdGVyIGZvcm1hdCBzdWNjZXNzZnVsbHkuCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDExNDQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS41LjFdCisKK1NpZ25lZC1vZmYtYnk6IEx5b24gV2FuZyA8YjEyNjk2QGZyZWVzY2FsZS5jb20+CisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL2lkM3YyZnJhbWVzLmMgYi9nc3QtbGlicy9nc3QvdGFnL2lkM3YyZnJhbWVzLmMKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCAzNzg1YzJhLi43YjlkOGFjCistLS0gYS9nc3QtbGlicy9nc3QvdGFnL2lkM3YyZnJhbWVzLmMKKysrKyBiL2dzdC1saWJzL2dzdC90YWcvaWQzdjJmcmFtZXMuYworQEAgLTEwNTcsMTQgKzEwNTcsMTcgQEAgcGFyc2VfaW5zZXJ0X3N0cmluZ19maWVsZCAoZ3VpbnQ4IGVuY29kaW5nLCBnY2hhciAqIGRhdGEsIGdpbnQgZGF0YV9zaXplLAorICAgICAgICAgZGF0YV9zaXplIC09IDI7CisgICAgICAgfQorIAorLSAgICAgIGZpZWxkID0gZ19jb252ZXJ0IChkYXRhLCBkYXRhX3NpemUsICJVVEYtOCIsIGluX2VuY29kZSwgTlVMTCwgTlVMTCwgTlVMTCk7CistCistICAgICAgaWYgKGZpZWxkID09IE5VTEwgfHwgZ191dGY4X3ZhbGlkYXRlIChmaWVsZCwgLTEsIE5VTEwpID09IEZBTFNFKSB7CistICAgICAgICAvKiBBcyBhIGZhbGxiYWNrLCB0cnkgaW50ZXJwcmV0aW5nIFVURi0xNiBpbiB0aGUgb3RoZXIgZW5kaWFubmVzcyAqLworLSAgICAgICAgaWYgKGluX2VuY29kZSA9PSB1dGYxNmJlZW5jKQorLSAgICAgICAgICBmaWVsZCA9IGdfY29udmVydCAoZGF0YSwgZGF0YV9zaXplLCAiVVRGLTgiLCB1dGYxNmxlZW5jLAorLSAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7CisrICAgICAgaWYgKGluX2VuY29kZSA9PSB1dGYxNmJlZW5jKSB7CisrICAgICAgICAgICBndW5pY2hhcjIgKmRhdGFfdXRmMTY7CisrICAgICAgICAgICBndWludCBpOworKyAgICAgICAgICAgZGF0YV91dGYxNiA9ICAoZ3VuaWNoYXIyICopIGRhdGE7CisrICAgICAgICAgIGZvciAoaT0wOyBpPChkYXRhX3NpemU+PjEpOyBpKyspIHsKKysgICAgICAgICAgICBkYXRhX3V0ZjE2W2ldID0gR1VJTlQxNl9UT19MRSAoZGF0YV91dGYxNltpXSk7CisrICAgICAgICAgIH0KKyAgICAgICB9CisrICAgICAgLy9maWVsZCA9IGdfY29udmVydCAoZGF0YSwgZGF0YV9zaXplLCAiVVRGLTgiLCBpbl9lbmNvZGUsIE5VTEwsIE5VTEwsIE5VTEwpOworKyAgICAgICBmaWVsZCA9IGdfdXRmMTZfdG9fdXRmOCgoZ3VuaWNoYXIyICopZGF0YSwgKGdsb25nKShkYXRhX3NpemU+PjEpLCBOVUxMLCBOVUxMLCBOVUxMKTsKKysKKyAgICAgfQorIAorICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg0YWJiZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBhZjBkYWMyNmY2MmFhY2ViNGJmMjY2NzIwOTExOTUzNzkzZTBmYzVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogemhvdW1pbmcgPGI0MjU4NkBmcmVlc2NhbGUuY29tPgorRGF0ZTogV2VkLCAxNCBNYXkgMjAxNCAxMDoxNjoyMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBFTkdSMDAzMTI1MTU6IGdldCBjYXBzIGZyb20gc3JjIHBhZCB3aGVuIHF1ZXJ5IGNhcHMKKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTcyODMxMgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogemhvdW1pbmcgPGI0MjU4NkBmcmVlc2NhbGUuY29tPgorLS0tCisgZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jIHwgICAxMyArKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKKyBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGdzdC1saWJzL2dzdC90YWcvZ3N0dGFnZGVtdXguYworCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jIGIvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jCitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggOWI2YzQ3OC4uYWUyMjk0YQorLS0tIGEvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jCisrKysgYi9nc3QtbGlicy9nc3QvdGFnL2dzdHRhZ2RlbXV4LmMKK0BAIC0xNzA4LDYgKzE3MDgsMTkgQEAgZ3N0X3RhZ19kZW11eF9wYWRfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQorICAgICAgIH0KKyAgICAgICBicmVhazsKKyAgICAgfQorKyAgICBjYXNlIEdTVF9RVUVSWV9DQVBTOgorKyAgICB7CisrCisrICAgICAgLyogV2UgY2FuIGhpamFjayBjYXBzIHF1ZXJ5IGlmIHdlIHR5cGVmaW5kIGFscmVhZHkgKi8KKysgICAgICBpZiAoZGVtdXgtPnByaXYtPnNyY19jYXBzKSB7CisrICAgICAgICBnc3RfcXVlcnlfc2V0X2NhcHNfcmVzdWx0IChxdWVyeSwgZGVtdXgtPnByaXYtPnNyY19jYXBzKTsKKysgICAgICAgIHJlcyA9IFRSVUU7CisrICAgICAgfSBlbHNlIHsKKysgICAgICAgIHJlcyA9IGdzdF9wYWRfcXVlcnlfZGVmYXVsdCAocGFkLCBwYXJlbnQsIHF1ZXJ5KTsKKysgICAgICB9CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXMgPSBnc3RfcGFkX3F1ZXJ5X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBxdWVyeSk7CisgICAgICAgYnJlYWs7CistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvaGFuZGxlLWF1ZGlvLXZpZGVvLWRlY29kZXItZXJyb3IucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9oYW5kbGUtYXVkaW8tdmlkZW8tZGVjb2Rlci1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MzNjZTcyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvaGFuZGxlLWF1ZGlvLXZpZGVvLWRlY29kZXItZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBiY2IyYjhiNmY0OWU3YzY2MTI0YTRmNWUwN2RlYTgyOWQ1ZWJmZTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTHlvbiBXYW5nIDxseW9uLndhbmdAZnJlZXNjYWxlLmNvbT4KK0RhdGU6IE1vbiwgMTUgRGVjIDIwMTQgMTY6NTI6MDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaGFuZGxlIGF1ZGlvL3ZpZGVvIGRlY29kZXIgZXJyb3IKKworV2hlbiB0aGVyZSBpcyBpbnB1dCBkYXRhIGFuZCBubyBvdXRwdXQgZGF0YSB0byB0aGUgZW5kIG9mIHRoZSBzdHJlYW0sIGl0IHdpbGwKK3NlbmQgR1NUX0VMRU1FTlRfRVJST1IsIFNvIHRoZSBjbGlwcyBwbGF5aW5nIHdpbGwgcXVpdC4KK0hvd2V2ZXIsIGlmIG9ubHkgb25lIG9mIHRoZSB0cmFja3MgaXMgY29ycnVwdCwgdGhlcmUgaXMgbm8gbmVlZCB0byBxdWl0IG90aGVyCit0cmFja3MgcGxheWluZy4KKworVGhlIHBhdGNoIGNvbW1lbnRzIHRoZSBHU1RfRUxFTUVOVF9FUlJPUigpIGFuZCBqdXN0IGFkZCBHU1RfRVJST1JfT0JKRUNUKCkKK2luZm9ybWF0aW9uIGluc3RlYWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxNTQyXQorCitTaWduZWQtb2ZmLWJ5OiBMeW9uIFdhbmcgPGx5b24ud2FuZ0BmcmVlc2NhbGUuY29tPgorLS0tCisgZ3N0LWxpYnMvZ3N0L2F1ZGlvL2dzdGF1ZGlvZGVjb2Rlci5jIHwgICAgNSArKystLQorIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2RlY29kZXIuYyB8ICAgIDUgKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGdzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2RlY29kZXIuYworIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5jCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9kZWNvZGVyLmMgYi9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9kZWNvZGVyLmMKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCBjMmU3YTI4Li44OTFkZjBhCistLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9kZWNvZGVyLmMKKysrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2RlY29kZXIuYworQEAgLTIxMjMsOSArMjEyMywxMCBAQCBnc3RfYXVkaW9fZGVjb2Rlcl9zaW5rX2V2ZW50ZnVuYyAoR3N0QXVkaW9EZWNvZGVyICogZGVjLCBHc3RFdmVudCAqIGV2ZW50KQorICAgICAgIEdTVF9BVURJT19ERUNPREVSX1NUUkVBTV9VTkxPQ0sgKGRlYyk7CisgCisgICAgICAgaWYgKGRlYy0+cHJpdi0+Y3R4LmhhZF9pbnB1dF9kYXRhICYmICFkZWMtPnByaXYtPmN0eC5oYWRfb3V0cHV0X2RhdGEpIHsKKy0gICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkZWMsIFNUUkVBTSwgREVDT0RFLAorKyAgICAgICAgLyogR1NUX0VMRU1FTlRfRVJST1IgKGRlYywgU1RSRUFNLCBERUNPREUsCisgICAgICAgICAgICAgKCJObyB2YWxpZCBmcmFtZXMgZGVjb2RlZCBiZWZvcmUgZW5kIG9mIHN0cmVhbSIpLAorLSAgICAgICAgICAgICgibm8gdmFsaWQgZnJhbWVzIGZvdW5kIikpOworKyAgICAgICAgICAgICgibm8gdmFsaWQgZnJhbWVzIGZvdW5kIikpOyAqLworKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChkZWMsICJObyB2YWxpZCBmcmFtZXMgZGVjb2RlZCBiZWZvcmUgZW5kIG9mIHN0cmVhbSIpOworICAgICAgIH0KKyAKKyAgICAgICAvKiBzZW5kIHRhZ2xpc3QgaWYgbm8gdmFsaWQgZnJhbWUgaXMgZGVjb2RlZCB1dGlsIEVPUyAqLworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2RlY29kZXIuYyBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2RlY29kZXIuYworb2xkIG1vZGUgMTAwNjQ0CituZXcgbW9kZSAxMDA3NTUKK2luZGV4IGFjNTgxZTEuLjQyNzhiY2QKKy0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2RlY29kZXIuYworKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5jCitAQCAtMTA2OCw5ICsxMDY4LDEwIEBAIGdzdF92aWRlb19kZWNvZGVyX3NpbmtfZXZlbnRfZGVmYXVsdCAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2RlciwKKyAKKyAgICAgICAvKiBFcnJvciBvdXQgZXZlbiBpZiBFT1Mgd2FzIG9rIHdoZW4gd2UgaGFkIGlucHV0LCBidXQgbm8gb3V0cHV0ICovCisgICAgICAgaWYgKHJldCAmJiBwcml2LT5oYWRfaW5wdXRfZGF0YSAmJiAhcHJpdi0+aGFkX291dHB1dF9kYXRhKSB7CistICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGVjb2RlciwgU1RSRUFNLCBERUNPREUsCisrICAgICAgICAvKiBHU1RfRUxFTUVOVF9FUlJPUiAoZGVjb2RlciwgU1RSRUFNLCBERUNPREUsCisgICAgICAgICAgICAgKCJObyB2YWxpZCBmcmFtZXMgZGVjb2RlZCBiZWZvcmUgZW5kIG9mIHN0cmVhbSIpLAorLSAgICAgICAgICAgICgibm8gdmFsaWQgZnJhbWVzIGZvdW5kIikpOworKyAgICAgICAgICAgICgibm8gdmFsaWQgZnJhbWVzIGZvdW5kIikpOyAqLworKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChkZWNvZGVyLCAiTm8gdmFsaWQgZnJhbWVzIGRlY29kZWQgYmVmb3JlIGVuZCBvZiBzdHJlYW0iKTsKKyAgICAgICB9CisgCisgICAgICAgLyogRm9yd2FyZCBFT1MgaW1tZWRpYXRlbHkuIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBubworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL3RhZ2xpc3Qtbm90LXNlbmQtdG8tZG93bi1zdHJlYW0taWYtYWxsLXRoZS1mcmFtZS1jb3IucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS90YWdsaXN0LW5vdC1zZW5kLXRvLWRvd24tc3RyZWFtLWlmLWFsbC10aGUtZnJhbWUtY29yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYTUyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS90YWdsaXN0LW5vdC1zZW5kLXRvLWRvd24tc3RyZWFtLWlmLWFsbC10aGUtZnJhbWUtY29yLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gNjhmYTFiMTQyNWFkMmM1ZjdjNTAxM2QwOTQzMTUzYThhNmQwOTM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppYW4gTGkgPGxqLnFmeS5zaEBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI0IFNlcCAyMDE0IDE3OjIxOjAyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRhZ2xpc3Qgbm90IHNlbmQgdG8gZG93biBzdHJlYW0gaWYgYWxsIHRoZSBmcmFtZSBjb3JydXB0ZWQKKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczNzI0NgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaSA8bGoucWZ5LnNoQGdtYWlsLmNvbT4KKy0tLQorIGdzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2RlY29kZXIuYyB8ICAgIDkgKysrKysrKysrCisgZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5jIHwgICAgOCArKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL2dzdGF1ZGlvZGVjb2Rlci5jIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL2dzdGF1ZGlvZGVjb2Rlci5jCitpbmRleCAzNTA0Njc4Li4zZDY5ZWZlIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL2dzdGF1ZGlvZGVjb2Rlci5jCisrKysgYi9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9kZWNvZGVyLmMKK0BAIC0yMDgzLDYgKzIwODMsMTUgQEAgZ3N0X2F1ZGlvX2RlY29kZXJfc2lua19ldmVudGZ1bmMgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYywgR3N0RXZlbnQgKiBldmVudCkKKyAgICAgICBnc3RfYXVkaW9fZGVjb2Rlcl9kcmFpbiAoZGVjKTsKKyAgICAgICBHU1RfQVVESU9fREVDT0RFUl9TVFJFQU1fVU5MT0NLIChkZWMpOworIAorKyAgICAgIC8qIHNlbmQgdGFnbGlzdCBpZiBubyB2YWxpZCBmcmFtZSBpcyBkZWNvZGVkIHV0aWwgRU9TICovCisrICAgICAgaWYgKGRlYy0+cHJpdi0+dGFnbGlzdCAmJiBkZWMtPnByaXYtPnRhZ2xpc3RfY2hhbmdlZCkgeworKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiY29kZWMgdGFnICUiIEdTVF9QVFJfRk9STUFULCBkZWMtPnByaXYtPnRhZ2xpc3QpOworKyAgICAgICAgaWYgKCFnc3RfdGFnX2xpc3RfaXNfZW1wdHkgKGRlYy0+cHJpdi0+dGFnbGlzdCkpCisrICAgICAgICAgIGdzdF9hdWRpb19kZWNvZGVyX3B1c2hfZXZlbnQgKGRlYywKKysgICAgICAgICAgICAgIGdzdF9ldmVudF9uZXdfdGFnIChnc3RfdGFnX2xpc3RfcmVmIChkZWMtPnByaXYtPnRhZ2xpc3QpKSk7CisrICAgICAgICBkZWMtPnByaXYtPnRhZ2xpc3RfY2hhbmdlZCA9IEZBTFNFOworKyAgICAgIH0KKysKKyAgICAgICAvKiBGb3J3YXJkIEVPUyBiZWNhdXNlIG5vIGJ1ZmZlciBvciBzZXJpYWxpemVkIGV2ZW50IHdpbGwgY29tZSBhZnRlcgorICAgICAgICAqIEVPUyBhbmQgbm90aGluZyBjb3VsZCB0cmlnZ2VyIGFub3RoZXIgX2ZpbmlzaF9mcmFtZSgpIGNhbGwuICovCisgICAgICAgcmV0ID0gZ3N0X2F1ZGlvX2RlY29kZXJfcHVzaF9ldmVudCAoZGVjLCBldmVudCk7CitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5jIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5jCitpbmRleCBkZDhhYmUzLi5kOWJmZTRkIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5jCisrKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9kZWNvZGVyLmMKK0BAIC0xMDI0LDYgKzEwMjQsMTQgQEAgZ3N0X3ZpZGVvX2RlY29kZXJfc2lua19ldmVudF9kZWZhdWx0IChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyLAorICAgICAgICAqIHBhcmVudCBjbGFzcycgOjpzaW5rX2V2ZW50KCkgdW50aWwgYSBsYXRlciB0aW1lLgorICAgICAgICAqLworICAgICAgIGZvcndhcmRfaW1tZWRpYXRlID0gVFJVRTsKKysKKysgICAgICAvKiBzZW5kIHRhZ2xpc3QgaWYgbm8gdmFsaWQgZnJhbWUgaXMgZGVjb2RlZCB1dGlsIEVPUyAqLworKyAgICAgIGlmIChkZWNvZGVyLT5wcml2LT50YWdzICYmIGRlY29kZXItPnByaXYtPnRhZ3NfY2hhbmdlZCkgeworKyAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfcHVzaF9ldmVudCAoZGVjb2RlciwKKysgICAgICAgICAgICBnc3RfZXZlbnRfbmV3X3RhZyAoZ3N0X3RhZ19saXN0X3JlZiAoZGVjb2Rlci0+cHJpdi0+dGFncykpKTsKKysgICAgICAgIGRlY29kZXItPnByaXYtPnRhZ3NfY2hhbmdlZCA9IEZBTFNFOworKyAgICAgIH0KKysKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIEdTVF9FVkVOVF9HQVA6CistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvdmlkZW9idWZmZXJfdXBkYXRhX2FsaWdubWVudF91cGRhdGUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS92aWRlb2J1ZmZlcl91cGRhdGFfYWxpZ25tZW50X3VwZGF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44Y2ZkYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvdmlkZW9idWZmZXJfdXBkYXRhX2FsaWdubWVudF91cGRhdGUucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorY29tbWl0IDg4ZDI1M2VhMjNiMDYyODlkZjQwNDAxMTYwYjYwNjMyM2YxNmM5MTAKK0F1dGhvcjogU29uZyBCaW5nIDxiMDY0OThAZnJlZXNjYWxlLmNvbT4KK0RhdGU6ICAgTW9uIERlYyAxNSAwOTozNDozNSAyMDE0ICswODAwCisKK3ZpZGVvcG9vbDogdXBkYXRlIHZpZGVvIGFsaWdubWVudCBhZnRlciB2aWRlbyBhbGlnbm1lbnQKKworVmlkZW8gYnVmZmVyIHBvb2wgd2lsbCB1cGRhdGUgdmlkZW8gYWxpZ25tZW50IHRvIHJlc3BlY3Qgc3RyaWRlIGFsaWdubWVudAorcmVxdWlyZW1lbnQuIEJ1dCBoYXZlbid0IHVwZGF0ZSBpdCB0byB2aWRlbyBhbGlnbm1lbnQgaW4gY29uZmlndXJlLgorV2hpY2ggd2lsbCBjYXVzZSB1c2VyIGdldCB3cm9uZyB2aWRlbyBhbGlnbm1lbnQuCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDE1MDEKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS41LjFdCisKK1NpZ25lZC1vZmYtYnk6IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+CitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvcG9vbC5jIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvcG9vbC5jCitpbmRleCA0NDc1ZjQ1Li5hY2VmNTk0IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvcG9vbC5jCisrKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9wb29sLmMKK0BAIC0xNjcsNiArMTY3LDcgQEAgdmlkZW9fYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAoR3N0QnVmZmVyUG9vbCAqIHBvb2wsIEdzdFN0cnVjdHVyZSAqIGNvbmZpZykKKyAgICAgLyogZ2V0IGFuIGFwcGx5IHRoZSBhbGlnbm1lbnQgdG8gdGhlIGluZm8gKi8KKyAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsICZwcml2LT52aWRlb19hbGlnbik7CisgICAgIGdzdF92aWRlb19pbmZvX2FsaWduICgmaW5mbywgJnByaXYtPnZpZGVvX2FsaWduKTsKKysgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsICZwcml2LT52aWRlb19hbGlnbik7CisgICB9CisgICBwcml2LT5pbmZvID0gaW5mbzsKKworZGlmZiAtLWdpdCBhL3N5cy94aW1hZ2UveGltYWdlcG9vbC5jIGIvc3lzL3hpbWFnZS94aW1hZ2Vwb29sLmMKK2luZGV4IDZjYzJjZmEuLjZhMWNiYzkgMTAwNjQ0CistLS0gYS9zeXMveGltYWdlL3hpbWFnZXBvb2wuYworKysrIGIvc3lzL3hpbWFnZS94aW1hZ2Vwb29sLmMKK0BAIC01OTcsNiArNTk3LDggQEAgeGltYWdlX2J1ZmZlcl9wb29sX3NldF9jb25maWcgKEdzdEJ1ZmZlclBvb2wgKiBwb29sLCBHc3RTdHJ1Y3R1cmUgKiBjb25maWcpCisgICAgIC8qIGRvIHBhZGRpbmcgYW5kIGFsaWdubWVudCAqLworICAgICBnc3RfdmlkZW9faW5mb19hbGlnbiAoJmluZm8sICZwcml2LT5hbGlnbik7CisKKysgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsICZwcml2LT5hbGlnbik7CisrCisgICAgIC8qIHdlIG5lZWQgdGhlIHZpZGVvIG1ldGFkYXRhIHRvbyBub3cgKi8KKyAgICAgcHJpdi0+YWRkX21ldGF2aWRlbyA9IFRSVUU7CisgICB9IGVsc2UgeworZGlmZiAtLWdpdCBhL3N5cy94dmltYWdlL3h2aW1hZ2Vwb29sLmMgYi9zeXMveHZpbWFnZS94dmltYWdlcG9vbC5jCitpbmRleCAyNDRhNTFhLi4zNGIxYWIyIDEwMDY0NAorLS0tIGEvc3lzL3h2aW1hZ2UveHZpbWFnZXBvb2wuYworKysrIGIvc3lzL3h2aW1hZ2UveHZpbWFnZXBvb2wuYworQEAgLTEyNCw2ICsxMjQsOCBAQCB4dmltYWdlX2J1ZmZlcl9wb29sX3NldF9jb25maWcgKEdzdEJ1ZmZlclBvb2wgKiBwb29sLCBHc3RTdHJ1Y3R1cmUgKiBjb25maWcpCisgICAgIC8qIGRvIHBhZGRpbmcgYW5kIGFsaWdubWVudCAqLworICAgICBnc3RfdmlkZW9faW5mb19hbGlnbiAoJmluZm8sICZwcml2LT5hbGlnbik7CisKKysgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsICZwcml2LT5hbGlnbik7CisrCisgICAgIC8qIHdlIG5lZWQgdGhlIHZpZGVvIG1ldGFkYXRhIHRvbyBub3cgKi8KKyAgICAgcHJpdi0+YWRkX21ldGF2aWRlbyA9IFRSVUU7CisgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvdmlkZW9lbmNvZGVyLUtlZXAtc3RpY2t5LWV2ZW50cy1hcm91bmQtd2hlbi1kb2luZy1hLXNvZnQtLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvdmlkZW9lbmNvZGVyLUtlZXAtc3RpY2t5LWV2ZW50cy1hcm91bmQtd2hlbi1kb2luZy1hLXNvZnQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NzY5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS92aWRlb2VuY29kZXItS2VlcC1zdGlja3ktZXZlbnRzLWFyb3VuZC13aGVuLWRvaW5nLWEtc29mdC0ucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBjM2Y3ZDM2Yjk5MmEzY2JjZWUzMzg2ZGVhODU3MjBmM2NiMDRlMWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU29uZyBCaW5nIDxiMDY0OThAZnJlZXNjYWxlLmNvbT4KK0RhdGU6IEZyaSwgMjcgTWFyIDIwMTUgMTM6Mzk6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdmlkZW9lbmNvZGVyOiBLZWVwIHN0aWNreSBldmVudHMgYXJvdW5kIHdoZW4gZG9pbmcgYSBzb2Z0CisgcmVzZXQKKworVGhlIGN1cnJlbnQgY29kZSB3aWxsIGZpcnN0IGRpc2NhcmQgYWxsIGZyYW1lcywgYW5kIHRoZW4gdHJpZXMgdG8gY29weQorYWxsIHN0aWNreSBldmVudHMgZnJvbSB0aGUgKG5vdyBkaXNjYXJkZWQpIGZyYW1lcy4gTGV0J3MgY2hhbmdlIHRoZSBvcmRlci4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg2NQorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIAorCistLS0KKyBnc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9lbmNvZGVyLmMgfCAgICA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2VuY29kZXIuYyBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2VuY29kZXIuYworaW5kZXggNjE0YmEyZC4uNGM1YjExMSAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2VuY29kZXIuYworKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvZW5jb2Rlci5jCitAQCAtMzQwLDEwICszNDAsNiBAQCBnc3RfdmlkZW9fZW5jb2Rlcl9yZXNldCAoR3N0VmlkZW9FbmNvZGVyICogZW5jb2RlciwgZ2Jvb2xlYW4gaGFyZCkKKyAKKyAgIHByaXYtPmRyYWluZWQgPSBUUlVFOworIAorLSAgZ19saXN0X2ZvcmVhY2ggKHByaXYtPmZyYW1lcywgKEdGdW5jKSBnc3RfdmlkZW9fY29kZWNfZnJhbWVfdW5yZWYsIE5VTEwpOworLSAgZ19saXN0X2ZyZWUgKHByaXYtPmZyYW1lcyk7CistICBwcml2LT5mcmFtZXMgPSBOVUxMOworLQorICAgcHJpdi0+Ynl0ZXMgPSAwOworICAgcHJpdi0+dGltZSA9IDA7CisgCitAQCAtMzkyLDYgKzM4OCwxMCBAQCBnc3RfdmlkZW9fZW5jb2Rlcl9yZXNldCAoR3N0VmlkZW9FbmNvZGVyICogZW5jb2RlciwgZ2Jvb2xlYW4gaGFyZCkKKyAgICAgICAgIGVuY29kZXItPnByaXYtPmN1cnJlbnRfZnJhbWVfZXZlbnRzKTsKKyAgIH0KKyAKKysgIGdfbGlzdF9mb3JlYWNoIChwcml2LT5mcmFtZXMsIChHRnVuYykgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3VucmVmLCBOVUxMKTsKKysgIGdfbGlzdF9mcmVlIChwcml2LT5mcmFtZXMpOworKyAgcHJpdi0+ZnJhbWVzID0gTlVMTDsKKysKKyAgIEdTVF9WSURFT19FTkNPREVSX1NUUkVBTV9VTkxPQ0sgKGVuY29kZXIpOworIAorICAgcmV0dXJuIHJldDsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjQuNS5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOWMyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjQuNS5iYgpAQCAtMCwwICsxLDMwIEBACitpbmNsdWRlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9kby1ub3QtY2hhbmdlLWVvcy1ldmVudC10by1nYXAtZXZlbnQtaWYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3RhZ2xpc3Qtbm90LXNlbmQtdG8tZG93bi1zdHJlYW0taWYtYWxsLXRoZS1mcmFtZS1jb3IucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ZpeC1pZDNkZW11eC11dGYxNi10by11dGY4LWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9oYW5kbGUtYXVkaW8tdmlkZW8tZGVjb2Rlci1lcnJvci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdmlkZW9idWZmZXJfdXBkYXRhX2FsaWdubWVudF91cGRhdGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItdmlkZW8tZnJhbWUtQWRkLUdTVF9WSURFT19GUkFNRV9NQVBfRkxBR19OT19SRUYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtdmlkZW8tZnJhbWUtRG9uLXQtcmVmLWJ1ZmZlcnMtdHdpY2Utd2hlbi1tYXBwaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXZpZGVvZmlsdGVyLVVzZS1uZXctR1NUX1ZJREVPX0ZSQU1FX01BUF9GTEFHX05PX1JFRi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdmlkZW9lbmNvZGVyLUtlZXAtc3RpY2t5LWV2ZW50cy1hcm91bmQtd2hlbi1kb2luZy1hLXNvZnQtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtY2hhbmdlLWVvcy1ldmVudC10by1nYXAtZXZlbnQyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtY2hhbmdlLWVvcy1ldmVudC10by1nYXAtZXZlbnQzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhc2V0ZXh0b3ZlcmxheS1tYWtlLW1lbW9yeS1jb3B5LXdoZW4tdmlkZW8tYnVmZmVyLXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZ3N0cGxheXNpbmstZG9uLXQtc2V0LWFzeW5jLW9mLWN1c3RvbS10ZXh0LXNpbmstdG8tZi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZW5jb2RlYmluLU5lZWQtbW9yZS1idWZmZXJzLWluLW91dHB1dC1xdWV1ZS1mb3ItYmV0dC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNTcxNjVhZjYyNWMwY2EzNTNhYjQ3YzVkODQzOTIwZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3N2JkODE5OWU3YTMxMmQzZDcxZGU5YjdkZGY3NjFhM2I3ODU2MGEyYzJhODA4MjlkMDgxNWNhMzljYmQ1NTFkIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlX2dpdC5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmUzYTQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfZ2l0LmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKworaW5jbHVkZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitTUkNSRVYgPSAiOGQ0Y2I2NGE0YjlkODRiMTAwNzZiZjM1MGY4MGEwZDZlYTY4ZWMyZCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJY2QgJHtTfQorCS4vYXV0b2dlbi5zaCAtLW5vY29uZmlndXJlCisJY2QgJHtCfQorfQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzMTZkZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYwpAQCAtMCwwICsxLDU3IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKKworIyBsaWJpZDN0YWcKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgemxpYiBiemlwMiBsaWJjYXAiCisKK2luaGVyaXQgZ2V0dGV4dAorCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsICdwdWxzZWF1ZGlvJywgJycsIGQpfSBcCisgICAgb3JjIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxpYnBuZyBzb3VwIHNwZWV4IHRhZ2xpYiBcCisgICAgIgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCitYMTFFTkFCTEVPUFRTID0gIi0tZW5hYmxlLXggLS1lbmFibGUteHNobSIKK1gxMURJU0FCTEVPUFRTID0gIi0tZGlzYWJsZS14IC0tZGlzYWJsZS14c2htIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlLC0tZGlzYWJsZS1wdWxzZSxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tjYWlyb10gICAgICA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8iCitQQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKK1BBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS1lbmFibGUtZ2RrX3BpeGJ1ZiwtLWRpc2FibGUtZ2RrX3BpeGJ1ZixnZGstcGl4YnVmIgorUEFDS0FHRUNPTkZJR1tndWRldl0gICAgICA9ICItLXdpdGgtZ3VkZXYsLS13aXRob3V0LWd1ZGV2LHVkZXYiCitQQUNLQUdFQ09ORklHW2phY2tdICAgICAgID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1tsaWJwbmddICAgICA9ICItLWVuYWJsZS1saWJwbmcsLS1kaXNhYmxlLWxpYnBuZyxsaWJwbmciCitQQUNLQUdFQ09ORklHW3NvdXBdICAgICAgID0gIi0tZW5hYmxlLXNvdXAsLS1kaXNhYmxlLXNvdXAsbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW3NwZWV4XSAgICAgID0gIi0tZW5hYmxlLXNwZWV4LC0tZGlzYWJsZS1zcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbdGFnbGliXSAgICAgPSAiLS1lbmFibGUtdGFnbGliLC0tZGlzYWJsZS10YWdsaWIsdGFnbGliIgorUEFDS0FHRUNPTkZJR1t2cHhdICAgICAgICA9ICItLWVuYWJsZS12cHgsLS1kaXNhYmxlLXZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3dhdnBhY2tdICAgID0gIi0tZW5hYmxlLXdhdnBhY2ssLS1kaXNhYmxlLXdhdnBhY2ssd2F2cGFjayIKKworIyB0aGUgMTM5NCBwbHVnaW5zIHJlcXVpcmUgYm90aCBsaWJyYXcxMzk0IGFuZCBsaWJpZWM2MTg4MworIyB0aGUgZm9ybWVyIGlzIGluY2x1ZGVkIGluIG1ldGEtb2UsIHRoZSBsYXR0ZXIgaXNuJ3QKKyMgLT4gZGlzYWJsZWQKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgIC0tZW5hYmxlLW9zcyBcCisgICAgLS1lbmFibGUtZ3N0X3Y0bDIgXAorICAgIC0td2l0aG91dC1saWJ2NGwyIFwKKyAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAorICAgIC0tZGlzYWJsZS13YXZlZm9ybSBcCisgICAgLS1kaXNhYmxlLW9zczQgXAorICAgIC0tZGlzYWJsZS1zdW5hdWRpbyBcCisgICAgLS1kaXNhYmxlLW9zeF9hdWRpbyBcCisgICAgLS1kaXNhYmxlLW9zeF92aWRlbyBcCisgICAgLS1kaXNhYmxlLWFhbGliIFwKKyAgICAtLWRpc2FibGUtbGliY2FjYSBcCisgICAgLS1kaXNhYmxlLWxpYmR2IFwKKyAgICAtLWRpc2FibGUtc2hvdXQyIFwKKyAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAorICAgIC0tZGlzYWJsZS1kdjEzOTQgXAorIgorCitGSUxFU18ke1BOfS1lcXVhbGl6ZXIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzLyoucHJzIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQxOTczZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSBjNzgyYTMwNDgyOTA4YTRiNGRkOWNkNGFiZmY5ZjliYzQwMTY2OThmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU29uZyBCaW5nIDxiMDY0OThAZnJlZXNjYWxlLmNvbT4KK0RhdGU6IFR1ZSwgNSBBdWcgMjAxNCAxNDo0MDo0NiArMDgwMAorU3ViamVjdDogW1BBVENIXSBnc3RydHBtcDRncGF5OiBzZXQgZGFmYXVsdCB2YWx1ZSBmb3IgTVBFRzQgd2l0aG91dCBjb2RlYworIGRhdGEgaW4gY2Fwcy4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczNDI2MworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgorLS0tCisgZ3N0L3J0cC9nc3RydHBtcDRncGF5LmMgfCAgIDE5ICsrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ3N0L3J0cC9nc3RydHBtcDRncGF5LmMgYi9nc3QvcnRwL2dzdHJ0cG1wNGdwYXkuYworaW5kZXggNzkxM2Q5YS4uMTc0OWQzOSAxMDA2NDQKKy0tLSBhL2dzdC9ydHAvZ3N0cnRwbXA0Z3BheS5jCisrKysgYi9nc3QvcnRwL2dzdHJ0cG1wNGdwYXkuYworQEAgLTM5MCw2ICszOTAsNyBAQCBnc3RfcnRwX21wNGdfcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCisgICBjb25zdCBHVmFsdWUgKmNvZGVjX2RhdGE7CisgICBjb25zdCBnY2hhciAqbWVkaWFfdHlwZSA9IE5VTEw7CisgICBnYm9vbGVhbiByZXM7CisrICBjb25zdCBnY2hhciAqbmFtZTsKKyAKKyAgIHJ0cG1wNGdwYXkgPSBHU1RfUlRQX01QNEdfUEFZIChwYXlsb2FkKTsKKyAKK0BAIC00MDAsNyArNDAxLDYgQEAgZ3N0X3J0cF9tcDRnX3BheV9zZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsIEdzdENhcHMgKiBjYXBzKQorICAgICBHU1RfTE9HX09CSkVDVCAocnRwbXA0Z3BheSwgImdvdCBjb2RlY19kYXRhIik7CisgICAgIGlmIChHX1ZBTFVFX1RZUEUgKGNvZGVjX2RhdGEpID09IEdTVF9UWVBFX0JVRkZFUikgeworICAgICAgIEdzdEJ1ZmZlciAqYnVmZmVyOworLSAgICAgIGNvbnN0IGdjaGFyICpuYW1lOworIAorICAgICAgIGJ1ZmZlciA9IGdzdF92YWx1ZV9nZXRfYnVmZmVyIChjb2RlY19kYXRhKTsKKyAgICAgICBHU1RfTE9HX09CSkVDVCAocnRwbXA0Z3BheSwgImNvbmZpZ3VyaW5nIGNvZGVjX2RhdGEiKTsKK0BAIC00MjYsNiArNDI2LDIzIEBAIGdzdF9ydHBfbXA0Z19wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLCBHc3RDYXBzICogY2FwcykKKyAKKyAgICAgICBydHBtcDRncGF5LT5jb25maWcgPSBnc3RfYnVmZmVyX2NvcHkgKGJ1ZmZlcik7CisgICAgIH0KKysgIH0gZWxzZSB7CisrICAgIG5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpOworKworKyAgICBpZiAoIXN0cmNtcCAobmFtZSwgInZpZGVvL21wZWciKSkgeworKyAgICAgIHJ0cG1wNGdwYXktPnByb2ZpbGUgPSBnX3N0cmR1cCAoIjEiKTsKKysKKysgICAgICAvKiBmaXhlZCByYXRlICovCisrICAgICAgcnRwbXA0Z3BheS0+cmF0ZSA9IDkwMDAwOworKyAgICAgIC8qIHZpZGVvIHN0cmVhbSB0eXBlICovCisrICAgICAgcnRwbXA0Z3BheS0+c3RyZWFtdHlwZSA9ICI0IjsKKysgICAgICAvKiBubyBwYXJhbXMgZm9yIHZpZGVvICovCisrICAgICAgcnRwbXA0Z3BheS0+cGFyYW1zID0gTlVMTDsKKysgICAgICAvKiBtb2RlICovCisrICAgICAgcnRwbXA0Z3BheS0+bW9kZSA9ICJnZW5lcmljIjsKKysKKysgICAgICBtZWRpYV90eXBlID0gInZpZGVvIjsKKysgICAgfQorICAgfQorICAgaWYgKG1lZGlhX3R5cGUgPT0gTlVMTCkKKyAgICAgZ290byBjb25maWdfZmFpbGVkOworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kL2RlY3JlYXNlX2FzdGVyaXNraDI2M19yYW5rLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvZGVjcmVhc2VfYXN0ZXJpc2toMjYzX3JhbmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjg4NjMxYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kL2RlY3JlYXNlX2FzdGVyaXNraDI2M19yYW5rLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK2NvbW1pdCBkNzFkNzRkYWFjOGVkNTQxNTZlZDEwMzk1OGFiNDU1YzYzYzcyYjBlCitBdXRob3I6IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+CitEYXRlOiAgIE1vbiBOb3YgMTAgMTE6MjU6NDcgMjAxNCArMDgwMAorCitbYXN0ZXJpc2toMjYzXSBkZWNyZWFzZSB0aGUgcmFuayBhcyB3ZSBoYXZuJ3QgdGhpcyBraW5kIG9mIGRlY29kZXIuCisKK0RlY3JlYXNlIHRoZSByYW5rIGFzIHdlIGhhdm4ndCB0aGlzIGtpbmQgb2YgZGVjb2Rlci4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczOTkzNQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU29uZyBCaW5nIDxiMDY0OThAZnJlZXNjYWxlLmNvbT4KKworZGlmZiAtLWdpdCBhL2dzdC9ydHAvZ3N0YXN0ZXJpc2toMjYzLmMgYi9nc3QvcnRwL2dzdGFzdGVyaXNraDI2My5jCitpbmRleCBhMDFmYmM4Li44ZmEzMTk0IDEwMDY0NAorLS0tIGEvZ3N0L3J0cC9nc3Rhc3Rlcmlza2gyNjMuYworKysrIGIvZ3N0L3J0cC9nc3Rhc3Rlcmlza2gyNjMuYworQEAgLTIyNiw1ICsyMjYsNSBAQCBnYm9vbGVhbgorIGdzdF9hc3Rlcmlza2gyNjNfcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKKyB7CisgICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImFzdGVyaXNraDI2MyIsCistICAgICAgR1NUX1JBTktfU0VDT05EQVJZLCBHU1RfVFlQRV9BU1RFUklTS19IMjYzKTsKKysgICAgICBHU1RfUkFOS19TRUNPTkRBUlkgLSAxLCBHU1RfVFlQRV9BU1RFUklTS19IMjYzKTsKKyB9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjQuNS5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0M2FiNjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjQuNS5iYgpAQCAtMCwwICsxLDEzIEBACitpbmNsdWRlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWNyZWFzZV9hc3Rlcmlza2gyNjNfcmFuay5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZWFmMWE2ZGFmNzM3NDliYzQyM2ZlYWMzMDFkNjAwMzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzliMWI1ZjNmN2JjYWE4YTYxNTIwMmViNWUxNzYxMjFlZWI4MzM2OTYwZjcwNjg3ZTUzNmFkNzhkYmM3ZTY0MSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF9naXQuYmIgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMwZTBlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kX2dpdC5iYgpAQCAtMCwwICsxLDE4IEBACitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NSQ1JFViA9ICJmZDAxMjM4MDBjOGMxY2YxNDY4YzBmYTVkNTkyYWQwZDBkOGI0MTQwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwljZCAke1N9CisJLi9hdXRvZ2VuLnNoIC0tbm9jb25maWd1cmUKKwljZCAke0J9Cit9CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2JhMzE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCkBAIC0wLDAgKzEsMzAgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgTEdQTHYyKyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBsaWJpZDN0YWciCisKK2luaGVyaXQgZ2V0dGV4dAorCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIG9yYyBhNTJkZWMgbGFtZSBtYWQgbXBlZzJkZWMgXAorICAgICIKKworUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLS1lbmFibGUtYTUyZGVjLC0tZGlzYWJsZS1hNTJkZWMsbGliYTUyIgorUEFDS0FHRUNPTkZJR1tjZGlvXSAgICAgPSAiLS1lbmFibGUtY2RpbywtLWRpc2FibGUtY2RpbyxsaWJjZGlvIgorUEFDS0FHRUNPTkZJR1tkdmRyZWFkXSAgPSAiLS1lbmFibGUtZHZkcmVhZCwtLWRpc2FibGUtZHZkcmVhZCxsaWJkdmRyZWFkIgorUEFDS0FHRUNPTkZJR1tsYW1lXSAgICAgPSAiLS1lbmFibGUtbGFtZSwtLWRpc2FibGUtbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1ttYWRdICAgICAgPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgorUEFDS0FHRUNPTkZJR1ttcGVnMmRlY10gPSAiLS1lbmFibGUtbXBlZzJkZWMsLS1kaXNhYmxlLW1wZWcyZGVjLG1wZWcyZGVjIgorUEFDS0FHRUNPTkZJR1t4MjY0XSAgICAgPSAiLS1lbmFibGUteDI2NCwtLWRpc2FibGUteDI2NCx4MjY0IgorCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLWRpc2FibGUtYW1ybmIgXAorICAgIC0tZGlzYWJsZS1hbXJ3YiBcCisgICAgLS1kaXNhYmxlLXNpZHBsYXkgXAorICAgIC0tZGlzYWJsZS10d29sYW1lIFwKKyAgICAiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuNC41LmJiIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS40LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjYjI4YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuNC41LmJiCkBAIC0wLDAgKzEsMTAgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4ICIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5NTRiZWVkN2JiOWE5M2U0MjZkZWU1NDNmZjQ2MzkzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjZDVlODFjZjYxODk0NGY0ZGM5MzVmMTY2OWIyMTI1ZThiYjJmZTljYzdkYzhkYzE1YjcyMjM3YWNhNDkwNjciCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV9naXQuYmIgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNmNWZmYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5X2dpdC5iYgpAQCAtMCwwICsxLDE3IEBACitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4ICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworU1JDUkVWID0gIjA2YjhhYzEwY2VlODVjNWMzMDRjYTMyMDk5N2FhOGY0NDI5NWE2NmYiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWNkICR7U30KKwkuL2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQorCWNkICR7Qn0KK30KKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE3ODNiNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJQbHVnaW5zIGZvciB0aGUgR1N0cmVhbWVyIG11bHRpbWVkaWEgZnJhbWV3b3JrIDEueCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdzdHJlYW1lciIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworR1NUUkVBTUVSXzFfMF9ERUJVRyA/PSAiLS1kaXNhYmxlLWRlYnVnIgorR1NUUkVBTUVSXzFfMF9HSVRfQlJBTkNIID89ICJtYXN0ZXIiCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGdyaW5kICR7R1NUUkVBTUVSXzFfMF9ERUJVR30gLS1kaXNhYmxlLWV4YW1wbGVzICIKKworYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgorCitMSUJWID0gIjEuMCIKK3JlcXVpcmUgZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKKworUEFDS0FHRUNPTkZJR1tvcmNdID0gIi0tZW5hYmxlLW9yYywtLWRpc2FibGUtb3JjLG9yYyBvcmMtbmF0aXZlIgorCitleHBvcnQgT1JDQyA9ICIke1NUQUdJTkdfRElSX05BVElWRX0ke2JpbmRpcn0vb3JjYyIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICJeJHtQTn0tLioiCisKKyMgYXBwbHkgZ3N0cmVhbWVyIGhhY2sgYWZ0ZXIgTWFrZWZpbGUuaW4uaW4gaW4gc291cmNlIGlzIHJlcGxhY2VkIGJ5IG91ciB2ZXJzaW9uIGZyb20KKyMgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluLCBidXQgYmVmb3JlIGNvbmZpZ3VyZSBpcyBleGVjdXRlZCAKKyMgaHR0cDovL2xpc3RzLmxpbnV4dG9nby5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTItTm92ZW1iZXIvMDMyMjMzLmh0bWwKK29lX3J1bmNvbmZfcHJlcGVuZCgpIHsKKwlpZiBbIC1lICR7U30vcG8vTWFrZWZpbGUuaW4uaW4gXTsgdGhlbgorCQlzZWQgLWkgLWUgIjFhXFwiIC1lICdHRVRURVhUX1BBQ0tBR0UgPSBAR0VUVEVYVF9QQUNLQUdFQCcgJHtTfS9wby9NYWtlZmlsZS5pbi5pbgorCWZpCit9CisKK1NSQ19VUkkgPSAiJHtAZ2V0X2dzdF9zcmN1cmkoZCl9IgorCitkZWYgZ2V0X2dzdF9zcmN1cmkoZCk6CisgICAgIyBjaGVjayBpZiBleHBlY3RlZCBwcmVmaXggaXMgcHJlc2VudAorICAgIHByZWZpeCA9ICJnc3RyZWFtZXIxLjAtIgorICAgIGJwbiA9IGQuZ2V0VmFyKCJCUE4iLCBUcnVlKQorICAgIGlmIG5vdCBicG4uc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICBiYi5mYXRhbCgnSW52YWxpZCBHU3RyZWFtZXIgMS4wIHBsdWdpbiBwYWNrYWdlIG5hbWUgIiVzIiA6IG11c3Qgc3RhcnQgd2l0aCAiJXMiJyAlIChicG4sIHByZWZpeCkpCisKKyAgICAjIHJlcGxhY2VkIHByZWZpeCB3aXRoICJnc3QtIiwgd2hpY2ggaXMgd2hhdCBpcyB1c2VkIGZvciB0aGUgdGFyYmFsbCBhbmQgcmVwb3NpdG9yeSBmaWxlbmFtZXMKKyAgICBnc3Rwa2dfYmFzZW5hbWUgPSAiZ3N0LSIgKyBicG5bbGVuKHByZWZpeCk6XQorICAgIHB2ID0gZC5nZXRWYXIoIlBWIiwgVHJ1ZSkKKyAgICBicmFuY2ggPSBkLmdldFZhcigiR1NUUkVBTUVSXzFfMF9HSVRfQlJBTkNIIiwgVHJ1ZSkKKworICAgIGlmIHB2ID09ICJnaXQiOgorICAgICAgICBzID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci8lczticmFuY2g9JXMiICUgKGdzdHBrZ19iYXNlbmFtZSwgYnJhbmNoKQorICAgIGVsc2U6CisgICAgICAgIHMgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyVzLyVzLSVzLnRhci54eiIgJSAoZ3N0cGtnX2Jhc2VuYW1lLCBnc3Rwa2dfYmFzZW5hbWUsIHB2KQorICAgIHJldHVybiBzCisKK2RlbGV0ZV9saWJsaW5rX200X2ZpbGUoKSB7CisJIyBUaGlzIG00IGZpbGUgY29udGFpbnMgbmFzdGluZXNzIHdoaWNoIGNvbmZsaWN0cyB3aXRoIGxpYnRvb2wgMi4yLjIKKwlybSAiJHtTfS9tNC9saWItbGluay5tNCIgfHwgdHJ1ZQorfQorCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX2xpYmxpbmtfbTRfZmlsZSAiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhOTQyMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IG9uIHRvcCBvZiBHU3RyZWFtZXIgZm9yIGJ1aWxkaW5nIGFuIFJUU1Agc2VydmVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIiCitIT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1ydHNwLXNlcnZlci8iCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBsaWJjZ3JvdXAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworUE5SRUFMID0gImdzdC1ydHNwLXNlcnZlciIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyAKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjQuNS5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS40LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI5YjQyYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS40LjUuYmIKQEAgLTAsMCArMSw2IEBACitpbmNsdWRlIGdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhOWY5Yjg4OTllYzdhYjMzNjYzY2RhNzYyN2RiNDBkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDg5MjU0YmQzMWI3YzFmMWNmMmMwMzRhM2IzNTUxZjkyODc4ZjllM2NhYjY1Y2VmM2E5MDFhMDRjMGYxZDM3IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZThhYThmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKK0l0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIrIgorREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKKworUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgorUEFDS0FHRUNPTkZJR1tjaGVja10gPSAiLS1lbmFibGUtY2hlY2ssLS1kaXNhYmxlLWNoZWNrIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY2Jvb2sgLS1kaXNhYmxlLWd0ay1kb2MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmFsZ3JpbmQgXAorICAgICAgICAgICAgICAgICIKKworUlJFQ09NTUVORFNfJHtQTn1fcWVtdXg4NiAgICArPSAia2VybmVsLW1vZHVsZS1zbmQtZW5zMTM3MCBrZXJuZWwtbW9kdWxlLXNuZC1yYXdtaWRpIgorUlJFQ09NTUVORFNfJHtQTn1fcWVtdXg4Ni02NCArPSAia2VybmVsLW1vZHVsZS1zbmQtZW5zMTM3MCBrZXJuZWwtbW9kdWxlLXNuZC1yYXdtaWRpIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8iCisKK0ZJTEVTXyR7UE59ICs9ICIgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiICR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorRklMRVNfJHtQTn0tZGJnICs9ICIgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvLmRlYnVnLyAke2xpYmV4ZWNkaXJ9L2dzdHJlYW1lci0xLjAvLmRlYnVnLyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLUZpeC1jcmFzaC13aXRoLWdzdC1pbnNwZWN0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLUZpeC1jcmFzaC13aXRoLWdzdC1pbnNwZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZjVjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtRml4LWNyYXNoLXdpdGgtZ3N0LWluc3BlY3QucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2YjI2ZjNkYmY5YmY1NzdkNzE1MzRhYjc0MTBkZTY2ZDA2ZTQ2YmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorRGF0ZTogU2F0LCA2IEFwciAyMDEzIDIzOjUyOjExICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjcmFzaCB3aXRoIGdzdC1pbnNwZWN0IENocmlzIExvcmQgPGNocmlzQG9wZW5lZGhhbmQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorLS0tCisgdG9vbHMvZ3N0LWluc3BlY3QuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2dzdC1pbnNwZWN0LmMgYi90b29scy9nc3QtaW5zcGVjdC5jCitpbmRleCAyM2I3YzQ0Li5iNzliMDJlIDEwMDY0NAorLS0tIGEvdG9vbHMvZ3N0LWluc3BlY3QuYworKysrIGIvdG9vbHMvZ3N0LWluc3BlY3QuYworQEAgLTE1NTYsNyArMTU1Niw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMgKGN0eCwgb3B0aW9ucywgR0VUVEVYVF9QQUNLQUdFKTsKKyAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwIChjdHgsIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAgKCkpOworICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlIChjdHgsICZhcmdjLCAmYXJndiwgJmVycikpIHsKKy0gICAgZ19wcmludGVyciAoIkVycm9yIGluaXRpYWxpemluZzogJXNcbiIsIGVyci0+bWVzc2FnZSk7CisrICAgIGdfcHJpbnRlcnIgKCJFcnJvciBpbml0aWFsaXppbmc6ICVzXG4iLCBlcnIgPyBlcnItPm1lc3NhZ2UgOiAiKG51bGwpIik7CisgICAgIHJldHVybiAtMTsKKyAgIH0KKyAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY3R4KTsKKy0tIAorMS44LjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWdzdGluZm8tU2hvcnRlbi1fX0ZJTEVfXy1vbi1hbGwtcGxhdGZvcm1zLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWdzdGluZm8tU2hvcnRlbi1fX0ZJTEVfXy1vbi1hbGwtcGxhdGZvcm1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMTNjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtZ3N0aW5mby1TaG9ydGVuLV9fRklMRV9fLW9uLWFsbC1wbGF0Zm9ybXMucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSA4MWZlY2QzNjdiMDE2ZTVhYzRmYjBjMDRiODRkYTVjNDc0ZjMwZGE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgVXJiYW5lYyA8Z2l0LnVzZXJAdXJiYW5lYy5uZXQ+CitEYXRlOiBGcmksIDI3IEZlYiAyMDE1IDAxOjE2OjU4ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBnc3RpbmZvOiBTaG9ydGVuIF9fRklMRV9fIG9uIGFsbCBwbGF0Zm9ybXMuCisKK1RoaXMgaXMgdXNlZnVsIG5vdCBvbmx5IGZvciBNU1ZDLCBidXQgYWxzbyB3aXRoIGdjYy9MaW51eCB3aGVuIGRvaW5nCitjcm9zcy1jb21waWxhdGlvbiBidWlsZHMgYW5kIG91dC1vZi10cmVlIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDUyMTNdCisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIFVyYmFuZWMgPGdpdC51c2VyQHVyYmFuZWMubmV0PgorLS0tCisgZ3N0L2dzdGluZm8uYyB8IDExICsrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC9nc3RpbmZvLmMgYi9nc3QvZ3N0aW5mby5jCitpbmRleCBiMmEzMDA1Li44YjYxZDA5IDEwMDY0NAorLS0tIGEvZ3N0L2dzdGluZm8uYworKysrIGIvZ3N0L2dzdGluZm8uYworQEAgLTQ0NCw3ICs0NDQsNiBAQCBnc3RfZGVidWdfbG9nIChHc3REZWJ1Z0NhdGVnb3J5ICogY2F0ZWdvcnksIEdzdERlYnVnTGV2ZWwgbGV2ZWwsCisgICB2YV9lbmQgKHZhcl9hcmdzKTsKKyB9CisgCistI2lmZGVmIEdfT1NfV0lOMzIKKyAvKiBiYXNlZCBvbiBnX2Jhc2VuYW1lKCksIHdoaWNoIHdlIGNhbid0IHVzZSBiZWNhdXNlIGl0IHdhcyBkZXByZWNhdGVkICovCisgc3RhdGljIGlubGluZSBjb25zdCBnY2hhciAqCisgZ3N0X3BhdGhfYmFzZW5hbWUgKGNvbnN0IGdjaGFyICogZmlsZV9uYW1lKQorQEAgLTQ2Nyw3ICs0NjYsNiBAQCBnc3RfcGF0aF9iYXNlbmFtZSAoY29uc3QgZ2NoYXIgKiBmaWxlX25hbWUpCisgCisgICByZXR1cm4gZmlsZV9uYW1lOworIH0KKy0jZW5kaWYKKyAKKyAvKioKKyAgKiBnc3RfZGVidWdfbG9nX3ZhbGlzdDoKK0BAIC00OTcsMTIgKzQ5NSwxMSBAQCBnc3RfZGVidWdfbG9nX3ZhbGlzdCAoR3N0RGVidWdDYXRlZ29yeSAqIGNhdGVnb3J5LCBHc3REZWJ1Z0xldmVsIGxldmVsLAorICAgZ19yZXR1cm5faWZfZmFpbCAoZnVuY3Rpb24gIT0gTlVMTCk7CisgICBnX3JldHVybl9pZl9mYWlsIChmb3JtYXQgIT0gTlVMTCk7CisgCistICAvKiBUaGUgcHJlZGVmaW5lZCBtYWNybyBfX0ZJTEVfXyBpcyBhbHdheXMgdGhlIGV4YWN0IHBhdGggZ2l2ZW4gdG8gdGhlCistICAgKiBjb21waWxlciB3aXRoIE1TVkMsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHRoZSBiYXNlbmFtZS4gIFdlIHdvcmsKKy0gICAqIGFyb3VuZCBpdCBhdCBydW50aW1lIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5LiAqLworLSNpZmRlZiBHX09TX1dJTjMyCisrICAvKiBUaGUgcHJlZGVmaW5lZCBtYWNybyBfX0ZJTEVfXyBjYW4gYmUgYW4gYWJzb2x1dGUgcGF0aCBpbiBzb21lIGJ1aWxkCisrICAgKiBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgTVNWQyBvciBvdXQtb2YtdHJlZSBjcm9zcy1jb21waWxlcy4gVGhpcyBtYXkKKysgICAqIGJlIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRoYW4gdGhlIGZpbGVuYW1lLiAgV2Ugd29yayBhcm91bmQgaXQgYXQKKysgICAqIHJ1bnRpbWUgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkuICovCisgICBmaWxlID0gZ3N0X3BhdGhfYmFzZW5hbWUgKGZpbGUpOworLSNlbmRpZgorIAorICAgbWVzc2FnZS5tZXNzYWdlID0gTlVMTDsKKyAgIG1lc3NhZ2UuZm9ybWF0ID0gZm9ybWF0OworLS0gCisyLjMuMAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItYmFzZXNpbmstRml4LVFvUy1sYXRlbmVzcy1jaGVja2luZy1pZi1zdWJjbGFzcy1pbXBsZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMi1iYXNlc2luay1GaXgtUW9TLWxhdGVuZXNzLWNoZWNraW5nLWlmLXN1YmNsYXNzLWltcGxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MDVjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItYmFzZXNpbmstRml4LVFvUy1sYXRlbmVzcy1jaGVja2luZy1pZi1zdWJjbGFzcy1pbXBsZS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDY5MTQ1NjZlZDZhODljOTY5NzNhNTc4YWE1ZWNkMDFlZTY4Y2RjZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIDxKaWFuLkxpQGZyZWVzY2FsZS5jb20+CitEYXRlOiBUaHUsIDE0IE1heSAyMDE1IDE1OjQ5OjQzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGJhc2VzaW5rOiBGaXggUW9TL2xhdGVuZXNzIGNoZWNraW5nIGlmIHN1YmNsYXNzIGltcGxlbWVudHMKKyBwcmVwYXJlL3ByZXBhcmVfbGlzdCB2ZnVuY3MKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworSW4gYmFzZXNpbmsgZnVuY3Rpb25zIGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQoKSwgYmVsb3cgY29kZSBpcyB1c2VkIHRvCitjaGVja2luZyBpZiBidWZmZXIgaXMgbGF0ZSBiZWZvcmUgZG9pbmcgcHJlcGFyZSBjYWxsIHRvIHNhdmUgc29tZSBlZmZvcnQ6CisgICAgaWYgKHN5bmNhYmxlICYmIGRvX3N5bmMpCisgICAgICBsYXRlID0KKyAgICAgICAgICBnc3RfYmFzZV9zaW5rX2lzX3Rvb19sYXRlIChiYXNlc2luaywgb2JqLCByc3RhcnQsIHJzdG9wLAorICAgICAgICAgIEdTVF9DTE9DS19FQVJMWSwgMCwgRkFMU0UpOworCisgICAgaWYgKEdfVU5MSUtFTFkgKGxhdGUpKQorICAgICAgZ290byBkcm9wcGVkOworCitCdXQgdGhpcyBjb2RlIGhhcyBwcm9ibGVtLCBpdCBzaG91bGQgY2FsY3VsYXRlIGppdHRlciBiYXNlZCBvbiBjdXJyZW50IG1lZGlhCitjbG9jaywgcmF0aGVyIHRoYW4ganVzdCBwYXNzaW5nIDAuIEkgZm91bmQgaXQgd2lsbCBkcm9wIGFsbCB0aGUgZnJhbWVzIHdoZW4KK3Jld2luZCBpbiBzbG93IHNwZWVkLCBzdWNoIGFzIC0yWC4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTI1OAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxLjUuMV0KKy0tLQorIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyB8ICAgMjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyBiL2xpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYworaW5kZXggYTUwNTY5NS4uNWZiMmQ2YSAxMDA2NDQKKy0tLSBhL2xpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYworKysrIGIvbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jCitAQCAtMzM2OSwxMCArMzM2OSwyOCBAQCBnc3RfYmFzZV9zaW5rX2NoYWluX3VubG9ja2VkIChHc3RCYXNlU2luayAqIGJhc2VzaW5rLCBHc3RQYWQgKiBwYWQsCisgICAgIGlmIChHX1VOTElLRUxZIChzdGVwcGVkKSkKKyAgICAgICBnb3RvIGRyb3BwZWQ7CisgCistICAgIGlmIChzeW5jYWJsZSAmJiBkb19zeW5jKQorLSAgICAgIGxhdGUgPQorLSAgICAgICAgICBnc3RfYmFzZV9zaW5rX2lzX3Rvb19sYXRlIChiYXNlc2luaywgb2JqLCByc3RhcnQsIHJzdG9wLAorLSAgICAgICAgICBHU1RfQ0xPQ0tfRUFSTFksIDAsIEZBTFNFKTsKKysgICAgaWYgKHN5bmNhYmxlICYmIGRvX3N5bmMpIHsKKysgICAgICBHc3RDbG9jayAqY2xvY2s7CisrCisrICAgICAgR1NUX09CSkVDVF9MT0NLIChiYXNlc2luayk7CisrICAgICAgY2xvY2sgPSBHU1RfRUxFTUVOVF9DTE9DSyAoYmFzZXNpbmspOworKyAgICAgIGlmIChjbG9jayAmJiBHU1RfU1RBVEUgKGJhc2VzaW5rKSA9PSBHU1RfU1RBVEVfUExBWUlORykgeworKyAgICAgICAgR3N0Q2xvY2tUaW1lIGJhc2VfdGltZTsKKysgICAgICAgIEdzdENsb2NrVGltZSBzdGltZTsKKysgICAgICAgIEdzdENsb2NrVGltZSBub3c7CisrCisrICAgICAgICBiYXNlX3RpbWUgPSBHU1RfRUxFTUVOVF9DQVNUIChiYXNlc2luayktPmJhc2VfdGltZTsKKysgICAgICAgIHN0aW1lID0gYmFzZV90aW1lICsgZ3N0X2Jhc2Vfc2lua19hZGp1c3RfdGltZSAoYmFzZXNpbmssIHJzdGFydCk7CisrICAgICAgICBub3cgPSBnc3RfY2xvY2tfZ2V0X3RpbWUgKGNsb2NrKTsKKysgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChiYXNlc2luayk7CisrCisrICAgICAgICBsYXRlID0KKysgICAgICAgICAgICBnc3RfYmFzZV9zaW5rX2lzX3Rvb19sYXRlIChiYXNlc2luaywgb2JqLCByc3RhcnQsIHJzdG9wLAorKyAgICAgICAgICAgIEdTVF9DTE9DS19FQVJMWSwgR1NUX0NMT0NLX0RJRkYgKHN0aW1lLCBub3cpLCBGQUxTRSk7CisrICAgICAgfSBlbHNlIHsKKysgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChiYXNlc2luayk7CisrICAgICAgfQorKyAgICB9CisgCisgICAgIGlmIChHX1VOTElLRUxZIChsYXRlKSkKKyAgICAgICBnb3RvIGRyb3BwZWQ7CistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC9pbnB1dHNlbGVjdG9yLXN0aWNreS1ldmVudHMtaGF2ZW4tdC1zZW5kLW91dC13aGVuLWFjLTEtNC0xLnBhdGNoIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC9pbnB1dHNlbGVjdG9yLXN0aWNreS1ldmVudHMtaGF2ZW4tdC1zZW5kLW91dC13aGVuLWFjLTEtNC0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY1MGNlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2lucHV0c2VsZWN0b3Itc3RpY2t5LWV2ZW50cy1oYXZlbi10LXNlbmQtb3V0LXdoZW4tYWMtMS00LTEucGF0Y2gKQEAgLTAsMCArMSwxNjcgQEAKK0Zyb20gODNiZWQ5MGMzMDZlZDMxODVkNDhmZWJmNjQ0MTE3N2Q2MzhmNzM0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+CitEYXRlOiBXZWQsIDI0IERlYyAyMDE0IDEwOjEzOjUxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGlucHV0c2VsZWN0b3I6IHN0aWNreSBldmVudHMgaGF2ZW4ndCBzZW5kIG91dCB3aGVuIGFjdGl2ZQorIHRyYWNrIHJlYWNoIEVPUworCitFT1MgZXZlbnQgaGFzbid0IGJlZW4gc2VuZCB0byBkb3duLWVsZW1lbnQuIFRoZSByZXNvbHV0aW9uIGlzIGJsb2NrIEVPUyBldmVudAorb2YgaW5hY3RpdmUgcGFkLCBzZW5kIHRoZSBldmVudCBhZnRlciB0aGUgcGFkIGFjdGl2ZWQuCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA5NDkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS41LjFdCisKK1NpZ25lZC1vZmYtYnk6IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+CistLS0KKyBwbHVnaW5zL2VsZW1lbnRzL2dzdGlucHV0c2VsZWN0b3IuYyB8ICAgNTggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyBwbHVnaW5zL2VsZW1lbnRzL2dzdGlucHV0c2VsZWN0b3IuaCB8ICAgIDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wbHVnaW5zL2VsZW1lbnRzL2dzdGlucHV0c2VsZWN0b3IuYyBiL3BsdWdpbnMvZWxlbWVudHMvZ3N0aW5wdXRzZWxlY3Rvci5jCitpbmRleCBmYjUwODAyLi40NDYxZjdjIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9lbGVtZW50cy9nc3RpbnB1dHNlbGVjdG9yLmMKKysrKyBiL3BsdWdpbnMvZWxlbWVudHMvZ3N0aW5wdXRzZWxlY3Rvci5jCitAQCAtNDQwLDYgKzQ0MCwxNyBAQCBnc3Rfc2VsZWN0b3JfcGFkX2l0ZXJhdGVfbGlua2VkX3BhZHMgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50KQorIH0KKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KKytnc3RfaW5wdXRfc2VsZWN0b3JfZW9zX3dhaXQgKEdzdElucHV0U2VsZWN0b3IgKiBzZWxmLCBHc3RTZWxlY3RvclBhZCAqIHBhZCkKKyt7CisrICB3aGlsZSAoIXNlbGYtPmVvcyAmJiAhc2VsZi0+Zmx1c2hpbmcgJiYgIXBhZC0+Zmx1c2hpbmcpIHsKKysgICAgLyogd2UgY2FuIGJlIHVubG9ja2VkIGhlcmUgd2hlbiB3ZSBhcmUgc2h1dHRpbmcgZG93biAoZmx1c2hpbmcpIG9yIHdoZW4gd2UKKysgICAgICogZ2V0IHVuYmxvY2tlZCAqLworKyAgICBHU1RfSU5QVVRfU0VMRUNUT1JfV0FJVCAoc2VsZik7CisrICB9CisrICByZXR1cm4gc2VsZi0+Zmx1c2hpbmc7CisrfQorKworK3N0YXRpYyBnYm9vbGVhbgorIGdzdF9zZWxlY3Rvcl9wYWRfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQorIHsKKyAgIGdib29sZWFuIHJlcyA9IFRSVUU7CitAQCAtNDg2LDYgKzQ5Nyw3IEBAIGdzdF9zZWxlY3Rvcl9wYWRfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQorICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVEFSVDoKKyAgICAgICAvKiBVbmJsb2NrIHRoZSBwYWQgaWYgaXQncyB3YWl0aW5nICovCisgICAgICAgc2VscGFkLT5mbHVzaGluZyA9IFRSVUU7CisrICAgICAgc2VsLT5lb3MgPSBGQUxTRTsKKyAgICAgICBHU1RfSU5QVVRfU0VMRUNUT1JfQlJPQURDQVNUIChzZWwpOworICAgICAgIGJyZWFrOworICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgorQEAgLTUyMywyMSArNTM1LDEyIEBAIGdzdF9zZWxlY3Rvcl9wYWRfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQorICAgICBjYXNlIEdTVF9FVkVOVF9FT1M6CisgICAgICAgc2VscGFkLT5lb3MgPSBUUlVFOworIAorLSAgICAgIGlmIChmb3J3YXJkKSB7CistICAgICAgICBzZWxwYWQtPmVvc19zZW50ID0gVFJVRTsKKy0gICAgICB9IGVsc2UgeworLSAgICAgICAgR3N0U2VsZWN0b3JQYWQgKmFjdGl2ZV9zZWxwYWQ7CistCistICAgICAgICAvKiBJZiB0aGUgYWN0aXZlIHNpbmtwYWQgaXMgaW4gRU9TIHN0YXRlIGJ1dCBFT1MKKy0gICAgICAgICAqIHdhcyBub3Qgc2VudCBkb3duc3RyZWFtIHRoaXMgbWVhbnMgdGhhdCB0aGUgcGFkCistICAgICAgICAgKiBnb3QgRU9TIGJlZm9yZSBpdCB3YXMgc2V0IGFzIGFjdGl2ZSBwYWQgYW5kIHRoYXQKKy0gICAgICAgICAqIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBwYWQgZ290IEVPUyBhZnRlciBpdCB3YXMKKy0gICAgICAgICAqIGFjdGl2ZQorLSAgICAgICAgICovCistICAgICAgICBhY3RpdmVfc2VscGFkID0gR1NUX1NFTEVDVE9SX1BBRCAoYWN0aXZlX3NpbmtwYWQpOworLSAgICAgICAgZm9yd2FyZCA9IChhY3RpdmVfc2VscGFkLT5lb3MgJiYgIWFjdGl2ZV9zZWxwYWQtPmVvc19zZW50KTsKKy0gICAgICAgIGFjdGl2ZV9zZWxwYWQtPmVvc19zZW50ID0gVFJVRTsKKysgICAgICBpZiAoIWZvcndhcmQpIHsKKysgICAgICAgIC8qIGJsb2NrZWQgdW50aWwgYWN0aXZlIHRoZSBzaW5kIHBhZCBvciBmbHVzaCAqLworKyAgICAgICAgZ3N0X2lucHV0X3NlbGVjdG9yX2Vvc193YWl0IChzZWwsIHNlbHBhZCk7CisrICAgICAgICBmb3J3YXJkID0gVFJVRTsKKyAgICAgICB9CisrICAgICAgc2VscGFkLT5lb3Nfc2VudCA9IFRSVUU7CisgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAicmVjZWl2ZWQgRU9TIik7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgR1NUX0VWRU5UX0dBUDp7CitAQCAtNjc2LDYgKzY3OSwxMiBAQCBnc3RfaW5wdXRfc2VsZWN0b3Jfd2FpdF9ydW5uaW5nX3RpbWUgKEdzdElucHV0U2VsZWN0b3IgKiBzZWwsCisgICAgICAgICBnc3RfaW5wdXRfc2VsZWN0b3JfYWN0aXZhdGVfc2lua3BhZCAoc2VsLCBHU1RfUEFEX0NBU1QgKHNlbHBhZCkpOworICAgICBhY3RpdmVfc2VscGFkID0gR1NUX1NFTEVDVE9SX1BBRF9DQVNUIChhY3RpdmVfc2lua3BhZCk7CisgCisrICAgIGlmIChzZWwtPmVvcykgeworKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbCwgIk5vdCB3YWl0aW5nIGJlY2F1c2UgaW5wdXRzZWxlY3RvciByZWFjaCBFT1MuIik7CisrICAgICAgR1NUX0lOUFVUX1NFTEVDVE9SX1VOTE9DSyAoc2VsKTsKKysgICAgICByZXR1cm4gRkFMU0U7CisrICAgIH0KKysKKyAgICAgaWYgKHNlZy0+Zm9ybWF0ICE9IEdTVF9GT1JNQVRfVElNRSkgeworICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbHBhZCwKKyAgICAgICAgICAgIk5vdCB3YWl0aW5nIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIFRJTUUgc2VnbWVudCIpOworQEAgLTk3MSw2ICs5ODAsMTIgQEAgZ3N0X3NlbGVjdG9yX3BhZF9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKKyAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSkpOworIAorICAgR1NUX0lOUFVUX1NFTEVDVE9SX0xPQ0sgKHNlbCk7CisrICBpZiAoc2VsLT5lb3MpIHsKKysgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiaW5wdXRzZWxlY3RvciBlb3MuIik7CisrICAgIEdTVF9JTlBVVF9TRUxFQ1RPUl9VTkxPQ0sgKHNlbCk7CisrICAgIGdvdG8gZW9zOworKyAgfQorKworICAgLyogd2FpdCBvciBjaGVjayBmb3IgZmx1c2hpbmcgKi8KKyAgIGlmIChnc3RfaW5wdXRfc2VsZWN0b3Jfd2FpdCAoc2VsLCBzZWxwYWQpKSB7CisgICAgIEdTVF9JTlBVVF9TRUxFQ1RPUl9VTkxPQ0sgKHNlbCk7CitAQCAtMTE1MSw2ICsxMTY2LDEzIEBAIGZsdXNoaW5nOgorICAgICByZXMgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgZ290byBkb25lOworICAgfQorK2VvczoKKysgIHsKKysgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiV2UgYXJlIGVvcywgZGlzY2FyZCBidWZmZXIgJXAiLCBidWYpOworKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworKyAgICByZXMgPSBHU1RfRkxPV19FT1M7CisrICAgIGdvdG8gZG9uZTsKKysgIH0KKyB9CisgCisgc3RhdGljIHZvaWQgZ3N0X2lucHV0X3NlbGVjdG9yX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpOworQEAgLTEzMDksNiArMTMzMSw3IEBAIGdzdF9pbnB1dF9zZWxlY3Rvcl9pbml0IChHc3RJbnB1dFNlbGVjdG9yICogc2VsKQorICAgZ19tdXRleF9pbml0ICgmc2VsLT5sb2NrKTsKKyAgIGdfY29uZF9pbml0ICgmc2VsLT5jb25kKTsKKyAgIHNlbC0+YmxvY2tlZCA9IEZBTFNFOworKyAgc2VsLT5lb3MgPSBGQUxTRTsKKyAKKyAgIC8qIGxldHMgZ2l2ZSBhIGNoYW5nZSBmb3IgZG93bnN0cmVhbSB0byBkbyBzb21ldGhpbmcgb24KKyAgICAqIGFjdGl2ZS1wYWQgY2hhbmdlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIG5ldyBidWZmZXJzICovCitAQCAtMTM3Nyw2ICsxNDAwLDExIEBAIGdzdF9pbnB1dF9zZWxlY3Rvcl9zZXRfYWN0aXZlX3BhZCAoR3N0SW5wdXRTZWxlY3RvciAqIHNlbGYsIEdzdFBhZCAqIHBhZCkKKyAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJOZXcgYWN0aXZlIHBhZCBpcyAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICBzZWxmLT5hY3RpdmVfc2lua3BhZCk7CisgCisrICBpZiAob2xkICE9IG5ldyAmJiBuZXctPmVvcyAmJiAhbmV3LT5lb3Nfc2VudCkgeworKyAgICBzZWxmLT5lb3MgPSBUUlVFOworKyAgICBHU1RfSU5QVVRfU0VMRUNUT1JfQlJPQURDQVNUIChzZWxmKTsKKysgIH0KKysKKyAgIHJldHVybiBUUlVFOworIH0KKyAKK0BAIC0xNzcxLDYgKzE3OTksNyBAQCBnc3RfaW5wdXRfc2VsZWN0b3JfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgIEdTVF9JTlBVVF9TRUxFQ1RPUl9MT0NLIChzZWxmKTsKKysgICAgICBzZWxmLT5lb3MgPSBGQUxTRTsKKyAgICAgICBzZWxmLT5ibG9ja2VkID0gRkFMU0U7CisgICAgICAgc2VsZi0+Zmx1c2hpbmcgPSBGQUxTRTsKKyAgICAgICBHU1RfSU5QVVRfU0VMRUNUT1JfVU5MT0NLIChzZWxmKTsKK0BAIC0xNzc5LDYgKzE4MDgsNyBAQCBnc3RfaW5wdXRfc2VsZWN0b3JfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAvKiBmaXJzdCB1bmxvY2sgYmVmb3JlIHdlIGNhbGwgdGhlIHBhcmVudCBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24sIHdoaWNoCisgICAgICAgICogdHJpZXMgdG8gYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2sgd2hlbiBnb2luZyB0byByZWFkeS4gKi8KKyAgICAgICBHU1RfSU5QVVRfU0VMRUNUT1JfTE9DSyAoc2VsZik7CisrICAgICAgc2VsZi0+ZW9zID0gVFJVRTsKKyAgICAgICBzZWxmLT5ibG9ja2VkID0gRkFMU0U7CisgICAgICAgc2VsZi0+Zmx1c2hpbmcgPSBUUlVFOworICAgICAgIEdTVF9JTlBVVF9TRUxFQ1RPUl9CUk9BRENBU1QgKHNlbGYpOworZGlmZiAtLWdpdCBhL3BsdWdpbnMvZWxlbWVudHMvZ3N0aW5wdXRzZWxlY3Rvci5oIGIvcGx1Z2lucy9lbGVtZW50cy9nc3RpbnB1dHNlbGVjdG9yLmgKK2luZGV4IDk2YzY4MGYuLjliZjkyNGYgMTAwNjQ0CistLS0gYS9wbHVnaW5zL2VsZW1lbnRzL2dzdGlucHV0c2VsZWN0b3IuaAorKysrIGIvcGx1Z2lucy9lbGVtZW50cy9nc3RpbnB1dHNlbGVjdG9yLmgKK0BAIC03Nyw2ICs3Nyw3IEBAIHN0cnVjdCBfR3N0SW5wdXRTZWxlY3RvciB7CisgICBHTXV0ZXggbG9jazsKKyAgIEdDb25kIGNvbmQ7CisgICBnYm9vbGVhbiBibG9ja2VkOworKyAgZ2Jvb2xlYW4gZW9zOworICAgZ2Jvb2xlYW4gZmx1c2hpbmc7CisgfTsKKyAKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuNC41LmJiIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjQuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjU4NzU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjQuNS5iYgpAQCAtMCwwICsxLDE3IEBACitpbmNsdWRlIGdzdHJlYW1lcjEuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L2dzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWUwNTkxMzg0ODEyMDVlZTJjNmZjMWMwNzljMDE2ZDBkIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1GaXgtY3Jhc2gtd2l0aC1nc3QtaW5zcGVjdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0aW5mby1TaG9ydGVuLV9fRklMRV9fLW9uLWFsbC1wbGF0Zm9ybXMucGF0Y2ggXAorICAgIGZpbGU6Ly9pbnB1dHNlbGVjdG9yLXN0aWNreS1ldmVudHMtaGF2ZW4tdC1zZW5kLW91dC13aGVuLWFjLTEtNC0xLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1iYXNlc2luay1GaXgtUW9TLWxhdGVuZXNzLWNoZWNraW5nLWlmLXN1YmNsYXNzLWltcGxlLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OGE5Mjg5YzY0YTQ5NTBlYmI0ZjU0NDk4MDIzNDI4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDgwMWFhN2Y5NzkwMjQ1MjYyNThhMGU5NDcwN2JhNDJiOGFiNmY3ZDIyMDZlNTZhZGJjNDQzMzE1NWNiMGFlIgorCitTID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wX2dpdC5iYiBiL21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMDBkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wX2dpdC5iYgpAQCAtMCwwICsxLDE4IEBACitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdHJlYW1lcjticmFuY2g9bWFzdGVyIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworU1JDUkVWID0gIjNiODE4MWE4YzU1MGU3NGFjYWJhNGU4YzU1YmRjNjQ5ZmE1NTFkYzkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWNkICR7U30KKwkuL2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQorCWNkICR7Qn0KK30KKwo=