ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3ZjY4NjlkLi45YzE2ZGUxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDYgKzEsNjYgQEAKIAogICAgICAgICAgICAgICAgIENoYW5nZUxvZyBmaWxlIGZvciB6bGliCiAKK0NoYW5nZXMgaW4gMS4yLjMuMSAoMTYgQXVndXN0IDIwMDYpCistIEFkZCB3YXRjb20gZGlyZWN0b3J5IHdpdGggT3BlbldhdGNvbSBtYWtlIGZpbGVzIFtEYW5pZWxdCistIFJlbW92ZSAjdW5kZWYgb2YgRkFSIGluIHpjb25mLmluLmggZm9yIE1WUyBbRmVkdGtlXQorLSBVcGRhdGUgbWFrZV92bXMuY29tIFtaaW5zZXJdCistIFVzZSAtZlBJQyBmb3Igc2hhcmVkIGJ1aWxkIGluIGNvbmZpZ3VyZSBbVGVyZWRlc2FpLCBOaWNob2xzb25dCistIFVzZSBvbmx5IG1ham9yIHZlcnNpb24gbnVtYmVyIGZvciBsaWJ6LnNvIG9uIElSSVggYW5kIE9TRjEgW1JlaW5ob2xkdHNlbl0KKy0gVXNlIGZkb3BlbigpIChub3QgX2Zkb3BlbigpKSBmb3IgSW50ZXJpeCBpbiB6dXRpbC5oIFtCimNrXQorLSBBZGQgc29tZSBGQVEgZW50cmllcyBhYm91dCB0aGUgY29udHJpYiBkaXJlY3RvcnkKKy0gVXBkYXRlIHRoZSBNVlMgcXVlc3Rpb24gaW4gdGhlIEZBUQorLSBBdm9pZCBleHRyYW5lb3VzIHJlYWRzIGFmdGVyIEVPRiBpbiBnemlvLmMgW0Jyb3duXQorLSBDb3JyZWN0IHNwZWxsaW5nIG9mICJzdWNjZXNzZnVsbHkiIGluIGd6aW8uYyBbUmFuZGVycy1QZWhyc29uXQorLSBBZGQgY29tbWVudHMgdG8gemxpYi5oIGFib3V0IGd6ZXJyb3IoKSB1c2FnZSBbQnJvd25dCistIFNldCBleHRyYSBmbGFncyBpbiBnemlwIGhlYWRlciBpbiBnem9wZW4oKSBsaWtlIGRlZmxhdGUoKSBkb2VzCistIE1ha2UgY29uZmlndXJlIG9wdGlvbnMgbW9yZSBjb21wYXRpYmxlIHdpdGggZG91YmxlLWRhc2ggY29udmVudGlvbnMKKyAgW1dlaWdlbHRdCistIENsZWFuIHVwIGNvbXBpbGF0aW9uIHVuZGVyIFNvbGFyaXMgU3VuU3R1ZGlvIGNjIFtSb3dlLCBSZWluaG9sZHRzZW5dCistIEZpeCB1bmluc3RhbGwgdGFyZ2V0IGluIE1ha2VmaWxlLmluIFtUcnV0YV0KKy0gQWRkIHBrZ2NvbmZpZyBzdXBwb3J0IFtXZWlnZWx0XQorLSBVc2UgJChERVNURElSKSBtYWNybyBpbiBNYWtlZmlsZS5pbiBbUmVpbmhvbGR0c2VuLCBXZWlnZWx0XQorLSBSZXBsYWNlIHNldF9kYXRhX3R5cGUoKSB3aXRoIGEgbW9yZSBhY2N1cmF0ZSBkZXRlY3RfZGF0YV90eXBlKCkgaW4KKyAgdHJlZXMuYywgYWNjb3JkaW5nIHRvIHRoZSB0eHR2c2Jpbi50eHQgZG9jdW1lbnQgW1RydXRhXQorLSBTd2FwIHRoZSBvcmRlciBvZiAjaW5jbHVkZSA8c3RkaW8uaD4gYW5kICNpbmNsdWRlICJ6bGliLmgiIGluCisgIGd6aW8uYywgZXhhbXBsZS5jIGFuZCBtaW5pZ3ppcC5jIFtUcnV0YV0KKy0gU2h1dCB1cCBhbm5veWluZyBWUzIwMDUgd2FybmluZ3MgYWJvdXQgc3RhbmRhcmQgQyBkZXByZWNhdGlvbiBbUm93ZSwKKyAgVHJ1dGFdICh3aGVyZT8pCistIEZpeCB0YXJnZXQgImNsZWFuIiBmcm9tIHdpbjMyL01ha2VmaWxlLmJvciBbVHJ1dGFdCistIENyZWF0ZSAucGRiIGFuZCAubWFuaWZlc3QgZmlsZXMgaW4gd2luMzIvbWFrZWZpbGUubXNjIFtaaWVnbGVyLCBSb3dlXQorLSBVcGRhdGUgemxpYiB3d3cgaG9tZSBhZGRyZXNzIGluIHdpbjMyL0RMTF9GQVEudHh0IFtUcnV0YV0KKy0gVXBkYXRlIGNvbnRyaWIvbWFzbXg4Ni9pbmZmYXMzMi5hc20gZm9yIFZTMjAwNSBbVm9sbGFudCwgVmFuIFdhc3NlbmhvdmVdCistIEVuYWJsZSBicm93c2UgaW5mbyBpbiB0aGUgIkRlYnVnIiBhbmQgIkFTTSBEZWJ1ZyIgY29uZmlndXJhdGlvbnMgaW4KKyAgdGhlIFZpc3VhbCBDKysgNiBwcm9qZWN0LCBhbmQgc2V0IChub24tQVNNKSAiRGVidWciIGFzIGRlZmF1bHQgW1RydXRhXQorLSBBZGQgcGtnY29uZmlnIHN1cHBvcnQgW1dlaWdlbHRdCistIEFkZCBaTElCX1ZFUl9NQUpPUiwgWkxJQl9WRVJfTUlOT1IgYW5kIFpMSUJfVkVSX1JFVklTSU9OIGluIHpsaWIuaCwKKyAgZm9yIHVzZSBpbiB3aW4zMi96bGliMS5yYyBbUG9sdXNoaW4sIFJvd2UsIFRydXRhXQorLSBBZGQgYSBkb2N1bWVudCB0aGF0IGV4cGxhaW5zIHRoZSBuZXcgdGV4dCBkZXRlY3Rpb24gc2NoZW1lIHRvCisgIGRvYy90eHR2c2Jpbi50eHQgW1RydXRhXQorLSBBZGQgcmZjMTk1MC50eHQsIHJmYzE5NTEudHh0IGFuZCByZmMxOTUyLnR4dCB0byBkb2MvIFtUcnV0YV0KKy0gTW92ZSBhbGdvcml0aG0udHh0IGludG8gZG9jLyBbVHJ1dGFdCistIFN5bmNocm9uaXplIEZBUSB3aXRoIHdlYnNpdGUKKy0gRml4IGNvbXByZXNzQm91bmQoKSwgd2FzIGxvdyBmb3Igc29tZSBwYXRob2xvZ2ljYWwgY2FzZXMgW0ZlYXJubGV5XQorLSBUYWtlIGludG8gYWNjb3VudCB3cmFwcGVyIHZhcmlhdGlvbnMgaW4gZGVmbGF0ZUJvdW5kKCkKKy0gU2V0IGV4YW1wbGVzL3pwaXBlLmMgaW5wdXQgYW5kIG91dHB1dCB0byBiaW5hcnkgbW9kZSBmb3IgV2luZG93cyAKKy0gVXBkYXRlIGV4YW1wbGVzL3psaWJfaG93Lmh0bWwgd2l0aCBuZXcgenBpcGUuYyAoYWxzbyB3ZWIgc2l0ZSkKKy0gRml4IHNvbWUgd2FybmluZ3MgaW4gZXhhbXBsZXMvZ3psb2cuYyBhbmQgZXhhbXBsZXMvenJhbi5jIChpdCBzZWVtcworICB0aGF0IGdjYyBiZWNhbWUgcGlja2llciBpbiA0LjApCistIEFkZCB6bGliLm1hcCBmb3IgTGludXg6ICJBbGwgc3ltYm9scyBmcm9tIHpsaWItMS4xLjQgcmVtYWluCisgIHVuLXZlcnNpb25lZCwgdGhlIHBhdGNoIGFkZHMgdmVyc2lvbmluZyBvbmx5IGZvciBzeW1ib2xzIGludHJvZHVjZWQgaW4KKyAgemxpYi0xLjIuMCBvciBsYXRlci4gIEl0IGFsc28gZGVjbGFyZXMgYXMgbG9jYWwgdGhvc2Ugc3ltYm9scyB3aGljaCBhcmUKKyAgbm90IGRlc2lnbmVkIHRvIGJlIGV4cG9ydGVkLiIgW0xldmluXQorLSBVcGRhdGUgWl9QUkVGSVggbGlzdCBpbiB6Y29uZi5pbi5oLCBhZGQgLS16cHJlZml4IG9wdGlvbiB0byBjb25maWd1cmUKKy0gRG8gbm90IGluaXRpYWxpemUgZ2xvYmFsIHN0YXRpYyBieSBkZWZhdWx0IGluIHRyZWVzLmMsIGFkZCBhIHJlc3BvbnNlCisgIE5PX0lOSVRfR0xPQkFMX1BPSU5URVJTIHRvIGluaXRpYWxpemUgdGhlbSBpZiBuZWVkZWQgW01hcnF1ZXNzXQorLSBEb24ndCB1c2Ugc3RyZXJyb3IoKSBpbiBnemlvLmMgdW5kZXIgV2luQ0UgW1lha2ltb3ZdCistIERvbid0IHVzZSBlcnJuby5oIGluIHp1dGlsLmggdW5kZXIgV2luQ0UgW1lha2ltb3ZdCistIE1vdmUgYXJndW1lbnRzIGZvciBBUiB0byBpdHMgdXNhZ2UgdG8gYWxsb3cgcmVwbGFjaW5nIGFyIFtNYXJvdF0KKy0gQWRkIEhBVkVfVklTSUJJTElUWV9QUkFHTUEgaW4gemNvbmYuaW4uaCBmb3IgTW96aWxsYSBbUmFuZGVycy1QZWhyc29uXQorLSBJbXByb3ZlIGluZmxhdGVJbml0KCkgYW5kIGluZmxhdGVJbml0MigpIGRvY3VtZW50YXRpb24KKy0gRml4IHN0cnVjdHVyZSBzaXplIGNvbW1lbnQgaW4gaW5mbGF0ZS5oCistIENoYW5nZSBjb25maWd1cmUgaGVscCBvcHRpb24gZnJvbSAtLWgqIHRvIC0taGVscCBbU2FudG9zXQorCiBDaGFuZ2VzIGluIDEuMi4zICgxOCBKdWx5IDIwMDUpCiAtIEFwcGx5IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgZml4ZXMgdG8gY29udHJpYi9pbmZiYWNrOSBhcyB3ZWxsCiAtIENsZWFuIHVwIHNvbWUgdGV4dCBmaWxlcyAoY2FycmlhZ2UgcmV0dXJucywgdHJhaWxpbmcgc3BhY2UpCmRpZmYgLS1naXQgYS9GQVEgYi9GQVEKaW5kZXggNDQxZDkxMC4uNjFlOGU4YSAxMDA2NDQKLS0tIGEvRkFRCisrKyBiL0ZBUQpAQCAtNzcsNyArNzcsNyBAQAogCiAxMS4gQ2FuIHpsaWIgaGFuZGxlIC56aXAgYXJjaGl2ZXM/CiAKLSAgICBOb3QgYnkgaXRzZWxmLCBuby4gIFNlZSB0aGUgZGlyZWN0b3J5IGNvbnRyaWIvbWluaXppcCBpbiB0aGUgemxpYgorICAgIE5vdCBieSBpdHNlbGYsIG5vLiBTZWUgdGhlIGRpcmVjdG9yeSBjb250cmliL21pbml6aXAgaW4gdGhlIHpsaWIKICAgICBkaXN0cmlidXRpb24uCiAKIDEyLiBDYW4gemxpYiBoYW5kbGUgLlogZmlsZXM/CkBAIC0yMTcsMTAgKzIxNywxNCBAQAogCiAyOS4gRG9lcyB6bGliIHdvcmsgb24gTVZTLCBPUy8zOTAsIENJQ1MsIGV0Yy4/CiAKLSAgICBXZSBkb24ndCBrbm93IGZvciBzdXJlLiBXZSBoYXZlIGhlYXJkIG9jY2FzaW9uYWwgcmVwb3J0cyBvZiBzdWNjZXNzIG9uCi0gICAgdGhlc2Ugc3lzdGVtcy4gSWYgeW91IGRvIHVzZSBpdCBvbiBvbmUgb2YgdGhlc2UsIHBsZWFzZSBwcm92aWRlIHVzIHdpdGgKLSAgICBhIHJlcG9ydCwgaW5zdHJ1Y3Rpb25zLCBhbmQgcGF0Y2hlcyB0aGF0IHdlIGNhbiByZWZlcmVuY2Ugd2hlbiB3ZSBnZXQKLSAgICB0aGVzZSBxdWVzdGlvbnMuIFRoYW5rcy4KKyAgICBZZXMsIHRoZXJlIGFyZSB3b3JraW5nIHBvcnRzIG9mIHpsaWIgMS4xLjQgdG8gTVZTIHdoaWNoIHlvdSBjYW4gZmluZAorICAgIGhlcmU6CisKKyAgICBodHRwOi8vd3d3LmhvbWVyb3cubmV0L2FzbS96bGliMzkwLmh0bQorICAgIGh0dHA6Ly93d3cuaG9tZXJvdy5uZXQvYXNtL3psaWJMRS5odG0KKworICAgIElmIHRoZXNlIGFyZSB1cGRhdGVkIHRvIG1vcmUgcmVjZW50IHZlcnNpb25zIG9mIHpsaWIsIHBsZWFzZSBsZXQgdXMKKyAgICBrbm93LiBUaGFua3MuCiAKIDMwLiBJcyB0aGVyZSBzb21lIHNpbXBsZXIsIGVhc2llciB0byByZWFkIHZlcnNpb24gb2YgaW5mbGF0ZSBJIGNhbiBsb29rIGF0CiAgICAgdG8gdW5kZXJzdGFuZCB0aGUgZGVmbGF0ZSBmb3JtYXQ/CkBAIC0yNzEsNyArMjc1LDkgQEAKICAgICAgICAgaHR0cDovL3d3dy5panMuc2kvc29mdHdhcmUvc25wcmludGYvCiAKICAgICBOb3RlIHRoYXQgeW91IHNob3VsZCBiZSB1c2luZyB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB6bGliLiBWZXJzaW9ucwotICAgIDEuMS4zIGFuZCBiZWZvcmUgd2VyZSBzdWJqZWN0IHRvIGEgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0eS4KKyAgICAxLjEuMyBhbmQgYmVmb3JlIHdlcmUgc3ViamVjdCB0byBhIGRvdWJsZS1mcmVlIHZ1bG5lcmFiaWxpdHksIGFuZCB2ZXJzaW9uCisgICAgMS4yLjEgd2FzIHN1YmplY3QgdG8gYW4gYWNjZXNzIGV4Y2VwdGlvbiB3aGVuIGRlY29tcHJlc3NpbmcgaW52YWxpZAorICAgIGNvbXByZXNzZWQgZGF0YS4KIAogMzQuIElzIHRoZXJlIGEgSmF2YSB2ZXJzaW9uIG9mIHpsaWI/CiAKQEAgLTI5Miw4ICsyOTgsOCBAQAogICAgIHBlcmZvcm1pbmcgYSBjb25kaXRpb25hbCBqdW1wIHRoYXQgZGVwZW5kcyBvbiBhbiB1bmluaXRpYWxpemVkIHZhbHVlLgogICAgIElzbid0IHRoYXQgYSBidWc/CiAKLSAgICBOby4gIFRoYXQgaXMgaW50ZW50aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFuZCB0aGUgb3V0cHV0IG9mCi0gICAgZGVmbGF0ZSBpcyBub3QgYWZmZWN0ZWQuICBUaGlzIG9ubHkgc3RhcnRlZCBzaG93aW5nIHVwIHJlY2VudGx5IHNpbmNlCisgICAgTm8uIFRoYXQgaXMgaW50ZW50aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFuZCB0aGUgb3V0cHV0IG9mCisgICAgZGVmbGF0ZSBpcyBub3QgYWZmZWN0ZWQuIFRoaXMgb25seSBzdGFydGVkIHNob3dpbmcgdXAgcmVjZW50bHkgc2luY2UKICAgICB6bGliIDEuMi54IHVzZXMgbWFsbG9jKCkgYnkgZGVmYXVsdCBmb3IgYWxsb2NhdGlvbnMsIHdoZXJlYXMgZWFybGllcgogICAgIHZlcnNpb25zIHVzZWQgY2FsbG9jKCksIHdoaWNoIHplcm9zIG91dCB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KIApAQCAtMzMzLDcgKzMzOSwyMyBAQAogICAgIEluIGFueSBjYXNlLCB0aGUgY29tcHJlc3Npb24gaW1wcm92ZW1lbnRzIGFyZSBzbyBtb2Rlc3QgY29tcGFyZWQgdG8gb3RoZXIKICAgICBtb3JlIG1vZGVybiBhcHByb2FjaGVzLCB0aGF0IGl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgdG8gaW1wbGVtZW50LgogCi00MS4gQ2FuIHlvdSBwbGVhc2Ugc2lnbiB0aGVzZSBsZW5ndGh5IGxlZ2FsIGRvY3VtZW50cyBhbmQgZmF4IHRoZW0gYmFjayB0byB1cworNDEuIEknbSBoYXZpbmcgYSBwcm9ibGVtIHdpdGggdGhlIHppcCBmdW5jdGlvbnMgaW4gemxpYiwgY2FuIHlvdSBoZWxwPworCisgICAgVGhlcmUgYXJlIG5vIHppcCBmdW5jdGlvbnMgaW4gemxpYi4gWW91IGFyZSBwcm9iYWJseSB1c2luZyBtaW5pemlwIGJ5CisgICAgR2lsZXMgVm9sbGFudCwgd2hpY2ggaXMgZm91bmQgaW4gdGhlIGNvbnRyaWIgZGlyZWN0b3J5IG9mIHpsaWIuIEl0IGlzIG5vdAorICAgIHBhcnQgb2YgemxpYi4gSW4gZmFjdCBub25lIG9mIHRoZSBzdHVmZiBpbiBjb250cmliIGlzIHBhcnQgb2YgemxpYi4gVGhlCisgICAgZmlsZXMgaW4gdGhlcmUgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHpsaWIgYXV0aG9ycy4gWW91IG5lZWQgdG8gY29udGFjdAorICAgIHRoZSBhdXRob3JzIG9mIHRoZSBjb250cmlidXRpb24gZm9yIGhlbHAuCisKKzQyLiBUaGUgbWF0Y2guYXNtIGNvZGUgaW4gY29udHJpYiBpcyB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgICAgU2luY2UgaXQncyBwYXJ0IG9mIHpsaWIsIGRvZXNuJ3QgdGhhdCBtZWFuIHRoYXQgYWxsIG9mIHpsaWIgZmFsbHMgdW5kZXIgdGhlCisgICAgR05VIEdQTD8KKworICAgIE5vLiBUaGUgZmlsZXMgaW4gY29udHJpYiBhcmUgbm90IHBhcnQgb2YgemxpYi4gVGhleSB3ZXJlIGNvbnRyaWJ1dGVkIGJ5CisgICAgb3RoZXIgYXV0aG9ycyBhbmQgYXJlIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgdG8gdGhlIHVzZXIgd2l0aGluIHRoZSB6bGliCisgICAgZGlzdHJpYnV0aW9uLiBFYWNoIG9mIHRoZSBpdGVtcyBpbiBjb250cmliIGhhdmUgdGhlaXIgb3duIGxpY2Vuc2UuCisKKzQzLiBDYW4geW91IHBsZWFzZSBzaWduIHRoZXNlIGxlbmd0aHkgbGVnYWwgZG9jdW1lbnRzIGFuZCBmYXggdGhlbSBiYWNrIHRvIHVzCiAgICAgc28gdGhhdCB3ZSBjYW4gdXNlIHlvdXIgc29mdHdhcmUgaW4gb3VyIHByb2R1Y3Q/CiAKICAgICBOby4gR28gYXdheS4gU2hvby4KZGlmZiAtLWdpdCBhL0lOREVYIGIvSU5ERVgKaW5kZXggMDU4N2U1OS4uYTJlOTU0YiAxMDA2NDQKLS0tIGEvSU5ERVgKKysrIGIvSU5ERVgKQEAgLTQsMjAgKzQsMjYgQEAKIE1ha2VmaWxlICAgICAgICBtYWtlZmlsZSBmb3IgVW5peCAoZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSkKIE1ha2VmaWxlLmluICAgICBtYWtlZmlsZSBmb3IgVW5peCAodGVtcGxhdGUgZm9yIGNvbmZpZ3VyZSkKIFJFQURNRSAgICAgICAgICBndWVzcyB3aGF0Ci1hbGdvcml0aG0udHh0ICAgZGVzY3JpcHRpb24gb2YgdGhlIChkZSljb21wcmVzc2lvbiBhbGdvcml0aG0KIGNvbmZpZ3VyZSAgICAgICBjb25maWd1cmUgc2NyaXB0IGZvciBVbml4CittYWtlX3Ztcy5jb20JbWFrZWZpbGUgZm9yIFZNUwogemNvbmYuaW4uaCAgICAgIHRlbXBsYXRlIGZvciB6Y29uZi5oICh1c2VkIGJ5IGNvbmZpZ3VyZSkKK3psaWIuMwkJTWFuIHBhZ2UgZm9yIHpsaWIKK3psaWIubWFwCUxpbnV4IHN5bWJvbCBpbmZvcm1hdGlvbgoremxpYi5wYy5pbgk/PwogCiBhbWlnYS8gICAgICAgICAgbWFrZWZpbGVzIGZvciBBbWlnYSBTQVMgQwogYXM0MDAvICAgICAgICAgIG1ha2VmaWxlcyBmb3IgSUJNIEFTLzQwMAorZG9jLwkJZG9jdW1lbnRhdGlvbiBmb3IgZm9ybWF0cyBhbmQgYWxnb3JpdGhtcwogbXNkb3MvICAgICAgICAgIG1ha2VmaWxlcyBmb3IgTVNET1MKIG9sZC8gICAgICAgICAgICBtYWtlZmlsZXMgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyBhbmQgemxpYiBkb2N1bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgZmlsZXMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiB1cGRhdGVkIGZvciB6bGliIDEuMi54CiBwcm9qZWN0cy8gICAgICAgcHJvamVjdHMgZm9yIHZhcmlvdXMgSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudHMKIHFueC8gICAgICAgICAgICBtYWtlZmlsZXMgZm9yIFFOWAordG9kby8JCXdvcmtzIGluIHByb2dyZXNzCit3YXRjb20vCQltYWtlZmlsZXMgZm9yIE9wZW5XYXRjb20KIHdpbjMyLyAgICAgICAgICBtYWtlZmlsZXMgZm9yIFdpbmRvd3MKIAotICAgICAgICAgICAgICAgIHpsaWIgcHVibGljIGhlYWRlciBmaWxlcyAobXVzdCBiZSBrZXB0KToKKyAgICAgICAgICAgICAgICB6bGliIHB1YmxpYyBoZWFkZXIgZmlsZXMgKHJlcXVpcmVkIGZvciBsaWJyYXJ5IHVzZSk6CiB6Y29uZi5oCiB6bGliLmgKIApAQCAtNDYsNiArNTIsNyBAQAogICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcyBmb3Igc2FtcGxlIHByb2dyYW1zOgogZXhhbXBsZS5jCiBtaW5pZ3ppcC5jCitTZWUgZXhhbXBsZXMvUkVBRE1FLmV4YW1wbGVzIGZvciBtb3JlCiAKICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZCBjb250cmlidXRpb24gYnkgdGhpcmQgcGFydGllcwogU2VlIGNvbnRyaWIvUkVBRE1FLmNvbnRyaWIKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMmZkNmU0NS4uNDYwNDcxYiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTEsNSArMSw1IEBACiAjIE1ha2VmaWxlIGZvciB6bGliCi0jIENvcHlyaWdodCAoQykgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHkuCisjIENvcHlyaWdodCAoQykgMTk5NS0yMDA2IEplYW4tbG91cCBHYWlsbHkuCiAjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKIAogIyBUbyBjb21waWxlIGFuZCB0ZXN0LCB0eXBlOgpAQCAtMzAsMTAgKzMwLDEwIEBACiAKIExJQlM9bGliei5hCiBTSEFSRURMSUI9bGliei5zbwotU0hBUkVETElCVj1saWJ6LnNvLjEuMi4zCitTSEFSRURMSUJWPWxpYnouc28uMS4yLjMuMQogU0hBUkVETElCTT1saWJ6LnNvLjEKIAotQVI9YXIgcmMKK0FSPWFyCiBSQU5MSUI9cmFubGliCiBUQVI9dGFyCiBTSEVMTD0vYmluL3NoCkBAIC00NSw2ICs0NSw3IEBACiBpbmNsdWRlZGlyID0gJHtwcmVmaXh9L2luY2x1ZGUKIG1hbmRpciA9ICR7cHJlZml4fS9zaGFyZS9tYW4KIG1hbjNkaXIgPSAke21hbmRpcn0vbWFuMworcGtnY29uZmlnZGlyID0gJHtsaWJkaXJ9L3BrZ2NvbmZpZwogCiBPQkpTID0gYWRsZXIzMi5vIGNvbXByZXNzLm8gY3JjMzIubyBnemlvLm8gdW5jb21wci5vIGRlZmxhdGUubyB0cmVlcy5vIFwKICAgICAgICB6dXRpbC5vIGluZmxhdGUubyBpbmZiYWNrLm8gaW5mdHJlZXMubyBpbmZmYXN0Lm8KQEAgLTkwLDMzICs5MSwzNyBAQAogCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCBtaW5pZ3ppcC5vICQoTERGTEFHUykKIAogaW5zdGFsbDogJChMSUJTKQotCS1AaWYgWyAhIC1kICQoZXhlY19wcmVmaXgpIF07IHRoZW4gbWtkaXIgLXAgJChleGVjX3ByZWZpeCk7IGZpCi0JLUBpZiBbICEgLWQgJChpbmNsdWRlZGlyKSAgXTsgdGhlbiBta2RpciAtcCAkKGluY2x1ZGVkaXIpOyBmaQotCS1AaWYgWyAhIC1kICQobGliZGlyKSAgICAgIF07IHRoZW4gbWtkaXIgLXAgJChsaWJkaXIpOyBmaQotCS1AaWYgWyAhIC1kICQobWFuM2RpcikgICAgIF07IHRoZW4gbWtkaXIgLXAgJChtYW4zZGlyKTsgZmkKLQljcCB6bGliLmggemNvbmYuaCAkKGluY2x1ZGVkaXIpCi0JY2htb2QgNjQ0ICQoaW5jbHVkZWRpcikvemxpYi5oICQoaW5jbHVkZWRpcikvemNvbmYuaAotCWNwICQoTElCUykgJChsaWJkaXIpCi0JY2QgJChsaWJkaXIpOyBjaG1vZCA3NTUgJChMSUJTKQotCS1AKGNkICQobGliZGlyKTsgJChSQU5MSUIpIGxpYnouYSB8fCB0cnVlKSA+L2Rldi9udWxsIDI+JjEKLQljZCAkKGxpYmRpcik7IGlmIHRlc3QgLWYgJChTSEFSRURMSUJWKTsgdGhlbiBcCisJLUBpZiBbICEgLWQgJChERVNURElSKSQoZXhlY19wcmVmaXgpICBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKGV4ZWNfcHJlZml4KTsgZmkKKwktQGlmIFsgISAtZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKSAgIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQoaW5jbHVkZWRpcik7IGZpCisJLUBpZiBbICEgLWQgJChERVNURElSKSQobGliZGlyKSAgICAgICBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKGxpYmRpcik7IGZpCisJLUBpZiBbICEgLWQgJChERVNURElSKSQobWFuM2RpcikgICAgICBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKG1hbjNkaXIpOyBmaQorCS1AaWYgWyAhIC1kICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikgXTsgdGhlbiBta2RpciAtcCAkKERFU1RESVIpJChwa2djb25maWdkaXIpOyBmaQorCWNwIHpsaWIuaCB6Y29uZi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisJY2htb2QgNjQ0ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3psaWIuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS96Y29uZi5oCisJY3AgJChMSUJTKSAkKERFU1RESVIpJChsaWJkaXIpCisJY2QgJChERVNURElSKSQobGliZGlyKTsgY2htb2QgNzU1ICQoTElCUykKKwktQChjZCAkKERFU1RESVIpJChsaWJkaXIpOyAkKFJBTkxJQikgbGliei5hIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQorCWNkICQoREVTVERJUikkKGxpYmRpcik7IGlmIHRlc3QgLWYgJChTSEFSRURMSUJWKTsgdGhlbiBcCiAJICBybSAtZiAkKFNIQVJFRExJQikgJChTSEFSRURMSUJNKTsgXAogCSAgbG4gLXMgJChTSEFSRURMSUJWKSAkKFNIQVJFRExJQik7IFwKIAkgIGxuIC1zICQoU0hBUkVETElCVikgJChTSEFSRURMSUJNKTsgXAogCSAgKGxkY29uZmlnIHx8IHRydWUpICA+L2Rldi9udWxsIDI+JjE7IFwKIAlmaQotCWNwIHpsaWIuMyAkKG1hbjNkaXIpCi0JY2htb2QgNjQ0ICQobWFuM2RpcikvemxpYi4zCisJY3AgemxpYi4zICQoREVTVERJUikkKG1hbjNkaXIpCisJY2htb2QgNjQ0ICQoREVTVERJUikkKG1hbjNkaXIpL3psaWIuMworCWNwIHpsaWIucGMgJChERVNURElSKSQocGtnY29uZmlnZGlyKQorCWNobW9kIDY0NCAkKERFU1RESVIpJChwa2djb25maWdkaXIpL3psaWIucGMKICMgVGhlIHJhbmxpYiBpbiBpbnN0YWxsIGlzIG5lZWRlZCBvbiBOZVhUU1RFUCB3aGljaCBjaGVja3MgZmlsZSB0aW1lcwogIyBsZGNvbmZpZyBpcyBmb3IgTGludXgKIAogdW5pbnN0YWxsOgotCWNkICQoaW5jbHVkZWRpcik7IFwKLQljZCAkKGxpYmRpcik7IHJtIC1mIGxpYnouYTsgXAorCWNkICQoREVTVERJUikkKGluY2x1ZGVkaXIpOyBybSAtZiB6bGliLmggemNvbmYuaAorCWNkICQoREVTVERJUikkKGxpYmRpcik7IHJtIC1mIGxpYnouYTsgXAogCWlmIHRlc3QgLWYgJChTSEFSRURMSUJWKTsgdGhlbiBcCiAJICBybSAtZiAkKFNIQVJFRExJQlYpICQoU0hBUkVETElCKSAkKFNIQVJFRExJQk0pOyBcCiAJZmkKLQljZCAkKG1hbjNkaXIpOyBybSAtZiB6bGliLjMKKwljZCAkKERFU1RESVIpJChtYW4zZGlyKTsgcm0gLWYgemxpYi4zCisJY2QgJChERVNURElSKSQocGtnY29uZmlnZGlyKTsgcm0gLWYgemxpYi5wYwogCiBtb3N0bHljbGVhbjogY2xlYW4KIGNsZWFuOgpAQCAtMTI4LDcgKzEzMyw3IEBACiBkaXN0Y2xlYW46IGNsZWFuCiAJY3AgLXAgTWFrZWZpbGUuaW4gTWFrZWZpbGUKIAljcCAtcCB6Y29uZi5pbi5oIHpjb25mLmgKLQlybSAtZiAuRFNfU3RvcmUKKwlybSAtZiB6bGliLnBjIC5EU19TdG9yZQogCiB0YWdzOgogCWV0YWdzICouW2NoXQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAyZmQ2ZTQ1Li40NjA0NzFiIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtMSw1ICsxLDUgQEAKICMgTWFrZWZpbGUgZm9yIHpsaWIKLSMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgSmVhbi1sb3VwIEdhaWxseS4KKyMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDYgSmVhbi1sb3VwIEdhaWxseS4KICMgRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogCiAjIFRvIGNvbXBpbGUgYW5kIHRlc3QsIHR5cGU6CkBAIC0zMCwxMCArMzAsMTAgQEAKIAogTElCUz1saWJ6LmEKIFNIQVJFRExJQj1saWJ6LnNvCi1TSEFSRURMSUJWPWxpYnouc28uMS4yLjMKK1NIQVJFRExJQlY9bGliei5zby4xLjIuMy4xCiBTSEFSRURMSUJNPWxpYnouc28uMQogCi1BUj1hciByYworQVI9YXIKIFJBTkxJQj1yYW5saWIKIFRBUj10YXIKIFNIRUxMPS9iaW4vc2gKQEAgLTQ1LDYgKzQ1LDcgQEAKIGluY2x1ZGVkaXIgPSAke3ByZWZpeH0vaW5jbHVkZQogbWFuZGlyID0gJHtwcmVmaXh9L3NoYXJlL21hbgogbWFuM2RpciA9ICR7bWFuZGlyfS9tYW4zCitwa2djb25maWdkaXIgPSAke2xpYmRpcn0vcGtnY29uZmlnCiAKIE9CSlMgPSBhZGxlcjMyLm8gY29tcHJlc3MubyBjcmMzMi5vIGd6aW8ubyB1bmNvbXByLm8gZGVmbGF0ZS5vIHRyZWVzLm8gXAogICAgICAgIHp1dGlsLm8gaW5mbGF0ZS5vIGluZmJhY2subyBpbmZ0cmVlcy5vIGluZmZhc3QubwpAQCAtOTAsMzMgKzkxLDM3IEBACiAJJChDQykgJChDRkxBR1MpIC1vICRAIG1pbmlnemlwLm8gJChMREZMQUdTKQogCiBpbnN0YWxsOiAkKExJQlMpCi0JLUBpZiBbICEgLWQgJChleGVjX3ByZWZpeCkgXTsgdGhlbiBta2RpciAtcCAkKGV4ZWNfcHJlZml4KTsgZmkKLQktQGlmIFsgISAtZCAkKGluY2x1ZGVkaXIpICBdOyB0aGVuIG1rZGlyIC1wICQoaW5jbHVkZWRpcik7IGZpCi0JLUBpZiBbICEgLWQgJChsaWJkaXIpICAgICAgXTsgdGhlbiBta2RpciAtcCAkKGxpYmRpcik7IGZpCi0JLUBpZiBbICEgLWQgJChtYW4zZGlyKSAgICAgXTsgdGhlbiBta2RpciAtcCAkKG1hbjNkaXIpOyBmaQotCWNwIHpsaWIuaCB6Y29uZi5oICQoaW5jbHVkZWRpcikKLQljaG1vZCA2NDQgJChpbmNsdWRlZGlyKS96bGliLmggJChpbmNsdWRlZGlyKS96Y29uZi5oCi0JY3AgJChMSUJTKSAkKGxpYmRpcikKLQljZCAkKGxpYmRpcik7IGNobW9kIDc1NSAkKExJQlMpCi0JLUAoY2QgJChsaWJkaXIpOyAkKFJBTkxJQikgbGliei5hIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQotCWNkICQobGliZGlyKTsgaWYgdGVzdCAtZiAkKFNIQVJFRExJQlYpOyB0aGVuIFwKKwktQGlmIFsgISAtZCAkKERFU1RESVIpJChleGVjX3ByZWZpeCkgIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQoZXhlY19wcmVmaXgpOyBmaQorCS1AaWYgWyAhIC1kICQoREVTVERJUikkKGluY2x1ZGVkaXIpICAgXTsgdGhlbiBta2RpciAtcCAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgZmkKKwktQGlmIFsgISAtZCAkKERFU1RESVIpJChsaWJkaXIpICAgICAgIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQobGliZGlyKTsgZmkKKwktQGlmIFsgISAtZCAkKERFU1RESVIpJChtYW4zZGlyKSAgICAgIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQobWFuM2Rpcik7IGZpCisJLUBpZiBbICEgLWQgJChERVNURElSKSQocGtnY29uZmlnZGlyKSBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKHBrZ2NvbmZpZ2Rpcik7IGZpCisJY3AgemxpYi5oIHpjb25mLmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKwljaG1vZCA2NDQgJChERVNURElSKSQoaW5jbHVkZWRpcikvemxpYi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3pjb25mLmgKKwljcCAkKExJQlMpICQoREVTVERJUikkKGxpYmRpcikKKwljZCAkKERFU1RESVIpJChsaWJkaXIpOyBjaG1vZCA3NTUgJChMSUJTKQorCS1AKGNkICQoREVTVERJUikkKGxpYmRpcik7ICQoUkFOTElCKSBsaWJ6LmEgfHwgdHJ1ZSkgPi9kZXYvbnVsbCAyPiYxCisJY2QgJChERVNURElSKSQobGliZGlyKTsgaWYgdGVzdCAtZiAkKFNIQVJFRExJQlYpOyB0aGVuIFwKIAkgIHJtIC1mICQoU0hBUkVETElCKSAkKFNIQVJFRExJQk0pOyBcCiAJICBsbiAtcyAkKFNIQVJFRExJQlYpICQoU0hBUkVETElCKTsgXAogCSAgbG4gLXMgJChTSEFSRURMSUJWKSAkKFNIQVJFRExJQk0pOyBcCiAJICAobGRjb25maWcgfHwgdHJ1ZSkgID4vZGV2L251bGwgMj4mMTsgXAogCWZpCi0JY3AgemxpYi4zICQobWFuM2RpcikKLQljaG1vZCA2NDQgJChtYW4zZGlyKS96bGliLjMKKwljcCB6bGliLjMgJChERVNURElSKSQobWFuM2RpcikKKwljaG1vZCA2NDQgJChERVNURElSKSQobWFuM2RpcikvemxpYi4zCisJY3AgemxpYi5wYyAkKERFU1RESVIpJChwa2djb25maWdkaXIpCisJY2htb2QgNjQ0ICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvemxpYi5wYwogIyBUaGUgcmFubGliIGluIGluc3RhbGwgaXMgbmVlZGVkIG9uIE5lWFRTVEVQIHdoaWNoIGNoZWNrcyBmaWxlIHRpbWVzCiAjIGxkY29uZmlnIGlzIGZvciBMaW51eAogCiB1bmluc3RhbGw6Ci0JY2QgJChpbmNsdWRlZGlyKTsgXAotCWNkICQobGliZGlyKTsgcm0gLWYgbGliei5hOyBcCisJY2QgJChERVNURElSKSQoaW5jbHVkZWRpcik7IHJtIC1mIHpsaWIuaCB6Y29uZi5oCisJY2QgJChERVNURElSKSQobGliZGlyKTsgcm0gLWYgbGliei5hOyBcCiAJaWYgdGVzdCAtZiAkKFNIQVJFRExJQlYpOyB0aGVuIFwKIAkgIHJtIC1mICQoU0hBUkVETElCVikgJChTSEFSRURMSUIpICQoU0hBUkVETElCTSk7IFwKIAlmaQotCWNkICQobWFuM2Rpcik7IHJtIC1mIHpsaWIuMworCWNkICQoREVTVERJUikkKG1hbjNkaXIpOyBybSAtZiB6bGliLjMKKwljZCAkKERFU1RESVIpJChwa2djb25maWdkaXIpOyBybSAtZiB6bGliLnBjCiAKIG1vc3RseWNsZWFuOiBjbGVhbgogY2xlYW46CkBAIC0xMjgsNyArMTMzLDcgQEAKIGRpc3RjbGVhbjogY2xlYW4KIAljcCAtcCBNYWtlZmlsZS5pbiBNYWtlZmlsZQogCWNwIC1wIHpjb25mLmluLmggemNvbmYuaAotCXJtIC1mIC5EU19TdG9yZQorCXJtIC1mIHpsaWIucGMgLkRTX1N0b3JlCiAKIHRhZ3M6CiAJZXRhZ3MgKi5bY2hdCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNzU4Y2M1MC4uY2U2ZjM0MSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw2ICsxLDYgQEAKIFpMSUIgREFUQSBDT01QUkVTU0lPTiBMSUJSQVJZCiAKLXpsaWIgMS4yLjMgaXMgYSBnZW5lcmFsIHB1cnBvc2UgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5LiAgQWxsIHRoZSBjb2RlIGlzCit6bGliIDEuMi4zLjEgaXMgYSBnZW5lcmFsIHB1cnBvc2UgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5LiAgQWxsIHRoZSBjb2RlIGlzCiB0aHJlYWQgc2FmZS4gIFRoZSBkYXRhIGZvcm1hdCB1c2VkIGJ5IHRoZSB6bGliIGxpYnJhcnkgaXMgZGVzY3JpYmVkIGJ5IFJGQ3MKIChSZXF1ZXN0IGZvciBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlcwogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1MC50eHQgKHpsaWIgZm9ybWF0KSwgcmZjMTk1MS50eHQgKGRlZmxhdGUgZm9ybWF0KQpAQCAtMzMsNyArMzMsNyBAQAogaXNzdWUgb2YgIERyLiBEb2JiJ3MgSm91cm5hbDsgYSBjb3B5IG9mIHRoZSBhcnRpY2xlIGlzIGF2YWlsYWJsZSBpbgogaHR0cDovL2RvZ21hLm5ldC9tYXJrbi9hcnRpY2xlcy96bGlidG9vbC96bGlidG9vbC5odG0KIAotVGhlIGNoYW5nZXMgbWFkZSBpbiB2ZXJzaW9uIDEuMi4zIGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlIENoYW5nZUxvZy4KK1RoZSBjaGFuZ2VzIG1hZGUgaW4gdmVyc2lvbiAxLjIuMy4xIGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlIENoYW5nZUxvZy4KIAogVW5zdXBwb3J0ZWQgdGhpcmQgcGFydHkgY29udHJpYnV0aW9ucyBhcmUgcHJvdmlkZWQgaW4gZGlyZWN0b3J5ICJjb250cmliIi4KIApkaWZmIC0tZ2l0IGEvYXM0MDAvemxpYi5pbmMgYi9hczQwMC96bGliLmluYwppbmRleCA3YmJmYjdlLi5jNzgyZDczIDEwMDY0NAotLS0gYS9hczQwMC96bGliLmluYworKysgYi9hczQwMC96bGliLmluYwpAQCAtMSw3ICsxLDcgQEAKICAgICAgICogIFpMSUIuSU5DIC0gSW50ZXJmYWNlIHRvIHRoZSBnZW5lcmFsIHB1cnBvc2UgY29tcHJlc3Npb24gbGlicmFyeQogICAgICAgKgogICAgICAgKiAgSUxFIFJQRzQwMCB2ZXJzaW9uIGJ5IFBhdHJpY2sgTW9ubmVyYXQsIERBVEFTUEhFUkUuCi0gICAgICAqICBWZXJzaW9uIDEuMi4zCisgICAgICAqICBWZXJzaW9uIDEuMi4zLjEKICAgICAgICoKICAgICAgICoKICAgICAgICogIFdBUk5JTkc6CkBAIC0yMiw4ICsyMiw4IEBACiAgICAgICAqCiAgICAgICAqICBWZXJzaW9uaW5nIGluZm9ybWF0aW9uLgogICAgICAgKgotICAgICBEIFpMSUJfVkVSU0lPTiAgICBDICAgICAgICAgICAgICAgICAgICcxLjIuMycKLSAgICAgRCBaTElCX1ZFUk5VTSAgICAgQyAgICAgICAgICAgICAgICAgICBYJzEyMzAnCisgICAgIEQgWkxJQl9WRVJTSU9OICAgIEMgICAgICAgICAgICAgICAgICAgJzEuMi4zLjEnCisgICAgIEQgWkxJQl9WRVJOVU0gICAgIEMgICAgICAgICAgICAgICAgICAgWCcxMjMxJwogICAgICAgKgogICAgICAgKiAgT3RoZXIgZXF1YXRlcy4KICAgICAgICoKZGlmZiAtLWdpdCBhL2NvbXByZXNzLmMgYi9jb21wcmVzcy5jCmluZGV4IGRmMDRmMDEuLmVhNGRmYmUgMTAwNjQ0Ci0tLSBhL2NvbXByZXNzLmMKKysrIGIvY29tcHJlc3MuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGNvbXByZXNzLmMgLS0gY29tcHJlc3MgYSBtZW1vcnkgYnVmZmVyCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBKZWFuLWxvdXAgR2FpbGx5LgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgSmVhbi1sb3VwIEdhaWxseS4KICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCkBAIC03NSw1ICs3NSw2IEBACiB1TG9uZyBaRVhQT1JUIGNvbXByZXNzQm91bmQgKHNvdXJjZUxlbikKICAgICB1TG9uZyBzb3VyY2VMZW47CiB7Ci0gICAgcmV0dXJuIHNvdXJjZUxlbiArIChzb3VyY2VMZW4gPj4gMTIpICsgKHNvdXJjZUxlbiA+PiAxNCkgKyAxMTsKKyAgICByZXR1cm4gc291cmNlTGVuICsgKHNvdXJjZUxlbiA+PiAxMikgKyAoc291cmNlTGVuID4+IDE0KSArCisgICAgICAgICAgIChzb3VyY2VMZW4gPj4gMjUpICsgMTM7CiB9CmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggZDdmZmRjMy4uZjFiNzY5YiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMjMsNyArMjMsOCBAQAogVkVSPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKC4qXCkiLiovXDEvcCcgPCB6bGliLmhgCiBWRVIyPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlxcLlswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCiBWRVIxPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCi1BUj0ke0FSLSJhciByYyJ9CitBUj0ke0FSLSJhciJ9CitBUl9SQz0iJHtBUn0gcmMiCiBSQU5MSUI9JHtSQU5MSUItInJhbmxpYiJ9CiBwcmVmaXg9JHtwcmVmaXgtL3Vzci9sb2NhbH0KIGV4ZWNfcHJlZml4PSR7ZXhlY19wcmVmaXgtJyR7cHJlZml4fSd9CkBAIC0zMiw2ICszMyw3IEBACiBtYW5kaXI9JHttYW5kaXItJyR7cHJlZml4fS9zaGFyZS9tYW4nfQogc2hhcmVkX2V4dD0nLnNvJwogc2hhcmVkPTAKK3pwcmVmaXg9MAogZ2NjPTAKIG9sZF9jYz0iJENDIgogb2xkX2NmbGFncz0iJENGTEFHUyIKQEAgLTM5LDIwICs0MSwyMyBAQAogd2hpbGUgdGVzdCAkIyAtZ2UgMQogZG8KIGNhc2UgIiQxIiBpbgotICAgIC1oKiB8IC0taCopCisgICAgLWgqIHwgLS1oZWxwKQogICAgICAgZWNobyAndXNhZ2U6JwogICAgICAgZWNobyAnICBjb25maWd1cmUgWy0tc2hhcmVkXSBbLS1wcmVmaXg9UFJFRklYXSAgWy0tZXhlY19wcmVmaXg9RVhQUkVGSVhdJwotICAgICAgZWNobyAnICAgICBbLS1saWJkaXI9TElCRElSXSBbLS1pbmNsdWRlZGlyPUlOQ0xVREVESVJdJworICAgICAgZWNobyAnICAgICBbLS1saWJkaXI9TElCRElSXSBbLS1pbmNsdWRlZGlyPUlOQ0xVREVESVJdIFstLXpwcmVmaXhdJwogICAgICAgICBleGl0IDA7OwotICAgIC1wKj0qIHwgLS1wKj0qKSBwcmVmaXg9YGVjaG8gJDEgfCBzZWQgJ3MvWy1hLXpfXSo9Ly8nYDsgc2hpZnQ7OwotICAgIC1lKj0qIHwgLS1lKj0qKSBleGVjX3ByZWZpeD1gZWNobyAkMSB8IHNlZCAncy9bLWEtel9dKj0vLydgOyBzaGlmdDs7CisgICAgLXAqPSogfCAtLXByZWZpeD0qKSBwcmVmaXg9YGVjaG8gJDEgfCBzZWQgJ3MvWy1hLXpfXSo9Ly8nYDsgc2hpZnQ7OworICAgIC1lKj0qIHwgLS1lcHJlZml4PSopIGV4ZWNfcHJlZml4PWBlY2hvICQxIHwgc2VkICdzL1stYS16X10qPS8vJ2A7IHNoaWZ0OzsKICAgICAtbCo9KiB8IC0tbGliZGlyPSopIGxpYmRpcj1gZWNobyAkMSB8IHNlZCAncy9bLWEtel9dKj0vLydgOyBzaGlmdDs7CiAgICAgLWkqPSogfCAtLWluY2x1ZGVkaXI9KikgaW5jbHVkZWRpcj1gZWNobyAkMSB8IHNlZCAncy9bLWEtel9dKj0vLydgO3NoaWZ0OzsKLSAgICAtcCogfCAtLXAqKSBwcmVmaXg9IiQyIjsgc2hpZnQ7IHNoaWZ0OzsKLSAgICAtZSogfCAtLWUqKSBleGVjX3ByZWZpeD0iJDIiOyBzaGlmdDsgc2hpZnQ7OwotICAgIC1sKiB8IC0tbCopIGxpYmRpcj0iJDIiOyBzaGlmdDsgc2hpZnQ7OwotICAgIC1pKiB8IC0taSopIGluY2x1ZGVkaXI9IiQyIjsgc2hpZnQ7IHNoaWZ0OzsKLSAgICAtcyogfCAtLXMqKSBzaGFyZWQ9MTsgc2hpZnQ7OworICAgIC1wKiB8IC0tcHJlZml4KSBwcmVmaXg9IiQyIjsgc2hpZnQ7IHNoaWZ0OzsKKyAgICAtZSogfCAtLWVwcmVmaXgpIGV4ZWNfcHJlZml4PSIkMiI7IHNoaWZ0OyBzaGlmdDs7CisgICAgLWwqIHwgLS1saWJkaXIpIGxpYmRpcj0iJDIiOyBzaGlmdDsgc2hpZnQ7OworICAgIC1pKiB8IC0taW5jbHVkZWRpcikgaW5jbHVkZWRpcj0iJDIiOyBzaGlmdDsgc2hpZnQ7OworICAgIC1zKiB8IC0tc2hhcmVkIHwgLS1lbmFibGUtc2hhcmVkKSBzaGFyZWQ9MTsgc2hpZnQ7OworICAgIC16KiB8IC0tenByZWZpeCkgenByZWZpeD0xOyBzaGlmdDs7CisgICAgLS1zeXNjb25mZGlyPSopIGVjaG8gImlnbm9yZWQgb3B0aW9uOiAtLXN5c2NvbmZkaXIiOyBzaGlmdDs7CisgICAgLS1sb2NhbHN0YXRlZGlyPSopIGVjaG8gImlnbm9yZWQgb3B0aW9uOiAtLWxvY2Fsc3RhdGVkaXIiOyBzaGlmdDs7CiAgICAgKikgZWNobyAidW5rbm93biBvcHRpb246ICQxIjsgZWNobyAiJDAgLS1oZWxwIGZvciBoZWxwIjsgZXhpdCAxOzsKICAgICBlc2FjCiBkb25lCkBAIC03MywxMCArNzgsMTAgQEAKIAogaWYgdGVzdCAiJGdjYyIgLWVxIDEgJiYgKCRjYyAtYyAkY2ZsYWdzICR0ZXN0LmMpIDI+L2Rldi9udWxsOyB0aGVuCiAgIENDPSIkY2MiCi0gIFNGTEFHUz0ke0NGTEFHUy0iLWZQSUMgLU8zIn0KKyAgU0ZMQUdTPSIke0NGTEFHUy0iLU8zIn0gLWZQSUMiCiAgIENGTEFHUz0iJGNmbGFncyIKICAgY2FzZSBgKHVuYW1lIC1zIHx8IGVjaG8gdW5rbm93bikgMj4vZGV2L251bGxgIGluCi0gIExpbnV4IHwgbGludXggfCBHTlUgfCBHTlUvKikgTERTSEFSRUQ9JHtMRFNIQVJFRC0iJGNjIC1zaGFyZWQgLVdsLC1zb25hbWUsbGliei5zby4xIn07OworICBMaW51eCB8IGxpbnV4IHwgR05VIHwgR05VLyopIExEU0hBUkVEPSR7TERTSEFSRUQtIiRjYyAtc2hhcmVkIC1XbCwtc29uYW1lLGxpYnouc28uMSwtLXZlcnNpb24tc2NyaXB0LHpsaWIubWFwIn07OwogICBDWUdXSU4qIHwgQ3lnd2luKiB8IGN5Z3dpbiogfCBPUy8yKiApCiAgICAgICAgICAgICAgRVhFPScuZXhlJzs7CiAgIFFOWCopICAjIFRoaXMgaXMgZm9yIFFOWDYuIEkgc3VwcG9zZSB0aGF0IHRoZSBRTlggcnVsZSBiZWxvdyBpcyBmb3IgUU5YMixRTlg0CkBAIC0xMTcsMjQgKzEyMiwzMCBAQAogICAgICAgICAgZXNhYzs7CiAgIElSSVgqKSAgICAgU0ZMQUdTPSR7Q0ZMQUdTLSItYW5zaSAtTzIgLXJwYXRoIC4ifQogICAgICAgICAgICAgIENGTEFHUz0ke0NGTEFHUy0iLWFuc2kgLU8yIn0KLSAgICAgICAgICAgICBMRFNIQVJFRD0ke0xEU0hBUkVELSJjYyAtc2hhcmVkIn07OworICAgICAgICAgICAgIExEU0hBUkVEPSR7TERTSEFSRUQtImNjIC1zaGFyZWQgLVdsLC1zb25hbWUsbGliei5zby4xIn07OwogICBPU0YxXCBWNCopIFNGTEFHUz0ke0NGTEFHUy0iLU8gLXN0ZDEifQogICAgICAgICAgICAgIENGTEFHUz0ke0NGTEFHUy0iLU8gLXN0ZDEifQogICAgICAgICAgICAgIExEU0hBUkVEPSR7TERTSEFSRUQtImNjIC1zaGFyZWQgIC1XbCwtc29uYW1lLGxpYnouc28gLVdsLC1tc3ltIC1XbCwtcnBhdGgsJChsaWJkaXIpIC1XbCwtc2V0X3ZlcnNpb24sJHtWRVJ9OjEuMCJ9OzsKICAgT1NGMSopICAgICBTRkxBR1M9JHtDRkxBR1MtIi1PIC1zdGQxIn0KICAgICAgICAgICAgICBDRkxBR1M9JHtDRkxBR1MtIi1PIC1zdGQxIn0KLSAgICAgICAgICAgICBMRFNIQVJFRD0ke0xEU0hBUkVELSJjYyAtc2hhcmVkIn07OworICAgICAgICAgICAgIExEU0hBUkVEPSR7TERTSEFSRUQtImNjIC1zaGFyZWQgLVdsLC1zb25hbWUsbGliei5zby4xIn07OwogICBRTlgqKSAgICAgIFNGTEFHUz0ke0NGTEFHUy0iLTQgLU8ifQogICAgICAgICAgICAgIENGTEFHUz0ke0NGTEFHUy0iLTQgLU8ifQogICAgICAgICAgICAgIExEU0hBUkVEPSR7TERTSEFSRUQtImNjIn0KICAgICAgICAgICAgICBSQU5MSUI9JHtSQU5MSUItInRydWUifQotICAgICAgICAgICAgIEFSPSJjYyAtQSI7OworICAgICAgICAgICAgIEFSX1JDPSJjYyAtQSI7OwogICBTQ09fU1ZcIDMuMiopIFNGTEFHUz0ke0NGTEFHUy0iLU8zIC1keSAtS1BJQyAifQogICAgICAgICAgICAgIENGTEFHUz0ke0NGTEFHUy0iLU8zIn0KICAgICAgICAgICAgICBMRFNIQVJFRD0ke0xEU0hBUkVELSJjYyAtZHkgLUtQSUMgLUcifTs7Ci0gIFN1bk9TXCA1KikgU0ZMQUdTPSR7Q0ZMQUdTLSItZmFzdCAteGNnODkgLUtQSUMgLVIuIn0KLSAgICAgICAgICAgICBDRkxBR1M9JHtDRkxBR1MtIi1mYXN0IC14Y2c4OSJ9Ci0gICAgICAgICAgICAgTERTSEFSRUQ9JHtMRFNIQVJFRC0iY2MgLUcifTs7CisgIFN1bk9TXCA1KikgTERTSEFSRUQ9JHtMRFNIQVJFRC0iY2MgLUcifQorICAgICAgICAgY2FzZSBgKHVuYW1lIC1tIHx8IGVjaG8gdW5rbm93bikgMj4vZGV2L251bGxgIGluCisgICAgICAgICBpODYqKQorICAgICAgICAgICAgIFNGTEFHUz0ke0NGTEFHUy0iLXhwZW50aXVtIC1mYXN0IC1LUElDIC1SLiJ9CisgICAgICAgICAgICAgQ0ZMQUdTPSR7Q0ZMQUdTLSIteHBlbnRpdW0gLWZhc3QifTs7CisgICAgICAgICAqKQorICAgICAgICAgICAgIFNGTEFHUz0ke0NGTEFHUy0iLWZhc3QgLXhjZzkyIC1LUElDIC1SLiJ9CisgICAgICAgICAgICAgQ0ZMQUdTPSR7Q0ZMQUdTLSItZmFzdCAteGNnOTIifTs7CisgICAgICAgICBlc2FjOzsKICAgU3VuT1NcIDQqKSBTRkxBR1M9JHtDRkxBR1MtIi1PMiAtUElDIn0KICAgICAgICAgICAgICBDRkxBR1M9JHtDRkxBR1MtIi1PMiJ9CiAgICAgICAgICAgICAgTERTSEFSRUQ9JHtMRFNIQVJFRC0ibGQifTs7CkBAIC0xODAsNiArMTkxLDEwIEBACiAgICAgZWNobyBObyBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LgogICAgIHNoYXJlZD0wOwogICBlbHNlCisgICAgZWNobyBUZXN0ZWQgJENDIC1jICRTRkxBR1MgJHRlc3QuYworICAgICRDQyAtYyAkU0ZMQUdTICR0ZXN0LmMKKyAgICBlY2hvIFRlc3RlZCAkTERTSEFSRUQgLW8gJHRlc3Qkc2hhcmVkX2V4dCAkdGVzdC5vCisgICAgJExEU0hBUkVEIC1vICR0ZXN0JHNoYXJlZF9leHQgJHRlc3QubwogICAgIGVjaG8gJ05vIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQ7IHRyeSB3aXRob3V0IGRlZmluaW5nIENDIGFuZCBDRkxBR1MnCiAgICAgc2hhcmVkPTA7CiAgIGZpCkBAIC0yMDMsNiArMjE4LDEyIEBACiAgIGVjaG8gIkNoZWNraW5nIGZvciB1bmlzdGQuaC4uLiBOby4iCiBmaQogCitpZiB0ZXN0ICR6cHJlZml4IC1lcSAxOyB0aGVuCisgIHNlZCA8IHpjb25mLmggIi8jaWZkZWYgWl9QUkVGSVgvcy9kZWYgWl9QUkVGSVgvIDEvIiA+IHpjb25mLnRlbXAuaAorICBtdiB6Y29uZi50ZW1wLmggemNvbmYuaAorICBlY2hvICJVc2luZyB6XyBwcmVmaXggb24gYWxsIHN5bWJvbHMuIgorZmkKKwogY2F0ID4gJHRlc3QuYyA8PEVPRgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CkBAIC0yMTksNyArMjQwLDcgQEAKIEVPRgogCiBpZiB0ZXN0ICJgKCRDQyAtYyAkQ0ZMQUdTICR0ZXN0LmMpIDI+JjFgIiA9ICIiOyB0aGVuCi0gIGVjaG8gIkNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIHZzW25dcHJpbnRmKCkgb3Igc1tuXXByaW50ZigpLi4uIHVzaW5nIHZzW25dcHJpbnRmKCkiCisgIGVjaG8gIkNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIHZzW25dcHJpbnRmKCkgb3Igc1tuXXByaW50ZigpLi4uIHVzaW5nIHZzW25dcHJpbnRmKCkuIgogCiAgIGNhdCA+ICR0ZXN0LmMgPDxFT0YKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzE2LDcgKzMzNyw3IEBACiAgICAgZmkKICAgZmkKIGVsc2UKLSAgZWNobyAiQ2hlY2tpbmcgd2hldGhlciB0byB1c2UgdnNbbl1wcmludGYoKSBvciBzW25dcHJpbnRmKCkuLi4gdXNpbmcgc1tuXXByaW50ZigpIgorICBlY2hvICJDaGVja2luZyB3aGV0aGVyIHRvIHVzZSB2c1tuXXByaW50ZigpIG9yIHNbbl1wcmludGYoKS4uLiB1c2luZyBzW25dcHJpbnRmKCkuIgogCiAgIGNhdCA+JHRlc3QuYyA8PEVPRgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00NDcsNyArNDY4LDcgQEAKIC9eU0hBUkVETElCICo9L3MjPS4qIz0kU0hBUkVETElCIwogL15TSEFSRURMSUJWICo9L3MjPS4qIz0kU0hBUkVETElCViMKIC9eU0hBUkVETElCTSAqPS9zIz0uKiM9JFNIQVJFRExJQk0jCi0vXkFSICo9L3MjPS4qIz0kQVIjCisvXkFSICo9L3MjPS4qIz0kQVJfUkMjCiAvXlJBTkxJQiAqPS9zIz0uKiM9JFJBTkxJQiMKIC9eRVhFICo9L3MjPS4qIz0kRVhFIwogL15wcmVmaXggKj0vcyM9LiojPSRwcmVmaXgjCkBAIC00NTcsMyArNDc4LDI1IEBACiAvXm1hbmRpciAqPS9zIz0uKiM9JG1hbmRpciMKIC9eTERGTEFHUyAqPS9zIz0uKiM9JExERkxBR1MjCiAiID4gTWFrZWZpbGUKKworc2VkIDwgemxpYi5wYy5pbiAiCisvXkNDICo9L3MjPS4qIz0kQ0MjCisvXkNGTEFHUyAqPS9zIz0uKiM9JENGTEFHUyMKKy9eQ1BQICo9L3MjPS4qIz0kQ1BQIworL15MRFNIQVJFRCAqPS9zIz0uKiM9JExEU0hBUkVEIworL15MSUJTICo9L3MjPS4qIz0kTElCUyMKKy9eU0hBUkVETElCICo9L3MjPS4qIz0kU0hBUkVETElCIworL15TSEFSRURMSUJWICo9L3MjPS4qIz0kU0hBUkVETElCViMKKy9eU0hBUkVETElCTSAqPS9zIz0uKiM9JFNIQVJFRExJQk0jCisvXkFSICo9L3MjPS4qIz0kQVJfUkMjCisvXlJBTkxJQiAqPS9zIz0uKiM9JFJBTkxJQiMKKy9eRVhFICo9L3MjPS4qIz0kRVhFIworL15wcmVmaXggKj0vcyM9LiojPSRwcmVmaXgjCisvXmV4ZWNfcHJlZml4ICo9L3MjPS4qIz0kZXhlY19wcmVmaXgjCisvXmxpYmRpciAqPS9zIz0uKiM9JGxpYmRpciMKKy9eaW5jbHVkZWRpciAqPS9zIz0uKiM9JGluY2x1ZGVkaXIjCisvXm1hbmRpciAqPS9zIz0uKiM9JG1hbmRpciMKKy9eTERGTEFHUyAqPS9zIz0uKiM9JExERkxBR1MjCisiIHwgc2VkIC1lICIKK3MvXEBWRVJTSU9OXEAvJFZFUi9nOworIiA+IHpsaWIucGMKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW5mYmFjazkvaW5mdHJlZTkuYyBiL2NvbnRyaWIvaW5mYmFjazkvaW5mdHJlZTkuYwppbmRleCAwOTkzZjc1Li42NThmODdmIDEwMDY0NAotLS0gYS9jb250cmliL2luZmJhY2s5L2luZnRyZWU5LmMKKysrIGIvY29udHJpYi9pbmZiYWNrOS9pbmZ0cmVlOS5jCkBAIC05LDcgKzksNyBAQAogI2RlZmluZSBNQVhCSVRTIDE1CiAKIGNvbnN0IGNoYXIgaW5mbGF0ZTlfY29weXJpZ2h0W10gPQotICAgIiBpbmZsYXRlOSAxLjIuMyBDb3B5cmlnaHQgMTk5NS0yMDA1IE1hcmsgQWRsZXIgIjsKKyAgICIgaW5mbGF0ZTkgMS4yLjMuMSBDb3B5cmlnaHQgMTk5NS0yMDA1IE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtNjQsNyArNjQsNyBAQAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsZXh0WzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovCiAgICAgICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjksIDEyOSwgMTI5LCAxMjksCiAgICAgICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzIsIDEzMiwgMTMyLCAxMzIsCi0gICAgICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTQ0LCAyMDEsIDE5Nn07CisgICAgICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTQ0LCA3NCwgMTk2fTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4zMSBiYXNlICovCiAgICAgICAgIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwKICAgICAgICAgNjUsIDk3LCAxMjksIDE5MywgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLApkaWZmIC0tZ2l0IGEvY29udHJpYi9tYXNteDg2L2luZmZhczMyLmFzbSBiL2NvbnRyaWIvbWFzbXg4Ni9pbmZmYXMzMi5hc20KaW5kZXggNGEyMDUxMi4uMDVjNDZkZCAxMDA2NDQKLS0tIGEvY29udHJpYi9tYXNteDg2L2luZmZhczMyLmFzbQorKysgYi9jb250cmliL21hc214ODYvaW5mZmFzMzIuYXNtCkBAIC02NDQsOSArNjQ0LDkgQEAKIAltb3ZkIG1tMCxlYnANCiAJbW92ICBlYnAsZWJ4DQogOyA4OTYgImluZmZhc3QuUyINCi0JbW92ZCBtbTQsW2VzcCswXQ0KKwltb3ZkIG1tNCxkd29yZCBwdHIgW2VzcCswXQ0KIAltb3ZxIG1tMyxtbTQNCi0JbW92ZCBtbTUsW2VzcCs0XQ0KKwltb3ZkIG1tNSxkd29yZCBwdHIgW2VzcCs0XQ0KIAltb3ZxIG1tMixtbTUNCiAJcHhvciBtbTEsbW0xDQogCW1vdiAgZWJ4LCBbZXNwKzhdDQpAQCAtNjYwLDcgKzY2MCw3IEBACiAJamEgIExfZ2V0X2xlbmd0aF9jb2RlX21teA0KIA0KIAltb3ZkIG1tNixlYnANCi0JbW92ZCBtbTcsW2VzaV0NCisJbW92ZCBtbTcsZHdvcmQgcHRyIFtlc2ldDQogCWFkZCAgZXNpLDQNCiAJcHNsbHEgbW03LG1tNg0KIAlhZGQgIGVicCwzMg0KQEAgLTcxNyw3ICs3MTcsNyBAQAogCWphIExfZ2V0X2Rpc3RfY29kZV9tbXgNCiANCiAJbW92ZCBtbTYsZWJwDQotCW1vdmQgbW03LFtlc2ldDQorCW1vdmQgbW03LGR3b3JkIHB0ciBbZXNpXQ0KIAlhZGQgIGVzaSw0DQogCXBzbGxxIG1tNyxtbTYNCiAJYWRkICBlYnAsMzINCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmM3L3psaWIucmMgYi9jb250cmliL3ZzdHVkaW8vdmM3L3psaWIucmMKaW5kZXggNzJjYjhiNC4uYzI3ZDBmYSAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjNy96bGliLnJjCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzcvemxpYi5yYwpAQCAtMiw4ICsyLDggQEAKIA0KICNkZWZpbmUgSURSX1ZFUlNJT04xICAxDQogSURSX1ZFUlNJT04xCVZFUlNJT05JTkZPCU1PVkVBQkxFIElNUFVSRSBMT0FET05DQUxMIERJU0NBUkRBQkxFDQotICBGSUxFVkVSU0lPTgkgMSwyLDMsMA0KLSAgUFJPRFVDVFZFUlNJT04gMSwyLDMsMA0KKyAgRklMRVZFUlNJT04JIDEsMiwzLDENCisgIFBST0RVQ1RWRVJTSU9OIDEsMiwzLDENCiAgIEZJTEVGTEFHU01BU0sJVlNfRkZJX0ZJTEVGTEFHU01BU0sNCiAgIEZJTEVGTEFHUwkwDQogICBGSUxFT1MJVk9TX0RPU19XSU5ET1dTMzINCkBAIC0xNyw3ICsxNyw3IEBACiANCiAgICAgQkVHSU4NCiAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgInpsaWIgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5XDAiDQotICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwJIjEuMi4zLjBcMCINCisgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLAkiMS4yLjMuMVwwIg0KICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLAkiemxpYlwwIg0KICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwJInpsaWIuZGxsXDAiDQogICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwJIlpMaWIuRExMXDAiDQpkaWZmIC0tZ2l0IGEvZGVmbGF0ZS5jIGIvZGVmbGF0ZS5jCmluZGV4IDI5Y2UxZjYuLmNjZmZlZGUgMTAwNjQ0Ci0tLSBhL2RlZmxhdGUuYworKysgYi9kZWZsYXRlLmMKQEAgLTUyLDcgKzUyLDcgQEAKICNpbmNsdWRlICJkZWZsYXRlLmgiCiAKIGNvbnN0IGNoYXIgZGVmbGF0ZV9jb3B5cmlnaHRbXSA9Ci0gICAiIGRlZmxhdGUgMS4yLjMgQ29weXJpZ2h0IDE5OTUtMjAwNSBKZWFuLWxvdXAgR2FpbGx5ICI7CisgICAiIGRlZmxhdGUgMS4yLjMuMSBDb3B5cmlnaHQgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHkgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtNDgxLDMzICs0ODEsNjUgQEAKICAqIHJlc3VsdGluZyBmcm9tIHVzaW5nIGZpeGVkIGJsb2NrcyBpbnN0ZWFkIG9mIHN0b3JlZCBibG9ja3MsIHdoaWNoIGRlZmxhdGUKICAqIGNhbiBlbWl0IG9uIGNvbXByZXNzZWQgZGF0YSBmb3Igc29tZSBjb21iaW5hdGlvbnMgb2YgdGhlIHBhcmFtZXRlcnMuCiAgKgotICogVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBtb3JlIHNvcGhpc3RpY2F0ZWQgdG8gcHJvdmlkZSBjbG9zZXIgdXBwZXIgYm91bmRzCi0gKiBmb3IgZXZlcnkgY29tYmluYXRpb24gb2Ygd2luZG93Qml0cyBhbmQgbWVtTGV2ZWwsIGFzIHdlbGwgYXMgd3JhcC4KLSAqIEJ1dCBldmVuIHRoZSBjb25zZXJ2YXRpdmUgdXBwZXIgYm91bmQgb2YgYWJvdXQgMTQlIGV4cGFuc2lvbiBkb2VzIG5vdAotICogc2VlbSBvbmVyb3VzIGZvciBvdXRwdXQgYnVmZmVyIGFsbG9jYXRpb24uCisgKiBUaGlzIGZ1bmN0aW9uIGNvdWxkIGJlIG1vcmUgc29waGlzdGljYXRlZCB0byBwcm92aWRlIGNsb3NlciB1cHBlciBib3VuZHMgZm9yCisgKiBldmVyeSBjb21iaW5hdGlvbiBvZiB3aW5kb3dCaXRzIGFuZCBtZW1MZXZlbC4gIEJ1dCBldmVuIHRoZSBjb25zZXJ2YXRpdmUKKyAqIHVwcGVyIGJvdW5kIG9mIGFib3V0IDE0JSBleHBhbnNpb24gZG9lcyBub3Qgc2VlbSBvbmVyb3VzIGZvciBvdXRwdXQgYnVmZmVyCisgKiBhbGxvY2F0aW9uLgogICovCiB1TG9uZyBaRVhQT1JUIGRlZmxhdGVCb3VuZChzdHJtLCBzb3VyY2VMZW4pCiAgICAgel9zdHJlYW1wIHN0cm07CiAgICAgdUxvbmcgc291cmNlTGVuOwogewogICAgIGRlZmxhdGVfc3RhdGUgKnM7Ci0gICAgdUxvbmcgZGVzdExlbjsKKyAgICB1TG9uZyBjb21wbGVuLCB3cmFwbGVuOworICAgIEJ5dGVmICpzdHI7CiAKLSAgICAvKiBjb25zZXJ2YXRpdmUgdXBwZXIgYm91bmQgKi8KLSAgICBkZXN0TGVuID0gc291cmNlTGVuICsKLSAgICAgICAgICAgICAgKChzb3VyY2VMZW4gKyA3KSA+PiAzKSArICgoc291cmNlTGVuICsgNjMpID4+IDYpICsgMTE7CisgICAgLyogY29uc2VydmF0aXZlIHVwcGVyIGJvdW5kIGZvciBjb21wcmVzc2VkIGRhdGEgKi8KKyAgICBjb21wbGVuID0gc291cmNlTGVuICsKKyAgICAgICAgICAgICAgKChzb3VyY2VMZW4gKyA3KSA+PiAzKSArICgoc291cmNlTGVuICsgNjMpID4+IDYpICsgNTsKIAotICAgIC8qIGlmIGNhbid0IGdldCBwYXJhbWV0ZXJzLCByZXR1cm4gY29uc2VydmF0aXZlIGJvdW5kICovCisgICAgLyogaWYgY2FuJ3QgZ2V0IHBhcmFtZXRlcnMsIHJldHVybiBjb25zZXJ2YXRpdmUgYm91bmQgcGx1cyB6bGliIHdyYXBwZXIgKi8KICAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKQotICAgICAgICByZXR1cm4gZGVzdExlbjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZW4gKyA2OworCisgICAgLyogY29tcHV0ZSB3cmFwcGVyIGxlbmd0aCAqLworICAgIHMgPSBzdHJtLT5zdGF0ZTsKKyAgICBzd2l0Y2ggKHMtPndyYXApIHsKKyAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmF3IGRlZmxhdGUgKi8KKyAgICAgICAgd3JhcGxlbiA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB6bGliIHdyYXBwZXIgKi8KKyAgICAgICAgd3JhcGxlbiA9IDYgKyAocy0+c3Ryc3RhcnQgPyA0IDogMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnemlwIHdyYXBwZXIgKi8KKyAgICAgICAgd3JhcGxlbiA9IDE4OworICAgICAgICBpZiAocy0+Z3poZWFkICE9IE5VTEwpIHsgICAgICAgICAgICAvKiB1c2VyLXN1cHBsaWVkIGd6aXAgaGVhZGVyICovCisgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5leHRyYSAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHdyYXBsZW4gKz0gMiArIHMtPmd6aGVhZC0+ZXh0cmFfbGVuOworICAgICAgICAgICAgc3RyID0gcy0+Z3poZWFkLT5uYW1lOworICAgICAgICAgICAgaWYgKHN0ciAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgd3JhcGxlbisrOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKCpzdHIrKyk7CisgICAgICAgICAgICBzdHIgPSBzLT5nemhlYWQtPmNvbW1lbnQ7CisgICAgICAgICAgICBpZiAoc3RyICE9IE5VTEwpCisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICB3cmFwbGVuKys7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoKnN0cisrKTsKKyAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMpCisgICAgICAgICAgICAgICAgd3JhcGxlbiArPSAyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgY29tcGlsZXIgaGFwcGluZXNzICovCisgICAgICAgIHdyYXBsZW4gPSA2OworICAgIH0KIAogICAgIC8qIGlmIG5vdCBkZWZhdWx0IHBhcmFtZXRlcnMsIHJldHVybiBjb25zZXJ2YXRpdmUgYm91bmQgKi8KLSAgICBzID0gc3RybS0+c3RhdGU7CiAgICAgaWYgKHMtPndfYml0cyAhPSAxNSB8fCBzLT5oYXNoX2JpdHMgIT0gOCArIDcpCi0gICAgICAgIHJldHVybiBkZXN0TGVuOworICAgICAgICByZXR1cm4gY29tcGxlbiArIHdyYXBsZW47CiAKICAgICAvKiBkZWZhdWx0IHNldHRpbmdzOiByZXR1cm4gdGlnaHQgYm91bmQgZm9yIHRoYXQgY2FzZSAqLwotICAgIHJldHVybiBjb21wcmVzc0JvdW5kKHNvdXJjZUxlbik7CisgICAgcmV0dXJuIGNvbXByZXNzQm91bmQoc291cmNlTGVuKSAtIDYgKyB3cmFwbGVuOwogfQogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kZWZsYXRlLmggYi9kZWZsYXRlLmgKaW5kZXggMDVhNWFiMy4uOTAwNzdkOCAxMDA2NDQKLS0tIGEvZGVmbGF0ZS5oCisrKyBiL2RlZmxhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qIGRlZmxhdGUuaCAtLSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZQotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDQgSmVhbi1sb3VwIEdhaWxseQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgSmVhbi1sb3VwIEdhaWxseQogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKZGlmZiAtLWdpdCBhL2FsZ29yaXRobS50eHQgYi9kb2MvYWxnb3JpdGhtLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYWxnb3JpdGhtLnR4dApyZW5hbWUgdG8gZG9jL2FsZ29yaXRobS50eHQKZGlmZiAtLWdpdCBhL2RvYy9yZmMxOTUwLnR4dCBiL2RvYy9yZmMxOTUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTY0MjhhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3JmYzE5NTAudHh0CkBAIC0wLDAgKzEsNjE5IEBACisKKworCisKKworCitOZXR3b3JrIFdvcmtpbmcgR3JvdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuIERldXRzY2gKK1JlcXVlc3QgZm9yIENvbW1lbnRzOiAxOTUwICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxhZGRpbiBFbnRlcnByaXNlcworQ2F0ZWdvcnk6IEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEotTC4gR2FpbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mby1aSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uIHZlcnNpb24gMy4zCisKK1N0YXR1cyBvZiBUaGlzIE1lbW8KKworICAgVGhpcyBtZW1vIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciB0aGUgSW50ZXJuZXQgY29tbXVuaXR5LiAgVGhpcyBtZW1vCisgICBkb2VzIG5vdCBzcGVjaWZ5IGFuIEludGVybmV0IHN0YW5kYXJkIG9mIGFueSBraW5kLiAgRGlzdHJpYnV0aW9uIG9mCisgICB0aGlzIG1lbW8gaXMgdW5saW1pdGVkLgorCitJRVNHIE5vdGU6CisKKyAgIFRoZSBJRVNHIHRha2VzIG5vIHBvc2l0aW9uIG9uIHRoZSB2YWxpZGl0eSBvZiBhbnkgSW50ZWxsZWN0dWFsCisgICBQcm9wZXJ0eSBSaWdodHMgc3RhdGVtZW50cyBjb250YWluZWQgaW4gdGhpcyBkb2N1bWVudC4KKworTm90aWNlcworCisgICBDb3B5cmlnaHQgKGMpIDE5OTYgTC4gUGV0ZXIgRGV1dHNjaCBhbmQgSmVhbi1Mb3VwIEdhaWxseQorCisgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGRvY3VtZW50IGZvciBhbnkKKyAgIHB1cnBvc2UgYW5kIHdpdGhvdXQgY2hhcmdlLCBpbmNsdWRpbmcgdHJhbnNsYXRpb25zIGludG8gb3RoZXIKKyAgIGxhbmd1YWdlcyBhbmQgaW5jb3Jwb3JhdGlvbiBpbnRvIGNvbXBpbGF0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGUKKyAgIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQsIGFuZCB0aGF0IGFueQorICAgc3Vic3RhbnRpdmUgY2hhbmdlcyBvciBkZWxldGlvbnMgZnJvbSB0aGUgb3JpZ2luYWwgYXJlIGNsZWFybHkKKyAgIG1hcmtlZC4KKworICAgQSBwb2ludGVyIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGFuZCByZWxhdGVkIGRvY3VtZW50YXRpb24gaW4KKyAgIEhUTUwgZm9ybWF0IGNhbiBiZSBmb3VuZCBhdCB0aGUgVVJMCisgICA8ZnRwOi8vZnRwLnV1Lm5ldC9ncmFwaGljcy9wbmcvZG9jdW1lbnRzL3psaWIvemRvYy1pbmRleC5odG1sPi4KKworQWJzdHJhY3QKKworICAgVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBsb3NzbGVzcyBjb21wcmVzc2VkIGRhdGEgZm9ybWF0LiAgVGhlCisgICBkYXRhIGNhbiBiZSBwcm9kdWNlZCBvciBjb25zdW1lZCwgZXZlbiBmb3IgYW4gYXJiaXRyYXJpbHkgbG9uZworICAgc2VxdWVudGlhbGx5IHByZXNlbnRlZCBpbnB1dCBkYXRhIHN0cmVhbSwgdXNpbmcgb25seSBhbiBhIHByaW9yaQorICAgYm91bmRlZCBhbW91bnQgb2YgaW50ZXJtZWRpYXRlIHN0b3JhZ2UuICBUaGUgZm9ybWF0IHByZXNlbnRseSB1c2VzCisgICB0aGUgREVGTEFURSBjb21wcmVzc2lvbiBtZXRob2QgYnV0IGNhbiBiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gdXNlCisgICBvdGhlciBjb21wcmVzc2lvbiBtZXRob2RzLiAgSXQgY2FuIGJlIGltcGxlbWVudGVkIHJlYWRpbHkgaW4gYSBtYW5uZXIKKyAgIG5vdCBjb3ZlcmVkIGJ5IHBhdGVudHMuICBUaGlzIHNwZWNpZmljYXRpb24gYWxzbyBkZWZpbmVzIHRoZSBBRExFUi0zMgorICAgY2hlY2tzdW0gKGFuIGV4dGVuc2lvbiBhbmQgaW1wcm92ZW1lbnQgb2YgdGhlIEZsZXRjaGVyIGNoZWNrc3VtKSwKKyAgIHVzZWQgZm9yIGRldGVjdGlvbiBvZiBkYXRhIGNvcnJ1cHRpb24sIGFuZCBwcm92aWRlcyBhbiBhbGdvcml0aG0gZm9yCisgICBjb21wdXRpbmcgaXQuCisKKworCisKK0RldXRzY2ggJiBHYWlsbHkgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxXQorDAorUkZDIDE5NTAgICAgICAgWkxJQiBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICAgIE1heSAxOTk2CisKKworVGFibGUgb2YgQ29udGVudHMKKworICAgMS4gSW50cm9kdWN0aW9uIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyCisgICAgICAxLjEuIFB1cnBvc2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDIKKyAgICAgIDEuMi4gSW50ZW5kZWQgYXVkaWVuY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMworICAgICAgMS4zLiBTY29wZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzCisgICAgICAxLjQuIENvbXBsaWFuY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMKKyAgICAgIDEuNS4gIERlZmluaXRpb25zIG9mIHRlcm1zIGFuZCBjb252ZW50aW9ucyB1c2VkIC4uLi4uLi4uLi4uLi4uLi4gMworICAgICAgMS42LiBDaGFuZ2VzIGZyb20gcHJldmlvdXMgdmVyc2lvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzCisgICAyLiBEZXRhaWxlZCBzcGVjaWZpY2F0aW9uIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMKKyAgICAgIDIuMS4gT3ZlcmFsbCBjb252ZW50aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMworICAgICAgMi4yLiBEYXRhIGZvcm1hdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0CisgICAgICAyLjMuIENvbXBsaWFuY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDcKKyAgIDMuIFJlZmVyZW5jZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNworICAgNC4gU291cmNlIGNvZGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA4CisgICA1LiBTZWN1cml0eSBDb25zaWRlcmF0aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDgKKyAgIDYuIEFja25vd2xlZGdlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gOAorICAgNy4gQXV0aG9ycycgQWRkcmVzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA4CisgICA4LiBBcHBlbmRpeDogUmF0aW9uYWxlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDkKKyAgIDkuIEFwcGVuZGl4OiBTYW1wbGUgY29kZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4xMAorCisxLiBJbnRyb2R1Y3Rpb24KKworICAgMS4xLiBQdXJwb3NlCisKKyAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgc3BlY2lmaWNhdGlvbiBpcyB0byBkZWZpbmUgYSBsb3NzbGVzcworICAgICAgY29tcHJlc3NlZCBkYXRhIGZvcm1hdCB0aGF0OgorCisgICAgICAgICAgKiBJcyBpbmRlcGVuZGVudCBvZiBDUFUgdHlwZSwgb3BlcmF0aW5nIHN5c3RlbSwgZmlsZSBzeXN0ZW0sCisgICAgICAgICAgICBhbmQgY2hhcmFjdGVyIHNldCwgYW5kIGhlbmNlIGNhbiBiZSB1c2VkIGZvciBpbnRlcmNoYW5nZTsKKworICAgICAgICAgICogQ2FuIGJlIHByb2R1Y2VkIG9yIGNvbnN1bWVkLCBldmVuIGZvciBhbiBhcmJpdHJhcmlseSBsb25nCisgICAgICAgICAgICBzZXF1ZW50aWFsbHkgcHJlc2VudGVkIGlucHV0IGRhdGEgc3RyZWFtLCB1c2luZyBvbmx5IGFuIGEKKyAgICAgICAgICAgIHByaW9yaSBib3VuZGVkIGFtb3VudCBvZiBpbnRlcm1lZGlhdGUgc3RvcmFnZSwgYW5kIGhlbmNlIGNhbgorICAgICAgICAgICAgYmUgdXNlZCBpbiBkYXRhIGNvbW11bmljYXRpb25zIG9yIHNpbWlsYXIgc3RydWN0dXJlcyBzdWNoIGFzCisgICAgICAgICAgICBVbml4IGZpbHRlcnM7CisKKyAgICAgICAgICAqIENhbiB1c2UgYSBudW1iZXIgb2YgZGlmZmVyZW50IGNvbXByZXNzaW9uIG1ldGhvZHM7CisKKyAgICAgICAgICAqIENhbiBiZSBpbXBsZW1lbnRlZCByZWFkaWx5IGluIGEgbWFubmVyIG5vdCBjb3ZlcmVkIGJ5CisgICAgICAgICAgICBwYXRlbnRzLCBhbmQgaGVuY2UgY2FuIGJlIHByYWN0aWNlZCBmcmVlbHkuCisKKyAgICAgIFRoZSBkYXRhIGZvcm1hdCBkZWZpbmVkIGJ5IHRoaXMgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBhdHRlbXB0IHRvCisgICAgICBhbGxvdyByYW5kb20gYWNjZXNzIHRvIGNvbXByZXNzZWQgZGF0YS4KKworCisKKworCisKKworRGV1dHNjaCAmIEdhaWxseSAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDJdCisMCitSRkMgMTk1MCAgICAgICBaTElCIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgTWF5IDE5OTYKKworCisgICAxLjIuIEludGVuZGVkIGF1ZGllbmNlCisKKyAgICAgIFRoaXMgc3BlY2lmaWNhdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGltcGxlbWVudG9ycyBvZiBzb2Z0d2FyZQorICAgICAgdG8gY29tcHJlc3MgZGF0YSBpbnRvIHpsaWIgZm9ybWF0IGFuZC9vciBkZWNvbXByZXNzIGRhdGEgZnJvbSB6bGliCisgICAgICBmb3JtYXQuCisKKyAgICAgIFRoZSB0ZXh0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFzc3VtZXMgYSBiYXNpYyBiYWNrZ3JvdW5kIGluCisgICAgICBwcm9ncmFtbWluZyBhdCB0aGUgbGV2ZWwgb2YgYml0cyBhbmQgb3RoZXIgcHJpbWl0aXZlIGRhdGEKKyAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAgMS4zLiBTY29wZQorCisgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBzcGVjaWZpZXMgYSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHRoYXQgY2FuIGJlCisgICAgICB1c2VkIGZvciBpbi1tZW1vcnkgY29tcHJlc3Npb24gb2YgYSBzZXF1ZW5jZSBvZiBhcmJpdHJhcnkgYnl0ZXMuCisKKyAgIDEuNC4gQ29tcGxpYW5jZQorCisgICAgICBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgYSBjb21wbGlhbnQgZGVjb21wcmVzc29yIG11c3QgYmUKKyAgICAgIGFibGUgdG8gYWNjZXB0IGFuZCBkZWNvbXByZXNzIGFueSBkYXRhIHNldCB0aGF0IGNvbmZvcm1zIHRvIGFsbAorICAgICAgdGhlIHNwZWNpZmljYXRpb25zIHByZXNlbnRlZCBoZXJlOyBhIGNvbXBsaWFudCBjb21wcmVzc29yIG11c3QKKyAgICAgIHByb2R1Y2UgZGF0YSBzZXRzIHRoYXQgY29uZm9ybSB0byBhbGwgdGhlIHNwZWNpZmljYXRpb25zIHByZXNlbnRlZAorICAgICAgaGVyZS4KKworICAgMS41LiAgRGVmaW5pdGlvbnMgb2YgdGVybXMgYW5kIGNvbnZlbnRpb25zIHVzZWQKKworICAgICAgYnl0ZTogOCBiaXRzIHN0b3JlZCBvciB0cmFuc21pdHRlZCBhcyBhIHVuaXQgKHNhbWUgYXMgYW4gb2N0ZXQpLgorICAgICAgKEZvciB0aGlzIHNwZWNpZmljYXRpb24sIGEgYnl0ZSBpcyBleGFjdGx5IDggYml0cywgZXZlbiBvbgorICAgICAgbWFjaGluZXMgd2hpY2ggc3RvcmUgYSBjaGFyYWN0ZXIgb24gYSBudW1iZXIgb2YgYml0cyBkaWZmZXJlbnQKKyAgICAgIGZyb20gOC4pIFNlZSBiZWxvdywgZm9yIHRoZSBudW1iZXJpbmcgb2YgYml0cyB3aXRoaW4gYSBieXRlLgorCisgICAxLjYuIENoYW5nZXMgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucworCisgICAgICBWZXJzaW9uIDMuMSB3YXMgdGhlIGZpcnN0IHB1YmxpYyByZWxlYXNlIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4KKyAgICAgIEluIHZlcnNpb24gMy4yLCBzb21lIHRlcm1pbm9sb2d5IHdhcyBjaGFuZ2VkIGFuZCB0aGUgQWRsZXItMzIKKyAgICAgIHNhbXBsZSBjb2RlIHdhcyByZXdyaXR0ZW4gZm9yIGNsYXJpdHkuICBJbiB2ZXJzaW9uIDMuMywgdGhlCisgICAgICBzdXBwb3J0IGZvciBhIHByZXNldCBkaWN0aW9uYXJ5IHdhcyBpbnRyb2R1Y2VkLCBhbmQgdGhlCisgICAgICBzcGVjaWZpY2F0aW9uIHdhcyBjb252ZXJ0ZWQgdG8gUkZDIHN0eWxlLgorCisyLiBEZXRhaWxlZCBzcGVjaWZpY2F0aW9uCisKKyAgIDIuMS4gT3ZlcmFsbCBjb252ZW50aW9ucworCisgICAgICBJbiB0aGUgZGlhZ3JhbXMgYmVsb3csIGEgYm94IGxpa2UgdGhpczoKKworICAgICAgICAgKy0tLSsKKyAgICAgICAgIHwgICB8IDwtLSB0aGUgdmVydGljYWwgYmFycyBtaWdodCBiZSBtaXNzaW5nCisgICAgICAgICArLS0tKworCisKKworCitEZXV0c2NoICYgR2FpbGx5ICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgM10KKwwKK1JGQyAxOTUwICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICBNYXkgMTk5NgorCisKKyAgICAgIHJlcHJlc2VudHMgb25lIGJ5dGU7IGEgYm94IGxpa2UgdGhpczoKKworICAgICAgICAgKz09PT09PT09PT09PT09KworICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgICAgICAgKz09PT09PT09PT09PT09KworCisgICAgICByZXByZXNlbnRzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGJ5dGVzLgorCisgICAgICBCeXRlcyBzdG9yZWQgd2l0aGluIGEgY29tcHV0ZXIgZG8gbm90IGhhdmUgYSAiYml0IG9yZGVyIiwgc2luY2UKKyAgICAgIHRoZXkgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIGEgdW5pdC4gIEhvd2V2ZXIsIGEgYnl0ZSBjb25zaWRlcmVkIGFzCisgICAgICBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1IGRvZXMgaGF2ZSBhIG1vc3QtIGFuZCBsZWFzdC0KKyAgICAgIHNpZ25pZmljYW50IGJpdCwgYW5kIHNpbmNlIHdlIHdyaXRlIG51bWJlcnMgd2l0aCB0aGUgbW9zdC0KKyAgICAgIHNpZ25pZmljYW50IGRpZ2l0IG9uIHRoZSBsZWZ0LCB3ZSBhbHNvIHdyaXRlIGJ5dGVzIHdpdGggdGhlIG1vc3QtCisgICAgICBzaWduaWZpY2FudCBiaXQgb24gdGhlIGxlZnQuICBJbiB0aGUgZGlhZ3JhbXMgYmVsb3csIHdlIG51bWJlciB0aGUKKyAgICAgIGJpdHMgb2YgYSBieXRlIHNvIHRoYXQgYml0IDAgaXMgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCwgaS5lLiwKKyAgICAgIHRoZSBiaXRzIGFyZSBudW1iZXJlZDoKKworICAgICAgICAgKy0tLS0tLS0tKworICAgICAgICAgfDc2NTQzMjEwfAorICAgICAgICAgKy0tLS0tLS0tKworCisgICAgICBXaXRoaW4gYSBjb21wdXRlciwgYSBudW1iZXIgbWF5IG9jY3VweSBtdWx0aXBsZSBieXRlcy4gIEFsbAorICAgICAgbXVsdGktYnl0ZSBudW1iZXJzIGluIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUgYXJlIHN0b3JlZCB3aXRoCisgICAgICB0aGUgTU9TVC1zaWduaWZpY2FudCBieXRlIGZpcnN0IChhdCB0aGUgbG93ZXIgbWVtb3J5IGFkZHJlc3MpLgorICAgICAgRm9yIGV4YW1wbGUsIHRoZSBkZWNpbWFsIG51bWJlciA1MjAgaXMgc3RvcmVkIGFzOgorCisgICAgICAgICAgICAgMCAgICAgMQorICAgICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tKworICAgICAgICAgfDAwMDAwMDEwfDAwMDAxMDAwfAorICAgICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tKworICAgICAgICAgIF4gICAgICAgIF4KKyAgICAgICAgICB8ICAgICAgICB8CisgICAgICAgICAgfCAgICAgICAgKyBsZXNzIHNpZ25pZmljYW50IGJ5dGUgPSA4CisgICAgICAgICAgKyBtb3JlIHNpZ25pZmljYW50IGJ5dGUgPSAyIHggMjU2CisKKyAgIDIuMi4gRGF0YSBmb3JtYXQKKworICAgICAgQSB6bGliIHN0cmVhbSBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisKKyAgICAgICAgICAgMCAgIDEKKyAgICAgICAgICstLS0rLS0tKworICAgICAgICAgfENNRnxGTEd8ICAgKG1vcmUtLT4pCisgICAgICAgICArLS0tKy0tLSsKKworCisKKworCisKKworCitEZXV0c2NoICYgR2FpbGx5ICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgNF0KKwwKK1JGQyAxOTUwICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICBNYXkgMTk5NgorCisKKyAgICAgIChpZiBGTEcuRkRJQ1Qgc2V0KQorCisgICAgICAgICAgIDAgICAxICAgMiAgIDMKKyAgICAgICAgICstLS0rLS0tKy0tLSstLS0rCisgICAgICAgICB8ICAgICBESUNUSUQgICAgfCAgIChtb3JlLS0+KQorICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsKKworICAgICAgICAgKz09PT09PT09PT09PT09PT09PT09PSstLS0rLS0tKy0tLSstLS0rCisgICAgICAgICB8Li4uY29tcHJlc3NlZCBkYXRhLi4ufCAgICBBRExFUjMyICAgIHwKKyAgICAgICAgICs9PT09PT09PT09PT09PT09PT09PT0rLS0tKy0tLSstLS0rLS0tKworCisgICAgICBBbnkgZGF0YSB3aGljaCBtYXkgYXBwZWFyIGFmdGVyIEFETEVSMzIgYXJlIG5vdCBwYXJ0IG9mIHRoZSB6bGliCisgICAgICBzdHJlYW0uCisKKyAgICAgIENNRiAoQ29tcHJlc3Npb24gTWV0aG9kIGFuZCBmbGFncykKKyAgICAgICAgIFRoaXMgYnl0ZSBpcyBkaXZpZGVkIGludG8gYSA0LWJpdCBjb21wcmVzc2lvbiBtZXRob2QgYW5kIGEgNC0KKyAgICAgICAgIGJpdCBpbmZvcm1hdGlvbiBmaWVsZCBkZXBlbmRpbmcgb24gdGhlIGNvbXByZXNzaW9uIG1ldGhvZC4KKworICAgICAgICAgICAgYml0cyAwIHRvIDMgIENNICAgICBDb21wcmVzc2lvbiBtZXRob2QKKyAgICAgICAgICAgIGJpdHMgNCB0byA3ICBDSU5GTyAgQ29tcHJlc3Npb24gaW5mbworCisgICAgICBDTSAoQ29tcHJlc3Npb24gbWV0aG9kKQorICAgICAgICAgVGhpcyBpZGVudGlmaWVzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgdXNlZCBpbiB0aGUgZmlsZS4gQ00gPSA4CisgICAgICAgICBkZW5vdGVzIHRoZSAiZGVmbGF0ZSIgY29tcHJlc3Npb24gbWV0aG9kIHdpdGggYSB3aW5kb3cgc2l6ZSB1cAorICAgICAgICAgdG8gMzJLLiAgVGhpcyBpcyB0aGUgbWV0aG9kIHVzZWQgYnkgZ3ppcCBhbmQgUE5HIChzZWUKKyAgICAgICAgIHJlZmVyZW5jZXMgWzFdIGFuZCBbMl0gaW4gQ2hhcHRlciAzLCBiZWxvdywgZm9yIHRoZSByZWZlcmVuY2UKKyAgICAgICAgIGRvY3VtZW50cykuICBDTSA9IDE1IGlzIHJlc2VydmVkLiAgSXQgbWlnaHQgYmUgdXNlZCBpbiBhIGZ1dHVyZQorICAgICAgICAgdmVyc2lvbiBvZiB0aGlzIHNwZWNpZmljYXRpb24gdG8gaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIGFuCisgICAgICAgICBleHRyYSBmaWVsZCBiZWZvcmUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKworICAgICAgQ0lORk8gKENvbXByZXNzaW9uIGluZm8pCisgICAgICAgICBGb3IgQ00gPSA4LCBDSU5GTyBpcyB0aGUgYmFzZS0yIGxvZ2FyaXRobSBvZiB0aGUgTFo3NyB3aW5kb3cKKyAgICAgICAgIHNpemUsIG1pbnVzIGVpZ2h0IChDSU5GTz03IGluZGljYXRlcyBhIDMySyB3aW5kb3cgc2l6ZSkuIFZhbHVlcworICAgICAgICAgb2YgQ0lORk8gYWJvdmUgNyBhcmUgbm90IGFsbG93ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgc3BlY2lmaWNhdGlvbi4gIENJTkZPIGlzIG5vdCBkZWZpbmVkIGluIHRoaXMgc3BlY2lmaWNhdGlvbiBmb3IKKyAgICAgICAgIENNIG5vdCBlcXVhbCB0byA4LgorCisgICAgICBGTEcgKEZMYUdzKQorICAgICAgICAgVGhpcyBmbGFnIGJ5dGUgaXMgZGl2aWRlZCBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICBiaXRzIDAgdG8gNCAgRkNIRUNLICAoY2hlY2sgYml0cyBmb3IgQ01GIGFuZCBGTEcpCisgICAgICAgICAgICBiaXQgIDUgICAgICAgRkRJQ1QgICAocHJlc2V0IGRpY3Rpb25hcnkpCisgICAgICAgICAgICBiaXRzIDYgdG8gNyAgRkxFVkVMICAoY29tcHJlc3Npb24gbGV2ZWwpCisKKyAgICAgICAgIFRoZSBGQ0hFQ0sgdmFsdWUgbXVzdCBiZSBzdWNoIHRoYXQgQ01GIGFuZCBGTEcsIHdoZW4gdmlld2VkIGFzCisgICAgICAgICBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHN0b3JlZCBpbiBNU0Igb3JkZXIgKENNRioyNTYgKyBGTEcpLAorICAgICAgICAgaXMgYSBtdWx0aXBsZSBvZiAzMS4KKworCisKKworRGV1dHNjaCAmIEdhaWxseSAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDVdCisMCitSRkMgMTk1MCAgICAgICBaTElCIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgTWF5IDE5OTYKKworCisgICAgICBGRElDVCAoUHJlc2V0IGRpY3Rpb25hcnkpCisgICAgICAgICBJZiBGRElDVCBpcyBzZXQsIGEgRElDVCBkaWN0aW9uYXJ5IGlkZW50aWZpZXIgaXMgcHJlc2VudAorICAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIEZMRyBieXRlLiBUaGUgZGljdGlvbmFyeSBpcyBhIHNlcXVlbmNlIG9mCisgICAgICAgICBieXRlcyB3aGljaCBhcmUgaW5pdGlhbGx5IGZlZCB0byB0aGUgY29tcHJlc3NvciB3aXRob3V0CisgICAgICAgICBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LiBESUNUIGlzIHRoZSBBZGxlci0zMiBjaGVja3N1bQorICAgICAgICAgb2YgdGhpcyBzZXF1ZW5jZSBvZiBieXRlcyAoc2VlIHRoZSBkZWZpbml0aW9uIG9mIEFETEVSMzIKKyAgICAgICAgIGJlbG93KS4gIFRoZSBkZWNvbXByZXNzb3IgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIgdG8gZGV0ZXJtaW5lCisgICAgICAgICB3aGljaCBkaWN0aW9uYXJ5IGhhcyBiZWVuIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IuCisKKyAgICAgIEZMRVZFTCAoQ29tcHJlc3Npb24gbGV2ZWwpCisgICAgICAgICBUaGVzZSBmbGFncyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYnkgc3BlY2lmaWMgY29tcHJlc3Npb24KKyAgICAgICAgIG1ldGhvZHMuICBUaGUgImRlZmxhdGUiIG1ldGhvZCAoQ00gPSA4KSBzZXRzIHRoZXNlIGZsYWdzIGFzCisgICAgICAgICBmb2xsb3dzOgorCisgICAgICAgICAgICAwIC0gY29tcHJlc3NvciB1c2VkIGZhc3Rlc3QgYWxnb3JpdGhtCisgICAgICAgICAgICAxIC0gY29tcHJlc3NvciB1c2VkIGZhc3QgYWxnb3JpdGhtCisgICAgICAgICAgICAyIC0gY29tcHJlc3NvciB1c2VkIGRlZmF1bHQgYWxnb3JpdGhtCisgICAgICAgICAgICAzIC0gY29tcHJlc3NvciB1c2VkIG1heGltdW0gY29tcHJlc3Npb24sIHNsb3dlc3QgYWxnb3JpdGhtCisKKyAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpbiBGTEVWRUwgaXMgbm90IG5lZWRlZCBmb3IgZGVjb21wcmVzc2lvbjsgaXQKKyAgICAgICAgIGlzIHRoZXJlIHRvIGluZGljYXRlIGlmIHJlY29tcHJlc3Npb24gbWlnaHQgYmUgd29ydGh3aGlsZS4KKworICAgICAgY29tcHJlc3NlZCBkYXRhCisgICAgICAgICBGb3IgY29tcHJlc3Npb24gbWV0aG9kIDgsIHRoZSBjb21wcmVzc2VkIGRhdGEgaXMgc3RvcmVkIGluIHRoZQorICAgICAgICAgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnQKKyAgICAgICAgICJERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiIgYnkgTC4gUGV0ZXIKKyAgICAgICAgIERldXRzY2guIChTZWUgcmVmZXJlbmNlIFszXSBpbiBDaGFwdGVyIDMsIGJlbG93KQorCisgICAgICAgICBPdGhlciBjb21wcmVzc2VkIGRhdGEgZm9ybWF0cyBhcmUgbm90IHNwZWNpZmllZCBpbiB0aGlzIHZlcnNpb24KKyAgICAgICAgIG9mIHRoZSB6bGliIHNwZWNpZmljYXRpb24uCisKKyAgICAgIEFETEVSMzIgKEFkbGVyLTMyIGNoZWNrc3VtKQorICAgICAgICAgVGhpcyBjb250YWlucyBhIGNoZWNrc3VtIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YQorICAgICAgICAgKGV4Y2x1ZGluZyBhbnkgZGljdGlvbmFyeSBkYXRhKSBjb21wdXRlZCBhY2NvcmRpbmcgdG8gQWRsZXItMzIKKyAgICAgICAgIGFsZ29yaXRobS4gVGhpcyBhbGdvcml0aG0gaXMgYSAzMi1iaXQgZXh0ZW5zaW9uIGFuZCBpbXByb3ZlbWVudAorICAgICAgICAgb2YgdGhlIEZsZXRjaGVyIGFsZ29yaXRobSwgdXNlZCBpbiB0aGUgSVRVLVQgWC4yMjQgLyBJU08gODA3MworICAgICAgICAgc3RhbmRhcmQuIFNlZSByZWZlcmVuY2VzIFs0XSBhbmQgWzVdIGluIENoYXB0ZXIgMywgYmVsb3cpCisKKyAgICAgICAgIEFkbGVyLTMyIGlzIGNvbXBvc2VkIG9mIHR3byBzdW1zIGFjY3VtdWxhdGVkIHBlciBieXRlOiBzMSBpcworICAgICAgICAgdGhlIHN1bSBvZiBhbGwgYnl0ZXMsIHMyIGlzIHRoZSBzdW0gb2YgYWxsIHMxIHZhbHVlcy4gQm90aCBzdW1zCisgICAgICAgICBhcmUgZG9uZSBtb2R1bG8gNjU1MjEuIHMxIGlzIGluaXRpYWxpemVkIHRvIDEsIHMyIHRvIHplcm8uICBUaGUKKyAgICAgICAgIEFkbGVyLTMyIGNoZWNrc3VtIGlzIHN0b3JlZCBhcyBzMio2NTUzNiArIHMxIGluIG1vc3QtCisgICAgICAgICBzaWduaWZpY2FudC1ieXRlIGZpcnN0IChuZXR3b3JrKSBvcmRlci4KKworCisKKworCisKKworCitEZXV0c2NoICYgR2FpbGx5ICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgNl0KKwwKK1JGQyAxOTUwICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICBNYXkgMTk5NgorCisKKyAgIDIuMy4gQ29tcGxpYW5jZQorCisgICAgICBBIGNvbXBsaWFudCBjb21wcmVzc29yIG11c3QgcHJvZHVjZSBzdHJlYW1zIHdpdGggY29ycmVjdCBDTUYsIEZMRworICAgICAgYW5kIEFETEVSMzIsIGJ1dCBuZWVkIG5vdCBzdXBwb3J0IHByZXNldCBkaWN0aW9uYXJpZXMuICBXaGVuIHRoZQorICAgICAgemxpYiBkYXRhIGZvcm1hdCBpcyB1c2VkIGFzIHBhcnQgb2YgYW5vdGhlciBzdGFuZGFyZCBkYXRhIGZvcm1hdCwKKyAgICAgIHRoZSBjb21wcmVzc29yIG1heSB1c2Ugb25seSBwcmVzZXQgZGljdGlvbmFyaWVzIHRoYXQgYXJlIHNwZWNpZmllZAorICAgICAgYnkgdGhpcyBvdGhlciBkYXRhIGZvcm1hdC4gIElmIHRoaXMgb3RoZXIgZm9ybWF0IGRvZXMgbm90IHVzZSB0aGUKKyAgICAgIHByZXNldCBkaWN0aW9uYXJ5IGZlYXR1cmUsIHRoZSBjb21wcmVzc29yIG11c3Qgbm90IHNldCB0aGUgRkRJQ1QKKyAgICAgIGZsYWcuCisKKyAgICAgIEEgY29tcGxpYW50IGRlY29tcHJlc3NvciBtdXN0IGNoZWNrIENNRiwgRkxHLCBhbmQgQURMRVIzMiwgYW5kCisgICAgICBwcm92aWRlIGFuIGVycm9yIGluZGljYXRpb24gaWYgYW55IG9mIHRoZXNlIGhhdmUgaW5jb3JyZWN0IHZhbHVlcy4KKyAgICAgIEEgY29tcGxpYW50IGRlY29tcHJlc3NvciBtdXN0IGdpdmUgYW4gZXJyb3IgaW5kaWNhdGlvbiBpZiBDTSBpcworICAgICAgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGRlZmluZWQgaW4gdGhpcyBzcGVjaWZpY2F0aW9uIChvbmx5IHRoZQorICAgICAgdmFsdWUgOCBpcyBwZXJtaXR0ZWQgaW4gdGhpcyB2ZXJzaW9uKSwgc2luY2UgYW5vdGhlciB2YWx1ZSBjb3VsZAorICAgICAgaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIG5ldyBmZWF0dXJlcyB0aGF0IHdvdWxkIGNhdXNlIHN1YnNlcXVlbnQKKyAgICAgIGRhdGEgdG8gYmUgaW50ZXJwcmV0ZWQgaW5jb3JyZWN0bHkuICBBIGNvbXBsaWFudCBkZWNvbXByZXNzb3IgbXVzdAorICAgICAgZ2l2ZSBhbiBlcnJvciBpbmRpY2F0aW9uIGlmIEZESUNUIGlzIHNldCBhbmQgRElDVElEIGlzIG5vdCB0aGUKKyAgICAgIGlkZW50aWZpZXIgb2YgYSBrbm93biBwcmVzZXQgZGljdGlvbmFyeS4gIEEgZGVjb21wcmVzc29yIG1heQorICAgICAgaWdub3JlIEZMRVZFTCBhbmQgc3RpbGwgYmUgY29tcGxpYW50LiAgV2hlbiB0aGUgemxpYiBkYXRhIGZvcm1hdAorICAgICAgaXMgYmVpbmcgdXNlZCBhcyBhIHBhcnQgb2YgYW5vdGhlciBzdGFuZGFyZCBmb3JtYXQsIGEgY29tcGxpYW50CisgICAgICBkZWNvbXByZXNzb3IgbXVzdCBzdXBwb3J0IGFsbCB0aGUgcHJlc2V0IGRpY3Rpb25hcmllcyBzcGVjaWZpZWQgYnkKKyAgICAgIHRoZSBvdGhlciBmb3JtYXQuIFdoZW4gdGhlIG90aGVyIGZvcm1hdCBkb2VzIG5vdCB1c2UgdGhlIHByZXNldAorICAgICAgZGljdGlvbmFyeSBmZWF0dXJlLCBhIGNvbXBsaWFudCBkZWNvbXByZXNzb3IgbXVzdCByZWplY3QgYW55CisgICAgICBzdHJlYW0gaW4gd2hpY2ggdGhlIEZESUNUIGZsYWcgaXMgc2V0LgorCiszLiBSZWZlcmVuY2VzCisKKyAgIFsxXSBEZXV0c2NoLCBMLlAuLCJHWklQIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiIsCisgICAgICAgYXZhaWxhYmxlIGluIGZ0cDovL2Z0cC51dS5uZXQvcHViL2FyY2hpdmluZy96aXAvZG9jLworCisgICBbMl0gVGhvbWFzIEJvdXRlbGwsICJQTkcgKFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MpIHNwZWNpZmljYXRpb24iLAorICAgICAgIGF2YWlsYWJsZSBpbiBmdHA6Ly9mdHAudXUubmV0L2dyYXBoaWNzL3BuZy9kb2N1bWVudHMvCisKKyAgIFszXSBEZXV0c2NoLCBMLlAuLCJERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiIsCisgICAgICAgYXZhaWxhYmxlIGluIGZ0cDovL2Z0cC51dS5uZXQvcHViL2FyY2hpdmluZy96aXAvZG9jLworCisgICBbNF0gRmxldGNoZXIsIEouIEcuLCAiQW4gQXJpdGhtZXRpYyBDaGVja3N1bSBmb3IgU2VyaWFsCisgICAgICAgVHJhbnNtaXNzaW9ucywiIElFRUUgVHJhbnNhY3Rpb25zIG9uIENvbW11bmljYXRpb25zLCBWb2wuIENPTS0zMCwKKyAgICAgICBOby4gMSwgSmFudWFyeSAxOTgyLCBwcC4gMjQ3LTI1Mi4KKworICAgWzVdIElUVS1UIFJlY29tbWVuZGF0aW9uIFguMjI0LCBBbm5leCBELCAiQ2hlY2tzdW0gQWxnb3JpdGhtcywiCisgICAgICAgTm92ZW1iZXIsIDE5OTMsIHBwLiAxNDQsIDE0NS4gKEF2YWlsYWJsZSBmcm9tCisgICAgICAgZ29waGVyOi8vaW5mby5pdHUuY2gpLiBJVFUtVCBYLjI0NCBpcyBhbHNvIHRoZSBzYW1lIGFzIElTTyA4MDczLgorCisKKworCisKKworCitEZXV0c2NoICYgR2FpbGx5ICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgN10KKwwKK1JGQyAxOTUwICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICBNYXkgMTk5NgorCisKKzQuIFNvdXJjZSBjb2RlCisKKyAgIFNvdXJjZSBjb2RlIGZvciBhIEMgbGFuZ3VhZ2UgaW1wbGVtZW50YXRpb24gb2YgYSAiemxpYiIgY29tcGxpYW50CisgICBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhdCBmdHA6Ly9mdHAudXUubmV0L3B1Yi9hcmNoaXZpbmcvemlwL3psaWIvLgorCis1LiBTZWN1cml0eSBDb25zaWRlcmF0aW9ucworCisgICBBIGRlY29kZXIgdGhhdCBmYWlscyB0byBjaGVjayB0aGUgQURMRVIzMiBjaGVja3N1bSB2YWx1ZSBtYXkgYmUKKyAgIHN1YmplY3QgdG8gdW5kZXRlY3RlZCBkYXRhIGNvcnJ1cHRpb24uCisKKzYuIEFja25vd2xlZGdlbWVudHMKKworICAgVHJhZGVtYXJrcyBjaXRlZCBpbiB0aGlzIGRvY3VtZW50IGFyZSB0aGUgcHJvcGVydHkgb2YgdGhlaXIKKyAgIHJlc3BlY3RpdmUgb3duZXJzLgorCisgICBKZWFuLUxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyIGRlc2lnbmVkIHRoZSB6bGliIGZvcm1hdCBhbmQgd3JvdGUKKyAgIHRoZSByZWxhdGVkIHNvZnR3YXJlIGRlc2NyaWJlZCBpbiB0aGlzIHNwZWNpZmljYXRpb24uICBHbGVubgorICAgUmFuZGVycy1QZWhyc29uIGNvbnZlcnRlZCB0aGlzIGRvY3VtZW50IHRvIFJGQyBhbmQgSFRNTCBmb3JtYXQuCisKKzcuIEF1dGhvcnMnIEFkZHJlc3NlcworCisgICBMLiBQZXRlciBEZXV0c2NoCisgICBBbGFkZGluIEVudGVycHJpc2VzCisgICAyMDMgU2FudGEgTWFyZ2FyaXRhIEF2ZS4KKyAgIE1lbmxvIFBhcmssIENBIDk0MDI1CisKKyAgIFBob25lOiAoNDE1KSAzMjItMDEwMyAoQU0gb25seSkKKyAgIEZBWDogICAoNDE1KSAzMjItMTczNAorICAgRU1haWw6IDxnaG9zdEBhbGFkZGluLmNvbT4KKworCisgICBKZWFuLUxvdXAgR2FpbGx5CisKKyAgIEVNYWlsOiA8Z3ppcEBwcmVwLmFpLm1pdC5lZHU+CisKKyAgIFF1ZXN0aW9ucyBhYm91dCB0aGUgdGVjaG5pY2FsIGNvbnRlbnQgb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGNhbiBiZQorICAgc2VudCBieSBlbWFpbCB0bworCisgICBKZWFuLUxvdXAgR2FpbGx5IDxnemlwQHByZXAuYWkubWl0LmVkdT4gYW5kCisgICBNYXJrIEFkbGVyIDxtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1PgorCisgICBFZGl0b3JpYWwgY29tbWVudHMgb24gdGhpcyBzcGVjaWZpY2F0aW9uIGNhbiBiZSBzZW50IGJ5IGVtYWlsIHRvCisKKyAgIEwuIFBldGVyIERldXRzY2ggPGdob3N0QGFsYWRkaW4uY29tPiBhbmQKKyAgIEdsZW5uIFJhbmRlcnMtUGVocnNvbiA8cmFuZGVnQGFsdW1uaS5ycGkuZWR1PgorCisKKworCisKKworRGV1dHNjaCAmIEdhaWxseSAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDhdCisMCitSRkMgMTk1MCAgICAgICBaTElCIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgTWF5IDE5OTYKKworCis4LiBBcHBlbmRpeDogUmF0aW9uYWxlCisKKyAgIDguMS4gUHJlc2V0IGRpY3Rpb25hcmllcworCisgICAgICBBIHByZXNldCBkaWN0aW9uYXJ5IGlzIHNwZWNpYWxseSB1c2VmdWwgdG8gY29tcHJlc3Mgc2hvcnQgaW5wdXQKKyAgICAgIHNlcXVlbmNlcy4gVGhlIGNvbXByZXNzb3IgY2FuIHRha2UgYWR2YW50YWdlIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICBjb250ZXh0IHRvIGVuY29kZSB0aGUgaW5wdXQgaW4gYSBtb3JlIGNvbXBhY3QgbWFubmVyLiBUaGUKKyAgICAgIGRlY29tcHJlc3NvciBjYW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29udGV4dCBieQorICAgICAgdmlydHVhbGx5IGRlY29tcHJlc3NpbmcgYSBjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRpY3Rpb25hcnkKKyAgICAgIHdpdGhvdXQgcHJvZHVjaW5nIGFueSBvdXRwdXQuIEhvd2V2ZXIgZm9yIGNlcnRhaW4gY29tcHJlc3Npb24KKyAgICAgIGFsZ29yaXRobXMgc3VjaCBhcyB0aGUgZGVmbGF0ZSBhbGdvcml0aG0gdGhpcyBvcGVyYXRpb24gY2FuIGJlCisgICAgICBhY2hpZXZlZCB3aXRob3V0IGFjdHVhbGx5IHBlcmZvcm1pbmcgYW55IGRlY29tcHJlc3Npb24uCisKKyAgICAgIFRoZSBjb21wcmVzc29yIGFuZCB0aGUgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAgIGRpY3Rpb25hcnkuIFRoZSBkaWN0aW9uYXJ5IG1heSBiZSBmaXhlZCBvciBtYXkgYmUgY2hvc2VuIGFtb25nIGEKKyAgICAgIGNlcnRhaW4gbnVtYmVyIG9mIHByZWRlZmluZWQgZGljdGlvbmFyaWVzLCBhY2NvcmRpbmcgdG8gdGhlIGtpbmQKKyAgICAgIG9mIGlucHV0IGRhdGEuIFRoZSBkZWNvbXByZXNzb3IgY2FuIGRldGVybWluZSB3aGljaCBkaWN0aW9uYXJ5IGhhcworICAgICAgYmVlbiBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IgYnkgY2hlY2tpbmcgdGhlIGRpY3Rpb25hcnkKKyAgICAgIGlkZW50aWZpZXIuIFRoaXMgZG9jdW1lbnQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgY29udGVudHMgb2YKKyAgICAgIHByZWRlZmluZWQgZGljdGlvbmFyaWVzLCBzaW5jZSB0aGUgb3B0aW1hbCBkaWN0aW9uYXJpZXMgYXJlCisgICAgICBhcHBsaWNhdGlvbiBzcGVjaWZpYy4gU3RhbmRhcmQgZGF0YSBmb3JtYXRzIHVzaW5nIHRoaXMgZmVhdHVyZSBvZgorICAgICAgdGhlIHpsaWIgc3BlY2lmaWNhdGlvbiBtdXN0IHByZWNpc2VseSBkZWZpbmUgdGhlIGFsbG93ZWQKKyAgICAgIGRpY3Rpb25hcmllcy4KKworICAgOC4yLiBUaGUgQWRsZXItMzIgYWxnb3JpdGhtCisKKyAgICAgIFRoZSBBZGxlci0zMiBhbGdvcml0aG0gaXMgbXVjaCBmYXN0ZXIgdGhhbiB0aGUgQ1JDMzIgYWxnb3JpdGhtIHlldAorICAgICAgc3RpbGwgcHJvdmlkZXMgYW4gZXh0cmVtZWx5IGxvdyBwcm9iYWJpbGl0eSBvZiB1bmRldGVjdGVkIGVycm9ycy4KKworICAgICAgVGhlIG1vZHVsbyBvbiB1bnNpZ25lZCBsb25nIGFjY3VtdWxhdG9ycyBjYW4gYmUgZGVsYXllZCBmb3IgNTU1MgorICAgICAgYnl0ZXMsIHNvIHRoZSBtb2R1bG8gb3BlcmF0aW9uIHRpbWUgaXMgbmVnbGlnaWJsZS4gIElmIHRoZSBieXRlcworICAgICAgYXJlIGEsIGIsIGMsIHRoZSBzZWNvbmQgc3VtIGlzIDNhICsgMmIgKyBjICsgMywgYW5kIHNvIGlzIHBvc2l0aW9uCisgICAgICBhbmQgb3JkZXIgc2Vuc2l0aXZlLCB1bmxpa2UgdGhlIGZpcnN0IHN1bSwgd2hpY2ggaXMganVzdCBhCisgICAgICBjaGVja3N1bS4gIFRoYXQgNjU1MjEgaXMgcHJpbWUgaXMgaW1wb3J0YW50IHRvIGF2b2lkIGEgcG9zc2libGUKKyAgICAgIGxhcmdlIGNsYXNzIG9mIHR3by1ieXRlIGVycm9ycyB0aGF0IGxlYXZlIHRoZSBjaGVjayB1bmNoYW5nZWQuCisgICAgICAoVGhlIEZsZXRjaGVyIGNoZWNrc3VtIHVzZXMgMjU1LCB3aGljaCBpcyBub3QgcHJpbWUgYW5kIHdoaWNoIGFsc28KKyAgICAgIG1ha2VzIHRoZSBGbGV0Y2hlciBjaGVjayBpbnNlbnNpdGl2ZSB0byBzaW5nbGUgYnl0ZSBjaGFuZ2VzIDAgPC0+CisgICAgICAyNTUuKQorCisgICAgICBUaGUgc3VtIHMxIGlzIGluaXRpYWxpemVkIHRvIDEgaW5zdGVhZCBvZiB6ZXJvIHRvIG1ha2UgdGhlIGxlbmd0aAorICAgICAgb2YgdGhlIHNlcXVlbmNlIHBhcnQgb2YgczIsIHNvIHRoYXQgdGhlIGxlbmd0aCBkb2VzIG5vdCBoYXZlIHRvIGJlCisgICAgICBjaGVja2VkIHNlcGFyYXRlbHkuIChBbnkgc2VxdWVuY2Ugb2YgemVyb2VzIGhhcyBhIEZsZXRjaGVyCisgICAgICBjaGVja3N1bSBvZiB6ZXJvLikKKworCisKKworCisKKworCitEZXV0c2NoICYgR2FpbGx5ICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgOV0KKwwKK1JGQyAxOTUwICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICBNYXkgMTk5NgorCisKKzkuIEFwcGVuZGl4OiBTYW1wbGUgY29kZQorCisgICBUaGUgZm9sbG93aW5nIEMgY29kZSBjb21wdXRlcyB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgYSBkYXRhIGJ1ZmZlci4KKyAgIEl0IGlzIHdyaXR0ZW4gZm9yIGNsYXJpdHksIG5vdCBmb3Igc3BlZWQuICBUaGUgc2FtcGxlIGNvZGUgaXMgaW4gdGhlCisgICBBTlNJIEMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIE5vbiBDIHVzZXJzIG1heSBmaW5kIGl0IGVhc2llciB0byByZWFkCisgICB3aXRoIHRoZXNlIGhpbnRzOgorCisgICAgICAmICAgICAgQml0d2lzZSBBTkQgb3BlcmF0b3IuCisgICAgICA+PiAgICAgQml0d2lzZSByaWdodCBzaGlmdCBvcGVyYXRvci4gV2hlbiBhcHBsaWVkIHRvIGFuCisgICAgICAgICAgICAgdW5zaWduZWQgcXVhbnRpdHksIGFzIGhlcmUsIHJpZ2h0IHNoaWZ0IGluc2VydHMgemVybyBiaXQocykKKyAgICAgICAgICAgICBhdCB0aGUgbGVmdC4KKyAgICAgIDw8ICAgICBCaXR3aXNlIGxlZnQgc2hpZnQgb3BlcmF0b3IuIExlZnQgc2hpZnQgaW5zZXJ0cyB6ZXJvCisgICAgICAgICAgICAgYml0KHMpIGF0IHRoZSByaWdodC4KKyAgICAgICsrICAgICAibisrIiBpbmNyZW1lbnRzIHRoZSB2YXJpYWJsZSBuLgorICAgICAgJSAgICAgIG1vZHVsbyBvcGVyYXRvcjogYSAlIGIgaXMgdGhlIHJlbWFpbmRlciBvZiBhIGRpdmlkZWQgYnkgYi4KKworICAgICAgI2RlZmluZSBCQVNFIDY1NTIxIC8qIGxhcmdlc3QgcHJpbWUgc21hbGxlciB0aGFuIDY1NTM2ICovCisKKyAgICAgIC8qCisgICAgICAgICBVcGRhdGUgYSBydW5uaW5nIEFkbGVyLTMyIGNoZWNrc3VtIHdpdGggdGhlIGJ5dGVzIGJ1ZlswLi5sZW4tMV0KKyAgICAgICBhbmQgcmV0dXJuIHRoZSB1cGRhdGVkIGNoZWNrc3VtLiBUaGUgQWRsZXItMzIgY2hlY2tzdW0gc2hvdWxkIGJlCisgICAgICAgaW5pdGlhbGl6ZWQgdG8gMS4KKworICAgICAgIFVzYWdlIGV4YW1wbGU6CisKKyAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRsZXIgPSAxTDsKKworICAgICAgICAgd2hpbGUgKHJlYWRfYnVmZmVyKGJ1ZmZlciwgbGVuZ3RoKSAhPSBFT0YpIHsKKyAgICAgICAgICAgYWRsZXIgPSB1cGRhdGVfYWRsZXIzMihhZGxlciwgYnVmZmVyLCBsZW5ndGgpOworICAgICAgICAgfQorICAgICAgICAgaWYgKGFkbGVyICE9IG9yaWdpbmFsX2FkbGVyKSBlcnJvcigpOworICAgICAgKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgdXBkYXRlX2FkbGVyMzIodW5zaWduZWQgbG9uZyBhZGxlciwKKyAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbikKKyAgICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzMSA9IGFkbGVyICYgMHhmZmZmOworICAgICAgICB1bnNpZ25lZCBsb25nIHMyID0gKGFkbGVyID4+IDE2KSAmIDB4ZmZmZjsKKyAgICAgICAgaW50IG47CisKKyAgICAgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgbisrKSB7CisgICAgICAgICAgczEgPSAoczEgKyBidWZbbl0pICUgQkFTRTsKKyAgICAgICAgICBzMiA9IChzMiArIHMxKSAgICAgJSBCQVNFOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoczIgPDwgMTYpICsgczE7CisgICAgICB9CisKKyAgICAgIC8qIFJldHVybiB0aGUgYWRsZXIzMiBvZiB0aGUgYnl0ZXMgYnVmWzAuLmxlbi0xXSAqLworCisKKworCitEZXV0c2NoICYgR2FpbGx5ICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxMF0KKwwKK1JGQyAxOTUwICAgICAgIFpMSUIgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICBNYXkgMTk5NgorCisKKyAgICAgIHVuc2lnbmVkIGxvbmcgYWRsZXIzMih1bnNpZ25lZCBjaGFyICpidWYsIGludCBsZW4pCisgICAgICB7CisgICAgICAgIHJldHVybiB1cGRhdGVfYWRsZXIzMigxTCwgYnVmLCBsZW4pOworICAgICAgfQorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKK0RldXRzY2ggJiBHYWlsbHkgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDExXQorDApkaWZmIC0tZ2l0IGEvZG9jL3JmYzE5NTEudHh0IGIvZG9jL3JmYzE5NTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwM2M4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmZjMTk1MS50eHQKQEAgLTAsMCArMSw5NTUgQEAKKworCisKKworCisKK05ldHdvcmsgV29ya2luZyBHcm91cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUC4gRGV1dHNjaAorUmVxdWVzdCBmb3IgQ29tbWVudHM6IDE5NTEgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGFkZGluIEVudGVycHJpc2VzCitDYXRlZ29yeTogSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF5IDE5OTYKKworCisgICAgICAgIERFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uIHZlcnNpb24gMS4zCisKK1N0YXR1cyBvZiBUaGlzIE1lbW8KKworICAgVGhpcyBtZW1vIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciB0aGUgSW50ZXJuZXQgY29tbXVuaXR5LiAgVGhpcyBtZW1vCisgICBkb2VzIG5vdCBzcGVjaWZ5IGFuIEludGVybmV0IHN0YW5kYXJkIG9mIGFueSBraW5kLiAgRGlzdHJpYnV0aW9uIG9mCisgICB0aGlzIG1lbW8gaXMgdW5saW1pdGVkLgorCitJRVNHIE5vdGU6CisKKyAgIFRoZSBJRVNHIHRha2VzIG5vIHBvc2l0aW9uIG9uIHRoZSB2YWxpZGl0eSBvZiBhbnkgSW50ZWxsZWN0dWFsCisgICBQcm9wZXJ0eSBSaWdodHMgc3RhdGVtZW50cyBjb250YWluZWQgaW4gdGhpcyBkb2N1bWVudC4KKworTm90aWNlcworCisgICBDb3B5cmlnaHQgKGMpIDE5OTYgTC4gUGV0ZXIgRGV1dHNjaAorCisgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGRvY3VtZW50IGZvciBhbnkKKyAgIHB1cnBvc2UgYW5kIHdpdGhvdXQgY2hhcmdlLCBpbmNsdWRpbmcgdHJhbnNsYXRpb25zIGludG8gb3RoZXIKKyAgIGxhbmd1YWdlcyBhbmQgaW5jb3Jwb3JhdGlvbiBpbnRvIGNvbXBpbGF0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGUKKyAgIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQsIGFuZCB0aGF0IGFueQorICAgc3Vic3RhbnRpdmUgY2hhbmdlcyBvciBkZWxldGlvbnMgZnJvbSB0aGUgb3JpZ2luYWwgYXJlIGNsZWFybHkKKyAgIG1hcmtlZC4KKworICAgQSBwb2ludGVyIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGFuZCByZWxhdGVkIGRvY3VtZW50YXRpb24gaW4KKyAgIEhUTUwgZm9ybWF0IGNhbiBiZSBmb3VuZCBhdCB0aGUgVVJMCisgICA8ZnRwOi8vZnRwLnV1Lm5ldC9ncmFwaGljcy9wbmcvZG9jdW1lbnRzL3psaWIvemRvYy1pbmRleC5odG1sPi4KKworQWJzdHJhY3QKKworICAgVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBsb3NzbGVzcyBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHRoYXQKKyAgIGNvbXByZXNzZXMgZGF0YSB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBMWjc3IGFsZ29yaXRobSBhbmQgSHVmZm1hbgorICAgY29kaW5nLCB3aXRoIGVmZmljaWVuY3kgY29tcGFyYWJsZSB0byB0aGUgYmVzdCBjdXJyZW50bHkgYXZhaWxhYmxlCisgICBnZW5lcmFsLXB1cnBvc2UgY29tcHJlc3Npb24gbWV0aG9kcy4gIFRoZSBkYXRhIGNhbiBiZSBwcm9kdWNlZCBvcgorICAgY29uc3VtZWQsIGV2ZW4gZm9yIGFuIGFyYml0cmFyaWx5IGxvbmcgc2VxdWVudGlhbGx5IHByZXNlbnRlZCBpbnB1dAorICAgZGF0YSBzdHJlYW0sIHVzaW5nIG9ubHkgYW4gYSBwcmlvcmkgYm91bmRlZCBhbW91bnQgb2YgaW50ZXJtZWRpYXRlCisgICBzdG9yYWdlLiAgVGhlIGZvcm1hdCBjYW4gYmUgaW1wbGVtZW50ZWQgcmVhZGlseSBpbiBhIG1hbm5lciBub3QKKyAgIGNvdmVyZWQgYnkgcGF0ZW50cy4KKworCisKKworCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgMV0KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKK1RhYmxlIG9mIENvbnRlbnRzCisKKyAgIDEuIEludHJvZHVjdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMgorICAgICAgMS4xLiBQdXJwb3NlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyCisgICAgICAxLjIuIEludGVuZGVkIGF1ZGllbmNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMKKyAgICAgIDEuMy4gU2NvcGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMworICAgICAgMS40LiBDb21wbGlhbmNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzCisgICAgICAxLjUuICBEZWZpbml0aW9ucyBvZiB0ZXJtcyBhbmQgY29udmVudGlvbnMgdXNlZCAuLi4uLi4uLi4uLi4uLi4uIDMKKyAgICAgIDEuNi4gQ2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNAorICAgMi4gQ29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvdmVydmlldyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0CisgICAzLiBEZXRhaWxlZCBzcGVjaWZpY2F0aW9uIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDUKKyAgICAgIDMuMS4gT3ZlcmFsbCBjb252ZW50aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNQorICAgICAgICAgIDMuMS4xLiBQYWNraW5nIGludG8gYnl0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1CisgICAgICAzLjIuIENvbXByZXNzZWQgYmxvY2sgZm9ybWF0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDYKKyAgICAgICAgICAzLjIuMS4gU3lub3BzaXMgb2YgcHJlZml4IGFuZCBIdWZmbWFuIGNvZGluZyAuLi4uLi4uLi4uLi4uLi4gNgorICAgICAgICAgIDMuMi4yLiBVc2Ugb2YgSHVmZm1hbiBjb2RpbmcgaW4gdGhlICJkZWZsYXRlIiBmb3JtYXQgLi4uLi4uLiA3CisgICAgICAgICAgMy4yLjMuIERldGFpbHMgb2YgYmxvY2sgZm9ybWF0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDkKKyAgICAgICAgICAzLjIuNC4gTm9uLWNvbXByZXNzZWQgYmxvY2tzIChCVFlQRT0wMCkgLi4uLi4uLi4uLi4uLi4uLi4uLiAxMQorICAgICAgICAgIDMuMi41LiBDb21wcmVzc2VkIGJsb2NrcyAobGVuZ3RoIGFuZCBkaXN0YW5jZSBjb2RlcykgLi4uLi4uIDExCisgICAgICAgICAgMy4yLjYuIENvbXByZXNzaW9uIHdpdGggZml4ZWQgSHVmZm1hbiBjb2RlcyAoQlRZUEU9MDEpIC4uLi4gMTIKKyAgICAgICAgICAzLjIuNy4gQ29tcHJlc3Npb24gd2l0aCBkeW5hbWljIEh1ZmZtYW4gY29kZXMgKEJUWVBFPTEwKSAuLiAxMworICAgICAgMy4zLiBDb21wbGlhbmNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE0CisgICA0LiBDb21wcmVzc2lvbiBhbGdvcml0aG0gZGV0YWlscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMTQKKyAgIDUuIFJlZmVyZW5jZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxNgorICAgNi4gU2VjdXJpdHkgQ29uc2lkZXJhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE2CisgICA3LiBTb3VyY2UgY29kZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMTYKKyAgIDguIEFja25vd2xlZGdlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxNgorICAgOS4gQXV0aG9yJ3MgQWRkcmVzcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE3CisKKzEuIEludHJvZHVjdGlvbgorCisgICAxLjEuIFB1cnBvc2UKKworICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGlzIHRvIGRlZmluZSBhIGxvc3NsZXNzCisgICAgICBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHRoYXQ6CisgICAgICAgICAgKiBJcyBpbmRlcGVuZGVudCBvZiBDUFUgdHlwZSwgb3BlcmF0aW5nIHN5c3RlbSwgZmlsZSBzeXN0ZW0sCisgICAgICAgICAgICBhbmQgY2hhcmFjdGVyIHNldCwgYW5kIGhlbmNlIGNhbiBiZSB1c2VkIGZvciBpbnRlcmNoYW5nZTsKKyAgICAgICAgICAqIENhbiBiZSBwcm9kdWNlZCBvciBjb25zdW1lZCwgZXZlbiBmb3IgYW4gYXJiaXRyYXJpbHkgbG9uZworICAgICAgICAgICAgc2VxdWVudGlhbGx5IHByZXNlbnRlZCBpbnB1dCBkYXRhIHN0cmVhbSwgdXNpbmcgb25seSBhbiBhCisgICAgICAgICAgICBwcmlvcmkgYm91bmRlZCBhbW91bnQgb2YgaW50ZXJtZWRpYXRlIHN0b3JhZ2UsIGFuZCBoZW5jZQorICAgICAgICAgICAgY2FuIGJlIHVzZWQgaW4gZGF0YSBjb21tdW5pY2F0aW9ucyBvciBzaW1pbGFyIHN0cnVjdHVyZXMKKyAgICAgICAgICAgIHN1Y2ggYXMgVW5peCBmaWx0ZXJzOworICAgICAgICAgICogQ29tcHJlc3NlcyBkYXRhIHdpdGggZWZmaWNpZW5jeSBjb21wYXJhYmxlIHRvIHRoZSBiZXN0CisgICAgICAgICAgICBjdXJyZW50bHkgYXZhaWxhYmxlIGdlbmVyYWwtcHVycG9zZSBjb21wcmVzc2lvbiBtZXRob2RzLAorICAgICAgICAgICAgYW5kIGluIHBhcnRpY3VsYXIgY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIHRoZSAiY29tcHJlc3MiCisgICAgICAgICAgICBwcm9ncmFtOworICAgICAgICAgICogQ2FuIGJlIGltcGxlbWVudGVkIHJlYWRpbHkgaW4gYSBtYW5uZXIgbm90IGNvdmVyZWQgYnkKKyAgICAgICAgICAgIHBhdGVudHMsIGFuZCBoZW5jZSBjYW4gYmUgcHJhY3RpY2VkIGZyZWVseTsKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSAyXQorDAorUkZDIDE5NTEgICAgICBERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgIE1heSAxOTk2CisKKworICAgICAgICAgICogSXMgY29tcGF0aWJsZSB3aXRoIHRoZSBmaWxlIGZvcm1hdCBwcm9kdWNlZCBieSB0aGUgY3VycmVudAorICAgICAgICAgICAgd2lkZWx5IHVzZWQgZ3ppcCB1dGlsaXR5LCBpbiB0aGF0IGNvbmZvcm1pbmcgZGVjb21wcmVzc29ycworICAgICAgICAgICAgd2lsbCBiZSBhYmxlIHRvIHJlYWQgZGF0YSBwcm9kdWNlZCBieSB0aGUgZXhpc3RpbmcgZ3ppcAorICAgICAgICAgICAgY29tcHJlc3Nvci4KKworICAgICAgVGhlIGRhdGEgZm9ybWF0IGRlZmluZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGF0dGVtcHQgdG86CisKKyAgICAgICAgICAqIEFsbG93IHJhbmRvbSBhY2Nlc3MgdG8gY29tcHJlc3NlZCBkYXRhOworICAgICAgICAgICogQ29tcHJlc3Mgc3BlY2lhbGl6ZWQgZGF0YSAoZS5nLiwgcmFzdGVyIGdyYXBoaWNzKSBhcyB3ZWxsCisgICAgICAgICAgICBhcyB0aGUgYmVzdCBjdXJyZW50bHkgYXZhaWxhYmxlIHNwZWNpYWxpemVkIGFsZ29yaXRobXMuCisKKyAgICAgIEEgc2ltcGxlIGNvdW50aW5nIGFyZ3VtZW50IHNob3dzIHRoYXQgbm8gbG9zc2xlc3MgY29tcHJlc3Npb24KKyAgICAgIGFsZ29yaXRobSBjYW4gY29tcHJlc3MgZXZlcnkgcG9zc2libGUgaW5wdXQgZGF0YSBzZXQuICBGb3IgdGhlCisgICAgICBmb3JtYXQgZGVmaW5lZCBoZXJlLCB0aGUgd29yc3QgY2FzZSBleHBhbnNpb24gaXMgNSBieXRlcyBwZXIgMzJLLQorICAgICAgYnl0ZSBibG9jaywgaS5lLiwgYSBzaXplIGluY3JlYXNlIG9mIDAuMDE1JSBmb3IgbGFyZ2UgZGF0YSBzZXRzLgorICAgICAgRW5nbGlzaCB0ZXh0IHVzdWFsbHkgY29tcHJlc3NlcyBieSBhIGZhY3RvciBvZiAyLjUgdG8gMzsKKyAgICAgIGV4ZWN1dGFibGUgZmlsZXMgdXN1YWxseSBjb21wcmVzcyBzb21ld2hhdCBsZXNzOyBncmFwaGljYWwgZGF0YQorICAgICAgc3VjaCBhcyByYXN0ZXIgaW1hZ2VzIG1heSBjb21wcmVzcyBtdWNoIG1vcmUuCisKKyAgIDEuMi4gSW50ZW5kZWQgYXVkaWVuY2UKKworICAgICAgVGhpcyBzcGVjaWZpY2F0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgYnkgaW1wbGVtZW50b3JzIG9mIHNvZnR3YXJlCisgICAgICB0byBjb21wcmVzcyBkYXRhIGludG8gImRlZmxhdGUiIGZvcm1hdCBhbmQvb3IgZGVjb21wcmVzcyBkYXRhIGZyb20KKyAgICAgICJkZWZsYXRlIiBmb3JtYXQuCisKKyAgICAgIFRoZSB0ZXh0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFzc3VtZXMgYSBiYXNpYyBiYWNrZ3JvdW5kIGluCisgICAgICBwcm9ncmFtbWluZyBhdCB0aGUgbGV2ZWwgb2YgYml0cyBhbmQgb3RoZXIgcHJpbWl0aXZlIGRhdGEKKyAgICAgIHJlcHJlc2VudGF0aW9ucy4gIEZhbWlsaWFyaXR5IHdpdGggdGhlIHRlY2huaXF1ZSBvZiBIdWZmbWFuIGNvZGluZworICAgICAgaXMgaGVscGZ1bCBidXQgbm90IHJlcXVpcmVkLgorCisgICAxLjMuIFNjb3BlCisKKyAgICAgIFRoZSBzcGVjaWZpY2F0aW9uIHNwZWNpZmllcyBhIG1ldGhvZCBmb3IgcmVwcmVzZW50aW5nIGEgc2VxdWVuY2UKKyAgICAgIG9mIGJ5dGVzIGFzIGEgKHVzdWFsbHkgc2hvcnRlcikgc2VxdWVuY2Ugb2YgYml0cywgYW5kIGEgbWV0aG9kIGZvcgorICAgICAgcGFja2luZyB0aGUgbGF0dGVyIGJpdCBzZXF1ZW5jZSBpbnRvIGJ5dGVzLgorCisgICAxLjQuIENvbXBsaWFuY2UKKworICAgICAgVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIGEgY29tcGxpYW50IGRlY29tcHJlc3NvciBtdXN0IGJlCisgICAgICBhYmxlIHRvIGFjY2VwdCBhbmQgZGVjb21wcmVzcyBhbnkgZGF0YSBzZXQgdGhhdCBjb25mb3JtcyB0byBhbGwKKyAgICAgIHRoZSBzcGVjaWZpY2F0aW9ucyBwcmVzZW50ZWQgaGVyZTsgYSBjb21wbGlhbnQgY29tcHJlc3NvciBtdXN0CisgICAgICBwcm9kdWNlIGRhdGEgc2V0cyB0aGF0IGNvbmZvcm0gdG8gYWxsIHRoZSBzcGVjaWZpY2F0aW9ucyBwcmVzZW50ZWQKKyAgICAgIGhlcmUuCisKKyAgIDEuNS4gIERlZmluaXRpb25zIG9mIHRlcm1zIGFuZCBjb252ZW50aW9ucyB1c2VkCisKKyAgICAgIEJ5dGU6IDggYml0cyBzdG9yZWQgb3IgdHJhbnNtaXR0ZWQgYXMgYSB1bml0IChzYW1lIGFzIGFuIG9jdGV0KS4KKyAgICAgIEZvciB0aGlzIHNwZWNpZmljYXRpb24sIGEgYnl0ZSBpcyBleGFjdGx5IDggYml0cywgZXZlbiBvbiBtYWNoaW5lcworCisKKworRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDNdCisMCitSRkMgMTk1MSAgICAgIERFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgTWF5IDE5OTYKKworCisgICAgICB3aGljaCBzdG9yZSBhIGNoYXJhY3RlciBvbiBhIG51bWJlciBvZiBiaXRzIGRpZmZlcmVudCBmcm9tIGVpZ2h0LgorICAgICAgU2VlIGJlbG93LCBmb3IgdGhlIG51bWJlcmluZyBvZiBiaXRzIHdpdGhpbiBhIGJ5dGUuCisKKyAgICAgIFN0cmluZzogYSBzZXF1ZW5jZSBvZiBhcmJpdHJhcnkgYnl0ZXMuCisKKyAgIDEuNi4gQ2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zCisKKyAgICAgIFRoZXJlIGhhdmUgYmVlbiBubyB0ZWNobmljYWwgY2hhbmdlcyB0byB0aGUgZGVmbGF0ZSBmb3JtYXQgc2luY2UKKyAgICAgIHZlcnNpb24gMS4xIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4gIEluIHZlcnNpb24gMS4yLCBzb21lCisgICAgICB0ZXJtaW5vbG9neSB3YXMgY2hhbmdlZC4gIFZlcnNpb24gMS4zIGlzIGEgY29udmVyc2lvbiBvZiB0aGUKKyAgICAgIHNwZWNpZmljYXRpb24gdG8gUkZDIHN0eWxlLgorCisyLiBDb21wcmVzc2VkIHJlcHJlc2VudGF0aW9uIG92ZXJ2aWV3CisKKyAgIEEgY29tcHJlc3NlZCBkYXRhIHNldCBjb25zaXN0cyBvZiBhIHNlcmllcyBvZiBibG9ja3MsIGNvcnJlc3BvbmRpbmcKKyAgIHRvIHN1Y2Nlc3NpdmUgYmxvY2tzIG9mIGlucHV0IGRhdGEuICBUaGUgYmxvY2sgc2l6ZXMgYXJlIGFyYml0cmFyeSwKKyAgIGV4Y2VwdCB0aGF0IG5vbi1jb21wcmVzc2libGUgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDY1LDUzNSBieXRlcy4KKworICAgRWFjaCBibG9jayBpcyBjb21wcmVzc2VkIHVzaW5nIGEgY29tYmluYXRpb24gb2YgdGhlIExaNzcgYWxnb3JpdGhtCisgICBhbmQgSHVmZm1hbiBjb2RpbmcuIFRoZSBIdWZmbWFuIHRyZWVzIGZvciBlYWNoIGJsb2NrIGFyZSBpbmRlcGVuZGVudAorICAgb2YgdGhvc2UgZm9yIHByZXZpb3VzIG9yIHN1YnNlcXVlbnQgYmxvY2tzOyB0aGUgTFo3NyBhbGdvcml0aG0gbWF5CisgICB1c2UgYSByZWZlcmVuY2UgdG8gYSBkdXBsaWNhdGVkIHN0cmluZyBvY2N1cnJpbmcgaW4gYSBwcmV2aW91cyBibG9jaywKKyAgIHVwIHRvIDMySyBpbnB1dCBieXRlcyBiZWZvcmUuCisKKyAgIEVhY2ggYmxvY2sgY29uc2lzdHMgb2YgdHdvIHBhcnRzOiBhIHBhaXIgb2YgSHVmZm1hbiBjb2RlIHRyZWVzIHRoYXQKKyAgIGRlc2NyaWJlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIHBhcnQsIGFuZCBhCisgICBjb21wcmVzc2VkIGRhdGEgcGFydC4gIChUaGUgSHVmZm1hbiB0cmVlcyB0aGVtc2VsdmVzIGFyZSBjb21wcmVzc2VkCisgICB1c2luZyBIdWZmbWFuIGVuY29kaW5nLikgIFRoZSBjb21wcmVzc2VkIGRhdGEgY29uc2lzdHMgb2YgYSBzZXJpZXMgb2YKKyAgIGVsZW1lbnRzIG9mIHR3byB0eXBlczogbGl0ZXJhbCBieXRlcyAob2Ygc3RyaW5ncyB0aGF0IGhhdmUgbm90IGJlZW4KKyAgIGRldGVjdGVkIGFzIGR1cGxpY2F0ZWQgd2l0aGluIHRoZSBwcmV2aW91cyAzMksgaW5wdXQgYnl0ZXMpLCBhbmQKKyAgIHBvaW50ZXJzIHRvIGR1cGxpY2F0ZWQgc3RyaW5ncywgd2hlcmUgYSBwb2ludGVyIGlzIHJlcHJlc2VudGVkIGFzIGEKKyAgIHBhaXIgPGxlbmd0aCwgYmFja3dhcmQgZGlzdGFuY2U+LiAgVGhlIHJlcHJlc2VudGF0aW9uIHVzZWQgaW4gdGhlCisgICAiZGVmbGF0ZSIgZm9ybWF0IGxpbWl0cyBkaXN0YW5jZXMgdG8gMzJLIGJ5dGVzIGFuZCBsZW5ndGhzIHRvIDI1OAorICAgYnl0ZXMsIGJ1dCBkb2VzIG5vdCBsaW1pdCB0aGUgc2l6ZSBvZiBhIGJsb2NrLCBleGNlcHQgZm9yCisgICB1bmNvbXByZXNzaWJsZSBibG9ja3MsIHdoaWNoIGFyZSBsaW1pdGVkIGFzIG5vdGVkIGFib3ZlLgorCisgICBFYWNoIHR5cGUgb2YgdmFsdWUgKGxpdGVyYWxzLCBkaXN0YW5jZXMsIGFuZCBsZW5ndGhzKSBpbiB0aGUKKyAgIGNvbXByZXNzZWQgZGF0YSBpcyByZXByZXNlbnRlZCB1c2luZyBhIEh1ZmZtYW4gY29kZSwgdXNpbmcgb25lIGNvZGUKKyAgIHRyZWUgZm9yIGxpdGVyYWxzIGFuZCBsZW5ndGhzIGFuZCBhIHNlcGFyYXRlIGNvZGUgdHJlZSBmb3IgZGlzdGFuY2VzLgorICAgVGhlIGNvZGUgdHJlZXMgZm9yIGVhY2ggYmxvY2sgYXBwZWFyIGluIGEgY29tcGFjdCBmb3JtIGp1c3QgYmVmb3JlCisgICB0aGUgY29tcHJlc3NlZCBkYXRhIGZvciB0aGF0IGJsb2NrLgorCisKKworCisKKworCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgNF0KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKKzMuIERldGFpbGVkIHNwZWNpZmljYXRpb24KKworICAgMy4xLiBPdmVyYWxsIGNvbnZlbnRpb25zIEluIHRoZSBkaWFncmFtcyBiZWxvdywgYSBib3ggbGlrZSB0aGlzOgorCisgICAgICAgICArLS0tKworICAgICAgICAgfCAgIHwgPC0tIHRoZSB2ZXJ0aWNhbCBiYXJzIG1pZ2h0IGJlIG1pc3NpbmcKKyAgICAgICAgICstLS0rCisKKyAgICAgIHJlcHJlc2VudHMgb25lIGJ5dGU7IGEgYm94IGxpa2UgdGhpczoKKworICAgICAgICAgKz09PT09PT09PT09PT09KworICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgICAgICAgKz09PT09PT09PT09PT09KworCisgICAgICByZXByZXNlbnRzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGJ5dGVzLgorCisgICAgICBCeXRlcyBzdG9yZWQgd2l0aGluIGEgY29tcHV0ZXIgZG8gbm90IGhhdmUgYSAiYml0IG9yZGVyIiwgc2luY2UKKyAgICAgIHRoZXkgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIGEgdW5pdC4gIEhvd2V2ZXIsIGEgYnl0ZSBjb25zaWRlcmVkIGFzCisgICAgICBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1IGRvZXMgaGF2ZSBhIG1vc3QtIGFuZCBsZWFzdC0KKyAgICAgIHNpZ25pZmljYW50IGJpdCwgYW5kIHNpbmNlIHdlIHdyaXRlIG51bWJlcnMgd2l0aCB0aGUgbW9zdC0KKyAgICAgIHNpZ25pZmljYW50IGRpZ2l0IG9uIHRoZSBsZWZ0LCB3ZSBhbHNvIHdyaXRlIGJ5dGVzIHdpdGggdGhlIG1vc3QtCisgICAgICBzaWduaWZpY2FudCBiaXQgb24gdGhlIGxlZnQuICBJbiB0aGUgZGlhZ3JhbXMgYmVsb3csIHdlIG51bWJlciB0aGUKKyAgICAgIGJpdHMgb2YgYSBieXRlIHNvIHRoYXQgYml0IDAgaXMgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCwgaS5lLiwKKyAgICAgIHRoZSBiaXRzIGFyZSBudW1iZXJlZDoKKworICAgICAgICAgKy0tLS0tLS0tKworICAgICAgICAgfDc2NTQzMjEwfAorICAgICAgICAgKy0tLS0tLS0tKworCisgICAgICBXaXRoaW4gYSBjb21wdXRlciwgYSBudW1iZXIgbWF5IG9jY3VweSBtdWx0aXBsZSBieXRlcy4gIEFsbAorICAgICAgbXVsdGktYnl0ZSBudW1iZXJzIGluIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUgYXJlIHN0b3JlZCB3aXRoCisgICAgICB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAoYXQgdGhlIGxvd2VyIG1lbW9yeSBhZGRyZXNzKS4KKyAgICAgIEZvciBleGFtcGxlLCB0aGUgZGVjaW1hbCBudW1iZXIgNTIwIGlzIHN0b3JlZCBhczoKKworICAgICAgICAgICAgIDAgICAgICAgIDEKKyAgICAgICAgICstLS0tLS0tLSstLS0tLS0tLSsKKyAgICAgICAgIHwwMDAwMTAwMHwwMDAwMDAxMHwKKyAgICAgICAgICstLS0tLS0tLSstLS0tLS0tLSsKKyAgICAgICAgICBeICAgICAgICBeCisgICAgICAgICAgfCAgICAgICAgfAorICAgICAgICAgIHwgICAgICAgICsgbW9yZSBzaWduaWZpY2FudCBieXRlID0gMiB4IDI1NgorICAgICAgICAgICsgbGVzcyBzaWduaWZpY2FudCBieXRlID0gOAorCisgICAgICAzLjEuMS4gUGFja2luZyBpbnRvIGJ5dGVzCisKKyAgICAgICAgIFRoaXMgZG9jdW1lbnQgZG9lcyBub3QgYWRkcmVzcyB0aGUgaXNzdWUgb2YgdGhlIG9yZGVyIGluIHdoaWNoCisgICAgICAgICBiaXRzIG9mIGEgYnl0ZSBhcmUgdHJhbnNtaXR0ZWQgb24gYSBiaXQtc2VxdWVudGlhbCBtZWRpdW0sCisgICAgICAgICBzaW5jZSB0aGUgZmluYWwgZGF0YSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUgaXMgYnl0ZS0gcmF0aGVyIHRoYW4KKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSA1XQorDAorUkZDIDE5NTEgICAgICBERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgIE1heSAxOTk2CisKKworICAgICAgICAgYml0LW9yaWVudGVkLiAgSG93ZXZlciwgd2UgZGVzY3JpYmUgdGhlIGNvbXByZXNzZWQgYmxvY2sgZm9ybWF0CisgICAgICAgICBpbiBiZWxvdywgYXMgYSBzZXF1ZW5jZSBvZiBkYXRhIGVsZW1lbnRzIG9mIHZhcmlvdXMgYml0CisgICAgICAgICBsZW5ndGhzLCBub3QgYSBzZXF1ZW5jZSBvZiBieXRlcy4gIFdlIG11c3QgdGhlcmVmb3JlIHNwZWNpZnkKKyAgICAgICAgIGhvdyB0byBwYWNrIHRoZXNlIGRhdGEgZWxlbWVudHMgaW50byBieXRlcyB0byBmb3JtIHRoZSBmaW5hbAorICAgICAgICAgY29tcHJlc3NlZCBieXRlIHNlcXVlbmNlOgorCisgICAgICAgICAgICAgKiBEYXRhIGVsZW1lbnRzIGFyZSBwYWNrZWQgaW50byBieXRlcyBpbiBvcmRlciBvZgorICAgICAgICAgICAgICAgaW5jcmVhc2luZyBiaXQgbnVtYmVyIHdpdGhpbiB0aGUgYnl0ZSwgaS5lLiwgc3RhcnRpbmcKKyAgICAgICAgICAgICAgIHdpdGggdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCBvZiB0aGUgYnl0ZS4KKyAgICAgICAgICAgICAqIERhdGEgZWxlbWVudHMgb3RoZXIgdGhhbiBIdWZmbWFuIGNvZGVzIGFyZSBwYWNrZWQKKyAgICAgICAgICAgICAgIHN0YXJ0aW5nIHdpdGggdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCBvZiB0aGUgZGF0YQorICAgICAgICAgICAgICAgZWxlbWVudC4KKyAgICAgICAgICAgICAqIEh1ZmZtYW4gY29kZXMgYXJlIHBhY2tlZCBzdGFydGluZyB3aXRoIHRoZSBtb3N0LQorICAgICAgICAgICAgICAgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBjb2RlLgorCisgICAgICAgICBJbiBvdGhlciB3b3JkcywgaWYgb25lIHdlcmUgdG8gcHJpbnQgb3V0IHRoZSBjb21wcmVzc2VkIGRhdGEgYXMKKyAgICAgICAgIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IGJ5dGUgYXQgdGhlCisgICAgICAgICAqcmlnaHQqIG1hcmdpbiBhbmQgcHJvY2VlZGluZyB0byB0aGUgKmxlZnQqLCB3aXRoIHRoZSBtb3N0LQorICAgICAgICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggYnl0ZSBvbiB0aGUgbGVmdCBhcyB1c3VhbCwgb25lIHdvdWxkIGJlCisgICAgICAgICBhYmxlIHRvIHBhcnNlIHRoZSByZXN1bHQgZnJvbSByaWdodCB0byBsZWZ0LCB3aXRoIGZpeGVkLXdpZHRoCisgICAgICAgICBlbGVtZW50cyBpbiB0aGUgY29ycmVjdCBNU0ItdG8tTFNCIG9yZGVyIGFuZCBIdWZmbWFuIGNvZGVzIGluCisgICAgICAgICBiaXQtcmV2ZXJzZWQgb3JkZXIgKGkuZS4sIHdpdGggdGhlIGZpcnN0IGJpdCBvZiB0aGUgY29kZSBpbiB0aGUKKyAgICAgICAgIHJlbGF0aXZlIExTQiBwb3NpdGlvbikuCisKKyAgIDMuMi4gQ29tcHJlc3NlZCBibG9jayBmb3JtYXQKKworICAgICAgMy4yLjEuIFN5bm9wc2lzIG9mIHByZWZpeCBhbmQgSHVmZm1hbiBjb2RpbmcKKworICAgICAgICAgUHJlZml4IGNvZGluZyByZXByZXNlbnRzIHN5bWJvbHMgZnJvbSBhbiBhIHByaW9yaSBrbm93bgorICAgICAgICAgYWxwaGFiZXQgYnkgYml0IHNlcXVlbmNlcyAoY29kZXMpLCBvbmUgY29kZSBmb3IgZWFjaCBzeW1ib2wsIGluCisgICAgICAgICBhIG1hbm5lciBzdWNoIHRoYXQgZGlmZmVyZW50IHN5bWJvbHMgbWF5IGJlIHJlcHJlc2VudGVkIGJ5IGJpdAorICAgICAgICAgc2VxdWVuY2VzIG9mIGRpZmZlcmVudCBsZW5ndGhzLCBidXQgYSBwYXJzZXIgY2FuIGFsd2F5cyBwYXJzZQorICAgICAgICAgYW4gZW5jb2RlZCBzdHJpbmcgdW5hbWJpZ3VvdXNseSBzeW1ib2wtYnktc3ltYm9sLgorCisgICAgICAgICBXZSBkZWZpbmUgYSBwcmVmaXggY29kZSBpbiB0ZXJtcyBvZiBhIGJpbmFyeSB0cmVlIGluIHdoaWNoIHRoZQorICAgICAgICAgdHdvIGVkZ2VzIGRlc2NlbmRpbmcgZnJvbSBlYWNoIG5vbi1sZWFmIG5vZGUgYXJlIGxhYmVsZWQgMCBhbmQKKyAgICAgICAgIDEgYW5kIGluIHdoaWNoIHRoZSBsZWFmIG5vZGVzIGNvcnJlc3BvbmQgb25lLWZvci1vbmUgd2l0aCAoYXJlCisgICAgICAgICBsYWJlbGVkIHdpdGgpIHRoZSBzeW1ib2xzIG9mIHRoZSBhbHBoYWJldDsgdGhlbiB0aGUgY29kZSBmb3IgYQorICAgICAgICAgc3ltYm9sIGlzIHRoZSBzZXF1ZW5jZSBvZiAwJ3MgYW5kIDEncyBvbiB0aGUgZWRnZXMgbGVhZGluZyBmcm9tCisgICAgICAgICB0aGUgcm9vdCB0byB0aGUgbGVhZiBsYWJlbGVkIHdpdGggdGhhdCBzeW1ib2wuICBGb3IgZXhhbXBsZToKKworCisKKworCisKKworCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgNl0KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgL1wgICAgICAgICAgICAgIFN5bWJvbCAgICBDb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAgMSAgICAgICAgICAgICAtLS0tLS0gICAgLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgLyAgICBcICAgICAgICAgICAgICAgIEEgICAgICAwMAorICAgICAgICAgICAgICAgICAgICAgICAvXCAgICAgQiAgICAgICAgICAgICAgIEIgICAgICAgMQorICAgICAgICAgICAgICAgICAgICAgIDAgIDEgICAgICAgICAgICAgICAgICAgIEMgICAgIDAxMQorICAgICAgICAgICAgICAgICAgICAgLyAgICBcICAgICAgICAgICAgICAgICAgIEQgICAgIDAxMAorICAgICAgICAgICAgICAgICAgICBBICAgICAvXAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgIDEKKyAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgXAorICAgICAgICAgICAgICAgICAgICAgICBEICAgICAgQworCisgICAgICAgICBBIHBhcnNlciBjYW4gZGVjb2RlIHRoZSBuZXh0IHN5bWJvbCBmcm9tIGFuIGVuY29kZWQgaW5wdXQKKyAgICAgICAgIHN0cmVhbSBieSB3YWxraW5nIGRvd24gdGhlIHRyZWUgZnJvbSB0aGUgcm9vdCwgYXQgZWFjaCBzdGVwCisgICAgICAgICBjaG9vc2luZyB0aGUgZWRnZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXh0IGlucHV0IGJpdC4KKworICAgICAgICAgR2l2ZW4gYW4gYWxwaGFiZXQgd2l0aCBrbm93biBzeW1ib2wgZnJlcXVlbmNpZXMsIHRoZSBIdWZmbWFuCisgICAgICAgICBhbGdvcml0aG0gYWxsb3dzIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gb3B0aW1hbCBwcmVmaXggY29kZQorICAgICAgICAgKG9uZSB3aGljaCByZXByZXNlbnRzIHN0cmluZ3Mgd2l0aCB0aG9zZSBzeW1ib2wgZnJlcXVlbmNpZXMKKyAgICAgICAgIHVzaW5nIHRoZSBmZXdlc3QgYml0cyBvZiBhbnkgcG9zc2libGUgcHJlZml4IGNvZGVzIGZvciB0aGF0CisgICAgICAgICBhbHBoYWJldCkuICBTdWNoIGEgY29kZSBpcyBjYWxsZWQgYSBIdWZmbWFuIGNvZGUuICAoU2VlCisgICAgICAgICByZWZlcmVuY2UgWzFdIGluIENoYXB0ZXIgNSwgcmVmZXJlbmNlcyBmb3IgYWRkaXRpb25hbAorICAgICAgICAgaW5mb3JtYXRpb24gb24gSHVmZm1hbiBjb2Rlcy4pCisKKyAgICAgICAgIE5vdGUgdGhhdCBpbiB0aGUgImRlZmxhdGUiIGZvcm1hdCwgdGhlIEh1ZmZtYW4gY29kZXMgZm9yIHRoZQorICAgICAgICAgdmFyaW91cyBhbHBoYWJldHMgbXVzdCBub3QgZXhjZWVkIGNlcnRhaW4gbWF4aW11bSBjb2RlIGxlbmd0aHMuCisgICAgICAgICBUaGlzIGNvbnN0cmFpbnQgY29tcGxpY2F0ZXMgdGhlIGFsZ29yaXRobSBmb3IgY29tcHV0aW5nIGNvZGUKKyAgICAgICAgIGxlbmd0aHMgZnJvbSBzeW1ib2wgZnJlcXVlbmNpZXMuICBBZ2Fpbiwgc2VlIENoYXB0ZXIgNSwKKyAgICAgICAgIHJlZmVyZW5jZXMgZm9yIGRldGFpbHMuCisKKyAgICAgIDMuMi4yLiBVc2Ugb2YgSHVmZm1hbiBjb2RpbmcgaW4gdGhlICJkZWZsYXRlIiBmb3JtYXQKKworICAgICAgICAgVGhlIEh1ZmZtYW4gY29kZXMgdXNlZCBmb3IgZWFjaCBhbHBoYWJldCBpbiB0aGUgImRlZmxhdGUiCisgICAgICAgICBmb3JtYXQgaGF2ZSB0d28gYWRkaXRpb25hbCBydWxlczoKKworICAgICAgICAgICAgICogQWxsIGNvZGVzIG9mIGEgZ2l2ZW4gYml0IGxlbmd0aCBoYXZlIGxleGljb2dyYXBoaWNhbGx5CisgICAgICAgICAgICAgICBjb25zZWN1dGl2ZSB2YWx1ZXMsIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBzeW1ib2xzCisgICAgICAgICAgICAgICB0aGV5IHJlcHJlc2VudDsKKworICAgICAgICAgICAgICogU2hvcnRlciBjb2RlcyBsZXhpY29ncmFwaGljYWxseSBwcmVjZWRlIGxvbmdlciBjb2Rlcy4KKworCisKKworCisKKworCisKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSA3XQorDAorUkZDIDE5NTEgICAgICBERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgIE1heSAxOTk2CisKKworICAgICAgICAgV2UgY291bGQgcmVjb2RlIHRoZSBleGFtcGxlIGFib3ZlIHRvIGZvbGxvdyB0aGlzIHJ1bGUgYXMKKyAgICAgICAgIGZvbGxvd3MsIGFzc3VtaW5nIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhbHBoYWJldCBpcyBBQkNEOgorCisgICAgICAgICAgICBTeW1ib2wgIENvZGUKKyAgICAgICAgICAgIC0tLS0tLSAgLS0tLQorICAgICAgICAgICAgQSAgICAgICAxMAorICAgICAgICAgICAgQiAgICAgICAwCisgICAgICAgICAgICBDICAgICAgIDExMAorICAgICAgICAgICAgRCAgICAgICAxMTEKKworICAgICAgICAgSS5lLiwgMCBwcmVjZWRlcyAxMCB3aGljaCBwcmVjZWRlcyAxMXgsIGFuZCAxMTAgYW5kIDExMSBhcmUKKyAgICAgICAgIGxleGljb2dyYXBoaWNhbGx5IGNvbnNlY3V0aXZlLgorCisgICAgICAgICBHaXZlbiB0aGlzIHJ1bGUsIHdlIGNhbiBkZWZpbmUgdGhlIEh1ZmZtYW4gY29kZSBmb3IgYW4gYWxwaGFiZXQKKyAgICAgICAgIGp1c3QgYnkgZ2l2aW5nIHRoZSBiaXQgbGVuZ3RocyBvZiB0aGUgY29kZXMgZm9yIGVhY2ggc3ltYm9sIG9mCisgICAgICAgICB0aGUgYWxwaGFiZXQgaW4gb3JkZXI7IHRoaXMgaXMgc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgICBhY3R1YWwgY29kZXMuICBJbiBvdXIgZXhhbXBsZSwgdGhlIGNvZGUgaXMgY29tcGxldGVseSBkZWZpbmVkCisgICAgICAgICBieSB0aGUgc2VxdWVuY2Ugb2YgYml0IGxlbmd0aHMgKDIsIDEsIDMsIDMpLiAgVGhlIGZvbGxvd2luZworICAgICAgICAgYWxnb3JpdGhtIGdlbmVyYXRlcyB0aGUgY29kZXMgYXMgaW50ZWdlcnMsIGludGVuZGVkIHRvIGJlIHJlYWQKKyAgICAgICAgIGZyb20gbW9zdC0gdG8gbGVhc3Qtc2lnbmlmaWNhbnQgYml0LiAgVGhlIGNvZGUgbGVuZ3RocyBhcmUKKyAgICAgICAgIGluaXRpYWxseSBpbiB0cmVlW0ldLkxlbjsgdGhlIGNvZGVzIGFyZSBwcm9kdWNlZCBpbgorICAgICAgICAgdHJlZVtJXS5Db2RlLgorCisgICAgICAgICAxKSAgQ291bnQgdGhlIG51bWJlciBvZiBjb2RlcyBmb3IgZWFjaCBjb2RlIGxlbmd0aC4gIExldAorICAgICAgICAgICAgIGJsX2NvdW50W05dIGJlIHRoZSBudW1iZXIgb2YgY29kZXMgb2YgbGVuZ3RoIE4sIE4gPj0gMS4KKworICAgICAgICAgMikgIEZpbmQgdGhlIG51bWVyaWNhbCB2YWx1ZSBvZiB0aGUgc21hbGxlc3QgY29kZSBmb3IgZWFjaAorICAgICAgICAgICAgIGNvZGUgbGVuZ3RoOgorCisgICAgICAgICAgICAgICAgY29kZSA9IDA7CisgICAgICAgICAgICAgICAgYmxfY291bnRbMF0gPSAwOworICAgICAgICAgICAgICAgIGZvciAoYml0cyA9IDE7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykgeworICAgICAgICAgICAgICAgICAgICBjb2RlID0gKGNvZGUgKyBibF9jb3VudFtiaXRzLTFdKSA8PCAxOworICAgICAgICAgICAgICAgICAgICBuZXh0X2NvZGVbYml0c10gPSBjb2RlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgMykgIEFzc2lnbiBudW1lcmljYWwgdmFsdWVzIHRvIGFsbCBjb2RlcywgdXNpbmcgY29uc2VjdXRpdmUKKyAgICAgICAgICAgICB2YWx1ZXMgZm9yIGFsbCBjb2RlcyBvZiB0aGUgc2FtZSBsZW5ndGggd2l0aCB0aGUgYmFzZQorICAgICAgICAgICAgIHZhbHVlcyBkZXRlcm1pbmVkIGF0IHN0ZXAgMi4gQ29kZXMgdGhhdCBhcmUgbmV2ZXIgdXNlZAorICAgICAgICAgICAgICh3aGljaCBoYXZlIGEgYml0IGxlbmd0aCBvZiB6ZXJvKSBtdXN0IG5vdCBiZSBhc3NpZ25lZCBhCisgICAgICAgICAgICAgdmFsdWUuCisKKyAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyAgbiA8PSBtYXhfY29kZTsgbisrKSB7CisgICAgICAgICAgICAgICAgICAgIGxlbiA9IHRyZWVbbl0uTGVuOworICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVbbl0uQ29kZSA9IG5leHRfY29kZVtsZW5dOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9jb2RlW2xlbl0rKzsKKyAgICAgICAgICAgICAgICAgICAgfQorCisKKworRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDhdCisMCitSRkMgMTk1MSAgICAgIERFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgTWF5IDE5OTYKKworCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICBFeGFtcGxlOgorCisgICAgICAgICBDb25zaWRlciB0aGUgYWxwaGFiZXQgQUJDREVGR0gsIHdpdGggYml0IGxlbmd0aHMgKDMsIDMsIDMsIDMsCisgICAgICAgICAzLCAyLCA0LCA0KS4gIEFmdGVyIHN0ZXAgMSwgd2UgaGF2ZToKKworICAgICAgICAgICAgTiAgICAgIGJsX2NvdW50W05dCisgICAgICAgICAgICAtICAgICAgLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIDIgICAgICAxCisgICAgICAgICAgICAzICAgICAgNQorICAgICAgICAgICAgNCAgICAgIDIKKworICAgICAgICAgU3RlcCAyIGNvbXB1dGVzIHRoZSBmb2xsb3dpbmcgbmV4dF9jb2RlIHZhbHVlczoKKworICAgICAgICAgICAgTiAgICAgIG5leHRfY29kZVtOXQorICAgICAgICAgICAgLSAgICAgIC0tLS0tLS0tLS0tLQorICAgICAgICAgICAgMSAgICAgIDAKKyAgICAgICAgICAgIDIgICAgICAwCisgICAgICAgICAgICAzICAgICAgMgorICAgICAgICAgICAgNCAgICAgIDE0CisKKyAgICAgICAgIFN0ZXAgMyBwcm9kdWNlcyB0aGUgZm9sbG93aW5nIGNvZGUgdmFsdWVzOgorCisgICAgICAgICAgICBTeW1ib2wgTGVuZ3RoICAgQ29kZQorICAgICAgICAgICAgLS0tLS0tIC0tLS0tLSAgIC0tLS0KKyAgICAgICAgICAgIEEgICAgICAgMyAgICAgICAgMDEwCisgICAgICAgICAgICBCICAgICAgIDMgICAgICAgIDAxMQorICAgICAgICAgICAgQyAgICAgICAzICAgICAgICAxMDAKKyAgICAgICAgICAgIEQgICAgICAgMyAgICAgICAgMTAxCisgICAgICAgICAgICBFICAgICAgIDMgICAgICAgIDExMAorICAgICAgICAgICAgRiAgICAgICAyICAgICAgICAgMDAKKyAgICAgICAgICAgIEcgICAgICAgNCAgICAgICAxMTEwCisgICAgICAgICAgICBIICAgICAgIDQgICAgICAgMTExMQorCisgICAgICAzLjIuMy4gRGV0YWlscyBvZiBibG9jayBmb3JtYXQKKworICAgICAgICAgRWFjaCBibG9jayBvZiBjb21wcmVzc2VkIGRhdGEgYmVnaW5zIHdpdGggMyBoZWFkZXIgYml0cworICAgICAgICAgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGRhdGE6CisKKyAgICAgICAgICAgIGZpcnN0IGJpdCAgICAgICBCRklOQUwKKyAgICAgICAgICAgIG5leHQgMiBiaXRzICAgICBCVFlQRQorCisgICAgICAgICBOb3RlIHRoYXQgdGhlIGhlYWRlciBiaXRzIGRvIG5vdCBuZWNlc3NhcmlseSBiZWdpbiBvbiBhIGJ5dGUKKyAgICAgICAgIGJvdW5kYXJ5LCBzaW5jZSBhIGJsb2NrIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9jY3VweSBhbiBpbnRlZ3JhbAorICAgICAgICAgbnVtYmVyIG9mIGJ5dGVzLgorCisKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSA5XQorDAorUkZDIDE5NTEgICAgICBERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgIE1heSAxOTk2CisKKworICAgICAgICAgQkZJTkFMIGlzIHNldCBpZiBhbmQgb25seSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBkYXRhCisgICAgICAgICBzZXQuCisKKyAgICAgICAgIEJUWVBFIHNwZWNpZmllcyBob3cgdGhlIGRhdGEgYXJlIGNvbXByZXNzZWQsIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICAgIDAwIC0gbm8gY29tcHJlc3Npb24KKyAgICAgICAgICAgIDAxIC0gY29tcHJlc3NlZCB3aXRoIGZpeGVkIEh1ZmZtYW4gY29kZXMKKyAgICAgICAgICAgIDEwIC0gY29tcHJlc3NlZCB3aXRoIGR5bmFtaWMgSHVmZm1hbiBjb2RlcworICAgICAgICAgICAgMTEgLSByZXNlcnZlZCAoZXJyb3IpCisKKyAgICAgICAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGNvbXByZXNzZWQgY2FzZXMgaXMgaG93IHRoZQorICAgICAgICAgSHVmZm1hbiBjb2RlcyBmb3IgdGhlIGxpdGVyYWwvbGVuZ3RoIGFuZCBkaXN0YW5jZSBhbHBoYWJldHMgYXJlCisgICAgICAgICBkZWZpbmVkLgorCisgICAgICAgICBJbiBhbGwgY2FzZXMsIHRoZSBkZWNvZGluZyBhbGdvcml0aG0gZm9yIHRoZSBhY3R1YWwgZGF0YSBpcyBhcworICAgICAgICAgZm9sbG93czoKKworICAgICAgICAgICAgZG8KKyAgICAgICAgICAgICAgIHJlYWQgYmxvY2sgaGVhZGVyIGZyb20gaW5wdXQgc3RyZWFtLgorICAgICAgICAgICAgICAgaWYgc3RvcmVkIHdpdGggbm8gY29tcHJlc3Npb24KKyAgICAgICAgICAgICAgICAgIHNraXAgYW55IHJlbWFpbmluZyBiaXRzIGluIGN1cnJlbnQgcGFydGlhbGx5CisgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgYnl0ZQorICAgICAgICAgICAgICAgICAgcmVhZCBMRU4gYW5kIE5MRU4gKHNlZSBuZXh0IHNlY3Rpb24pCisgICAgICAgICAgICAgICAgICBjb3B5IExFTiBieXRlcyBvZiBkYXRhIHRvIG91dHB1dAorICAgICAgICAgICAgICAgb3RoZXJ3aXNlCisgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc2VkIHdpdGggZHluYW1pYyBIdWZmbWFuIGNvZGVzCisgICAgICAgICAgICAgICAgICAgICByZWFkIHJlcHJlc2VudGF0aW9uIG9mIGNvZGUgdHJlZXMgKHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VjdGlvbiBiZWxvdykKKyAgICAgICAgICAgICAgICAgIGxvb3AgKHVudGlsIGVuZCBvZiBibG9jayBjb2RlIHJlY29nbml6ZWQpCisgICAgICAgICAgICAgICAgICAgICBkZWNvZGUgbGl0ZXJhbC9sZW5ndGggdmFsdWUgZnJvbSBpbnB1dCBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlIDwgMjU2CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5IHZhbHVlIChsaXRlcmFsIGJ5dGUpIHRvIG91dHB1dCBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgPSBlbmQgb2YgYmxvY2sgKDI1NikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGZyb20gbG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlICh2YWx1ZSA9IDI1Ny4uMjg1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlIGRpc3RhbmNlIGZyb20gaW5wdXQgc3RyZWFtCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUgYmFja3dhcmRzIGRpc3RhbmNlIGJ5dGVzIGluIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgYW5kIGNvcHkgbGVuZ3RoIGJ5dGVzIGZyb20gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gdG8gdGhlIG91dHB1dCBzdHJlYW0uCisgICAgICAgICAgICAgICAgICBlbmQgbG9vcAorICAgICAgICAgICAgd2hpbGUgbm90IGxhc3QgYmxvY2sKKworICAgICAgICAgTm90ZSB0aGF0IGEgZHVwbGljYXRlZCBzdHJpbmcgcmVmZXJlbmNlIG1heSByZWZlciB0byBhIHN0cmluZworICAgICAgICAgaW4gYSBwcmV2aW91cyBibG9jazsgaS5lLiwgdGhlIGJhY2t3YXJkIGRpc3RhbmNlIG1heSBjcm9zcyBvbmUKKyAgICAgICAgIG9yIG1vcmUgYmxvY2sgYm91bmRhcmllcy4gIEhvd2V2ZXIgYSBkaXN0YW5jZSBjYW5ub3QgcmVmZXIgcGFzdAorICAgICAgICAgdGhlIGJlZ2lubmluZyBvZiB0aGUgb3V0cHV0IHN0cmVhbS4gIChBbiBhcHBsaWNhdGlvbiB1c2luZyBhCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxMF0KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgIHByZXNldCBkaWN0aW9uYXJ5IG1pZ2h0IGRpc2NhcmQgcGFydCBvZiB0aGUgb3V0cHV0IHN0cmVhbTsgYQorICAgICAgICAgZGlzdGFuY2UgY2FuIHJlZmVyIHRvIHRoYXQgcGFydCBvZiB0aGUgb3V0cHV0IHN0cmVhbSBhbnl3YXkpCisgICAgICAgICBOb3RlIGFsc28gdGhhdCB0aGUgcmVmZXJlbmNlZCBzdHJpbmcgbWF5IG92ZXJsYXAgdGhlIGN1cnJlbnQKKyAgICAgICAgIHBvc2l0aW9uOyBmb3IgZXhhbXBsZSwgaWYgdGhlIGxhc3QgMiBieXRlcyBkZWNvZGVkIGhhdmUgdmFsdWVzCisgICAgICAgICBYIGFuZCBZLCBhIHN0cmluZyByZWZlcmVuY2Ugd2l0aCA8bGVuZ3RoID0gNSwgZGlzdGFuY2UgPSAyPgorICAgICAgICAgYWRkcyBYLFksWCxZLFggdG8gdGhlIG91dHB1dCBzdHJlYW0uCisKKyAgICAgICAgIFdlIG5vdyBzcGVjaWZ5IGVhY2ggY29tcHJlc3Npb24gbWV0aG9kIGluIHR1cm4uCisKKyAgICAgIDMuMi40LiBOb24tY29tcHJlc3NlZCBibG9ja3MgKEJUWVBFPTAwKQorCisgICAgICAgICBBbnkgYml0cyBvZiBpbnB1dCB1cCB0byB0aGUgbmV4dCBieXRlIGJvdW5kYXJ5IGFyZSBpZ25vcmVkLgorICAgICAgICAgVGhlIHJlc3Qgb2YgdGhlIGJsb2NrIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CisKKyAgICAgICAgICAgICAgMCAgIDEgICAyICAgMyAgIDQuLi4KKyAgICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICAgICAgICAgICB8ICBMRU4gIHwgTkxFTiAgfC4uLiBMRU4gYnl0ZXMgb2YgbGl0ZXJhbCBkYXRhLi4ufAorICAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKworICAgICAgICAgTEVOIGlzIHRoZSBudW1iZXIgb2YgZGF0YSBieXRlcyBpbiB0aGUgYmxvY2suICBOTEVOIGlzIHRoZQorICAgICAgICAgb25lJ3MgY29tcGxlbWVudCBvZiBMRU4uCisKKyAgICAgIDMuMi41LiBDb21wcmVzc2VkIGJsb2NrcyAobGVuZ3RoIGFuZCBkaXN0YW5jZSBjb2RlcykKKworICAgICAgICAgQXMgbm90ZWQgYWJvdmUsIGVuY29kZWQgZGF0YSBibG9ja3MgaW4gdGhlICJkZWZsYXRlIiBmb3JtYXQKKyAgICAgICAgIGNvbnNpc3Qgb2Ygc2VxdWVuY2VzIG9mIHN5bWJvbHMgZHJhd24gZnJvbSB0aHJlZSBjb25jZXB0dWFsbHkKKyAgICAgICAgIGRpc3RpbmN0IGFscGhhYmV0czogZWl0aGVyIGxpdGVyYWwgYnl0ZXMsIGZyb20gdGhlIGFscGhhYmV0IG9mCisgICAgICAgICBieXRlIHZhbHVlcyAoMC4uMjU1KSwgb3IgPGxlbmd0aCwgYmFja3dhcmQgZGlzdGFuY2U+IHBhaXJzLAorICAgICAgICAgd2hlcmUgdGhlIGxlbmd0aCBpcyBkcmF3biBmcm9tICgzLi4yNTgpIGFuZCB0aGUgZGlzdGFuY2UgaXMKKyAgICAgICAgIGRyYXduIGZyb20gKDEuLjMyLDc2OCkuICBJbiBmYWN0LCB0aGUgbGl0ZXJhbCBhbmQgbGVuZ3RoCisgICAgICAgICBhbHBoYWJldHMgYXJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIGFscGhhYmV0ICgwLi4yODUpLCB3aGVyZQorICAgICAgICAgdmFsdWVzIDAuLjI1NSByZXByZXNlbnQgbGl0ZXJhbCBieXRlcywgdGhlIHZhbHVlIDI1NiBpbmRpY2F0ZXMKKyAgICAgICAgIGVuZC1vZi1ibG9jaywgYW5kIHZhbHVlcyAyNTcuLjI4NSByZXByZXNlbnQgbGVuZ3RoIGNvZGVzCisgICAgICAgICAocG9zc2libHkgaW4gY29uanVuY3Rpb24gd2l0aCBleHRyYSBiaXRzIGZvbGxvd2luZyB0aGUgc3ltYm9sCisgICAgICAgICBjb2RlKSBhcyBmb2xsb3dzOgorCisKKworCisKKworCisKKworCisKKworCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxMV0KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgICAgICAgICAgRXh0cmEgICAgICAgICAgICAgICBFeHRyYSAgICAgICAgICAgICAgIEV4dHJhCisgICAgICAgICAgICBDb2RlIEJpdHMgTGVuZ3RoKHMpIENvZGUgQml0cyBMZW5ndGhzICAgQ29kZSBCaXRzIExlbmd0aChzKQorICAgICAgICAgICAgLS0tLSAtLS0tIC0tLS0tLSAgICAgLS0tLSAtLS0tIC0tLS0tLS0gICAtLS0tIC0tLS0gLS0tLS0tLQorICAgICAgICAgICAgIDI1NyAgIDAgICAgIDMgICAgICAgMjY3ICAgMSAgIDE1LDE2ICAgICAyNzcgICA0ICAgNjctODIKKyAgICAgICAgICAgICAyNTggICAwICAgICA0ICAgICAgIDI2OCAgIDEgICAxNywxOCAgICAgMjc4ICAgNCAgIDgzLTk4CisgICAgICAgICAgICAgMjU5ICAgMCAgICAgNSAgICAgICAyNjkgICAyICAgMTktMjIgICAgIDI3OSAgIDQgICA5OS0xMTQKKyAgICAgICAgICAgICAyNjAgICAwICAgICA2ICAgICAgIDI3MCAgIDIgICAyMy0yNiAgICAgMjgwICAgNCAgMTE1LTEzMAorICAgICAgICAgICAgIDI2MSAgIDAgICAgIDcgICAgICAgMjcxICAgMiAgIDI3LTMwICAgICAyODEgICA1ICAxMzEtMTYyCisgICAgICAgICAgICAgMjYyICAgMCAgICAgOCAgICAgICAyNzIgICAyICAgMzEtMzQgICAgIDI4MiAgIDUgIDE2My0xOTQKKyAgICAgICAgICAgICAyNjMgICAwICAgICA5ICAgICAgIDI3MyAgIDMgICAzNS00MiAgICAgMjgzICAgNSAgMTk1LTIyNgorICAgICAgICAgICAgIDI2NCAgIDAgICAgMTAgICAgICAgMjc0ICAgMyAgIDQzLTUwICAgICAyODQgICA1ICAyMjctMjU3CisgICAgICAgICAgICAgMjY1ICAgMSAgMTEsMTIgICAgICAyNzUgICAzICAgNTEtNTggICAgIDI4NSAgIDAgICAgMjU4CisgICAgICAgICAgICAgMjY2ICAgMSAgMTMsMTQgICAgICAyNzYgICAzICAgNTktNjYKKworICAgICAgICAgVGhlIGV4dHJhIGJpdHMgc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGEgbWFjaGluZSBpbnRlZ2VyCisgICAgICAgICBzdG9yZWQgd2l0aCB0aGUgbW9zdC1zaWduaWZpY2FudCBiaXQgZmlyc3QsIGUuZy4sIGJpdHMgMTExMAorICAgICAgICAgcmVwcmVzZW50IHRoZSB2YWx1ZSAxNC4KKworICAgICAgICAgICAgICAgICAgRXh0cmEgICAgICAgICAgIEV4dHJhICAgICAgICAgICAgICAgRXh0cmEKKyAgICAgICAgICAgICBDb2RlIEJpdHMgRGlzdCAgQ29kZSBCaXRzICAgRGlzdCAgICAgQ29kZSBCaXRzIERpc3RhbmNlCisgICAgICAgICAgICAgLS0tLSAtLS0tIC0tLS0gIC0tLS0gLS0tLSAgLS0tLS0tICAgIC0tLS0gLS0tLSAtLS0tLS0tLQorICAgICAgICAgICAgICAgMCAgIDAgICAgMSAgICAgMTAgICA0ICAgICAzMy00OCAgICAyMCAgICA5ICAgMTAyNS0xNTM2CisgICAgICAgICAgICAgICAxICAgMCAgICAyICAgICAxMSAgIDQgICAgIDQ5LTY0ICAgIDIxICAgIDkgICAxNTM3LTIwNDgKKyAgICAgICAgICAgICAgIDIgICAwICAgIDMgICAgIDEyICAgNSAgICAgNjUtOTYgICAgMjIgICAxMCAgIDIwNDktMzA3MgorICAgICAgICAgICAgICAgMyAgIDAgICAgNCAgICAgMTMgICA1ICAgICA5Ny0xMjggICAyMyAgIDEwICAgMzA3My00MDk2CisgICAgICAgICAgICAgICA0ICAgMSAgIDUsNiAgICAxNCAgIDYgICAgMTI5LTE5MiAgIDI0ICAgMTEgICA0MDk3LTYxNDQKKyAgICAgICAgICAgICAgIDUgICAxICAgNyw4ICAgIDE1ICAgNiAgICAxOTMtMjU2ICAgMjUgICAxMSAgIDYxNDUtODE5MgorICAgICAgICAgICAgICAgNiAgIDIgICA5LTEyICAgMTYgICA3ICAgIDI1Ny0zODQgICAyNiAgIDEyICA4MTkzLTEyMjg4CisgICAgICAgICAgICAgICA3ICAgMiAgMTMtMTYgICAxNyAgIDcgICAgMzg1LTUxMiAgIDI3ICAgMTIgMTIyODktMTYzODQKKyAgICAgICAgICAgICAgIDggICAzICAxNy0yNCAgIDE4ICAgOCAgICA1MTMtNzY4ICAgMjggICAxMyAxNjM4NS0yNDU3NgorICAgICAgICAgICAgICAgOSAgIDMgIDI1LTMyICAgMTkgICA4ICAgNzY5LTEwMjQgICAyOSAgIDEzIDI0NTc3LTMyNzY4CisKKyAgICAgIDMuMi42LiBDb21wcmVzc2lvbiB3aXRoIGZpeGVkIEh1ZmZtYW4gY29kZXMgKEJUWVBFPTAxKQorCisgICAgICAgICBUaGUgSHVmZm1hbiBjb2RlcyBmb3IgdGhlIHR3byBhbHBoYWJldHMgYXJlIGZpeGVkLCBhbmQgYXJlIG5vdAorICAgICAgICAgcmVwcmVzZW50ZWQgZXhwbGljaXRseSBpbiB0aGUgZGF0YS4gIFRoZSBIdWZmbWFuIGNvZGUgbGVuZ3RocworICAgICAgICAgZm9yIHRoZSBsaXRlcmFsL2xlbmd0aCBhbHBoYWJldCBhcmU6CisKKyAgICAgICAgICAgICAgICAgICBMaXQgVmFsdWUgICAgQml0cyAgICAgICAgQ29kZXMKKyAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0gICAgLS0tLSAgICAgICAgLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIDAgLSAxNDMgICAgIDggICAgICAgICAgMDAxMTAwMDAgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDExMTExMQorICAgICAgICAgICAgICAgICAgIDE0NCAtIDI1NSAgICAgOSAgICAgICAgICAxMTAwMTAwMDAgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTEKKyAgICAgICAgICAgICAgICAgICAyNTYgLSAyNzkgICAgIDcgICAgICAgICAgMDAwMDAwMCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMTAxMTEKKyAgICAgICAgICAgICAgICAgICAyODAgLSAyODcgICAgIDggICAgICAgICAgMTEwMDAwMDAgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAwMDExMQorCisKKworRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgMTJdCisMCitSRkMgMTk1MSAgICAgIERFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgTWF5IDE5OTYKKworCisgICAgICAgICBUaGUgY29kZSBsZW5ndGhzIGFyZSBzdWZmaWNpZW50IHRvIGdlbmVyYXRlIHRoZSBhY3R1YWwgY29kZXMsCisgICAgICAgICBhcyBkZXNjcmliZWQgYWJvdmU7IHdlIHNob3cgdGhlIGNvZGVzIGluIHRoZSB0YWJsZSBmb3IgYWRkZWQKKyAgICAgICAgIGNsYXJpdHkuICBMaXRlcmFsL2xlbmd0aCB2YWx1ZXMgMjg2LTI4NyB3aWxsIG5ldmVyIGFjdHVhbGx5CisgICAgICAgICBvY2N1ciBpbiB0aGUgY29tcHJlc3NlZCBkYXRhLCBidXQgcGFydGljaXBhdGUgaW4gdGhlIGNvZGUKKyAgICAgICAgIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAgRGlzdGFuY2UgY29kZXMgMC0zMSBhcmUgcmVwcmVzZW50ZWQgYnkgKGZpeGVkLWxlbmd0aCkgNS1iaXQKKyAgICAgICAgIGNvZGVzLCB3aXRoIHBvc3NpYmxlIGFkZGl0aW9uYWwgYml0cyBhcyBzaG93biBpbiB0aGUgdGFibGUKKyAgICAgICAgIHNob3duIGluIFBhcmFncmFwaCAzLjIuNSwgYWJvdmUuICBOb3RlIHRoYXQgZGlzdGFuY2UgY29kZXMgMzAtCisgICAgICAgICAzMSB3aWxsIG5ldmVyIGFjdHVhbGx5IG9jY3VyIGluIHRoZSBjb21wcmVzc2VkIGRhdGEuCisKKyAgICAgIDMuMi43LiBDb21wcmVzc2lvbiB3aXRoIGR5bmFtaWMgSHVmZm1hbiBjb2RlcyAoQlRZUEU9MTApCisKKyAgICAgICAgIFRoZSBIdWZmbWFuIGNvZGVzIGZvciB0aGUgdHdvIGFscGhhYmV0cyBhcHBlYXIgaW4gdGhlIGJsb2NrCisgICAgICAgICBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVhZGVyIGJpdHMgYW5kIGJlZm9yZSB0aGUgYWN0dWFsCisgICAgICAgICBjb21wcmVzc2VkIGRhdGEsIGZpcnN0IHRoZSBsaXRlcmFsL2xlbmd0aCBjb2RlIGFuZCB0aGVuIHRoZQorICAgICAgICAgZGlzdGFuY2UgY29kZS4gIEVhY2ggY29kZSBpcyBkZWZpbmVkIGJ5IGEgc2VxdWVuY2Ugb2YgY29kZQorICAgICAgICAgbGVuZ3RocywgYXMgZGlzY3Vzc2VkIGluIFBhcmFncmFwaCAzLjIuMiwgYWJvdmUuICBGb3IgZXZlbgorICAgICAgICAgZ3JlYXRlciBjb21wYWN0bmVzcywgdGhlIGNvZGUgbGVuZ3RoIHNlcXVlbmNlcyB0aGVtc2VsdmVzIGFyZQorICAgICAgICAgY29tcHJlc3NlZCB1c2luZyBhIEh1ZmZtYW4gY29kZS4gIFRoZSBhbHBoYWJldCBmb3IgY29kZSBsZW5ndGhzCisgICAgICAgICBpcyBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICAgICAwIC0gMTU6IFJlcHJlc2VudCBjb2RlIGxlbmd0aHMgb2YgMCAtIDE1CisgICAgICAgICAgICAgICAgICAgMTY6IENvcHkgdGhlIHByZXZpb3VzIGNvZGUgbGVuZ3RoIDMgLSA2IHRpbWVzLgorICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV4dCAyIGJpdHMgaW5kaWNhdGUgcmVwZWF0IGxlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCA9IDMsIC4uLiAsIDMgPSA2KQorICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlOiAgQ29kZXMgOCwgMTYgKCsyIGJpdHMgMTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgKCsyIGJpdHMgMTApIHdpbGwgZXhwYW5kIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMiBjb2RlIGxlbmd0aHMgb2YgOCAoMSArIDYgKyA1KQorICAgICAgICAgICAgICAgICAgIDE3OiBSZXBlYXQgYSBjb2RlIGxlbmd0aCBvZiAwIGZvciAzIC0gMTAgdGltZXMuCisgICAgICAgICAgICAgICAgICAgICAgICgzIGJpdHMgb2YgbGVuZ3RoKQorICAgICAgICAgICAgICAgICAgIDE4OiBSZXBlYXQgYSBjb2RlIGxlbmd0aCBvZiAwIGZvciAxMSAtIDEzOCB0aW1lcworICAgICAgICAgICAgICAgICAgICAgICAoNyBiaXRzIG9mIGxlbmd0aCkKKworICAgICAgICAgQSBjb2RlIGxlbmd0aCBvZiAwIGluZGljYXRlcyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIHN5bWJvbCBpbgorICAgICAgICAgdGhlIGxpdGVyYWwvbGVuZ3RoIG9yIGRpc3RhbmNlIGFscGhhYmV0IHdpbGwgbm90IG9jY3VyIGluIHRoZQorICAgICAgICAgYmxvY2ssIGFuZCBzaG91bGQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBIdWZmbWFuIGNvZGUKKyAgICAgICAgIGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gZ2l2ZW4gZWFybGllci4gIElmIG9ubHkgb25lIGRpc3RhbmNlCisgICAgICAgICBjb2RlIGlzIHVzZWQsIGl0IGlzIGVuY29kZWQgdXNpbmcgb25lIGJpdCwgbm90IHplcm8gYml0czsgaW4KKyAgICAgICAgIHRoaXMgY2FzZSB0aGVyZSBpcyBhIHNpbmdsZSBjb2RlIGxlbmd0aCBvZiBvbmUsIHdpdGggb25lIHVudXNlZAorICAgICAgICAgY29kZS4gIE9uZSBkaXN0YW5jZSBjb2RlIG9mIHplcm8gYml0cyBtZWFucyB0aGF0IHRoZXJlIGFyZSBubworICAgICAgICAgZGlzdGFuY2UgY29kZXMgdXNlZCBhdCBhbGwgKHRoZSBkYXRhIGlzIGFsbCBsaXRlcmFscykuCisKKyAgICAgICAgIFdlIGNhbiBub3cgZGVmaW5lIHRoZSBmb3JtYXQgb2YgdGhlIGJsb2NrOgorCisgICAgICAgICAgICAgICA1IEJpdHM6IEhMSVQsICMgb2YgTGl0ZXJhbC9MZW5ndGggY29kZXMgLSAyNTcgKDI1NyAtIDI4NikKKyAgICAgICAgICAgICAgIDUgQml0czogSERJU1QsICMgb2YgRGlzdGFuY2UgY29kZXMgLSAxICAgICAgICAoMSAtIDMyKQorICAgICAgICAgICAgICAgNCBCaXRzOiBIQ0xFTiwgIyBvZiBDb2RlIExlbmd0aCBjb2RlcyAtIDQgICAgICg0IC0gMTkpCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxM10KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgICAgICAgIChIQ0xFTiArIDQpIHggMyBiaXRzOiBjb2RlIGxlbmd0aHMgZm9yIHRoZSBjb2RlIGxlbmd0aAorICAgICAgICAgICAgICAgICAgYWxwaGFiZXQgZ2l2ZW4ganVzdCBhYm92ZSwgaW4gdGhlIG9yZGVyOiAxNiwgMTcsIDE4LAorICAgICAgICAgICAgICAgICAgMCwgOCwgNywgOSwgNiwgMTAsIDUsIDExLCA0LCAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNQorCisgICAgICAgICAgICAgICAgICBUaGVzZSBjb2RlIGxlbmd0aHMgYXJlIGludGVycHJldGVkIGFzIDMtYml0IGludGVnZXJzCisgICAgICAgICAgICAgICAgICAoMC03KTsgYXMgYWJvdmUsIGEgY29kZSBsZW5ndGggb2YgMCBtZWFucyB0aGUKKyAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgc3ltYm9sIChsaXRlcmFsL2xlbmd0aCBvciBkaXN0YW5jZSBjb2RlCisgICAgICAgICAgICAgICAgICBsZW5ndGgpIGlzIG5vdCB1c2VkLgorCisgICAgICAgICAgICAgICBITElUICsgMjU3IGNvZGUgbGVuZ3RocyBmb3IgdGhlIGxpdGVyYWwvbGVuZ3RoIGFscGhhYmV0LAorICAgICAgICAgICAgICAgICAgZW5jb2RlZCB1c2luZyB0aGUgY29kZSBsZW5ndGggSHVmZm1hbiBjb2RlCisKKyAgICAgICAgICAgICAgIEhESVNUICsgMSBjb2RlIGxlbmd0aHMgZm9yIHRoZSBkaXN0YW5jZSBhbHBoYWJldCwKKyAgICAgICAgICAgICAgICAgIGVuY29kZWQgdXNpbmcgdGhlIGNvZGUgbGVuZ3RoIEh1ZmZtYW4gY29kZQorCisgICAgICAgICAgICAgICBUaGUgYWN0dWFsIGNvbXByZXNzZWQgZGF0YSBvZiB0aGUgYmxvY2ssCisgICAgICAgICAgICAgICAgICBlbmNvZGVkIHVzaW5nIHRoZSBsaXRlcmFsL2xlbmd0aCBhbmQgZGlzdGFuY2UgSHVmZm1hbgorICAgICAgICAgICAgICAgICAgY29kZXMKKworICAgICAgICAgICAgICAgVGhlIGxpdGVyYWwvbGVuZ3RoIHN5bWJvbCAyNTYgKGVuZCBvZiBkYXRhKSwKKyAgICAgICAgICAgICAgICAgIGVuY29kZWQgdXNpbmcgdGhlIGxpdGVyYWwvbGVuZ3RoIEh1ZmZtYW4gY29kZQorCisgICAgICAgICBUaGUgY29kZSBsZW5ndGggcmVwZWF0IGNvZGVzIGNhbiBjcm9zcyBmcm9tIEhMSVQgKyAyNTcgdG8gdGhlCisgICAgICAgICBIRElTVCArIDEgY29kZSBsZW5ndGhzLiAgSW4gb3RoZXIgd29yZHMsIGFsbCBjb2RlIGxlbmd0aHMgZm9ybQorICAgICAgICAgYSBzaW5nbGUgc2VxdWVuY2Ugb2YgSExJVCArIEhESVNUICsgMjU4IHZhbHVlcy4KKworICAgMy4zLiBDb21wbGlhbmNlCisKKyAgICAgIEEgY29tcHJlc3NvciBtYXkgbGltaXQgZnVydGhlciB0aGUgcmFuZ2VzIG9mIHZhbHVlcyBzcGVjaWZpZWQgaW4KKyAgICAgIHRoZSBwcmV2aW91cyBzZWN0aW9uIGFuZCBzdGlsbCBiZSBjb21wbGlhbnQ7IGZvciBleGFtcGxlLCBpdCBtYXkKKyAgICAgIGxpbWl0IHRoZSByYW5nZSBvZiBiYWNrd2FyZCBwb2ludGVycyB0byBzb21lIHZhbHVlIHNtYWxsZXIgdGhhbgorICAgICAgMzJLLiAgU2ltaWxhcmx5LCBhIGNvbXByZXNzb3IgbWF5IGxpbWl0IHRoZSBzaXplIG9mIGJsb2NrcyBzbyB0aGF0CisgICAgICBhIGNvbXByZXNzaWJsZSBibG9jayBmaXRzIGluIG1lbW9yeS4KKworICAgICAgQSBjb21wbGlhbnQgZGVjb21wcmVzc29yIG11c3QgYWNjZXB0IHRoZSBmdWxsIHJhbmdlIG9mIHBvc3NpYmxlCisgICAgICB2YWx1ZXMgZGVmaW5lZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwgYW5kIG11c3QgYWNjZXB0IGJsb2NrcyBvZgorICAgICAgYXJiaXRyYXJ5IHNpemUuCisKKzQuIENvbXByZXNzaW9uIGFsZ29yaXRobSBkZXRhaWxzCisKKyAgIFdoaWxlIGl0IGlzIHRoZSBpbnRlbnQgb2YgdGhpcyBkb2N1bWVudCB0byBkZWZpbmUgdGhlICJkZWZsYXRlIgorICAgY29tcHJlc3NlZCBkYXRhIGZvcm1hdCB3aXRob3V0IHJlZmVyZW5jZSB0byBhbnkgcGFydGljdWxhcgorICAgY29tcHJlc3Npb24gYWxnb3JpdGhtLCB0aGUgZm9ybWF0IGlzIHJlbGF0ZWQgdG8gdGhlIGNvbXByZXNzZWQKKyAgIGZvcm1hdHMgcHJvZHVjZWQgYnkgTFo3NyAoTGVtcGVsLVppdiAxOTc3LCBzZWUgcmVmZXJlbmNlIFsyXSBiZWxvdyk7CisgICBzaW5jZSBtYW55IHZhcmlhdGlvbnMgb2YgTFo3NyBhcmUgcGF0ZW50ZWQsIGl0IGlzIHN0cm9uZ2x5CisgICByZWNvbW1lbmRlZCB0aGF0IHRoZSBpbXBsZW1lbnRvciBvZiBhIGNvbXByZXNzb3IgZm9sbG93IHRoZSBnZW5lcmFsCisgICBhbGdvcml0aG0gcHJlc2VudGVkIGhlcmUsIHdoaWNoIGlzIGtub3duIG5vdCB0byBiZSBwYXRlbnRlZCBwZXIgc2UuCisgICBUaGUgbWF0ZXJpYWwgaW4gdGhpcyBzZWN0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBkZWZpbml0aW9uIG9mIHRoZQorCisKKworRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgMTRdCisMCitSRkMgMTk1MSAgICAgIERFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgTWF5IDE5OTYKKworCisgICBzcGVjaWZpY2F0aW9uIHBlciBzZSwgYW5kIGEgY29tcHJlc3NvciBuZWVkIG5vdCBmb2xsb3cgaXQgaW4gb3JkZXIgdG8KKyAgIGJlIGNvbXBsaWFudC4KKworICAgVGhlIGNvbXByZXNzb3IgdGVybWluYXRlcyBhIGJsb2NrIHdoZW4gaXQgZGV0ZXJtaW5lcyB0aGF0IHN0YXJ0aW5nIGEKKyAgIG5ldyBibG9jayB3aXRoIGZyZXNoIHRyZWVzIHdvdWxkIGJlIHVzZWZ1bCwgb3Igd2hlbiB0aGUgYmxvY2sgc2l6ZQorICAgZmlsbHMgdXAgdGhlIGNvbXByZXNzb3IncyBibG9jayBidWZmZXIuCisKKyAgIFRoZSBjb21wcmVzc29yIHVzZXMgYSBjaGFpbmVkIGhhc2ggdGFibGUgdG8gZmluZCBkdXBsaWNhdGVkIHN0cmluZ3MsCisgICB1c2luZyBhIGhhc2ggZnVuY3Rpb24gdGhhdCBvcGVyYXRlcyBvbiAzLWJ5dGUgc2VxdWVuY2VzLiAgQXQgYW55CisgICBnaXZlbiBwb2ludCBkdXJpbmcgY29tcHJlc3Npb24sIGxldCBYWVogYmUgdGhlIG5leHQgMyBpbnB1dCBieXRlcyB0bworICAgYmUgZXhhbWluZWQgKG5vdCBuZWNlc3NhcmlseSBhbGwgZGlmZmVyZW50LCBvZiBjb3Vyc2UpLiAgRmlyc3QsIHRoZQorICAgY29tcHJlc3NvciBleGFtaW5lcyB0aGUgaGFzaCBjaGFpbiBmb3IgWFlaLiAgSWYgdGhlIGNoYWluIGlzIGVtcHR5LAorICAgdGhlIGNvbXByZXNzb3Igc2ltcGx5IHdyaXRlcyBvdXQgWCBhcyBhIGxpdGVyYWwgYnl0ZSBhbmQgYWR2YW5jZXMgb25lCisgICBieXRlIGluIHRoZSBpbnB1dC4gIElmIHRoZSBoYXNoIGNoYWluIGlzIG5vdCBlbXB0eSwgaW5kaWNhdGluZyB0aGF0CisgICB0aGUgc2VxdWVuY2UgWFlaIChvciwgaWYgd2UgYXJlIHVubHVja3ksIHNvbWUgb3RoZXIgMyBieXRlcyB3aXRoIHRoZQorICAgc2FtZSBoYXNoIGZ1bmN0aW9uIHZhbHVlKSBoYXMgb2NjdXJyZWQgcmVjZW50bHksIHRoZSBjb21wcmVzc29yCisgICBjb21wYXJlcyBhbGwgc3RyaW5ncyBvbiB0aGUgWFlaIGhhc2ggY2hhaW4gd2l0aCB0aGUgYWN0dWFsIGlucHV0IGRhdGEKKyAgIHNlcXVlbmNlIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IHBvaW50LCBhbmQgc2VsZWN0cyB0aGUgbG9uZ2VzdAorICAgbWF0Y2guCisKKyAgIFRoZSBjb21wcmVzc29yIHNlYXJjaGVzIHRoZSBoYXNoIGNoYWlucyBzdGFydGluZyB3aXRoIHRoZSBtb3N0IHJlY2VudAorICAgc3RyaW5ncywgdG8gZmF2b3Igc21hbGwgZGlzdGFuY2VzIGFuZCB0aHVzIHRha2UgYWR2YW50YWdlIG9mIHRoZQorICAgSHVmZm1hbiBlbmNvZGluZy4gIFRoZSBoYXNoIGNoYWlucyBhcmUgc2luZ2x5IGxpbmtlZC4gVGhlcmUgYXJlIG5vCisgICBkZWxldGlvbnMgZnJvbSB0aGUgaGFzaCBjaGFpbnM7IHRoZSBhbGdvcml0aG0gc2ltcGx5IGRpc2NhcmRzIG1hdGNoZXMKKyAgIHRoYXQgYXJlIHRvbyBvbGQuICBUbyBhdm9pZCBhIHdvcnN0LWNhc2Ugc2l0dWF0aW9uLCB2ZXJ5IGxvbmcgaGFzaAorICAgY2hhaW5zIGFyZSBhcmJpdHJhcmlseSB0cnVuY2F0ZWQgYXQgYSBjZXJ0YWluIGxlbmd0aCwgZGV0ZXJtaW5lZCBieSBhCisgICBydW4tdGltZSBwYXJhbWV0ZXIuCisKKyAgIFRvIGltcHJvdmUgb3ZlcmFsbCBjb21wcmVzc2lvbiwgdGhlIGNvbXByZXNzb3Igb3B0aW9uYWxseSBkZWZlcnMgdGhlCisgICBzZWxlY3Rpb24gb2YgbWF0Y2hlcyAoImxhenkgbWF0Y2hpbmciKTogYWZ0ZXIgYSBtYXRjaCBvZiBsZW5ndGggTiBoYXMKKyAgIGJlZW4gZm91bmQsIHRoZSBjb21wcmVzc29yIHNlYXJjaGVzIGZvciBhIGxvbmdlciBtYXRjaCBzdGFydGluZyBhdAorICAgdGhlIG5leHQgaW5wdXQgYnl0ZS4gIElmIGl0IGZpbmRzIGEgbG9uZ2VyIG1hdGNoLCBpdCB0cnVuY2F0ZXMgdGhlCisgICBwcmV2aW91cyBtYXRjaCB0byBhIGxlbmd0aCBvZiBvbmUgKHRodXMgcHJvZHVjaW5nIGEgc2luZ2xlIGxpdGVyYWwKKyAgIGJ5dGUpIGFuZCB0aGVuIGVtaXRzIHRoZSBsb25nZXIgbWF0Y2guICBPdGhlcndpc2UsIGl0IGVtaXRzIHRoZQorICAgb3JpZ2luYWwgbWF0Y2gsIGFuZCwgYXMgZGVzY3JpYmVkIGFib3ZlLCBhZHZhbmNlcyBOIGJ5dGVzIGJlZm9yZQorICAgY29udGludWluZy4KKworICAgUnVuLXRpbWUgcGFyYW1ldGVycyBhbHNvIGNvbnRyb2wgdGhpcyAibGF6eSBtYXRjaCIgcHJvY2VkdXJlLiAgSWYKKyAgIGNvbXByZXNzaW9uIHJhdGlvIGlzIG1vc3QgaW1wb3J0YW50LCB0aGUgY29tcHJlc3NvciBhdHRlbXB0cyBhCisgICBjb21wbGV0ZSBzZWNvbmQgc2VhcmNoIHJlZ2FyZGxlc3Mgb2YgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3QgbWF0Y2guCisgICBJbiB0aGUgbm9ybWFsIGNhc2UsIGlmIHRoZSBjdXJyZW50IG1hdGNoIGlzICJsb25nIGVub3VnaCIsIHRoZQorICAgY29tcHJlc3NvciByZWR1Y2VzIHRoZSBzZWFyY2ggZm9yIGEgbG9uZ2VyIG1hdGNoLCB0aHVzIHNwZWVkaW5nIHVwCisgICB0aGUgcHJvY2Vzcy4gIElmIHNwZWVkIGlzIG1vc3QgaW1wb3J0YW50LCB0aGUgY29tcHJlc3NvciBpbnNlcnRzIG5ldworICAgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IHdoZW4gbm8gbWF0Y2ggd2FzIGZvdW5kLCBvciB3aGVuIHRoZQorICAgbWF0Y2ggaXMgbm90ICJ0b28gbG9uZyIuICBUaGlzIGRlZ3JhZGVzIHRoZSBjb21wcmVzc2lvbiByYXRpbyBidXQKKyAgIHNhdmVzIHRpbWUgc2luY2UgdGhlcmUgYXJlIGJvdGggZmV3ZXIgaW5zZXJ0aW9ucyBhbmQgZmV3ZXIgc2VhcmNoZXMuCisKKworCisKKworRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgMTVdCisMCitSRkMgMTk1MSAgICAgIERFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgTWF5IDE5OTYKKworCis1LiBSZWZlcmVuY2VzCisKKyAgIFsxXSBIdWZmbWFuLCBELiBBLiwgIkEgTWV0aG9kIGZvciB0aGUgQ29uc3RydWN0aW9uIG9mIE1pbmltdW0KKyAgICAgICBSZWR1bmRhbmN5IENvZGVzIiwgUHJvY2VlZGluZ3Mgb2YgdGhlIEluc3RpdHV0ZSBvZiBSYWRpbworICAgICAgIEVuZ2luZWVycywgU2VwdGVtYmVyIDE5NTIsIFZvbHVtZSA0MCwgTnVtYmVyIDksIHBwLiAxMDk4LTExMDEuCisKKyAgIFsyXSBaaXYgSi4sIExlbXBlbCBBLiwgIkEgVW5pdmVyc2FsIEFsZ29yaXRobSBmb3IgU2VxdWVudGlhbCBEYXRhCisgICAgICAgQ29tcHJlc3Npb24iLCBJRUVFIFRyYW5zYWN0aW9ucyBvbiBJbmZvcm1hdGlvbiBUaGVvcnksIFZvbC4gMjMsCisgICAgICAgTm8uIDMsIHBwLiAzMzctMzQzLgorCisgICBbM10gR2FpbGx5LCBKLi1MLiwgYW5kIEFkbGVyLCBNLiwgWkxJQiBkb2N1bWVudGF0aW9uIGFuZCBzb3VyY2VzLAorICAgICAgIGF2YWlsYWJsZSBpbiBmdHA6Ly9mdHAudXUubmV0L3B1Yi9hcmNoaXZpbmcvemlwL2RvYy8KKworICAgWzRdIEdhaWxseSwgSi4tTC4sIGFuZCBBZGxlciwgTS4sIEdaSVAgZG9jdW1lbnRhdGlvbiBhbmQgc291cmNlcywKKyAgICAgICBhdmFpbGFibGUgYXMgZ3ppcC0qLnRhciBpbiBmdHA6Ly9wcmVwLmFpLm1pdC5lZHUvcHViL2dudS8KKworICAgWzVdIFNjaHdhcnR6LCBFLiBTLiwgYW5kIEthbGxpY2ssIEIuICJHZW5lcmF0aW5nIGEgY2Fub25pY2FsIHByZWZpeAorICAgICAgIGVuY29kaW5nLiIgQ29tbS4gQUNNLCA3LDMgKE1hci4gMTk2NCksIHBwLiAxNjYtMTY5LgorCisgICBbNl0gSGlyc2NoYmVyZyBhbmQgTGVsZXdlciwgIkVmZmljaWVudCBkZWNvZGluZyBvZiBwcmVmaXggY29kZXMsIgorICAgICAgIENvbW0uIEFDTSwgMzMsNCwgQXByaWwgMTk5MCwgcHAuIDQ0OS00NTkuCisKKzYuIFNlY3VyaXR5IENvbnNpZGVyYXRpb25zCisKKyAgIEFueSBkYXRhIGNvbXByZXNzaW9uIG1ldGhvZCBpbnZvbHZlcyB0aGUgcmVkdWN0aW9uIG9mIHJlZHVuZGFuY3kgaW4KKyAgIHRoZSBkYXRhLiAgQ29uc2VxdWVudGx5LCBhbnkgY29ycnVwdGlvbiBvZiB0aGUgZGF0YSBpcyBsaWtlbHkgdG8gaGF2ZQorICAgc2V2ZXJlIGVmZmVjdHMgYW5kIGJlIGRpZmZpY3VsdCB0byBjb3JyZWN0LiAgVW5jb21wcmVzc2VkIHRleHQsIG9uCisgICB0aGUgb3RoZXIgaGFuZCwgd2lsbCBwcm9iYWJseSBzdGlsbCBiZSByZWFkYWJsZSBkZXNwaXRlIHRoZSBwcmVzZW5jZQorICAgb2Ygc29tZSBjb3JydXB0ZWQgYnl0ZXMuCisKKyAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgc3lzdGVtcyB1c2luZyB0aGlzIGRhdGEgZm9ybWF0IHByb3ZpZGUgc29tZQorICAgbWVhbnMgb2YgdmFsaWRhdGluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSBjb21wcmVzc2VkIGRhdGEuICBTZWUKKyAgIHJlZmVyZW5jZSBbM10sIGZvciBleGFtcGxlLgorCis3LiBTb3VyY2UgY29kZQorCisgICBTb3VyY2UgY29kZSBmb3IgYSBDIGxhbmd1YWdlIGltcGxlbWVudGF0aW9uIG9mIGEgImRlZmxhdGUiIGNvbXBsaWFudAorICAgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIGlzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIHpsaWIgcGFja2FnZSBhdAorICAgZnRwOi8vZnRwLnV1Lm5ldC9wdWIvYXJjaGl2aW5nL3ppcC96bGliLy4KKworOC4gQWNrbm93bGVkZ2VtZW50cworCisgICBUcmFkZW1hcmtzIGNpdGVkIGluIHRoaXMgZG9jdW1lbnQgYXJlIHRoZSBwcm9wZXJ0eSBvZiB0aGVpcgorICAgcmVzcGVjdGl2ZSBvd25lcnMuCisKKyAgIFBoaWwgS2F0eiBkZXNpZ25lZCB0aGUgZGVmbGF0ZSBmb3JtYXQuICBKZWFuLUxvdXAgR2FpbGx5IGFuZCBNYXJrCisgICBBZGxlciB3cm90ZSB0aGUgcmVsYXRlZCBzb2Z0d2FyZSBkZXNjcmliZWQgaW4gdGhpcyBzcGVjaWZpY2F0aW9uLgorICAgR2xlbm4gUmFuZGVycy1QZWhyc29uIGNvbnZlcnRlZCB0aGlzIGRvY3VtZW50IHRvIFJGQyBhbmQgSFRNTCBmb3JtYXQuCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxNl0KKwwKK1JGQyAxOTUxICAgICAgREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICBNYXkgMTk5NgorCisKKzkuIEF1dGhvcidzIEFkZHJlc3MKKworICAgTC4gUGV0ZXIgRGV1dHNjaAorICAgQWxhZGRpbiBFbnRlcnByaXNlcworICAgMjAzIFNhbnRhIE1hcmdhcml0YSBBdmUuCisgICBNZW5sbyBQYXJrLCBDQSA5NDAyNQorCisgICBQaG9uZTogKDQxNSkgMzIyLTAxMDMgKEFNIG9ubHkpCisgICBGQVg6ICAgKDQxNSkgMzIyLTE3MzQKKyAgIEVNYWlsOiA8Z2hvc3RAYWxhZGRpbi5jb20+CisKKyAgIFF1ZXN0aW9ucyBhYm91dCB0aGUgdGVjaG5pY2FsIGNvbnRlbnQgb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGNhbiBiZQorICAgc2VudCBieSBlbWFpbCB0bzoKKworICAgSmVhbi1Mb3VwIEdhaWxseSA8Z3ppcEBwcmVwLmFpLm1pdC5lZHU+IGFuZAorICAgTWFyayBBZGxlciA8bWFkbGVyQGFsdW1uaS5jYWx0ZWNoLmVkdT4KKworICAgRWRpdG9yaWFsIGNvbW1lbnRzIG9uIHRoaXMgc3BlY2lmaWNhdGlvbiBjYW4gYmUgc2VudCBieSBlbWFpbCB0bzoKKworICAgTC4gUGV0ZXIgRGV1dHNjaCA8Z2hvc3RAYWxhZGRpbi5jb20+IGFuZAorICAgR2xlbm4gUmFuZGVycy1QZWhyc29uIDxyYW5kZWdAYWx1bW5pLnJwaS5lZHU+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxN10KKwwKZGlmZiAtLWdpdCBhL2RvYy9yZmMxOTUyLnR4dCBiL2RvYy9yZmMxOTUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGU1MWI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3JmYzE5NTIudHh0CkBAIC0wLDAgKzEsNjc1IEBACisKKworCisKKworCitOZXR3b3JrIFdvcmtpbmcgR3JvdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuIERldXRzY2gKK1JlcXVlc3QgZm9yIENvbW1lbnRzOiAxOTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxhZGRpbiBFbnRlcnByaXNlcworQ2F0ZWdvcnk6IEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heSAxOTk2CisKKworICAgICAgICAgICAgICAgR1pJUCBmaWxlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gNC4zCisKK1N0YXR1cyBvZiBUaGlzIE1lbW8KKworICAgVGhpcyBtZW1vIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciB0aGUgSW50ZXJuZXQgY29tbXVuaXR5LiAgVGhpcyBtZW1vCisgICBkb2VzIG5vdCBzcGVjaWZ5IGFuIEludGVybmV0IHN0YW5kYXJkIG9mIGFueSBraW5kLiAgRGlzdHJpYnV0aW9uIG9mCisgICB0aGlzIG1lbW8gaXMgdW5saW1pdGVkLgorCitJRVNHIE5vdGU6CisKKyAgIFRoZSBJRVNHIHRha2VzIG5vIHBvc2l0aW9uIG9uIHRoZSB2YWxpZGl0eSBvZiBhbnkgSW50ZWxsZWN0dWFsCisgICBQcm9wZXJ0eSBSaWdodHMgc3RhdGVtZW50cyBjb250YWluZWQgaW4gdGhpcyBkb2N1bWVudC4KKworTm90aWNlcworCisgICBDb3B5cmlnaHQgKGMpIDE5OTYgTC4gUGV0ZXIgRGV1dHNjaAorCisgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGRvY3VtZW50IGZvciBhbnkKKyAgIHB1cnBvc2UgYW5kIHdpdGhvdXQgY2hhcmdlLCBpbmNsdWRpbmcgdHJhbnNsYXRpb25zIGludG8gb3RoZXIKKyAgIGxhbmd1YWdlcyBhbmQgaW5jb3Jwb3JhdGlvbiBpbnRvIGNvbXBpbGF0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGUKKyAgIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQsIGFuZCB0aGF0IGFueQorICAgc3Vic3RhbnRpdmUgY2hhbmdlcyBvciBkZWxldGlvbnMgZnJvbSB0aGUgb3JpZ2luYWwgYXJlIGNsZWFybHkKKyAgIG1hcmtlZC4KKworICAgQSBwb2ludGVyIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGFuZCByZWxhdGVkIGRvY3VtZW50YXRpb24gaW4KKyAgIEhUTUwgZm9ybWF0IGNhbiBiZSBmb3VuZCBhdCB0aGUgVVJMCisgICA8ZnRwOi8vZnRwLnV1Lm5ldC9ncmFwaGljcy9wbmcvZG9jdW1lbnRzL3psaWIvemRvYy1pbmRleC5odG1sPi4KKworQWJzdHJhY3QKKworICAgVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBsb3NzbGVzcyBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHRoYXQgaXMKKyAgIGNvbXBhdGlibGUgd2l0aCB0aGUgd2lkZWx5IHVzZWQgR1pJUCB1dGlsaXR5LiAgVGhlIGZvcm1hdCBpbmNsdWRlcyBhCisgICBjeWNsaWMgcmVkdW5kYW5jeSBjaGVjayB2YWx1ZSBmb3IgZGV0ZWN0aW5nIGRhdGEgY29ycnVwdGlvbi4gIFRoZQorICAgZm9ybWF0IHByZXNlbnRseSB1c2VzIHRoZSBERUZMQVRFIG1ldGhvZCBvZiBjb21wcmVzc2lvbiBidXQgY2FuIGJlCisgICBlYXNpbHkgZXh0ZW5kZWQgdG8gdXNlIG90aGVyIGNvbXByZXNzaW9uIG1ldGhvZHMuICBUaGUgZm9ybWF0IGNhbiBiZQorICAgaW1wbGVtZW50ZWQgcmVhZGlseSBpbiBhIG1hbm5lciBub3QgY292ZXJlZCBieSBwYXRlbnRzLgorCisKKworCisKKworCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgMV0KKwwKK1JGQyAxOTUyICAgICAgICAgICAgIEdaSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgICAgICBNYXkgMTk5NgorCisKK1RhYmxlIG9mIENvbnRlbnRzCisKKyAgIDEuIEludHJvZHVjdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMgorICAgICAgMS4xLiBQdXJwb3NlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyCisgICAgICAxLjIuIEludGVuZGVkIGF1ZGllbmNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMKKyAgICAgIDEuMy4gU2NvcGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMworICAgICAgMS40LiBDb21wbGlhbmNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzCisgICAgICAxLjUuIERlZmluaXRpb25zIG9mIHRlcm1zIGFuZCBjb252ZW50aW9ucyB1c2VkIC4uLi4uLi4uLi4uLi4uLi4uIDMKKyAgICAgIDEuNi4gQ2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMworICAgMi4gRGV0YWlsZWQgc3BlY2lmaWNhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0CisgICAgICAyLjEuIE92ZXJhbGwgY29udmVudGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQKKyAgICAgIDIuMi4gRmlsZSBmb3JtYXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNQorICAgICAgMi4zLiBNZW1iZXIgZm9ybWF0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1CisgICAgICAgICAgMi4zLjEuIE1lbWJlciBoZWFkZXIgYW5kIHRyYWlsZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDYKKyAgICAgICAgICAgICAgMi4zLjEuMS4gRXh0cmEgZmllbGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gOAorICAgICAgICAgICAgICAyLjMuMS4yLiBDb21wbGlhbmNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA5CisgICAgICAzLiBSZWZlcmVuY2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDkKKyAgICAgIDQuIFNlY3VyaXR5IENvbnNpZGVyYXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxMAorICAgICAgNS4gQWNrbm93bGVkZ2VtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDEwCisgICAgICA2LiBBdXRob3IncyBBZGRyZXNzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMTAKKyAgICAgIDcuIEFwcGVuZGl4OiBKZWFuLUxvdXAgR2FpbGx5J3MgZ3ppcCB1dGlsaXR5IC4uLi4uLi4uLi4uLi4uLi4uLiAxMQorICAgICAgOC4gQXBwZW5kaXg6IFNhbXBsZSBDUkMgQ29kZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDExCisKKzEuIEludHJvZHVjdGlvbgorCisgICAxLjEuIFB1cnBvc2UKKworICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGlzIHRvIGRlZmluZSBhIGxvc3NsZXNzCisgICAgICBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHRoYXQ6CisKKyAgICAgICAgICAqIElzIGluZGVwZW5kZW50IG9mIENQVSB0eXBlLCBvcGVyYXRpbmcgc3lzdGVtLCBmaWxlIHN5c3RlbSwKKyAgICAgICAgICAgIGFuZCBjaGFyYWN0ZXIgc2V0LCBhbmQgaGVuY2UgY2FuIGJlIHVzZWQgZm9yIGludGVyY2hhbmdlOworICAgICAgICAgICogQ2FuIGNvbXByZXNzIG9yIGRlY29tcHJlc3MgYSBkYXRhIHN0cmVhbSAoYXMgb3Bwb3NlZCB0byBhCisgICAgICAgICAgICByYW5kb21seSBhY2Nlc3NpYmxlIGZpbGUpIHRvIHByb2R1Y2UgYW5vdGhlciBkYXRhIHN0cmVhbSwKKyAgICAgICAgICAgIHVzaW5nIG9ubHkgYW4gYSBwcmlvcmkgYm91bmRlZCBhbW91bnQgb2YgaW50ZXJtZWRpYXRlCisgICAgICAgICAgICBzdG9yYWdlLCBhbmQgaGVuY2UgY2FuIGJlIHVzZWQgaW4gZGF0YSBjb21tdW5pY2F0aW9ucyBvcgorICAgICAgICAgICAgc2ltaWxhciBzdHJ1Y3R1cmVzIHN1Y2ggYXMgVW5peCBmaWx0ZXJzOworICAgICAgICAgICogQ29tcHJlc3NlcyBkYXRhIHdpdGggZWZmaWNpZW5jeSBjb21wYXJhYmxlIHRvIHRoZSBiZXN0CisgICAgICAgICAgICBjdXJyZW50bHkgYXZhaWxhYmxlIGdlbmVyYWwtcHVycG9zZSBjb21wcmVzc2lvbiBtZXRob2RzLAorICAgICAgICAgICAgYW5kIGluIHBhcnRpY3VsYXIgY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIHRoZSAiY29tcHJlc3MiCisgICAgICAgICAgICBwcm9ncmFtOworICAgICAgICAgICogQ2FuIGJlIGltcGxlbWVudGVkIHJlYWRpbHkgaW4gYSBtYW5uZXIgbm90IGNvdmVyZWQgYnkKKyAgICAgICAgICAgIHBhdGVudHMsIGFuZCBoZW5jZSBjYW4gYmUgcHJhY3RpY2VkIGZyZWVseTsKKyAgICAgICAgICAqIElzIGNvbXBhdGlibGUgd2l0aCB0aGUgZmlsZSBmb3JtYXQgcHJvZHVjZWQgYnkgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgIHdpZGVseSB1c2VkIGd6aXAgdXRpbGl0eSwgaW4gdGhhdCBjb25mb3JtaW5nIGRlY29tcHJlc3NvcnMKKyAgICAgICAgICAgIHdpbGwgYmUgYWJsZSB0byByZWFkIGRhdGEgcHJvZHVjZWQgYnkgdGhlIGV4aXN0aW5nIGd6aXAKKyAgICAgICAgICAgIGNvbXByZXNzb3IuCisKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSAyXQorDAorUkZDIDE5NTIgICAgICAgICAgICAgR1pJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICAgICAgIE1heSAxOTk2CisKKworICAgICAgVGhlIGRhdGEgZm9ybWF0IGRlZmluZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGF0dGVtcHQgdG86CisKKyAgICAgICAgICAqIFByb3ZpZGUgcmFuZG9tIGFjY2VzcyB0byBjb21wcmVzc2VkIGRhdGE7CisgICAgICAgICAgKiBDb21wcmVzcyBzcGVjaWFsaXplZCBkYXRhIChlLmcuLCByYXN0ZXIgZ3JhcGhpY3MpIGFzIHdlbGwgYXMKKyAgICAgICAgICAgIHRoZSBiZXN0IGN1cnJlbnRseSBhdmFpbGFibGUgc3BlY2lhbGl6ZWQgYWxnb3JpdGhtcy4KKworICAgMS4yLiBJbnRlbmRlZCBhdWRpZW5jZQorCisgICAgICBUaGlzIHNwZWNpZmljYXRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBpbXBsZW1lbnRvcnMgb2Ygc29mdHdhcmUKKyAgICAgIHRvIGNvbXByZXNzIGRhdGEgaW50byBnemlwIGZvcm1hdCBhbmQvb3IgZGVjb21wcmVzcyBkYXRhIGZyb20gZ3ppcAorICAgICAgZm9ybWF0LgorCisgICAgICBUaGUgdGV4dCBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhc3N1bWVzIGEgYmFzaWMgYmFja2dyb3VuZCBpbgorICAgICAgcHJvZ3JhbW1pbmcgYXQgdGhlIGxldmVsIG9mIGJpdHMgYW5kIG90aGVyIHByaW1pdGl2ZSBkYXRhCisgICAgICByZXByZXNlbnRhdGlvbnMuCisKKyAgIDEuMy4gU2NvcGUKKworICAgICAgVGhlIHNwZWNpZmljYXRpb24gc3BlY2lmaWVzIGEgY29tcHJlc3Npb24gbWV0aG9kIGFuZCBhIGZpbGUgZm9ybWF0CisgICAgICAodGhlIGxhdHRlciBhc3N1bWluZyBvbmx5IHRoYXQgYSBmaWxlIGNhbiBzdG9yZSBhIHNlcXVlbmNlIG9mCisgICAgICBhcmJpdHJhcnkgYnl0ZXMpLiAgSXQgZG9lcyBub3Qgc3BlY2lmeSBhbnkgcGFydGljdWxhciBpbnRlcmZhY2UgdG8KKyAgICAgIGEgZmlsZSBzeXN0ZW0gb3IgYW55dGhpbmcgYWJvdXQgY2hhcmFjdGVyIHNldHMgb3IgZW5jb2RpbmdzCisgICAgICAoZXhjZXB0IGZvciBmaWxlIG5hbWVzIGFuZCBjb21tZW50cywgd2hpY2ggYXJlIG9wdGlvbmFsKS4KKworICAgMS40LiBDb21wbGlhbmNlCisKKyAgICAgIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCBhIGNvbXBsaWFudCBkZWNvbXByZXNzb3IgbXVzdCBiZQorICAgICAgYWJsZSB0byBhY2NlcHQgYW5kIGRlY29tcHJlc3MgYW55IGZpbGUgdGhhdCBjb25mb3JtcyB0byBhbGwgdGhlCisgICAgICBzcGVjaWZpY2F0aW9ucyBwcmVzZW50ZWQgaGVyZTsgYSBjb21wbGlhbnQgY29tcHJlc3NvciBtdXN0IHByb2R1Y2UKKyAgICAgIGZpbGVzIHRoYXQgY29uZm9ybSB0byBhbGwgdGhlIHNwZWNpZmljYXRpb25zIHByZXNlbnRlZCBoZXJlLiAgVGhlCisgICAgICBtYXRlcmlhbCBpbiB0aGUgYXBwZW5kaWNlcyBpcyBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbiBwZXIgc2UKKyAgICAgIGFuZCBpcyBub3QgcmVsZXZhbnQgdG8gY29tcGxpYW5jZS4KKworICAgMS41LiBEZWZpbml0aW9ucyBvZiB0ZXJtcyBhbmQgY29udmVudGlvbnMgdXNlZAorCisgICAgICBieXRlOiA4IGJpdHMgc3RvcmVkIG9yIHRyYW5zbWl0dGVkIGFzIGEgdW5pdCAoc2FtZSBhcyBhbiBvY3RldCkuCisgICAgICAoRm9yIHRoaXMgc3BlY2lmaWNhdGlvbiwgYSBieXRlIGlzIGV4YWN0bHkgOCBiaXRzLCBldmVuIG9uCisgICAgICBtYWNoaW5lcyB3aGljaCBzdG9yZSBhIGNoYXJhY3RlciBvbiBhIG51bWJlciBvZiBiaXRzIGRpZmZlcmVudAorICAgICAgZnJvbSA4LikgIFNlZSBiZWxvdyBmb3IgdGhlIG51bWJlcmluZyBvZiBiaXRzIHdpdGhpbiBhIGJ5dGUuCisKKyAgIDEuNi4gQ2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zCisKKyAgICAgIFRoZXJlIGhhdmUgYmVlbiBubyB0ZWNobmljYWwgY2hhbmdlcyB0byB0aGUgZ3ppcCBmb3JtYXQgc2luY2UKKyAgICAgIHZlcnNpb24gNC4xIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4gIEluIHZlcnNpb24gNC4yLCBzb21lCisgICAgICB0ZXJtaW5vbG9neSB3YXMgY2hhbmdlZCwgYW5kIHRoZSBzYW1wbGUgQ1JDIGNvZGUgd2FzIHJld3JpdHRlbiBmb3IKKyAgICAgIGNsYXJpdHkgYW5kIHRvIGVsaW1pbmF0ZSB0aGUgcmVxdWlyZW1lbnQgZm9yIHRoZSBjYWxsZXIgdG8gZG8gcHJlLQorICAgICAgYW5kIHBvc3QtY29uZGl0aW9uaW5nLiAgVmVyc2lvbiA0LjMgaXMgYSBjb252ZXJzaW9uIG9mIHRoZQorICAgICAgc3BlY2lmaWNhdGlvbiB0byBSRkMgc3R5bGUuCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgM10KKwwKK1JGQyAxOTUyICAgICAgICAgICAgIEdaSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgICAgICBNYXkgMTk5NgorCisKKzIuIERldGFpbGVkIHNwZWNpZmljYXRpb24KKworICAgMi4xLiBPdmVyYWxsIGNvbnZlbnRpb25zCisKKyAgICAgIEluIHRoZSBkaWFncmFtcyBiZWxvdywgYSBib3ggbGlrZSB0aGlzOgorCisgICAgICAgICArLS0tKworICAgICAgICAgfCAgIHwgPC0tIHRoZSB2ZXJ0aWNhbCBiYXJzIG1pZ2h0IGJlIG1pc3NpbmcKKyAgICAgICAgICstLS0rCisKKyAgICAgIHJlcHJlc2VudHMgb25lIGJ5dGU7IGEgYm94IGxpa2UgdGhpczoKKworICAgICAgICAgKz09PT09PT09PT09PT09KworICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgICAgICAgKz09PT09PT09PT09PT09KworCisgICAgICByZXByZXNlbnRzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGJ5dGVzLgorCisgICAgICBCeXRlcyBzdG9yZWQgd2l0aGluIGEgY29tcHV0ZXIgZG8gbm90IGhhdmUgYSAiYml0IG9yZGVyIiwgc2luY2UKKyAgICAgIHRoZXkgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIGEgdW5pdC4gIEhvd2V2ZXIsIGEgYnl0ZSBjb25zaWRlcmVkIGFzCisgICAgICBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1IGRvZXMgaGF2ZSBhIG1vc3QtIGFuZCBsZWFzdC0KKyAgICAgIHNpZ25pZmljYW50IGJpdCwgYW5kIHNpbmNlIHdlIHdyaXRlIG51bWJlcnMgd2l0aCB0aGUgbW9zdC0KKyAgICAgIHNpZ25pZmljYW50IGRpZ2l0IG9uIHRoZSBsZWZ0LCB3ZSBhbHNvIHdyaXRlIGJ5dGVzIHdpdGggdGhlIG1vc3QtCisgICAgICBzaWduaWZpY2FudCBiaXQgb24gdGhlIGxlZnQuICBJbiB0aGUgZGlhZ3JhbXMgYmVsb3csIHdlIG51bWJlciB0aGUKKyAgICAgIGJpdHMgb2YgYSBieXRlIHNvIHRoYXQgYml0IDAgaXMgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCwgaS5lLiwKKyAgICAgIHRoZSBiaXRzIGFyZSBudW1iZXJlZDoKKworICAgICAgICAgKy0tLS0tLS0tKworICAgICAgICAgfDc2NTQzMjEwfAorICAgICAgICAgKy0tLS0tLS0tKworCisgICAgICBUaGlzIGRvY3VtZW50IGRvZXMgbm90IGFkZHJlc3MgdGhlIGlzc3VlIG9mIHRoZSBvcmRlciBpbiB3aGljaAorICAgICAgYml0cyBvZiBhIGJ5dGUgYXJlIHRyYW5zbWl0dGVkIG9uIGEgYml0LXNlcXVlbnRpYWwgbWVkaXVtLCBzaW5jZQorICAgICAgdGhlIGRhdGEgZm9ybWF0IGRlc2NyaWJlZCBoZXJlIGlzIGJ5dGUtIHJhdGhlciB0aGFuIGJpdC1vcmllbnRlZC4KKworICAgICAgV2l0aGluIGEgY29tcHV0ZXIsIGEgbnVtYmVyIG1heSBvY2N1cHkgbXVsdGlwbGUgYnl0ZXMuICBBbGwKKyAgICAgIG11bHRpLWJ5dGUgbnVtYmVycyBpbiB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlIGFyZSBzdG9yZWQgd2l0aAorICAgICAgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJ5dGUgZmlyc3QgKGF0IHRoZSBsb3dlciBtZW1vcnkgYWRkcmVzcykuCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGRlY2ltYWwgbnVtYmVyIDUyMCBpcyBzdG9yZWQgYXM6CisKKyAgICAgICAgICAgICAwICAgICAgICAxCisgICAgICAgICArLS0tLS0tLS0rLS0tLS0tLS0rCisgICAgICAgICB8MDAwMDEwMDB8MDAwMDAwMTB8CisgICAgICAgICArLS0tLS0tLS0rLS0tLS0tLS0rCisgICAgICAgICAgXiAgICAgICAgXgorICAgICAgICAgIHwgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICArIG1vcmUgc2lnbmlmaWNhbnQgYnl0ZSA9IDIgeCAyNTYKKyAgICAgICAgICArIGxlc3Mgc2lnbmlmaWNhbnQgYnl0ZSA9IDgKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSA0XQorDAorUkZDIDE5NTIgICAgICAgICAgICAgR1pJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICAgICAgIE1heSAxOTk2CisKKworICAgMi4yLiBGaWxlIGZvcm1hdAorCisgICAgICBBIGd6aXAgZmlsZSBjb25zaXN0cyBvZiBhIHNlcmllcyBvZiAibWVtYmVycyIgKGNvbXByZXNzZWQgZGF0YQorICAgICAgc2V0cykuICBUaGUgZm9ybWF0IG9mIGVhY2ggbWVtYmVyIGlzIHNwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nCisgICAgICBzZWN0aW9uLiAgVGhlIG1lbWJlcnMgc2ltcGx5IGFwcGVhciBvbmUgYWZ0ZXIgYW5vdGhlciBpbiB0aGUgZmlsZSwKKyAgICAgIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBiZWZvcmUsIGJldHdlZW4sIG9yIGFmdGVyIHRoZW0uCisKKyAgIDIuMy4gTWVtYmVyIGZvcm1hdAorCisgICAgICBFYWNoIG1lbWJlciBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisKKyAgICAgICAgICstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rCisgICAgICAgICB8SUQxfElEMnxDTSB8RkxHfCAgICAgTVRJTUUgICAgIHxYRkx8T1MgfCAobW9yZS0tPikKKyAgICAgICAgICstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rCisKKyAgICAgIChpZiBGTEcuRkVYVFJBIHNldCkKKworICAgICAgICAgKy0tLSstLS0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgICAgICAgfCBYTEVOICB8Li4uWExFTiBieXRlcyBvZiAiZXh0cmEgZmllbGQiLi4ufCAobW9yZS0tPikKKyAgICAgICAgICstLS0rLS0tKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKworICAgICAgKGlmIEZMRy5GTkFNRSBzZXQpCisKKyAgICAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgICAgICAgIHwuLi5vcmlnaW5hbCBmaWxlIG5hbWUsIHplcm8tdGVybWluYXRlZC4uLnwgKG1vcmUtLT4pCisgICAgICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisKKyAgICAgIChpZiBGTEcuRkNPTU1FTlQgc2V0KQorCisgICAgICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICAgICAgICB8Li4uZmlsZSBjb21tZW50LCB6ZXJvLXRlcm1pbmF0ZWQuLi58IChtb3JlLS0+KQorICAgICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworCisgICAgICAoaWYgRkxHLkZIQ1JDIHNldCkKKworICAgICAgICAgKy0tLSstLS0rCisgICAgICAgICB8IENSQzE2IHwKKyAgICAgICAgICstLS0rLS0tKworCisgICAgICAgICArPT09PT09PT09PT09PT09PT09PT09PT0rCisgICAgICAgICB8Li4uY29tcHJlc3NlZCBibG9ja3MuLi58IChtb3JlLS0+KQorICAgICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09KworCisgICAgICAgICAgIDAgICAxICAgMiAgIDMgICA0ICAgNSAgIDYgICA3CisgICAgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKyAgICAgICAgIHwgICAgIENSQzMyICAgICB8ICAgICBJU0laRSAgICAgfAorICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rCisKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSA1XQorDAorUkZDIDE5NTIgICAgICAgICAgICAgR1pJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICAgICAgIE1heSAxOTk2CisKKworICAgICAgMi4zLjEuIE1lbWJlciBoZWFkZXIgYW5kIHRyYWlsZXIKKworICAgICAgICAgSUQxIChJRGVudGlmaWNhdGlvbiAxKQorICAgICAgICAgSUQyIChJRGVudGlmaWNhdGlvbiAyKQorICAgICAgICAgICAgVGhlc2UgaGF2ZSB0aGUgZml4ZWQgdmFsdWVzIElEMSA9IDMxICgweDFmLCBcMDM3KSwgSUQyID0gMTM5CisgICAgICAgICAgICAoMHg4YiwgXDIxMyksIHRvIGlkZW50aWZ5IHRoZSBmaWxlIGFzIGJlaW5nIGluIGd6aXAgZm9ybWF0LgorCisgICAgICAgICBDTSAoQ29tcHJlc3Npb24gTWV0aG9kKQorICAgICAgICAgICAgVGhpcyBpZGVudGlmaWVzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgdXNlZCBpbiB0aGUgZmlsZS4gIENNCisgICAgICAgICAgICA9IDAtNyBhcmUgcmVzZXJ2ZWQuICBDTSA9IDggZGVub3RlcyB0aGUgImRlZmxhdGUiCisgICAgICAgICAgICBjb21wcmVzc2lvbiBtZXRob2QsIHdoaWNoIGlzIHRoZSBvbmUgY3VzdG9tYXJpbHkgdXNlZCBieQorICAgICAgICAgICAgZ3ppcCBhbmQgd2hpY2ggaXMgZG9jdW1lbnRlZCBlbHNld2hlcmUuCisKKyAgICAgICAgIEZMRyAoRkxhR3MpCisgICAgICAgICAgICBUaGlzIGZsYWcgYnl0ZSBpcyBkaXZpZGVkIGludG8gaW5kaXZpZHVhbCBiaXRzIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICAgICAgIGJpdCAwICAgRlRFWFQKKyAgICAgICAgICAgICAgIGJpdCAxICAgRkhDUkMKKyAgICAgICAgICAgICAgIGJpdCAyICAgRkVYVFJBCisgICAgICAgICAgICAgICBiaXQgMyAgIEZOQU1FCisgICAgICAgICAgICAgICBiaXQgNCAgIEZDT01NRU5UCisgICAgICAgICAgICAgICBiaXQgNSAgIHJlc2VydmVkCisgICAgICAgICAgICAgICBiaXQgNiAgIHJlc2VydmVkCisgICAgICAgICAgICAgICBiaXQgNyAgIHJlc2VydmVkCisKKyAgICAgICAgICAgIElmIEZURVhUIGlzIHNldCwgdGhlIGZpbGUgaXMgcHJvYmFibHkgQVNDSUkgdGV4dC4gIFRoaXMgaXMKKyAgICAgICAgICAgIGFuIG9wdGlvbmFsIGluZGljYXRpb24sIHdoaWNoIHRoZSBjb21wcmVzc29yIG1heSBzZXQgYnkKKyAgICAgICAgICAgIGNoZWNraW5nIGEgc21hbGwgYW1vdW50IG9mIHRoZSBpbnB1dCBkYXRhIHRvIHNlZSB3aGV0aGVyIGFueQorICAgICAgICAgICAgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIHByZXNlbnQuICBJbiBjYXNlIG9mIGRvdWJ0LCBGVEVYVAorICAgICAgICAgICAgaXMgY2xlYXJlZCwgaW5kaWNhdGluZyBiaW5hcnkgZGF0YS4gRm9yIHN5c3RlbXMgd2hpY2ggaGF2ZQorICAgICAgICAgICAgZGlmZmVyZW50IGZpbGUgZm9ybWF0cyBmb3IgYXNjaWkgdGV4dCBhbmQgYmluYXJ5IGRhdGEsIHRoZQorICAgICAgICAgICAgZGVjb21wcmVzc29yIGNhbiB1c2UgRlRFWFQgdG8gY2hvb3NlIHRoZSBhcHByb3ByaWF0ZSBmb3JtYXQuCisgICAgICAgICAgICBXZSBkZWxpYmVyYXRlbHkgZG8gbm90IHNwZWNpZnkgdGhlIGFsZ29yaXRobSB1c2VkIHRvIHNldAorICAgICAgICAgICAgdGhpcyBiaXQsIHNpbmNlIGEgY29tcHJlc3NvciBhbHdheXMgaGFzIHRoZSBvcHRpb24gb2YKKyAgICAgICAgICAgIGxlYXZpbmcgaXQgY2xlYXJlZCBhbmQgYSBkZWNvbXByZXNzb3IgYWx3YXlzIGhhcyB0aGUgb3B0aW9uCisgICAgICAgICAgICBvZiBpZ25vcmluZyBpdCBhbmQgbGV0dGluZyBzb21lIG90aGVyIHByb2dyYW0gaGFuZGxlIGlzc3VlcworICAgICAgICAgICAgb2YgZGF0YSBjb252ZXJzaW9uLgorCisgICAgICAgICAgICBJZiBGSENSQyBpcyBzZXQsIGEgQ1JDMTYgZm9yIHRoZSBnemlwIGhlYWRlciBpcyBwcmVzZW50LAorICAgICAgICAgICAgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBjb21wcmVzc2VkIGRhdGEuIFRoZSBDUkMxNiBjb25zaXN0cworICAgICAgICAgICAgb2YgdGhlIHR3byBsZWFzdCBzaWduaWZpY2FudCBieXRlcyBvZiB0aGUgQ1JDMzIgZm9yIGFsbAorICAgICAgICAgICAgYnl0ZXMgb2YgdGhlIGd6aXAgaGVhZGVyIHVwIHRvIGFuZCBub3QgaW5jbHVkaW5nIHRoZSBDUkMxNi4KKyAgICAgICAgICAgIFtUaGUgRkhDUkMgYml0IHdhcyBuZXZlciBzZXQgYnkgdmVyc2lvbnMgb2YgZ3ppcCB1cCB0bworICAgICAgICAgICAgMS4yLjQsIGV2ZW4gdGhvdWdoIGl0IHdhcyBkb2N1bWVudGVkIHdpdGggYSBkaWZmZXJlbnQKKyAgICAgICAgICAgIG1lYW5pbmcgaW4gZ3ppcCAxLjIuNC5dCisKKyAgICAgICAgICAgIElmIEZFWFRSQSBpcyBzZXQsIG9wdGlvbmFsIGV4dHJhIGZpZWxkcyBhcmUgcHJlc2VudCwgYXMKKyAgICAgICAgICAgIGRlc2NyaWJlZCBpbiBhIGZvbGxvd2luZyBzZWN0aW9uLgorCisKKworRGV1dHNjaCAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbmFsICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDZdCisMCitSRkMgMTk1MiAgICAgICAgICAgICBHWklQIEZpbGUgRm9ybWF0IFNwZWNpZmljYXRpb24gICAgICAgICAgICAgTWF5IDE5OTYKKworCisgICAgICAgICAgICBJZiBGTkFNRSBpcyBzZXQsIGFuIG9yaWdpbmFsIGZpbGUgbmFtZSBpcyBwcmVzZW50LAorICAgICAgICAgICAgdGVybWluYXRlZCBieSBhIHplcm8gYnl0ZS4gIFRoZSBuYW1lIG11c3QgY29uc2lzdCBvZiBJU08KKyAgICAgICAgICAgIDg4NTktMSAoTEFUSU4tMSkgY2hhcmFjdGVyczsgb24gb3BlcmF0aW5nIHN5c3RlbXMgdXNpbmcKKyAgICAgICAgICAgIEVCQ0RJQyBvciBhbnkgb3RoZXIgY2hhcmFjdGVyIHNldCBmb3IgZmlsZSBuYW1lcywgdGhlIG5hbWUKKyAgICAgICAgICAgIG11c3QgYmUgdHJhbnNsYXRlZCB0byB0aGUgSVNPIExBVElOLTEgY2hhcmFjdGVyIHNldC4gIFRoaXMKKyAgICAgICAgICAgIGlzIHRoZSBvcmlnaW5hbCBuYW1lIG9mIHRoZSBmaWxlIGJlaW5nIGNvbXByZXNzZWQsIHdpdGggYW55CisgICAgICAgICAgICBkaXJlY3RvcnkgY29tcG9uZW50cyByZW1vdmVkLCBhbmQsIGlmIHRoZSBmaWxlIGJlaW5nCisgICAgICAgICAgICBjb21wcmVzc2VkIGlzIG9uIGEgZmlsZSBzeXN0ZW0gd2l0aCBjYXNlIGluc2Vuc2l0aXZlIG5hbWVzLAorICAgICAgICAgICAgZm9yY2VkIHRvIGxvd2VyIGNhc2UuIFRoZXJlIGlzIG5vIG9yaWdpbmFsIGZpbGUgbmFtZSBpZiB0aGUKKyAgICAgICAgICAgIGRhdGEgd2FzIGNvbXByZXNzZWQgZnJvbSBhIHNvdXJjZSBvdGhlciB0aGFuIGEgbmFtZWQgZmlsZTsKKyAgICAgICAgICAgIGZvciBleGFtcGxlLCBpZiB0aGUgc291cmNlIHdhcyBzdGRpbiBvbiBhIFVuaXggc3lzdGVtLCB0aGVyZQorICAgICAgICAgICAgaXMgbm8gZmlsZSBuYW1lLgorCisgICAgICAgICAgICBJZiBGQ09NTUVOVCBpcyBzZXQsIGEgemVyby10ZXJtaW5hdGVkIGZpbGUgY29tbWVudCBpcworICAgICAgICAgICAgcHJlc2VudC4gIFRoaXMgY29tbWVudCBpcyBub3QgaW50ZXJwcmV0ZWQ7IGl0IGlzIG9ubHkKKyAgICAgICAgICAgIGludGVuZGVkIGZvciBodW1hbiBjb25zdW1wdGlvbi4gIFRoZSBjb21tZW50IG11c3QgY29uc2lzdCBvZgorICAgICAgICAgICAgSVNPIDg4NTktMSAoTEFUSU4tMSkgY2hhcmFjdGVycy4gIExpbmUgYnJlYWtzIHNob3VsZCBiZQorICAgICAgICAgICAgZGVub3RlZCBieSBhIHNpbmdsZSBsaW5lIGZlZWQgY2hhcmFjdGVyICgxMCBkZWNpbWFsKS4KKworICAgICAgICAgICAgUmVzZXJ2ZWQgRkxHIGJpdHMgbXVzdCBiZSB6ZXJvLgorCisgICAgICAgICBNVElNRSAoTW9kaWZpY2F0aW9uIFRJTUUpCisgICAgICAgICAgICBUaGlzIGdpdmVzIHRoZSBtb3N0IHJlY2VudCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgIGZpbGUgYmVpbmcgY29tcHJlc3NlZC4gIFRoZSB0aW1lIGlzIGluIFVuaXggZm9ybWF0LCBpLmUuLAorICAgICAgICAgICAgc2Vjb25kcyBzaW5jZSAwMDowMDowMCBHTVQsIEphbi4gIDEsIDE5NzAuICAoTm90ZSB0aGF0IHRoaXMKKyAgICAgICAgICAgIG1heSBjYXVzZSBwcm9ibGVtcyBmb3IgTVMtRE9TIGFuZCBvdGhlciBzeXN0ZW1zIHRoYXQgdXNlCisgICAgICAgICAgICBsb2NhbCByYXRoZXIgdGhhbiBVbml2ZXJzYWwgdGltZS4pICBJZiB0aGUgY29tcHJlc3NlZCBkYXRhCisgICAgICAgICAgICBkaWQgbm90IGNvbWUgZnJvbSBhIGZpbGUsIE1USU1FIGlzIHNldCB0byB0aGUgdGltZSBhdCB3aGljaAorICAgICAgICAgICAgY29tcHJlc3Npb24gc3RhcnRlZC4gIE1USU1FID0gMCBtZWFucyBubyB0aW1lIHN0YW1wIGlzCisgICAgICAgICAgICBhdmFpbGFibGUuCisKKyAgICAgICAgIFhGTCAoZVh0cmEgRkxhZ3MpCisgICAgICAgICAgICBUaGVzZSBmbGFncyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYnkgc3BlY2lmaWMgY29tcHJlc3Npb24KKyAgICAgICAgICAgIG1ldGhvZHMuICBUaGUgImRlZmxhdGUiIG1ldGhvZCAoQ00gPSA4KSBzZXRzIHRoZXNlIGZsYWdzIGFzCisgICAgICAgICAgICBmb2xsb3dzOgorCisgICAgICAgICAgICAgICBYRkwgPSAyIC0gY29tcHJlc3NvciB1c2VkIG1heGltdW0gY29tcHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd2VzdCBhbGdvcml0aG0KKyAgICAgICAgICAgICAgIFhGTCA9IDQgLSBjb21wcmVzc29yIHVzZWQgZmFzdGVzdCBhbGdvcml0aG0KKworICAgICAgICAgT1MgKE9wZXJhdGluZyBTeXN0ZW0pCisgICAgICAgICAgICBUaGlzIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgZmlsZSBzeXN0ZW0gb24gd2hpY2ggY29tcHJlc3Npb24KKyAgICAgICAgICAgIHRvb2sgcGxhY2UuICBUaGlzIG1heSBiZSB1c2VmdWwgaW4gZGV0ZXJtaW5pbmcgZW5kLW9mLWxpbmUKKyAgICAgICAgICAgIGNvbnZlbnRpb24gZm9yIHRleHQgZmlsZXMuICBUaGUgY3VycmVudGx5IGRlZmluZWQgdmFsdWVzIGFyZQorICAgICAgICAgICAgYXMgZm9sbG93czoKKworCisKKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgICBbUGFnZSA3XQorDAorUkZDIDE5NTIgICAgICAgICAgICAgR1pJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICAgICAgIE1heSAxOTk2CisKKworICAgICAgICAgICAgICAgICAwIC0gRkFUIGZpbGVzeXN0ZW0gKE1TLURPUywgT1MvMiwgTlQvV2luMzIpCisgICAgICAgICAgICAgICAgIDEgLSBBbWlnYQorICAgICAgICAgICAgICAgICAyIC0gVk1TIChvciBPcGVuVk1TKQorICAgICAgICAgICAgICAgICAzIC0gVW5peAorICAgICAgICAgICAgICAgICA0IC0gVk0vQ01TCisgICAgICAgICAgICAgICAgIDUgLSBBdGFyaSBUT1MKKyAgICAgICAgICAgICAgICAgNiAtIEhQRlMgZmlsZXN5c3RlbSAoT1MvMiwgTlQpCisgICAgICAgICAgICAgICAgIDcgLSBNYWNpbnRvc2gKKyAgICAgICAgICAgICAgICAgOCAtIFotU3lzdGVtCisgICAgICAgICAgICAgICAgIDkgLSBDUC9NCisgICAgICAgICAgICAgICAgMTAgLSBUT1BTLTIwCisgICAgICAgICAgICAgICAgMTEgLSBOVEZTIGZpbGVzeXN0ZW0gKE5UKQorICAgICAgICAgICAgICAgIDEyIC0gUURPUworICAgICAgICAgICAgICAgIDEzIC0gQWNvcm4gUklTQ09TCisgICAgICAgICAgICAgICAyNTUgLSB1bmtub3duCisKKyAgICAgICAgIFhMRU4gKGVYdHJhIExFTmd0aCkKKyAgICAgICAgICAgIElmIEZMRy5GRVhUUkEgaXMgc2V0LCB0aGlzIGdpdmVzIHRoZSBsZW5ndGggb2YgdGhlIG9wdGlvbmFsCisgICAgICAgICAgICBleHRyYSBmaWVsZC4gIFNlZSBiZWxvdyBmb3IgZGV0YWlscy4KKworICAgICAgICAgQ1JDMzIgKENSQy0zMikKKyAgICAgICAgICAgIFRoaXMgY29udGFpbnMgYSBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjayB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgIHVuY29tcHJlc3NlZCBkYXRhIGNvbXB1dGVkIGFjY29yZGluZyB0byBDUkMtMzIgYWxnb3JpdGhtCisgICAgICAgICAgICB1c2VkIGluIHRoZSBJU08gMzMwOSBzdGFuZGFyZCBhbmQgaW4gc2VjdGlvbiA4LjEuMS42LjIgb2YKKyAgICAgICAgICAgIElUVS1UIHJlY29tbWVuZGF0aW9uIFYuNDIuICAoU2VlIGh0dHA6Ly93d3cuaXNvLmNoIGZvcgorICAgICAgICAgICAgb3JkZXJpbmcgSVNPIGRvY3VtZW50cy4gU2VlIGdvcGhlcjovL2luZm8uaXR1LmNoIGZvciBhbgorICAgICAgICAgICAgb25saW5lIHZlcnNpb24gb2YgSVRVLVQgVi40Mi4pCisKKyAgICAgICAgIElTSVpFIChJbnB1dCBTSVpFKQorICAgICAgICAgICAgVGhpcyBjb250YWlucyB0aGUgc2l6ZSBvZiB0aGUgb3JpZ2luYWwgKHVuY29tcHJlc3NlZCkgaW5wdXQKKyAgICAgICAgICAgIGRhdGEgbW9kdWxvIDJeMzIuCisKKyAgICAgIDIuMy4xLjEuIEV4dHJhIGZpZWxkCisKKyAgICAgICAgIElmIHRoZSBGTEcuRkVYVFJBIGJpdCBpcyBzZXQsIGFuICJleHRyYSBmaWVsZCIgaXMgcHJlc2VudCBpbgorICAgICAgICAgdGhlIGhlYWRlciwgd2l0aCB0b3RhbCBsZW5ndGggWExFTiBieXRlcy4gIEl0IGNvbnNpc3RzIG9mIGEKKyAgICAgICAgIHNlcmllcyBvZiBzdWJmaWVsZHMsIGVhY2ggb2YgdGhlIGZvcm06CisKKyAgICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgICAgICAgICAgIHxTSTF8U0kyfCAgTEVOICB8Li4uIExFTiBieXRlcyBvZiBzdWJmaWVsZCBkYXRhIC4uLnwKKyAgICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKworICAgICAgICAgU0kxIGFuZCBTSTIgcHJvdmlkZSBhIHN1YmZpZWxkIElELCB0eXBpY2FsbHkgdHdvIEFTQ0lJIGxldHRlcnMKKyAgICAgICAgIHdpdGggc29tZSBtbmVtb25pYyB2YWx1ZS4gIEplYW4tTG91cCBHYWlsbHkKKyAgICAgICAgIDxnemlwQHByZXAuYWkubWl0LmVkdT4gaXMgbWFpbnRhaW5pbmcgYSByZWdpc3RyeSBvZiBzdWJmaWVsZAorICAgICAgICAgSURzOyBwbGVhc2Ugc2VuZCBoaW0gYW55IHN1YmZpZWxkIElEIHlvdSB3aXNoIHRvIHVzZS4gIFN1YmZpZWxkCisgICAgICAgICBJRHMgd2l0aCBTSTIgPSAwIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gIFRoZSBmb2xsb3dpbmcKKyAgICAgICAgIElEcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6CisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgOF0KKwwKK1JGQyAxOTUyICAgICAgICAgICAgIEdaSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgICAgIFNJMSAgICAgICAgIFNJMiAgICAgICAgIERhdGEKKyAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0KKyAgICAgICAgICAgIDB4NDEgKCdBJykgIDB4NzAgKCdQJykgIEFwb2xsbyBmaWxlIHR5cGUgaW5mb3JtYXRpb24KKworICAgICAgICAgTEVOIGdpdmVzIHRoZSBsZW5ndGggb2YgdGhlIHN1YmZpZWxkIGRhdGEsIGV4Y2x1ZGluZyB0aGUgNAorICAgICAgICAgaW5pdGlhbCBieXRlcy4KKworICAgICAgMi4zLjEuMi4gQ29tcGxpYW5jZQorCisgICAgICAgICBBIGNvbXBsaWFudCBjb21wcmVzc29yIG11c3QgcHJvZHVjZSBmaWxlcyB3aXRoIGNvcnJlY3QgSUQxLAorICAgICAgICAgSUQyLCBDTSwgQ1JDMzIsIGFuZCBJU0laRSwgYnV0IG1heSBzZXQgYWxsIHRoZSBvdGhlciBmaWVsZHMgaW4KKyAgICAgICAgIHRoZSBmaXhlZC1sZW5ndGggcGFydCBvZiB0aGUgaGVhZGVyIHRvIGRlZmF1bHQgdmFsdWVzICgyNTUgZm9yCisgICAgICAgICBPUywgMCBmb3IgYWxsIG90aGVycykuICBUaGUgY29tcHJlc3NvciBtdXN0IHNldCBhbGwgcmVzZXJ2ZWQKKyAgICAgICAgIGJpdHMgdG8gemVyby4KKworICAgICAgICAgQSBjb21wbGlhbnQgZGVjb21wcmVzc29yIG11c3QgY2hlY2sgSUQxLCBJRDIsIGFuZCBDTSwgYW5kCisgICAgICAgICBwcm92aWRlIGFuIGVycm9yIGluZGljYXRpb24gaWYgYW55IG9mIHRoZXNlIGhhdmUgaW5jb3JyZWN0CisgICAgICAgICB2YWx1ZXMuICBJdCBtdXN0IGV4YW1pbmUgRkVYVFJBL1hMRU4sIEZOQU1FLCBGQ09NTUVOVCBhbmQgRkhDUkMKKyAgICAgICAgIGF0IGxlYXN0IHNvIGl0IGNhbiBza2lwIG92ZXIgdGhlIG9wdGlvbmFsIGZpZWxkcyBpZiB0aGV5IGFyZQorICAgICAgICAgcHJlc2VudC4gIEl0IG5lZWQgbm90IGV4YW1pbmUgYW55IG90aGVyIHBhcnQgb2YgdGhlIGhlYWRlciBvcgorICAgICAgICAgdHJhaWxlcjsgaW4gcGFydGljdWxhciwgYSBkZWNvbXByZXNzb3IgbWF5IGlnbm9yZSBGVEVYVCBhbmQgT1MKKyAgICAgICAgIGFuZCBhbHdheXMgcHJvZHVjZSBiaW5hcnkgb3V0cHV0LCBhbmQgc3RpbGwgYmUgY29tcGxpYW50LiAgQQorICAgICAgICAgY29tcGxpYW50IGRlY29tcHJlc3NvciBtdXN0IGdpdmUgYW4gZXJyb3IgaW5kaWNhdGlvbiBpZiBhbnkKKyAgICAgICAgIHJlc2VydmVkIGJpdCBpcyBub24temVybywgc2luY2Ugc3VjaCBhIGJpdCBjb3VsZCBpbmRpY2F0ZSB0aGUKKyAgICAgICAgIHByZXNlbmNlIG9mIGEgbmV3IGZpZWxkIHRoYXQgd291bGQgY2F1c2Ugc3Vic2VxdWVudCBkYXRhIHRvIGJlCisgICAgICAgICBpbnRlcnByZXRlZCBpbmNvcnJlY3RseS4KKworMy4gUmVmZXJlbmNlcworCisgICBbMV0gIkluZm9ybWF0aW9uIFByb2Nlc3NpbmcgLSA4LWJpdCBzaW5nbGUtYnl0ZSBjb2RlZCBncmFwaGljCisgICAgICAgY2hhcmFjdGVyIHNldHMgLSBQYXJ0IDE6IExhdGluIGFscGhhYmV0IE5vLjEiIChJU08gODg1OS0xOjE5ODcpLgorICAgICAgIFRoZSBJU08gODg1OS0xIChMYXRpbi0xKSBjaGFyYWN0ZXIgc2V0IGlzIGEgc3VwZXJzZXQgb2YgNy1iaXQKKyAgICAgICBBU0NJSS4gRmlsZXMgZGVmaW5pbmcgdGhpcyBjaGFyYWN0ZXIgc2V0IGFyZSBhdmFpbGFibGUgYXMKKyAgICAgICBpc29fODg1OS0xLiogaW4gZnRwOi8vZnRwLnV1Lm5ldC9ncmFwaGljcy9wbmcvZG9jdW1lbnRzLworCisgICBbMl0gSVNPIDMzMDkKKworICAgWzNdIElUVS1UIHJlY29tbWVuZGF0aW9uIFYuNDIKKworICAgWzRdIERldXRzY2gsIEwuUC4sIkRFRkxBVEUgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uIiwKKyAgICAgICBhdmFpbGFibGUgaW4gZnRwOi8vZnRwLnV1Lm5ldC9wdWIvYXJjaGl2aW5nL3ppcC9kb2MvCisKKyAgIFs1XSBHYWlsbHksIEouLUwuLCBHWklQIGRvY3VtZW50YXRpb24sIGF2YWlsYWJsZSBhcyBnemlwLSoudGFyIGluCisgICAgICAgZnRwOi8vcHJlcC5haS5taXQuZWR1L3B1Yi9nbnUvCisKKyAgIFs2XSBTYXJ3YXRlLCBELlYuLCAiQ29tcHV0YXRpb24gb2YgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2tzIHZpYSBUYWJsZQorICAgICAgIExvb2stVXAiLCBDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNLCAzMSg4KSwgcHAuMTAwOC0xMDEzLgorCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgOV0KKwwKK1JGQyAxOTUyICAgICAgICAgICAgIEdaSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgICAgICBNYXkgMTk5NgorCisKKyAgIFs3XSBTY2h3YWRlcmVyLCBXLkQuLCAiQ1JDIENhbGN1bGF0aW9uIiwgQXByaWwgODUgUEMgVGVjaCBKb3VybmFsLAorICAgICAgIHBwLjExOC0xMzMuCisKKyAgIFs4XSBmdHA6Ly9mdHAuYWRlbGFpZGUuZWR1LmF1L3B1Yi9yb2Nrc29mdC9wYXBlcnMvY3JjX3YzLnR4dCwKKyAgICAgICBkZXNjcmliaW5nIHRoZSBDUkMgY29uY2VwdC4KKworNC4gU2VjdXJpdHkgQ29uc2lkZXJhdGlvbnMKKworICAgQW55IGRhdGEgY29tcHJlc3Npb24gbWV0aG9kIGludm9sdmVzIHRoZSByZWR1Y3Rpb24gb2YgcmVkdW5kYW5jeSBpbgorICAgdGhlIGRhdGEuICBDb25zZXF1ZW50bHksIGFueSBjb3JydXB0aW9uIG9mIHRoZSBkYXRhIGlzIGxpa2VseSB0byBoYXZlCisgICBzZXZlcmUgZWZmZWN0cyBhbmQgYmUgZGlmZmljdWx0IHRvIGNvcnJlY3QuICBVbmNvbXByZXNzZWQgdGV4dCwgb24KKyAgIHRoZSBvdGhlciBoYW5kLCB3aWxsIHByb2JhYmx5IHN0aWxsIGJlIHJlYWRhYmxlIGRlc3BpdGUgdGhlIHByZXNlbmNlCisgICBvZiBzb21lIGNvcnJ1cHRlZCBieXRlcy4KKworICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBzeXN0ZW1zIHVzaW5nIHRoaXMgZGF0YSBmb3JtYXQgcHJvdmlkZSBzb21lCisgICBtZWFucyBvZiB2YWxpZGF0aW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSwgc3VjaCBhcyBieQorICAgc2V0dGluZyBhbmQgY2hlY2tpbmcgdGhlIENSQy0zMiBjaGVjayB2YWx1ZS4KKworNS4gQWNrbm93bGVkZ2VtZW50cworCisgICBUcmFkZW1hcmtzIGNpdGVkIGluIHRoaXMgZG9jdW1lbnQgYXJlIHRoZSBwcm9wZXJ0eSBvZiB0aGVpcgorICAgcmVzcGVjdGl2ZSBvd25lcnMuCisKKyAgIEplYW4tTG91cCBHYWlsbHkgZGVzaWduZWQgdGhlIGd6aXAgZm9ybWF0IGFuZCB3cm90ZSwgd2l0aCBNYXJrIEFkbGVyLAorICAgdGhlIHJlbGF0ZWQgc29mdHdhcmUgZGVzY3JpYmVkIGluIHRoaXMgc3BlY2lmaWNhdGlvbi4gIEdsZW5uCisgICBSYW5kZXJzLVBlaHJzb24gY29udmVydGVkIHRoaXMgZG9jdW1lbnQgdG8gUkZDIGFuZCBIVE1MIGZvcm1hdC4KKworNi4gQXV0aG9yJ3MgQWRkcmVzcworCisgICBMLiBQZXRlciBEZXV0c2NoCisgICBBbGFkZGluIEVudGVycHJpc2VzCisgICAyMDMgU2FudGEgTWFyZ2FyaXRhIEF2ZS4KKyAgIE1lbmxvIFBhcmssIENBIDk0MDI1CisKKyAgIFBob25lOiAoNDE1KSAzMjItMDEwMyAoQU0gb25seSkKKyAgIEZBWDogICAoNDE1KSAzMjItMTczNAorICAgRU1haWw6IDxnaG9zdEBhbGFkZGluLmNvbT4KKworICAgUXVlc3Rpb25zIGFib3V0IHRoZSB0ZWNobmljYWwgY29udGVudCBvZiB0aGlzIHNwZWNpZmljYXRpb24gY2FuIGJlCisgICBzZW50IGJ5IGVtYWlsIHRvOgorCisgICBKZWFuLUxvdXAgR2FpbGx5IDxnemlwQHByZXAuYWkubWl0LmVkdT4gYW5kCisgICBNYXJrIEFkbGVyIDxtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1PgorCisgICBFZGl0b3JpYWwgY29tbWVudHMgb24gdGhpcyBzcGVjaWZpY2F0aW9uIGNhbiBiZSBzZW50IGJ5IGVtYWlsIHRvOgorCisgICBMLiBQZXRlciBEZXV0c2NoIDxnaG9zdEBhbGFkZGluLmNvbT4gYW5kCisgICBHbGVubiBSYW5kZXJzLVBlaHJzb24gPHJhbmRlZ0BhbHVtbmkucnBpLmVkdT4KKworCisKK0RldXRzY2ggICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb25hbCAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDEwXQorDAorUkZDIDE5NTIgICAgICAgICAgICAgR1pJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uICAgICAgICAgICAgIE1heSAxOTk2CisKKworNy4gQXBwZW5kaXg6IEplYW4tTG91cCBHYWlsbHkncyBnemlwIHV0aWxpdHkKKworICAgVGhlIG1vc3Qgd2lkZWx5IHVzZWQgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCBjb21wcmVzc2lvbiwgYW5kIHRoZQorICAgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvbiB3aGljaCB0aGlzIHNwZWNpZmljYXRpb24gaXMgYmFzZWQsIHdlcmUKKyAgIGNyZWF0ZWQgYnkgSmVhbi1Mb3VwIEdhaWxseSA8Z3ppcEBwcmVwLmFpLm1pdC5lZHU+LiAgU2luY2UgdGhpcworICAgaW1wbGVtZW50YXRpb24gaXMgYSBkZSBmYWN0byBzdGFuZGFyZCwgd2UgbWVudGlvbiBzb21lIG1vcmUgb2YgaXRzCisgICBmZWF0dXJlcyBoZXJlLiAgQWdhaW4sIHRoZSBtYXRlcmlhbCBpbiB0aGlzIHNlY3Rpb24gaXMgbm90IHBhcnQgb2YKKyAgIHRoZSBzcGVjaWZpY2F0aW9uIHBlciBzZSwgYW5kIGltcGxlbWVudGF0aW9ucyBuZWVkIG5vdCBmb2xsb3cgaXQgdG8KKyAgIGJlIGNvbXBsaWFudC4KKworICAgV2hlbiBjb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIGEgZmlsZSwgZ3ppcCBwcmVzZXJ2ZXMgdGhlCisgICBwcm90ZWN0aW9uLCBvd25lcnNoaXAsIGFuZCBtb2RpZmljYXRpb24gdGltZSBhdHRyaWJ1dGVzIG9uIHRoZSBsb2NhbAorICAgZmlsZSBzeXN0ZW0sIHNpbmNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbiBmb3IgcmVwcmVzZW50aW5nIHByb3RlY3Rpb24KKyAgIGF0dHJpYnV0ZXMgaW4gdGhlIGd6aXAgZmlsZSBmb3JtYXQgaXRzZWxmLiAgU2luY2UgdGhlIGZpbGUgZm9ybWF0CisgICBpbmNsdWRlcyBhIG1vZGlmaWNhdGlvbiB0aW1lLCB0aGUgZ3ppcCBkZWNvbXByZXNzb3IgcHJvdmlkZXMgYQorICAgY29tbWFuZCBsaW5lIHN3aXRjaCB0aGF0IGFzc2lnbnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZyb20gdGhlIGZpbGUsCisgICByYXRoZXIgdGhhbiB0aGUgbG9jYWwgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGNvbXByZXNzZWQgaW5wdXQsIHRvCisgICB0aGUgZGVjb21wcmVzc2VkIG91dHB1dC4KKworOC4gQXBwZW5kaXg6IFNhbXBsZSBDUkMgQ29kZQorCisgICBUaGUgZm9sbG93aW5nIHNhbXBsZSBjb2RlIHJlcHJlc2VudHMgYSBwcmFjdGljYWwgaW1wbGVtZW50YXRpb24gb2YKKyAgIHRoZSBDUkMgKEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrKS4gKFNlZSBhbHNvIElTTyAzMzA5IGFuZCBJVFUtVCBWLjQyCisgICBmb3IgYSBmb3JtYWwgc3BlY2lmaWNhdGlvbi4pCisKKyAgIFRoZSBzYW1wbGUgY29kZSBpcyBpbiB0aGUgQU5TSSBDIHByb2dyYW1taW5nIGxhbmd1YWdlLiBOb24gQyB1c2VycworICAgbWF5IGZpbmQgaXQgZWFzaWVyIHRvIHJlYWQgd2l0aCB0aGVzZSBoaW50czoKKworICAgICAgJiAgICAgIEJpdHdpc2UgQU5EIG9wZXJhdG9yLgorICAgICAgXiAgICAgIEJpdHdpc2UgZXhjbHVzaXZlLU9SIG9wZXJhdG9yLgorICAgICAgPj4gICAgIEJpdHdpc2UgcmlnaHQgc2hpZnQgb3BlcmF0b3IuIFdoZW4gYXBwbGllZCB0byBhbgorICAgICAgICAgICAgIHVuc2lnbmVkIHF1YW50aXR5LCBhcyBoZXJlLCByaWdodCBzaGlmdCBpbnNlcnRzIHplcm8KKyAgICAgICAgICAgICBiaXQocykgYXQgdGhlIGxlZnQuCisgICAgICAhICAgICAgTG9naWNhbCBOT1Qgb3BlcmF0b3IuCisgICAgICArKyAgICAgIm4rKyIgaW5jcmVtZW50cyB0aGUgdmFyaWFibGUgbi4KKyAgICAgIDB4Tk5OICAweCBpbnRyb2R1Y2VzIGEgaGV4YWRlY2ltYWwgKGJhc2UgMTYpIGNvbnN0YW50LgorICAgICAgICAgICAgIFN1ZmZpeCBMIGluZGljYXRlcyBhIGxvbmcgdmFsdWUgKGF0IGxlYXN0IDMyIGJpdHMpLgorCisgICAgICAvKiBUYWJsZSBvZiBDUkNzIG9mIGFsbCA4LWJpdCBtZXNzYWdlcy4gKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgY3JjX3RhYmxlWzI1Nl07CisKKyAgICAgIC8qIEZsYWc6IGhhcyB0aGUgdGFibGUgYmVlbiBjb21wdXRlZD8gSW5pdGlhbGx5IGZhbHNlLiAqLworICAgICAgaW50IGNyY190YWJsZV9jb21wdXRlZCA9IDA7CisKKyAgICAgIC8qIE1ha2UgdGhlIHRhYmxlIGZvciBhIGZhc3QgQ1JDLiAqLworICAgICAgdm9pZCBtYWtlX2NyY190YWJsZSh2b2lkKQorICAgICAgeworICAgICAgICB1bnNpZ25lZCBsb25nIGM7CisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxMV0KKwwKK1JGQyAxOTUyICAgICAgICAgICAgIEdaSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAgICAgICAgICAgICBNYXkgMTk5NgorCisKKyAgICAgICAgaW50IG4sIGs7CisgICAgICAgIGZvciAobiA9IDA7IG4gPCAyNTY7IG4rKykgeworICAgICAgICAgIGMgPSAodW5zaWduZWQgbG9uZykgbjsKKyAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgODsgaysrKSB7CisgICAgICAgICAgICBpZiAoYyAmIDEpIHsKKyAgICAgICAgICAgICAgYyA9IDB4ZWRiODgzMjBMIF4gKGMgPj4gMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBjID0gYyA+PiAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBjcmNfdGFibGVbbl0gPSBjOworICAgICAgICB9CisgICAgICAgIGNyY190YWJsZV9jb21wdXRlZCA9IDE7CisgICAgICB9CisKKyAgICAgIC8qCisgICAgICAgICBVcGRhdGUgYSBydW5uaW5nIGNyYyB3aXRoIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdIGFuZCByZXR1cm4KKyAgICAgICB0aGUgdXBkYXRlZCBjcmMuIFRoZSBjcmMgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIHplcm8uIFByZS0gYW5kCisgICAgICAgcG9zdC1jb25kaXRpb25pbmcgKG9uZSdzIGNvbXBsZW1lbnQpIGlzIHBlcmZvcm1lZCB3aXRoaW4gdGhpcworICAgICAgIGZ1bmN0aW9uIHNvIGl0IHNob3VsZG4ndCBiZSBkb25lIGJ5IHRoZSBjYWxsZXIuIFVzYWdlIGV4YW1wbGU6CisKKyAgICAgICAgIHVuc2lnbmVkIGxvbmcgY3JjID0gMEw7CisKKyAgICAgICAgIHdoaWxlIChyZWFkX2J1ZmZlcihidWZmZXIsIGxlbmd0aCkgIT0gRU9GKSB7CisgICAgICAgICAgIGNyYyA9IHVwZGF0ZV9jcmMoY3JjLCBidWZmZXIsIGxlbmd0aCk7CisgICAgICAgICB9CisgICAgICAgICBpZiAoY3JjICE9IG9yaWdpbmFsX2NyYykgZXJyb3IoKTsKKyAgICAgICovCisgICAgICB1bnNpZ25lZCBsb25nIHVwZGF0ZV9jcmModW5zaWduZWQgbG9uZyBjcmMsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbGVuKQorICAgICAgeworICAgICAgICB1bnNpZ25lZCBsb25nIGMgPSBjcmMgXiAweGZmZmZmZmZmTDsKKyAgICAgICAgaW50IG47CisKKyAgICAgICAgaWYgKCFjcmNfdGFibGVfY29tcHV0ZWQpCisgICAgICAgICAgbWFrZV9jcmNfdGFibGUoKTsKKyAgICAgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgbisrKSB7CisgICAgICAgICAgYyA9IGNyY190YWJsZVsoYyBeIGJ1ZltuXSkgJiAweGZmXSBeIChjID4+IDgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjIF4gMHhmZmZmZmZmZkw7CisgICAgICB9CisKKyAgICAgIC8qIFJldHVybiB0aGUgQ1JDIG9mIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdLiAqLworICAgICAgdW5zaWduZWQgbG9uZyBjcmModW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbGVuKQorICAgICAgeworICAgICAgICByZXR1cm4gdXBkYXRlX2NyYygwTCwgYnVmLCBsZW4pOworICAgICAgfQorCisKKworCitEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uYWwgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxMl0KKwwKZGlmZiAtLWdpdCBhL2RvYy90eHR2c2Jpbi50eHQgYi9kb2MvdHh0dnNiaW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMGYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvdHh0dnNiaW4udHh0CkBAIC0wLDAgKzEsMTA3IEBACitBIEZhc3QgTWV0aG9kIGZvciBJZGVudGlmeWluZyBQbGFpbiBUZXh0IEZpbGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworR2l2ZW4gYSBmaWxlIGNvbWluZyBmcm9tIGFuIHVua25vd24gc291cmNlLCBpdCBpcyBzb21ldGltZXMgZGVzaXJhYmxlCit0byBmaW5kIG91dCB3aGV0aGVyIHRoZSBmb3JtYXQgb2YgdGhhdCBmaWxlIGlzIHBsYWluIHRleHQuICBBbHRob3VnaAordGhpcyBtYXkgYXBwZWFyIGxpa2UgYSBzaW1wbGUgdGFzaywgYSBmdWxseSBhY2N1cmF0ZSBkZXRlY3Rpb24gb2YgdGhlCitmaWxlIHR5cGUgcmVxdWlyZXMgaGVhdnktZHV0eSBzZW1hbnRpYyBhbmFseXNpcyBvbiB0aGUgZmlsZSBjb250ZW50cy4KK0l0IGlzLCBob3dldmVyLCBwb3NzaWJsZSB0byBvYnRhaW4gc2F0aXNmYWN0b3J5IHJlc3VsdHMgYnkgZW1wbG95aW5nCit2YXJpb3VzIGhldXJpc3RpY3MuCisKK1ByZXZpb3VzIHZlcnNpb25zIG9mIFBLWmlwIGFuZCBvdGhlciB6aXAtY29tcGF0aWJsZSBjb21wcmVzc2lvbiB0b29scword2VyZSB1c2luZyBhIGNydWRlIGRldGVjdGlvbiBzY2hlbWU6IGlmIG1vcmUgdGhhbiA4MCUgKDQvNSkgb2YgdGhlIGJ5dGVzCitmb3VuZCBpbiBhIGNlcnRhaW4gYnVmZmVyIGFyZSB3aXRoaW4gdGhlIHJhbmdlIFs3Li4xMjddLCB0aGUgZmlsZSBpcworbGFiZWxlZCBhcyBwbGFpbiB0ZXh0LCBvdGhlcndpc2UgaXQgaXMgbGFiZWxlZCBhcyBiaW5hcnkuICBBIHByb21pbmVudAorbGltaXRhdGlvbiBvZiB0aGlzIHNjaGVtZSBpcyB0aGUgcmVzdHJpY3Rpb24gdG8gTGF0aW4tYmFzZWQgYWxwaGFiZXRzLgorT3RoZXIgYWxwaGFiZXRzLCBsaWtlIEdyZWVrLCBDeXJpbGxpYyBvciBBc2lhbiwgbWFrZSBleHRlbnNpdmUgdXNlIG9mCit0aGUgYnl0ZXMgd2l0aGluIHRoZSByYW5nZSBbMTI4Li4yNTVdLCBhbmQgdGV4dHMgdXNpbmcgdGhlc2UgYWxwaGFiZXRzCithcmUgbW9zdCBvZnRlbiBtaXNpZGVudGlmaWVkIGJ5IHRoaXMgc2NoZW1lOyBpbiBvdGhlciB3b3JkcywgdGhlIHJhdGUKK29mIGZhbHNlIG5lZ2F0aXZlcyBpcyBzb21ldGltZXMgdG9vIGhpZ2gsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlY2FsbAoraXMgbG93LiAgQW5vdGhlciB3ZWFrbmVzcyBvZiB0aGlzIHNjaGVtZSBpcyBhIHJlZHVjZWQgcHJlY2lzaW9uLCBkdWUgdG8KK3RoZSBmYWxzZSBwb3NpdGl2ZXMgdGhhdCBtYXkgb2NjdXIgd2hlbiBiaW5hcnkgZmlsZXMgY29udGFpbmluZyBsYXJnZQorYW1vdW50cyBvZiB0ZXh0dWFsIGNoYXJhY3RlcnMgYXJlIG1pc2lkZW50aWZpZWQgYXMgcGxhaW4gdGV4dC4KKworSW4gdGhpcyBhcnRpY2xlIHdlIHByb3Bvc2UgYSBuZXcsIHNpbXBsZSBkZXRlY3Rpb24gc2NoZW1lIHRoYXQgZmVhdHVyZXMKK2EgbXVjaCBpbmNyZWFzZWQgcHJlY2lzaW9uIGFuZCBhIG5lYXItMTAwJSByZWNhbGwuICBUaGlzIHNjaGVtZSBpcworZGVzaWduZWQgdG8gd29yayBvbiBBU0NJSSwgVW5pY29kZSBhbmQgb3RoZXIgQVNDSUktZGVyaXZlZCBhbHBoYWJldHMsCithbmQgaXQgaGFuZGxlcyBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKElTTy04ODU5LCBNYWNSb21hbiwgS09JOCwgZXRjLikKK2FuZCB2YXJpYWJsZS1zaXplZCBlbmNvZGluZ3MgKElTTy0yMDIyLCBVVEYtOCwgZXRjLikuICBXaWRlciBlbmNvZGluZ3MKKyhVQ1MtMi9VVEYtMTYgYW5kIFVDUy00L1VURi0zMikgYXJlIG5vdCBoYW5kbGVkLCBob3dldmVyLgorCisKK1RoZSBBbGdvcml0aG0KKy0tLS0tLS0tLS0tLS0KKworVGhlIGFsZ29yaXRobSB3b3JrcyBieSBkaXZpZGluZyB0aGUgc2V0IG9mIGJ5dGVjb2RlcyBbMC4uMjU1XSBpbnRvIHRocmVlCitjYXRlZ29yaWVzOgorLSBUaGUgd2hpdGUgbGlzdCBvZiB0ZXh0dWFsIGJ5dGVjb2RlczoKKyAgOSAoVEFCKSwgMTAgKExGKSwgMTMgKENSKSwgMzIgKFNQQUNFKSB0byAyNTUuCistIFRoZSBncmF5IGxpc3Qgb2YgdG9sZXJhdGVkIGJ5dGVjb2RlczoKKyAgNyAoQkVMKSwgOCAoQlMpLCAxMSAoVlQpLCAxMiAoRkYpLCAyNiAoU1VCKSwgMjcgKEVTQykuCistIFRoZSBibGFjayBsaXN0IG9mIHVuZGVzaXJlZCwgbm9uLXRleHR1YWwgYnl0ZWNvZGVzOgorICAwIChOVUwpIHRvIDYsIDE0IHRvIDMxLgorCitJZiBhIGZpbGUgY29udGFpbnMgYXQgbGVhc3Qgb25lIGJ5dGUgdGhhdCBiZWxvbmdzIHRvIHRoZSB3aGl0ZSBsaXN0IGFuZAorbm8gYnl0ZSB0aGF0IGJlbG9uZ3MgdG8gdGhlIGJsYWNrIGxpc3QsIHRoZW4gdGhlIGZpbGUgaXMgY2F0ZWdvcml6ZWQgYXMKK3BsYWluIHRleHQ7IG90aGVyd2lzZSwgaXQgaXMgY2F0ZWdvcml6ZWQgYXMgYmluYXJ5LiAgKFRoZSBib3VuZGFyeSBjYXNlLAord2hlbiB0aGUgZmlsZSBpcyBlbXB0eSwgYXV0b21hdGljYWxseSBmYWxscyBpbnRvIHRoZSBsYXR0ZXIgY2F0ZWdvcnkuKQorCisKK1JhdGlvbmFsZQorLS0tLS0tLS0tCisKK1RoZSBpZGVhIGJlaGluZCB0aGlzIGFsZ29yaXRobSByZWxpZXMgb24gdHdvIG9ic2VydmF0aW9ucy4KKworVGhlIGZpcnN0IG9ic2VydmF0aW9uIGlzIHRoYXQsIGFsdGhvdWdoIHRoZSBmdWxsIHJhbmdlIG9mIDctYml0IGNvZGVzCitbMC4uMTI3XSBpcyBwcm9wZXJseSBzcGVjaWZpZWQgYnkgdGhlIEFTQ0lJIHN0YW5kYXJkLCBtb3N0IGNvbnRyb2wKK2NoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFswLi4zMV0gYXJlIG5vdCB1c2VkIGluIHByYWN0aWNlLiAgVGhlIG9ubHkKK3dpZGVseS11c2VkLCBhbG1vc3QgdW5pdmVyc2FsbHktcG9ydGFibGUgY29udHJvbCBjb2RlcyBhcmUgOSAoVEFCKSwKKzEwIChMRikgYW5kIDEzIChDUikuICBUaGVyZSBhcmUgYSBmZXcgbW9yZSBjb250cm9sIGNvZGVzIHRoYXQgYXJlCityZWNvZ25pemVkIG9uIGEgcmVkdWNlZCByYW5nZSBvZiBwbGF0Zm9ybXMgYW5kIHRleHQgdmlld2Vycy9lZGl0b3JzOgorNyAoQkVMKSwgOCAoQlMpLCAxMSAoVlQpLCAxMiAoRkYpLCAyNiAoU1VCKSBhbmQgMjcgKEVTQyk7IGJ1dCB0aGVzZQorY29kZXMgYXJlIHJhcmVseSAoaWYgZXZlcikgdXNlZCBhbG9uZSwgd2l0aG91dCBiZWluZyBhY2NvbXBhbmllZCBieQorc29tZSBwcmludGFibGUgdGV4dC4gIEV2ZW4gdGhlIG5ld2VyLCBwb3J0YWJsZSB0ZXh0IGZvcm1hdHMgc3VjaCBhcworWE1MIGF2b2lkIHVzaW5nIGNvbnRyb2wgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBsaXN0IG1lbnRpb25lZCBoZXJlLgorCitUaGUgc2Vjb25kIG9ic2VydmF0aW9uIGlzIHRoYXQgbW9zdCBvZiB0aGUgYmluYXJ5IGZpbGVzIHRlbmQgdG8gY29udGFpbgorY29udHJvbCBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5IDAgKE5VTCkuICBFdmVuIHRob3VnaCB0aGUgb2xkZXIgdGV4dAorZGV0ZWN0aW9uIHNjaGVtZXMgb2JzZXJ2ZSB0aGUgcHJlc2VuY2Ugb2Ygbm9uLUFTQ0lJIGNvZGVzIGZyb20gdGhlIHJhbmdlCitbMTI4Li4yNTVdLCB0aGUgcHJlY2lzaW9uIHJhcmVseSBoYXMgdG8gc3VmZmVyIGlmIHRoaXMgdXBwZXIgcmFuZ2UgaXMKK2xhYmVsZWQgYXMgdGV4dHVhbCwgYmVjYXVzZSB0aGUgZmlsZXMgdGhhdCBhcmUgZ2VudWluZWx5IGJpbmFyeSB0ZW5kIHRvCitjb250YWluIGJvdGggY29udHJvbCBjaGFyYWN0ZXJzIGFuZCBjb2RlcyBmcm9tIHRoZSB1cHBlciByYW5nZS4gIE9uIHRoZQorb3RoZXIgaGFuZCwgdGhlIHVwcGVyIHJhbmdlIG5lZWRzIHRvIGJlIGxhYmVsZWQgYXMgdGV4dHVhbCwgYmVjYXVzZSBpdAoraXMgdXNlZCBieSB2aXJ0dWFsbHkgYWxsIEFTQ0lJIGV4dGVuc2lvbnMuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIHJhbmdlIGlzCit1c2VkIGZvciBlbmNvZGluZyBub24tTGF0aW4gc2NyaXB0cy4KKworU2luY2UgdGhlcmUgaXMgbm8gY291bnRpbmcgaW52b2x2ZWQsIG90aGVyIHRoYW4gc2ltcGx5IG9ic2VydmluZyB0aGUKK3ByZXNlbmNlIG9yIHRoZSBhYnNlbmNlIG9mIHNvbWUgYnl0ZSB2YWx1ZXMsIHRoZSBhbGdvcml0aG0gcHJvZHVjZXMKK2NvbnNpc3RlbnQgcmVzdWx0cywgcmVnYXJkbGVzcyB3aGF0IGFscGhhYmV0IGVuY29kaW5nIGlzIGJlaW5nIHVzZWQuCisoSWYgY291bnRpbmcgd2VyZSBpbnZvbHZlZCwgaXQgY291bGQgYmUgcG9zc2libGUgdG8gb2J0YWluIGRpZmZlcmVudAorcmVzdWx0cyBvbiBhIHRleHQgZW5jb2RlZCwgc2F5LCB1c2luZyBJU08tODg1OS0xNiB2ZXJzdXMgVVRGLTguKQorCitUaGVyZSBpcyBhbiBleHRyYSBjYXRlZ29yeSBvZiBwbGFpbiB0ZXh0IGZpbGVzIHRoYXQgYXJlICJwb2xsdXRlZCIgd2l0aAorb25lIG9yIG1vcmUgYmxhY2stbGlzdGVkIGNvZGVzLCBlaXRoZXIgYnkgbWlzdGFrZSBvciBieSBwZWN1bGlhciBkZXNpZ24KK2NvbnNpZGVyYXRpb25zLiAgSW4gc3VjaCBjYXNlcywgYSBzY2hlbWUgdGhhdCB0b2xlcmF0ZXMgYSBzbWFsbCBmcmFjdGlvbgorb2YgYmxhY2stbGlzdGVkIGNvZGVzIHdvdWxkIHByb3ZpZGUgYW4gaW5jcmVhc2VkIHJlY2FsbCAoaS5lLiBtb3JlIHRydWUKK3Bvc2l0aXZlcykuICBUaGlzLCBob3dldmVyLCBpbmN1cnMgYSByZWR1Y2VkIHByZWNpc2lvbiBvdmVyYWxsLCBzaW5jZQorZmFsc2UgcG9zaXRpdmVzIGFyZSBtb3JlIGxpa2VseSB0byBhcHBlYXIgaW4gYmluYXJ5IGZpbGVzIHRoYXQgY29udGFpbgorbGFyZ2UgY2h1bmtzIG9mIHRleHR1YWwgZGF0YS4gIEZ1cnRoZXJtb3JlLCAicG9sbHV0ZWQiIHBsYWluIHRleHQgc2hvdWxkCitiZSByZWdhcmRlZCBhcyBiaW5hcnkgYnkgZ2VuZXJhbC1wdXJwb3NlIHRleHQgZGV0ZWN0aW9uIHNjaGVtZXMsIGJlY2F1c2UKK2dlbmVyYWwtcHVycG9zZSB0ZXh0IHByb2Nlc3NpbmcgYWxnb3JpdGhtcyBtaWdodCBub3QgYmUgYXBwbGljYWJsZS4KK1VuZGVyIHRoaXMgcHJlbWlzZSwgaXQgaXMgc2FmZSB0byBzYXkgdGhhdCBvdXIgZGV0ZWN0aW9uIG1ldGhvZCBwcm92aWRlcworYSBuZWFyLTEwMCUgcmVjYWxsLgorCitFeHBlcmltZW50cyBoYXZlIGJlZW4gcnVuIG9uIG1hbnkgZmlsZXMgY29taW5nIGZyb20gdmFyaW91cyBwbGF0Zm9ybXMKK2FuZCBhcHBsaWNhdGlvbnMuICBXZSB0cmllZCBwbGFpbiB0ZXh0IGZpbGVzLCBzeXN0ZW0gbG9ncywgc291cmNlIGNvZGUsCitmb3JtYXR0ZWQgb2ZmaWNlIGRvY3VtZW50cywgY29tcGlsZWQgb2JqZWN0IGNvZGUsIGV0Yy4gIFRoZSByZXN1bHRzCitjb25maXJtIHRoZSBvcHRpbWlzdGljIGFzc3VtcHRpb25zIGFib3V0IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhpcworYWxnb3JpdGhtLgorCisKKy0tCitDb3NtaW4gVHJ1dGEKK0xhc3QgdXBkYXRlZDogMjAwNi1NYXktMjgKZGlmZiAtLWdpdCBhL2V4YW1wbGUuYyBiL2V4YW1wbGUuYwppbmRleCA2YzhhMGVlLi42MDQ3MzZmIDEwMDY0NAotLS0gYS9leGFtcGxlLmMKKysrIGIvZXhhbXBsZS5jCkBAIC0xLDEyICsxLDEyIEBACiAvKiBleGFtcGxlLmMgLS0gdXNhZ2UgZXhhbXBsZSBvZiB0aGUgemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5Ci0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNCBKZWFuLWxvdXAgR2FpbGx5LgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDYgSmVhbi1sb3VwIEdhaWxseS4KICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCiAvKiBAKCMpICRJZCQgKi8KIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSAiemxpYi5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZmRlZiBTVERDCiAjICBpbmNsdWRlIDxzdHJpbmcuaD4KZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2d6bG9nLmMgYi9leGFtcGxlcy9nemxvZy5jCmluZGV4IGY3MWY4MTcuLmI2YWNkZWYgMTAwNjQ0Ci0tLSBhL2V4YW1wbGVzL2d6bG9nLmMKKysrIGIvZXhhbXBsZXMvZ3psb2cuYwpAQCAtMjQxLDcgKzI0MSw3IEBACiAgICAgICAgICAgICBzb21lID0gbGVuOwogICAgICAgICBpZiAod3JpdGUobG9nLT5mZCwgZGF0YSwgc29tZSkgIT0gc29tZSkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBsb2ctPmNyYyA9IGNyYzMyKGxvZy0+Y3JjLCBkYXRhLCBzb21lKTsKKyAgICAgICAgbG9nLT5jcmMgPSBjcmMzMihsb2ctPmNyYywgKHVuc2lnbmVkIGNoYXIgKilkYXRhLCBzb21lKTsKICAgICAgICAgbG9nLT5sZW4gKz0gc29tZTsKICAgICAgICAgbGVuIC09IHNvbWU7CiAgICAgICAgIGRhdGEgKz0gc29tZTsKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3psaWJfaG93Lmh0bWwgYi9leGFtcGxlcy96bGliX2hvdy5odG1sCmluZGV4IDQwOTk4ZGIuLjQ0NGZmMWMgMTAwNjQ0Ci0tLSBhL2V4YW1wbGVzL3psaWJfaG93Lmh0bWwKKysrIGIvZXhhbXBsZXMvemxpYl9ob3cuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+CiA8dGl0bGU+emxpYiBVc2FnZSBFeGFtcGxlPC90aXRsZT4KLTwhLS0gIENvcHlyaWdodCAoYykgMjAwNCBNYXJrIEFkbGVyLiAgLS0+Cis8IS0tICBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgTWFyayBBZGxlci4gIC0tPgogPC9oZWFkPgogPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiMwMEEwMDAiPgogPGgyIGFsaWduPSJjZW50ZXIiPiB6bGliIFVzYWdlIEV4YW1wbGUgPC9oMj4KQEAgLTIxLDEzICsyMSwxNiBAQAogPHByZT48Yj4KIC8qIHpwaXBlLmM6IGV4YW1wbGUgb2YgcHJvcGVyIHVzZSBvZiB6bGliJ3MgaW5mbGF0ZSgpIGFuZCBkZWZsYXRlKCkKICAgIE5vdCBjb3B5cmlnaHRlZCAtLSBwcm92aWRlZCB0byB0aGUgcHVibGljIGRvbWFpbgotICAgVmVyc2lvbiAxLjIgIDkgTm92ZW1iZXIgMjAwNCAgTWFyayBBZGxlciAqLworICAgVmVyc2lvbiAxLjQgIDExIERlY2VtYmVyIDIwMDUgIE1hcmsgQWRsZXIgKi8KIAogLyogVmVyc2lvbiBoaXN0b3J5OgogICAgMS4wICAzMCBPY3QgMjAwNCAgRmlyc3QgdmVyc2lvbgogICAgMS4xICAgOCBOb3YgMjAwNCAgQWRkIHZvaWQgY2FzdGluZyBmb3IgdW51c2VkIHJldHVybiB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgIFVzZSBzd2l0Y2ggc3RhdGVtZW50IGZvciBpbmZsYXRlKCkgcmV0dXJuIHZhbHVlcwogICAgMS4yICAgOSBOb3YgMjAwNCAgQWRkIGFzc2VydGlvbnMgdG8gZG9jdW1lbnQgemxpYiBndWFyYW50ZWVzCisgICAxLjMgICA2IEFwciAyMDA1ICBSZW1vdmUgaW5jb3JyZWN0IGFzc2VydGlvbiBpbiBpbmYoKQorICAgMS40ICAxMSBEZWMgMjAwNSAgQWRkIGhhY2sgdG8gYXZvaWQgTVNET1MgZW5kLW9mLWxpbmUgY29udmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgIEF2b2lkIHNvbWUgY29tcGlsZXIgd2FybmluZ3MgZm9yIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycwogICovCiA8L2I+PC9wcmU+PCEtLSAtLT4KIFdlIG5vdyBpbmNsdWRlIHRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoZSByZXF1aXJlZCBkZWZpbml0aW9ucy4gIEZyb20KQEAgLTQ3LDYgKzUwLDIxIEBACiAjaW5jbHVkZSAmbHQ7YXNzZXJ0LmgmZ3Q7CiAjaW5jbHVkZSAiemxpYi5oIgogPC9iPjwvcHJlPjwhLS0gLS0+CitUaGlzIGlzIGFuIHVnbHkgaGFjayByZXF1aXJlZCB0byBhdm9pZCBjb3JydXB0aW9uIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24KK1dpbmRvd3MvTVMtRE9TIHN5c3RlbXMuICBXaXRob3V0IHRoaXMsIHRob3NlIHN5c3RlbXMgd291bGQgYXNzdW1lIHRoYXQgdGhlIGlucHV0IGFuZCBvdXRwdXQKK2ZpbGVzIGFyZSB0ZXh0LCBhbmQgdHJ5IHRvIGNvbnZlcnQgdGhlIGVuZC1vZi1saW5lIGNoYXJhY3RlcnMgZnJvbSBvbmUgc3RhbmRhcmQgdG8KK2Fub3RoZXIuICBUaGF0IHdvdWxkIGNvcnJ1cHQgYmluYXJ5IGRhdGEsIGFuZCBpbiBwYXJ0aWN1bGFyIHdvdWxkIHJlbmRlciB0aGUgY29tcHJlc3NlZCBkYXRhIHVudXNhYmxlLgorVGhpcyBzZXRzIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHRvIGJpbmFyeSB3aGljaCBzdXBwcmVzc2VzIHRoZSBlbmQtb2YtbGluZSBjb252ZXJzaW9ucy4KKzx0dD5TRVRfQklOQVJZX01PREUoKTwvdHQ+IHdpbGwgYmUgdXNlZCBsYXRlciBvbiA8dHQ+c3RkaW48L3R0PiBhbmQgPHR0PnN0ZG91dDwvdHQ+LCBhdCB0aGUgYmVnaW5uaW5nIG9mIDx0dD5tYWluKCk8L3R0Pi4KKzxwcmU+PGI+CisjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKKyMgIGluY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CisjICBpbmNsdWRlICZsdDtpby5oJmd0OworIyAgZGVmaW5lIFNFVF9CSU5BUllfTU9ERShmaWxlKSBzZXRtb2RlKGZpbGVubyhmaWxlKSwgT19CSU5BUlkpCisjZWxzZQorIyAgZGVmaW5lIFNFVF9CSU5BUllfTU9ERShmaWxlKQorI2VuZGlmCis8L2I+PC9wcmU+PCEtLSAtLT4KIDx0dD5DSFVOSzwvdHQ+IGlzIHNpbXBseSB0aGUgYnVmZmVyIHNpemUgZm9yIGZlZWRpbmcgZGF0YSB0byBhbmQgcHVsbGluZyBkYXRhCiBmcm9tIHRoZSA8ZW0+emxpYjwvZW0+IHJvdXRpbmVzLiAgTGFyZ2VyIGJ1ZmZlciBzaXplcyB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCwKIGVzcGVjaWFsbHkgZm9yIDx0dD5pbmZsYXRlKCk8L3R0Pi4gIElmIHRoZSBtZW1vcnkgaXMgYXZhaWxhYmxlLCBidWZmZXJzIHNpemVzCkBAIC04MCw4ICs5OCw4IEBACiAgICAgaW50IHJldCwgZmx1c2g7CiAgICAgdW5zaWduZWQgaGF2ZTsKICAgICB6X3N0cmVhbSBzdHJtOwotICAgIGNoYXIgaW5bQ0hVTktdOwotICAgIGNoYXIgb3V0W0NIVU5LXTsKKyAgICB1bnNpZ25lZCBjaGFyIGluW0NIVU5LXTsKKyAgICB1bnNpZ25lZCBjaGFyIG91dFtDSFVOS107CiA8L2I+PC9wcmU+PCEtLSAtLT4KIFRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpcyB0byBpbml0aWFsaXplIHRoZSA8ZW0+emxpYjwvZW0+IHN0YXRlIGZvciBjb21wcmVzc2lvbiB1c2luZwogPHR0PmRlZmxhdGVJbml0KCk8L3R0Pi4gIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mIDx0dD5kZWZsYXRlKCk8L3R0Pi4KQEAgLTMxMyw4ICszMzEsOCBAQAogICAgIGludCByZXQ7CiAgICAgdW5zaWduZWQgaGF2ZTsKICAgICB6X3N0cmVhbSBzdHJtOwotICAgIGNoYXIgaW5bQ0hVTktdOwotICAgIGNoYXIgb3V0W0NIVU5LXTsKKyAgICB1bnNpZ25lZCBjaGFyIGluW0NIVU5LXTsKKyAgICB1bnNpZ25lZCBjaGFyIG91dFtDSFVOS107CiA8L2I+PC9wcmU+PCEtLSAtLT4KIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3RhdGUgaXMgdGhlIHNhbWUsIGV4Y2VwdCB0aGF0IHRoZXJlIGlzIG5vIGNvbXByZXNzaW9uIGxldmVsLAogb2YgY291cnNlLCBhbmQgdHdvIG1vcmUgZWxlbWVudHMgb2YgdGhlIHN0cnVjdHVyZSBhcmUgaW5pdGlhbGl6ZWQuICA8dHQ+YXZhaWxfaW48L3R0PgpAQCAtNDk0LDYgKzUxMiwxMCBAQAogewogICAgIGludCByZXQ7CiAKKyAgICAvKiBhdm9pZCBlbmQtb2YtbGluZSBjb252ZXJzaW9ucyAqLworICAgIFNFVF9CSU5BUllfTU9ERShzdGRpbik7CisgICAgU0VUX0JJTkFSWV9NT0RFKHN0ZG91dCk7CisKICAgICAvKiBkbyBjb21wcmVzc2lvbiBpZiBubyBhcmd1bWVudHMgKi8KICAgICBpZiAoYXJnYyA9PSAxKSB7CiAgICAgICAgIHJldCA9IGRlZihzdGRpbiwgc3Rkb3V0LCBaX0RFRkFVTFRfQ09NUFJFU1NJT04pOwpAQCAtNTE4LDYgKzU0MCw2IEBACiB9CiA8L2I+PC9wcmU+CiA8aHI+Ci08aT5Db3B5cmlnaHQgKGMpIDIwMDQgYnkgTWFyayBBZGxlcjxicj5MYXN0IG1vZGlmaWVkIDEzIE5vdmVtYmVyIDIwMDQ8L2k+Cis8aT5Db3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgYnkgTWFyayBBZGxlcjxicj5MYXN0IG1vZGlmaWVkIDExIERlY2VtYmVyIDIwMDU8L2k+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9leGFtcGxlcy96cGlwZS5jIGIvZXhhbXBsZXMvenBpcGUuYwppbmRleCAyNmFiYjU2Li44MzUzNWQxIDEwMDY0NAotLS0gYS9leGFtcGxlcy96cGlwZS5jCisrKyBiL2V4YW1wbGVzL3pwaXBlLmMKQEAgLTEsNiArMSw2IEBACiAvKiB6cGlwZS5jOiBleGFtcGxlIG9mIHByb3BlciB1c2Ugb2YgemxpYidzIGluZmxhdGUoKSBhbmQgZGVmbGF0ZSgpCiAgICBOb3QgY29weXJpZ2h0ZWQgLS0gcHJvdmlkZWQgdG8gdGhlIHB1YmxpYyBkb21haW4KLSAgIFZlcnNpb24gMS4yICA5IE5vdmVtYmVyIDIwMDQgIE1hcmsgQWRsZXIgKi8KKyAgIFZlcnNpb24gMS40ICAxMSBEZWNlbWJlciAyMDA1ICBNYXJrIEFkbGVyICovCiAKIC8qIFZlcnNpb24gaGlzdG9yeToKICAgIDEuMCAgMzAgT2N0IDIwMDQgIEZpcnN0IHZlcnNpb24KQEAgLTgsNiArOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICBVc2Ugc3dpdGNoIHN0YXRlbWVudCBmb3IgaW5mbGF0ZSgpIHJldHVybiB2YWx1ZXMKICAgIDEuMiAgIDkgTm92IDIwMDQgIEFkZCBhc3NlcnRpb25zIHRvIGRvY3VtZW50IHpsaWIgZ3VhcmFudGVlcwogICAgMS4zICAgNiBBcHIgMjAwNSAgUmVtb3ZlIGluY29ycmVjdCBhc3NlcnRpb24gaW4gaW5mKCkKKyAgIDEuNCAgMTEgRGVjIDIwMDUgIEFkZCBoYWNrIHRvIGF2b2lkIE1TRE9TIGVuZC1vZi1saW5lIGNvbnZlcnNpb25zCisgICAgICAgICAgICAgICAgICAgICBBdm9pZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMKICAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTE1LDYgKzE3LDE0IEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSAiemxpYi5oIgogCisjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKKyMgIGluY2x1ZGUgPGZjbnRsLmg+CisjICBpbmNsdWRlIDxpby5oPgorIyAgZGVmaW5lIFNFVF9CSU5BUllfTU9ERShmaWxlKSBzZXRtb2RlKGZpbGVubyhmaWxlKSwgT19CSU5BUlkpCisjZWxzZQorIyAgZGVmaW5lIFNFVF9CSU5BUllfTU9ERShmaWxlKQorI2VuZGlmCisKICNkZWZpbmUgQ0hVTksgMTYzODQKIAogLyogQ29tcHJlc3MgZnJvbSBmaWxlIHNvdXJjZSB0byBmaWxlIGRlc3QgdW50aWwgRU9GIG9uIHNvdXJjZS4KQEAgLTI4LDggKzM4LDggQEAKICAgICBpbnQgcmV0LCBmbHVzaDsKICAgICB1bnNpZ25lZCBoYXZlOwogICAgIHpfc3RyZWFtIHN0cm07Ci0gICAgY2hhciBpbltDSFVOS107Ci0gICAgY2hhciBvdXRbQ0hVTktdOworICAgIHVuc2lnbmVkIGNoYXIgaW5bQ0hVTktdOworICAgIHVuc2lnbmVkIGNoYXIgb3V0W0NIVU5LXTsKIAogICAgIC8qIGFsbG9jYXRlIGRlZmxhdGUgc3RhdGUgKi8KICAgICBzdHJtLnphbGxvYyA9IFpfTlVMTDsKQEAgLTg0LDggKzk0LDggQEAKICAgICBpbnQgcmV0OwogICAgIHVuc2lnbmVkIGhhdmU7CiAgICAgel9zdHJlYW0gc3RybTsKLSAgICBjaGFyIGluW0NIVU5LXTsKLSAgICBjaGFyIG91dFtDSFVOS107CisgICAgdW5zaWduZWQgY2hhciBpbltDSFVOS107CisgICAgdW5zaWduZWQgY2hhciBvdXRbQ0hVTktdOwogCiAgICAgLyogYWxsb2NhdGUgaW5mbGF0ZSBzdGF0ZSAqLwogICAgIHN0cm0uemFsbG9jID0gWl9OVUxMOwpAQCAtMTY3LDYgKzE3NywxMCBAQAogewogICAgIGludCByZXQ7CiAKKyAgICAvKiBhdm9pZCBlbmQtb2YtbGluZSBjb252ZXJzaW9ucyAqLworICAgIFNFVF9CSU5BUllfTU9ERShzdGRpbik7CisgICAgU0VUX0JJTkFSWV9NT0RFKHN0ZG91dCk7CisKICAgICAvKiBkbyBjb21wcmVzc2lvbiBpZiBubyBhcmd1bWVudHMgKi8KICAgICBpZiAoYXJnYyA9PSAxKSB7CiAgICAgICAgIHJldCA9IGRlZihzdGRpbiwgc3Rkb3V0LCBaX0RFRkFVTFRfQ09NUFJFU1NJT04pOwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvenJhbi5jIGIvZXhhbXBsZXMvenJhbi5jCmluZGV4IDhjNzcxN2UuLjYxN2ExMzAgMTAwNjQ0Ci0tLSBhL2V4YW1wbGVzL3pyYW4uYworKysgYi9leGFtcGxlcy96cmFuLmMKQEAgLTM1MSw3ICszNTEsNyBAQAogICAgIGludCBsZW47CiAgICAgb2ZmX3Qgb2Zmc2V0OwogICAgIEZJTEUgKmluOwotICAgIHN0cnVjdCBhY2Nlc3MgKmluZGV4OworICAgIHN0cnVjdCBhY2Nlc3MgKmluZGV4ID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyIGJ1ZltDSFVOS107CiAKICAgICAvKiBvcGVuIGlucHV0IGZpbGUgKi8KZGlmZiAtLWdpdCBhL2d6aW8uYyBiL2d6aW8uYwppbmRleCA3ZTkwZjQ5Li5hODEzMGVmIDEwMDY0NAotLS0gYS9nemlvLmMKKysrIGIvZ3ppby5jCkBAIC0xLDUgKzEsNSBAQAogLyogZ3ppby5jIC0tIElPIG9uIC5neiBmaWxlcwotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgSmVhbi1sb3VwIEdhaWxseS4KKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA2IEplYW4tbG91cCBHYWlsbHkuCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKgogICogQ29tcGlsZSB0aGlzIGZpbGUgd2l0aCAtRE5PX0daQ09NUFJFU1MgdG8gYXZvaWQgdGhlIGNvbXByZXNzaW9uIGNvZGUuCkBAIC03LDkgKzcsOCBAQAogCiAvKiBAKCMpICRJZCQgKi8KIAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KICNpbmNsdWRlICJ6dXRpbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZmRlZiBOT19ERUZMQVRFICAgICAgIC8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGRlZmluaXRpb24gKi8KICMgIGRlZmluZSBOT19HWkNPTVBSRVNTCkBAIC0xODcsNyArMTg2LDEwIEBACiAgICAgICAgIC8qIFdyaXRlIGEgdmVyeSBzaW1wbGUgLmd6IGhlYWRlcjoKICAgICAgICAgICovCiAgICAgICAgIGZwcmludGYocy0+ZmlsZSwgIiVjJWMlYyVjJWMlYyVjJWMlYyVjIiwgZ3pfbWFnaWNbMF0sIGd6X21hZ2ljWzFdLAotICAgICAgICAgICAgIFpfREVGTEFURUQsIDAgLypmbGFncyovLCAwLDAsMCwwIC8qdGltZSovLCAwIC8qeGZsYWdzKi8sIE9TX0NPREUpOworICAgICAgICAgICAgIFpfREVGTEFURUQsIDAgLypmbGFncyovLCAwLDAsMCwwIC8qdGltZSovLCBsZXZlbCA9PSA5ID8gMiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXZlbCAhPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04gJiYgbGV2ZWwgPCAyKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSAvKnhmbGFncyovLCBPU19DT0RFKTsKICAgICAgICAgcy0+c3RhcnQgPSAxMEw7CiAgICAgICAgIC8qIFdlIHVzZSAxMEwgaW5zdGVhZCBvZiBmdGVsbChzLT5maWxlKSB0byBiZWNhdXNlIGZ0ZWxsIGNhdXNlcyBhbgogICAgICAgICAgKiBmZmx1c2ggb24gc29tZSBzeXN0ZW1zLiBUaGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgZG9lc24ndCB1c2UKQEAgLTI1Niw3ICsyNTgsNyBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgIFJlYWQgYSBieXRlIGZyb20gYSBnel9zdHJlYW07IHVwZGF0ZSBuZXh0X2luIGFuZCBhdmFpbF9pbi4gUmV0dXJuIEVPRgogICAgZm9yIGVuZCBvZiBmaWxlLgotICAgSU4gYXNzZXJ0aW9uOiB0aGUgc3RyZWFtIHMgaGFzIGJlZW4gc3VjZXNzZnVsbHkgb3BlbmVkIGZvciByZWFkaW5nLgorICAgSU4gYXNzZXJ0aW9uOiB0aGUgc3RyZWFtIHMgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IG9wZW5lZCBmb3IgcmVhZGluZy4KICovCiBsb2NhbCBpbnQgZ2V0X2J5dGUocykKICAgICBnel9zdHJlYW0gKnM7CkBAIC0yODEsNyArMjgzLDcgQEAKICAgICBtb2RlIHRvIHRyYW5zcGFyZW50IGlmIHRoZSBnemlwIG1hZ2ljIGhlYWRlciBpcyBub3QgcHJlc2VudDsgc2V0IHMtPmVycgogICAgIHRvIFpfREFUQV9FUlJPUiBpZiB0aGUgbWFnaWMgaGVhZGVyIGlzIHByZXNlbnQgYnV0IHRoZSByZXN0IG9mIHRoZSBoZWFkZXIKICAgICBpcyBpbmNvcnJlY3QuCi0gICAgSU4gYXNzZXJ0aW9uOiB0aGUgc3RyZWFtIHMgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIHN1Y2Vzc2Z1bGx5OworICAgIElOIGFzc2VydGlvbjogdGhlIHN0cmVhbSBzIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHk7CiAgICAgICAgcy0+c3RyZWFtLmF2YWlsX2luIGlzIHplcm8gZm9yIHRoZSBmaXJzdCB0aW1lLCBidXQgbWF5IGJlIG5vbi16ZXJvCiAgICAgICAgZm9yIGNvbmNhdGVuYXRlZCAuZ3ogZmlsZXMuCiAqLwpAQCAtMzAxLDYgKzMwMyw3IEBACiAgICAgICAgIGlmIChsZW4pIHMtPmluYnVmWzBdID0gcy0+c3RyZWFtLm5leHRfaW5bMF07CiAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgbGVuID0gKHVJbnQpZnJlYWQocy0+aW5idWYgKyBsZW4sIDEsIFpfQlVGU0laRSA+PiBsZW4sIHMtPmZpbGUpOworICAgICAgICBpZiAobGVuID09IDApIHMtPnpfZW9mID0gMTsKICAgICAgICAgaWYgKGxlbiA9PSAwICYmIGZlcnJvcihzLT5maWxlKSkgcy0+el9lcnIgPSBaX0VSUk5POwogICAgICAgICBzLT5zdHJlYW0uYXZhaWxfaW4gKz0gbGVuOwogICAgICAgICBzLT5zdHJlYW0ubmV4dF9pbiA9IHMtPmluYnVmOwpAQCAtNDM2LDcgKzQzOSw3IEBACiAgICAgICAgICAgICAgICAgcy0+c3RyZWFtLmF2YWlsX291dCAtPSBuOwogICAgICAgICAgICAgICAgIHMtPnN0cmVhbS5hdmFpbF9pbiAgLT0gbjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzLT5zdHJlYW0uYXZhaWxfb3V0ID4gMCkgeworICAgICAgICAgICAgaWYgKHMtPnN0cmVhbS5hdmFpbF9vdXQgPiAwICYmICFmZW9mKHMtPmZpbGUpKSB7CiAgICAgICAgICAgICAgICAgcy0+c3RyZWFtLmF2YWlsX291dCAtPQogICAgICAgICAgICAgICAgICAgICAodUludClmcmVhZChuZXh0X291dCwgMSwgcy0+c3RyZWFtLmF2YWlsX291dCwgcy0+ZmlsZSk7CiAgICAgICAgICAgICB9CkBAIC05NzEsNyArOTc0LDcgQEAKICAgICByZXR1cm4gZGVzdHJveSgoZ3pfc3RyZWFtKilmaWxlKTsKIH0KIAotI2lmZGVmIFNUREMKKyNpZiBkZWZpbmVkKFNUREMpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpCiAjICBkZWZpbmUgenN0cmVycm9yKGVycm51bSkgc3RyZXJyb3IoZXJybnVtKQogI2Vsc2UKICMgIGRlZmluZSB6c3RyZXJyb3IoZXJybnVtKSAiIgpkaWZmIC0tZ2l0IGEvaW5mbGF0ZS5oIGIvaW5mbGF0ZS5oCmluZGV4IDA3YmQzZTcuLmQ5MGM2YmMgMTAwNjQ0Ci0tLSBhL2luZmxhdGUuaAorKysgYi9pbmZsYXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKiBpbmZsYXRlLmggLS0gaW50ZXJuYWwgaW5mbGF0ZSBzdGF0ZSBkZWZpbml0aW9uCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNCBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNiBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtNzMsNyArNzMsNyBAQAogICAgICAgICBDSEVDSyAtPiBMRU5HVEggLT4gRE9ORQogICovCiAKLS8qIHN0YXRlIG1haW50YWluZWQgYmV0d2VlbiBpbmZsYXRlKCkgY2FsbHMuICBBcHByb3hpbWF0ZWx5IDdLIGJ5dGVzLiAqLworLyogc3RhdGUgbWFpbnRhaW5lZCBiZXR3ZWVuIGluZmxhdGUoKSBjYWxscy4gIEFwcHJveGltYXRlbHkgMTBLIGJ5dGVzLiAqLwogc3RydWN0IGluZmxhdGVfc3RhdGUgewogICAgIGluZmxhdGVfbW9kZSBtb2RlOyAgICAgICAgICAvKiBjdXJyZW50IGluZmxhdGUgbW9kZSAqLwogICAgIGludCBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiB0cnVlIGlmIHByb2Nlc3NpbmcgbGFzdCBibG9jayAqLwpkaWZmIC0tZ2l0IGEvaW5mdHJlZXMuYyBiL2luZnRyZWVzLmMKaW5kZXggOGE5YzEzZi4uYjY5YTFmOSAxMDA2NDQKLS0tIGEvaW5mdHJlZXMuYworKysgYi9pbmZ0cmVlcy5jCkBAIC05LDcgKzksNyBAQAogI2RlZmluZSBNQVhCSVRTIDE1CiAKIGNvbnN0IGNoYXIgaW5mbGF0ZV9jb3B5cmlnaHRbXSA9Ci0gICAiIGluZmxhdGUgMS4yLjMgQ29weXJpZ2h0IDE5OTUtMjAwNSBNYXJrIEFkbGVyICI7CisgICAiIGluZmxhdGUgMS4yLjMuMSBDb3B5cmlnaHQgMTk5NS0yMDA1IE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtNjIsNyArNjIsNyBAQAogICAgICAgICAzNSwgNDMsIDUxLCA1OSwgNjcsIDgzLCA5OSwgMTE1LCAxMzEsIDE2MywgMTk1LCAyMjcsIDI1OCwgMCwgMH07CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxleHRbMzFdID0geyAvKiBMZW5ndGggY29kZXMgMjU3Li4yODUgZXh0cmEgKi8KICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsCi0gICAgICAgIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCAyMDEsIDE5Nn07CisgICAgICAgIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3NCwgMTk2fTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBiYXNlICovCiAgICAgICAgIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywKICAgICAgICAgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LApkaWZmIC0tZ2l0IGEvbWFrZV92bXMuY29tIGIvbWFrZV92bXMuY29tCmluZGV4IGMyYTFmYjUuLmFhNGU0NjEgMTAwNjQ0Ci0tLSBhL21ha2Vfdm1zLmNvbQorKysgYi9tYWtlX3Ztcy5jb20KQEAgLTEsNiArMSwxNSBAQAogJCEgbWFrZSBsaWJ6IHVuZGVyIFZNUyB3cml0dGVuIGJ5CiAkISBNYXJ0aW4gUC5KLiBaaW5zZXIKLSQhIDx6aW5zZXJAemluc2VyLm5vLWlwLmluZm8gb3Igemluc2VyQHN5c2Rldi5kZXV0c2NoZS1ib2Vyc2UuY29tPgorJCEKKyQhIEluIGNhc2Ugb2YgcHJvYmxlbXMgd2l0aCB0aGUgaW5zdGFsbCB5b3UgbWlnaHQgY29udGFjdCBtZSBhdAorJCEgemluc2VyQHppbnNlci5uby1pcC5pbmZvKHByZWZlcnJlZCkgb3IKKyQhIHppbnNlckBzeXNkZXYuZGV1dHNjaGUtYm9lcnNlLmNvbSAod29yaykKKyQhCiskISBNYWtlIHByb2NlZHVyZSBoaXN0b3J5IGZvciBabGliCiskIQorJCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyQhIFZlcnNpb24gaGlzdG9yeQorJCEgMC4wMSAyMDA2MDEyMCBGaXJzdCB2ZXJzaW9uIHRvIHJlY2VpdmUgYSBudW1iZXIKICQhCiAkIG9uIGVycm9yIHRoZW4gZ290byBlcnJfZXhpdAogJCEKQEAgLTEwLDcgKzE5LDEwIEBACiAkIHRydWUgID0gMQogJCBmYWxzZSA9IDAKICQgdG1wbmFtID0gInRlbXBfIiArIGYkZ2V0anBpKCIiLCJwaWQiKQotJCBTQVkgPSAiV1JJVEUgU1lTJE9VVFBVVCIKKyQgaXRzX2RlY2MgPSBmYWxzZQorJCBpdHNfdmF4YyA9IGZhbHNlCiskIGl0c19nbnVjID0gZmFsc2UKKyQgc19jYXNlICAgPSBGYWxzZQogJCEKICQhIFNldHVwIHZhcmlhYmxlcyBob2xkaW5nICJjb25maWciIGluZm9ybWF0aW9uCiAkIQpAQCAtMjEsMTMgKzMzLDExIEBACiAkIHZfZmlsZSAgID0gInpsaWIuaCIKICQgY2NvcHQgICAgPSAiIgogJCBsb3B0cyAgICA9ICIiCiskIGRuc3JsICAgPSAiIgogJCBsaW5rb25seSA9IGZhbHNlCiAkIG9wdGZpbGUgID0gbmFtZSArICIub3B0IgotJCBpdHNfZGVjYyA9IGZhbHNlCi0kIGl0c192YXhjID0gZmFsc2UKLSQgaXRzX2dudWMgPSBmYWxzZQogJCBheHAgICAgICA9IGYkZ2V0c3lpKCJIV19NT0RFTCIpLmdlLjEwMjQKLSQgc19jYXNlICAgPSBmYWxzZQorJCEKICQhIENoZWNrIGZvciBNTUsvTU1TCiAkIQogJCBJZiBGJFNlYXJjaCAoIlN5cyRTeXN0ZW06TU1TLkVYRSIpIC5uZXMuICIiIFRoZW4gTWFrZSA9ICJNTVMiCkBAIC0xMDcsNyArMTE3LDcgQEAKICQgICBlbmRpZgogJCAgZWxzZQogJCAgIGdvc3ViIGNyZWFfbW1zCi0kICAgU0FZICJNYWtlICcnbmFtZScgJyd2ZXJzaW9uJyB3aXRoICcnTWFrZScgIgorJCAgIHdyaXRlIHN5cyRvdXRwdXQgIk1ha2UgJyduYW1lJyAnJ3ZlcnNpb24nIHdpdGggJydNYWtlJyAiCiAkICAgJ21ha2UnCiAkICBlbmRpZgogJCEKQEAgLTEzMyw2ICsxNDMsNyBAQAogJCBnb3RvIGVycl9leGl0CiAkRVJSX0VYSVQ6CiAkIHNldCBtZXNzYWdlL2ZhY2lsL2lkZW50L3NldmVyL3RleHQKKyQgY2xvc2Uvbm9sb2cgb3B0ZgogJCB3cml0ZSBzeXMkb3V0cHV0ICJFeGl0aW5nLi4uIgogJCBleGl0IDIKICQhCkBAIC0yNDQsNiArMjU1LDkgQEAKICQhCiAkISBMb29rIGZvciB0aGUgY29tcGlsZXIgdXNlZAogJCEKKyQhIFZlcnNpb24gaGlzdG9yeQorJCEgMC4wMSAyMDA0MDIyMyBGaXJzdCB2ZXJzaW9uIHRvIHJlY2VpdmUgYSBudW1iZXIKKyQhIDAuMDIgMjAwNDAyMjkgU2F2ZS9zZXQgdmFsdWUgb2YgZGVjYyRub19yb290ZWRfc2VhcmNoX2xpc3RzCiAkQ0hFQ0tfQ09NUElMRVI6CiAkIGlmICgubm90LiAoaXRzX2RlY2MgLm9yLiBpdHNfdmF4YyAub3IuIGl0c19nbnVjKSkKICQgdGhlbgpAQCAtMjU3LDkgKzI3MSwyMCBAQAogJCBpZiAoLm5vdC4gKGl0c19kZWNjIC5vci4gaXRzX3ZheGMgLm9yLiBpdHNfZ251YykpCiAkIHRoZW4gZ290byBDQ19FUlIKICQgZWxzZQotJCAgIGlmIGl0c19kZWNjIHRoZW4gd3JpdGUgc3lzJG91dHB1dCAiQ0MgY29tcGlsZXIgY2hlY2sgLi4uIENvbXBhcSBDIgotJCAgIGlmIGl0c192YXhjIHRoZW4gd3JpdGUgc3lzJG91dHB1dCAiQ0MgY29tcGlsZXIgY2hlY2sgLi4uIFZBWCBDIgotJCAgIGlmIGl0c19nbnVjIHRoZW4gd3JpdGUgc3lzJG91dHB1dCAiQ0MgY29tcGlsZXIgY2hlY2sgLi4uIEdOVSBDIgorJCAgIGlmIGl0c19kZWNjCiskICAgdGhlbgorJCAgICAgd3JpdGUgc3lzJG91dHB1dCAiQ0MgY29tcGlsZXIgY2hlY2sgLi4uIENvbXBhcSBDIgorJCAgICAgaWYgZiR0cm5sbm0oImRlY2Mkbm9fcm9vdGVkX3NlYXJjaF9saXN0cyIpIC5uZXMuICIiCiskICAgICB0aGVuCiskICAgICAgIGRucnNsID0gZiR0cm5sbm0oImRlY2Mkbm9fcm9vdGVkX3NlYXJjaF9saXN0cyIpCiskICAgICBlbmRpZgorJCAgICAgZGVmaW5lIGRlY2Mkbm9fcm9vdGVkX3NlYXJjaF9saXN0cyAxCiskICAgZWxzZQorJCAgICAgaWYgaXRzX3ZheGMgdGhlbiB3cml0ZSBzeXMkb3V0cHV0ICJDQyBjb21waWxlciBjaGVjayAuLi4gVkFYIEMiCiskICAgICBpZiBpdHNfZ251YyB0aGVuIHdyaXRlIHN5cyRvdXRwdXQgIkNDIGNvbXBpbGVyIGNoZWNrIC4uLiBHTlUgQyIKKyQgICAgIGlmIGYkdHJubG5tKHRvcHQpIHRoZW4gd3JpdGUgdG9wdCAic3lzJHNoYXJlOnZheGNydGwuZXhlL3NoYXJlIgorJCAgICAgaWYgZiR0cm5sbm0ob3B0ZikgdGhlbiB3cml0ZSBvcHRmICJzeXMkc2hhcmU6dmF4Y3J0bC5leGUvc2hhcmUiCiskICAgZW5kaWYKICQgZW5kaWYKICQgcmV0dXJuCiAkIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzgyLDE3ICs0MDcsMjMgQEAKICQgcmV0dXJuCiAkIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCEKLSQhIEFuYWx5emUgT2JqZWN0IGZpbGVzIGZvciBPcGVuVk1TIEFYUCB0byBleHRyYWN0IFByb2NlZHVyZSBhbmQgRGF0YQorJCEgQW5hbHl6ZSBPYmplY3QgZmlsZXMgZm9yIE9wZW5WTVMgQVhQIHRvIGV4dHJhY3QgUHJvY2VkdXJlIGFuZCBEYXRhIAogJCEgaW5mb3JtYXRpb24gdG8gYnVpbGQgYSBzeW1ib2wgdmVjdG9yIGZvciBhIHNoYXJlYWJsZSBpbWFnZQogJCEgQWxsIHRoZSAiYnJhaW5zIiBvZiB0aGlzIGxvZ2ljIHdhcyBzdWdnZXN0ZWQgYnkgSGFydG11dCBCZWNrZXIKICQhIChIYXJ0bXV0LkJlY2tlckBjb21wYXEuY29tKS4gQWxsIHRoZSBidWdzIHdlcmUgaW50cm9kdWNlZCBieSBtZQotJCEgKHppbnNlckBkZWN1cy5kZSksIHNvIGlmIHlvdSBkbyBoYXZlIHByb2JsZW0gcmVwb3J0cyBwbGVhc2UgZG8gbm90CiskISAoemluc2VyQHppbnNlci5uby1pcC5pbmZvKSwgc28gaWYgeW91IGRvIGhhdmUgcHJvYmxlbSByZXBvcnRzIHBsZWFzZSBkbyBub3QKICQhIGJvdGhlciBIYXJ0bXV0L0hQLCBidXQgZ2V0IGluIHRvdWNoIHdpdGggbWUKICQhCi0kIEFOQUxfT0JKX0FYUDogU3Vicm91dGluZQorJCEgVmVyc2lvbiBoaXN0b3J5CiskISAwLjAxIDIwMDQwNDA2IFNraXAgb3ZlciBzaGFyZWFibGUgaW1hZ2VzIGluIG9wdGlvbiBmaWxlCiskISAwLjAyIDIwMDQxMTA5IEZpeCBvcHRpb24gZmlsZSBmb3Igc2hhcmVhYmxlIGltYWdlcyB3aXRoIGNhc2Vfc2Vuc2l0aXZlPVlFUworJCEgMC4wMyAyMDA1MDEwNyBTa2lwIG92ZXIgSWRlbnRpZmljYXRpb24gbGFiZWxzIGluIG9wdGlvbiBmaWxlCiskISAwLjA0IDIwMDYwMTE3IEFkZCB1cHBlcmNhc2UgYWxpYXMgdG8gY29kZSBjb21waWxlZCB3aXRoIC9uYW1lPWFzX2lzCiskIQorJCBBTkFMX09CSl9BWFA6IFN1YnJvdXRpbmUgICAKICQgViA9ICdGJFZlcmlmeSgwKQogJCBTQVkgOj0gIldSSVRFXyBTWVMkT1VUUFVUIgotJAorJCAKICQgSUYgRiRTRUFSQ0goIicnUDEnIikgLkVRUy4gIiIKICQgVEhFTgogJCAgICBTQVkgIkFOQUxfT0JKX0FYUC1FLU5PU1VDSEZJTEU6ICBFcnJvciwgaW5wdXRmaWxlICcncDEnIG5vdCBhdmFpbGFibGUiCkBAIC00MDksNiArNDQwLDE3IEBACiAkIG9wZW4vYXBwZW5kIGF0bXAgYS50bXAKICQgbG9vcDoKICQgcmVhZC9lbmQ9ZW5kX2xvb3AgaW4gbGluZQorJCBpZiBmJGxvY2F0ZSgiL1NIQVJFIixmJGVkaXQobGluZSwidXBjYXNlIikpIC5sdC4gZiRsZW5ndGgobGluZSkKKyQgdGhlbgorJCAgIHdyaXRlIHN5cyRvdXRwdXQgIkFOQUxfU0tQX1NIUi1pLXNraXBzaGFyZSwgJydsaW5lJyIKKyQgICBnb3RvIGxvb3AKKyQgZW5kaWYKKyQgaWYgZiRsb2NhdGUoIklERU5USUZJQ0FUSU9OPSIsZiRlZGl0KGxpbmUsInVwY2FzZSIpKSAubHQuIGYkbGVuZ3RoKGxpbmUpCiskIHRoZW4KKyQgICB3cml0ZSBzeXMkb3V0cHV0ICJBTkFMX09CSl9BWFAtaS1pZGVudDogSWRlbnRpZmljYXRpb24gIiwgLQorICAgICAgICAgICAgICAgICAgICAgZiRlbGVtZW50KDEsIj0iLGxpbmUpCiskICAgZ290byBsb29wCiskIGVuZGlmCiAkIGY9IGYkc2VhcmNoKGxpbmUpCiAkIGlmIGYgLmVxcy4gIiIKICQgdGhlbgpAQCAtNDUwLDEyICs0OTIsMzUgQEAKIHN1Yi9zeW1ib2w6ICIvc3ltYm9sX3ZlY3Rvcj0oL3dob2xlCiBzdWIvIi89REFUQSkvd2hvbGUKIGV4aXQKLSQgc29ydC9ub2R1cGwgZC50bXAsZi50bXAgJ3AyJwotJCBkZWxldGUgYS50bXA7KixiLnRtcDsqLGMudG1wOyosZC50bXA7KixlLnRtcDsqLGYudG1wOyoKKyQgc29ydC9ub2R1cGwgZC50bXAsZi50bXAgZy50bXAKKyQgb3Blbi9yZWFkIHJhd192ZWN0b3IgZy50bXAKKyQgb3Blbi93cml0ZSBjYXNlX3ZlY3RvciAncDInCiskIFJBV0xPT1A6CiskIHJlYWQvZW5kPWVuZF9yYXdsb29wIHJhd192ZWN0b3IgcmF3X2VsZW1lbnQKKyQgd3JpdGUgY2FzZV92ZWN0b3IgcmF3X2VsZW1lbnQKKyQgaWYgZiRsb2NhdGUoIj1QUk9DRURVUkUpIixyYXdfZWxlbWVudCkgLmx0LiBmJGxlbmd0aChyYXdfZWxlbWVudCkKKyQgdGhlbgorJCAgICAgbmFtZSA9IGYkZWxlbWVudCgxLCI9IixyYXdfZWxlbWVudCkgLSAiKCIKKyQgICAgIGlmIGYkZWRpdChuYW1lLCJVUENBU0UiKSAubmVzLiBuYW1lIHRoZW4gLQorICAgICAgICAgIHdyaXRlIGNhc2VfdmVjdG9yIGYkZmFvKCIgc3ltYm9sX3ZlY3Rvcj0oIUFTLyFBUz1QUk9DRURVUkUpIiwgLSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIGYkZWRpdChuYW1lLCJVUENBU0UiKSwgbmFtZSkgCiskIGVuZGlmCiskIGlmIGYkbG9jYXRlKCI9REFUQSkiLHJhd19lbGVtZW50KSAubHQuIGYkbGVuZ3RoKHJhd19lbGVtZW50KQorJCB0aGVuCiskICAgICBuYW1lID0gZiRlbGVtZW50KDEsIj0iLHJhd19lbGVtZW50KSAtICIoIgorJCAgICAgaWYgZiRlZGl0KG5hbWUsIlVQQ0FTRSIpIC5uZXMuIG5hbWUgdGhlbiAtCisgICAgICAgICAgd3JpdGUgY2FzZV92ZWN0b3IgZiRmYW8oIiBzeW1ib2xfdmVjdG9yPSghQVMvIUFTPURBVEEpIiwgLSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIGYkZWRpdChuYW1lLCJVUENBU0UiKSwgbmFtZSkgCiskIGVuZGlmCiskIGdvdG8gcmF3bG9vcAorJCBFTkRfUkFXTE9PUDoKKyQgY2xvc2UgcmF3X3ZlY3RvcgorJCBjbG9zZSBjYXNlX3ZlY3RvcgorJCBkZWxldGUgYS50bXA7KixiLnRtcDsqLGMudG1wOyosZC50bXA7KixlLnRtcDsqLGYudG1wOyosZy50bXA7KgogJCBpZiBmJHNlYXJjaCgieC50bXAiKSAubmVzLiAiIiAtCiAJdGhlbiAkIGRlbGV0ZSB4LnRtcDsqCiAkIQogJCBFWElUX0FBOgogJCBpZiBWIHRoZW4gc2V0IHZlcmlmeQotJCBlbmRzdWJyb3V0aW5lCiskIGVuZHN1YnJvdXRpbmUgCiAkIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbWluaWd6aXAuYyBiL21pbmlnemlwLmMKaW5kZXggNDUyNGI5Ni4uNzliYWZhNCAxMDA2NDQKLS0tIGEvbWluaWd6aXAuYworKysgYi9taW5pZ3ppcC5jCkBAIC0xLDUgKzEsNSBAQAogLyogbWluaWd6aXAuYyAtLSBzaW11bGF0ZSBnemlwIHVzaW5nIHRoZSB6bGliIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNiBKZWFuLWxvdXAgR2FpbGx5LgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTE1LDggKzE1LDggQEAKIAogLyogQCgjKSAkSWQkICovCiAKLSNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgInpsaWIuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgogCiAjaWZkZWYgU1REQwogIyAgaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9wcm9qZWN0cy92aXN1YWxjNi9leGFtcGxlLmRzcCBiL3Byb2plY3RzL3Zpc3VhbGM2L2V4YW1wbGUuZHNwCmluZGV4IGUwNzJhMzcuLmY3MTNlZmQgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL3Zpc3VhbGM2L2V4YW1wbGUuZHNwCisrKyBiL3Byb2plY3RzL3Zpc3VhbGM2L2V4YW1wbGUuZHNwCkBAIC0xNywxNCArMTcsMTQgQEAKICFNRVNTQUdFIA0KICFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KICFNRVNTQUdFIA0KLSFNRVNTQUdFICJleGFtcGxlIC0gV2luMzIgRExMIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgImV4YW1wbGUgLSBXaW4zMiBETEwgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQogIU1FU1NBR0UgImV4YW1wbGUgLSBXaW4zMiBETEwgQVNNIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQogIU1FU1NBR0UgImV4YW1wbGUgLSBXaW4zMiBETEwgQVNNIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJleGFtcGxlIC0gV2luMzIgTElCIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgImV4YW1wbGUgLSBXaW4zMiBMSUIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgImV4YW1wbGUgLSBXaW4zMiBETEwgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAiZXhhbXBsZSAtIFdpbjMyIERMTCBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCiAhTUVTU0FHRSAiZXhhbXBsZSAtIFdpbjMyIExJQiBBU00gUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCiAhTUVTU0FHRSAiZXhhbXBsZSAtIFdpbjMyIExJQiBBU00gRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgImV4YW1wbGUgLSBXaW4zMiBMSUIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAiZXhhbXBsZSAtIFdpbjMyIExJQiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCiAhTUVTU0FHRSANCiANCiAjIEJlZ2luIFByb2plY3QNCkBAIC0zNCw1OSArMzQsNyBAQAogQ1BQPWNsLmV4ZQ0KIFJTQz1yYy5leGUNCiANCi0hSUYgICIkKENGRykiID09ICJleGFtcGxlIC0gV2luMzIgRExMIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZXhhbXBsZV9fX1dpbjMyX0RMTF9SZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgImV4YW1wbGVfX19XaW4zMl9ETExfUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiV2luMzJfRExMX1JlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0RMTF9SZWxlYXNlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQotIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImV4YW1wbGUgLSBXaW4zMiBETEwgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZXhhbXBsZV9fX1dpbjMyX0RMTF9EZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJleGFtcGxlX19fV2luMzJfRExMX0RlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9ETExfRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0RMTF9EZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCi0jIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0ZEIC9HWiAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImV4YW1wbGUgLSBXaW4zMiBETEwgQVNNIFJlbGVhc2UiDQorIUlGICAiJChDRkcpIiA9PSAiZXhhbXBsZSAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSINCiANCiAjIFBST1AgQkFTRSBVc2VfTUZDIDANCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCkBAIC0xMDEsNyArNDksNyBAQAogIyBQUk9QIFRhcmdldF9EaXIgIiINCiAjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9GRCAvYw0KICMgU1VCVFJBQ1QgQ1BQIC9ZWA0KICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQpAQCAtMTI3LDcgKzc1LDcgQEAKICMgUFJPUCBUYXJnZXRfRGlyICIiDQogIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCiAjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0ZEIC9HWiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJfREVCVUciIC9GUiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYDQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCkBAIC0xMzgsMjIgKzg2LDIyIEBACiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQogIyBBREQgTElOSzMyIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZXhhbXBsZSAtIFdpbjMyIExJQiBSZWxlYXNlIg0KKyFFTFNFSUYgICIkKENGRykiID09ICJleGFtcGxlIC0gV2luMzIgRExMIFJlbGVhc2UiDQogDQogIyBQUk9QIEJBU0UgVXNlX01GQyAwDQogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZXhhbXBsZV9fX1dpbjMyX0xJQl9SZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgImV4YW1wbGVfX19XaW4zMl9MSUJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJleGFtcGxlX19fV2luMzJfRExMX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiZXhhbXBsZV9fX1dpbjMyX0RMTF9SZWxlYXNlIg0KICMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCiAjIFBST1AgVXNlX01GQyAwDQogIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfUmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIE91dHB1dF9EaXIgIldpbjMyX0RMTF9SZWxlYXNlIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfUmVsZWFzZSINCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KICMgUFJPUCBUYXJnZXRfRGlyICIiDQogIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KICMgU1VCVFJBQ1QgQkFTRSBDUFAgL1lYDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiTkRFQlVHIiAvRkQgL2MNCiAjIFNVQlRSQUNUIENQUCAvWVgNCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KQEAgLTE2NCwyMiArMTEyLDIyIEBACiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQogIyBBREQgTElOSzMyIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZXhhbXBsZSAtIFdpbjMyIExJQiBEZWJ1ZyINCishRUxTRUlGICAiJChDRkcpIiA9PSAiZXhhbXBsZSAtIFdpbjMyIERMTCBEZWJ1ZyINCiANCiAjIFBST1AgQkFTRSBVc2VfTUZDIDANCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJleGFtcGxlX19fV2luMzJfTElCX0RlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgImV4YW1wbGVfX19XaW4zMl9MSUJfRGVidWciDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZXhhbXBsZV9fX1dpbjMyX0RMTF9EZWJ1ZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJleGFtcGxlX19fV2luMzJfRExMX0RlYnVnIg0KICMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCiAjIFBST1AgVXNlX01GQyAwDQogIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgT3V0cHV0X0RpciAiV2luMzJfRExMX0RlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfRGVidWciDQogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCiAjIFBST1AgVGFyZ2V0X0RpciAiIg0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiX0RFQlVHIiAvRlIgL0ZEIC9HWiAvYw0KICMgU1VCVFJBQ1QgQ1BQIC9ZWA0KICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQpAQCAtMjA1LDcgKzE1Myw3IEBACiAjIFBST1AgVGFyZ2V0X0RpciAiIg0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCiAjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIiAvRCAiX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSIgL0QgIk5ERUJVRyIgL0ZEIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYDQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCkBAIC0yMzEsNyArMTc5LDU5IEBACiAjIFBST1AgVGFyZ2V0X0RpciAiIg0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiX0RFQlVHIiAvRlIgL0ZEIC9HWiAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKyMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImV4YW1wbGUgLSBXaW4zMiBMSUIgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJleGFtcGxlX19fV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiZXhhbXBsZV9fX1dpbjMyX0xJQl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfUmVsZWFzZSINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9GRCAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KKyMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImV4YW1wbGUgLSBXaW4zMiBMSUIgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZXhhbXBsZV9fX1dpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJleGFtcGxlX19fV2luMzJfTElCX0RlYnVnIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfRGVidWciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJfREVCVUciIC9GUiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYDQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCkBAIC0yNDYsMTQgKzI0NiwxNCBAQAogDQogIyBCZWdpbiBUYXJnZXQNCiANCi0jIE5hbWUgImV4YW1wbGUgLSBXaW4zMiBETEwgUmVsZWFzZSINCi0jIE5hbWUgImV4YW1wbGUgLSBXaW4zMiBETEwgRGVidWciDQogIyBOYW1lICJleGFtcGxlIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KICMgTmFtZSAiZXhhbXBsZSAtIFdpbjMyIERMTCBBU00gRGVidWciDQotIyBOYW1lICJleGFtcGxlIC0gV2luMzIgTElCIFJlbGVhc2UiDQotIyBOYW1lICJleGFtcGxlIC0gV2luMzIgTElCIERlYnVnIg0KKyMgTmFtZSAiZXhhbXBsZSAtIFdpbjMyIERMTCBSZWxlYXNlIg0KKyMgTmFtZSAiZXhhbXBsZSAtIFdpbjMyIERMTCBEZWJ1ZyINCiAjIE5hbWUgImV4YW1wbGUgLSBXaW4zMiBMSUIgQVNNIFJlbGVhc2UiDQogIyBOYW1lICJleGFtcGxlIC0gV2luMzIgTElCIEFTTSBEZWJ1ZyINCisjIE5hbWUgImV4YW1wbGUgLSBXaW4zMiBMSUIgUmVsZWFzZSINCisjIE5hbWUgImV4YW1wbGUgLSBXaW4zMiBMSUIgRGVidWciDQogIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KIA0KICMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCmRpZmYgLS1naXQgYS9wcm9qZWN0cy92aXN1YWxjNi9taW5pZ3ppcC5kc3AgYi9wcm9qZWN0cy92aXN1YWxjNi9taW5pZ3ppcC5kc3AKaW5kZXggZjMyMDI0ZS4uYzUwYjQ4OCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvdmlzdWFsYzYvbWluaWd6aXAuZHNwCisrKyBiL3Byb2plY3RzL3Zpc3VhbGM2L21pbmlnemlwLmRzcApAQCAtMTcsMTQgKzE3LDE0IEBACiAhTUVTU0FHRSANCiAhTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCiAhTUVTU0FHRSANCi0hTUVTU0FHRSAibWluaWd6aXAgLSBXaW4zMiBETEwgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCi0hTUVTU0FHRSAibWluaWd6aXAgLSBXaW4zMiBETEwgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQogIU1FU1NBR0UgIm1pbmlnemlwIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KICFNRVNTQUdFICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBBU00gRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgIm1pbmlnemlwIC0gV2luMzIgTElCIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgIm1pbmlnemlwIC0gV2luMzIgTElCIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCiAhTUVTU0FHRSAibWluaWd6aXAgLSBXaW4zMiBMSUIgQVNNIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQogIU1FU1NBR0UgIm1pbmlnemlwIC0gV2luMzIgTElCIEFTTSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAibWluaWd6aXAgLSBXaW4zMiBMSUIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAibWluaWd6aXAgLSBXaW4zMiBMSUIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQogIU1FU1NBR0UgDQogDQogIyBCZWdpbiBQcm9qZWN0DQpAQCAtMzQsNTkgKzM0LDcgQEAKIENQUD1jbC5leGUNCiBSU0M9cmMuZXhlDQogDQotIUlGICAiJChDRkcpIiA9PSAibWluaWd6aXAgLSBXaW4zMiBETEwgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJtaW5pZ3ppcF9fX1dpbjMyX0RMTF9SZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIm1pbmlnemlwX19fV2luMzJfRExMX1JlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIldpbjMyX0RMTF9SZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfUmVsZWFzZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KLSMgU1VCVFJBQ1QgQkFTRSBDUFAgL1lYDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJtaW5pZ3ppcF9fX1dpbjMyX0RMTF9EZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJtaW5pZ3ppcF9fX1dpbjMyX0RMTF9EZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiV2luMzJfRExMX0RlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQotIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSINCishSUYgICIkKENGRykiID09ICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSINCiANCiAjIFBST1AgQkFTRSBVc2VfTUZDIDANCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCkBAIC0xMDEsNyArNDksNyBAQAogIyBQUk9QIFRhcmdldF9EaXIgIiINCiAjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9GRCAvYw0KICMgU1VCVFJBQ1QgQ1BQIC9ZWA0KICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQpAQCAtMTI3LDcgKzc1LDcgQEAKICMgUFJPUCBUYXJnZXRfRGlyICIiDQogIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCiAjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0ZEIC9HWiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJfREVCVUciIC9GUiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYDQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCkBAIC0xMzgsMjIgKzg2LDIyIEBACiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQogIyBBREQgTElOSzMyIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibWluaWd6aXAgLSBXaW4zMiBMSUIgUmVsZWFzZSINCishRUxTRUlGICAiJChDRkcpIiA9PSAibWluaWd6aXAgLSBXaW4zMiBETEwgUmVsZWFzZSINCiANCiAjIFBST1AgQkFTRSBVc2VfTUZDIDANCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJtaW5pZ3ppcF9fX1dpbjMyX0xJQl9SZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIm1pbmlnemlwX19fV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAibWluaWd6aXBfX19XaW4zMl9ETExfUmVsZWFzZSINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJtaW5pZ3ppcF9fX1dpbjMyX0RMTF9SZWxlYXNlIg0KICMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCiAjIFBST1AgVXNlX01GQyAwDQogIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfUmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIE91dHB1dF9EaXIgIldpbjMyX0RMTF9SZWxlYXNlIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfUmVsZWFzZSINCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KICMgUFJPUCBUYXJnZXRfRGlyICIiDQogIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KICMgU1VCVFJBQ1QgQkFTRSBDUFAgL1lYDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiTkRFQlVHIiAvRkQgL2MNCiAjIFNVQlRSQUNUIENQUCAvWVgNCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KQEAgLTE2NCwyMiArMTEyLDIyIEBACiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQogIyBBREQgTElOSzMyIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibWluaWd6aXAgLSBXaW4zMiBMSUIgRGVidWciDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIm1pbmlnemlwIC0gV2luMzIgRExMIERlYnVnIg0KIA0KICMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIm1pbmlnemlwX19fV2luMzJfTElCX0RlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIm1pbmlnemlwX19fV2luMzJfTElCX0RlYnVnIg0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIm1pbmlnemlwX19fV2luMzJfRExMX0RlYnVnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIm1pbmlnemlwX19fV2luMzJfRExMX0RlYnVnIg0KICMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCiAjIFBST1AgVXNlX01GQyAwDQogIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgT3V0cHV0X0RpciAiV2luMzJfRExMX0RlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfRGVidWciDQogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCiAjIFBST1AgVGFyZ2V0X0RpciAiIg0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiX0RFQlVHIiAvRlIgL0ZEIC9HWiAvYw0KICMgU1VCVFJBQ1QgQ1BQIC9ZWA0KICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQpAQCAtMjA1LDcgKzE1Myw3IEBACiAjIFBST1AgVGFyZ2V0X0RpciAiIg0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCiAjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIiAvRCAiX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSIgL0QgIk5ERUJVRyIgL0ZEIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYDQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCkBAIC0yMzEsNyArMTc5LDU5IEBACiAjIFBST1AgVGFyZ2V0X0RpciAiIg0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVgNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiX0RFQlVHIiAvRlIgL0ZEIC9HWiAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKyMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIm1pbmlnemlwIC0gV2luMzIgTElCIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAibWluaWd6aXBfX19XaW4zMl9MSUJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJtaW5pZ3ppcF9fX1dpbjMyX0xJQl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfUmVsZWFzZSINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9GRCAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KKyMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIm1pbmlnemlwIC0gV2luMzIgTElCIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIm1pbmlnemlwX19fV2luMzJfTElCX0RlYnVnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIm1pbmlnemlwX19fV2luMzJfTElCX0RlYnVnIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9MSUJfRGVidWciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWA0KKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJfREVCVUciIC9GUiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYDQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCkBAIC0yNDYsMTQgKzI0NiwxNCBAQAogDQogIyBCZWdpbiBUYXJnZXQNCiANCi0jIE5hbWUgIm1pbmlnemlwIC0gV2luMzIgRExMIFJlbGVhc2UiDQotIyBOYW1lICJtaW5pZ3ppcCAtIFdpbjMyIERMTCBEZWJ1ZyINCiAjIE5hbWUgIm1pbmlnemlwIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KICMgTmFtZSAibWluaWd6aXAgLSBXaW4zMiBETEwgQVNNIERlYnVnIg0KLSMgTmFtZSAibWluaWd6aXAgLSBXaW4zMiBMSUIgUmVsZWFzZSINCi0jIE5hbWUgIm1pbmlnemlwIC0gV2luMzIgTElCIERlYnVnIg0KKyMgTmFtZSAibWluaWd6aXAgLSBXaW4zMiBETEwgUmVsZWFzZSINCisjIE5hbWUgIm1pbmlnemlwIC0gV2luMzIgRExMIERlYnVnIg0KICMgTmFtZSAibWluaWd6aXAgLSBXaW4zMiBMSUIgQVNNIFJlbGVhc2UiDQogIyBOYW1lICJtaW5pZ3ppcCAtIFdpbjMyIExJQiBBU00gRGVidWciDQorIyBOYW1lICJtaW5pZ3ppcCAtIFdpbjMyIExJQiBSZWxlYXNlIg0KKyMgTmFtZSAibWluaWd6aXAgLSBXaW4zMiBMSUIgRGVidWciDQogIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KIA0KICMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCmRpZmYgLS1naXQgYS9wcm9qZWN0cy92aXN1YWxjNi96bGliLmRzcCBiL3Byb2plY3RzL3Zpc3VhbGM2L3psaWIuZHNwCmluZGV4IDBmZTA2MDQuLjFlNWM0OTkgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL3Zpc3VhbGM2L3psaWIuZHNwCisrKyBiL3Byb2plY3RzL3Zpc3VhbGM2L3psaWIuZHNwCkBAIC0xOCwxNCArMTgsMTQgQEAKICFNRVNTQUdFIA0KICFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KICFNRVNTQUdFIA0KLSFNRVNTQUdFICJ6bGliIC0gV2luMzIgRExMIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJ6bGliIC0gV2luMzIgRExMIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCiAhTUVTU0FHRSAiemxpYiAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQogIU1FU1NBR0UgInpsaWIgLSBXaW4zMiBETEwgQVNNIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAiemxpYiAtIFdpbjMyIExJQiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCi0hTUVTU0FHRSAiemxpYiAtIFdpbjMyIExJQiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBTdGF0aWMgTGlicmFyeSIpDQorIU1FU1NBR0UgInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQorIU1FU1NBR0UgInpsaWIgLSBXaW4zMiBETEwgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KICFNRVNTQUdFICJ6bGliIC0gV2luMzIgTElCIEFTTSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCiAhTUVTU0FHRSAiemxpYiAtIFdpbjMyIExJQiBBU00gRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJ6bGliIC0gV2luMzIgTElCIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJ6bGliIC0gV2luMzIgTElCIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCiAhTUVTU0FHRSANCiANCiAjIEJlZ2luIFByb2plY3QNCkBAIC0zMyw2OSArMzMsNyBAQAogIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KICMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQogDQotIUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInpsaWJfX19XaW4zMl9ETExfUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ6bGliX19fV2luMzJfRExMX1JlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIldpbjMyX0RMTF9SZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9ETExfUmVsZWFzZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotQ1BQPWNsLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCi0jIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWCAvWWMgL1l1DQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCi0jIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KLU1UTD1taWRsLmV4ZQ0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi1SU0M9cmMuZXhlDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvb3V0OiJXaW4zMl9ETExfUmVsZWFzZVx6bGliMS5kbGwiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiemxpYl9fX1dpbjMyX0RMTF9EZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ6bGliX19fV2luMzJfRExMX0RlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9ETExfRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0RMTF9EZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotQ1BQPWNsLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQotIyBTVUJUUkFDVCBCQVNFIENQUCAvWVggL1ljIC9ZdQ0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0ZEIC9HWiAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQotTVRMPW1pZGwuZXhlDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLVJTQz1yYy5leGUNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiJXaW4zMl9ETExfRGVidWdcemxpYjFkLmRsbCIgL3BkYnR5cGU6c2VwdA0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KKyFJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgQVNNIFJlbGVhc2UiDQogDQogIyBQUk9QIEJBU0UgVXNlX01GQyAwDQogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQpAQCAtMTExLDcgKzQ5LDcgQEAKIENQUD1jbC5leGUNCiAjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVggL1ljIC9ZdQ0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIkFTTVYiIC9EICJBU01JTkYiIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9EICJBU01WIiAvRCAiQVNNSU5GIiAvRkQgL2MNCiAjIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KIE1UTD1taWRsLmV4ZQ0KICMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KQEAgLTE0Miw3ICs4MCw3IEBACiBDUFA9Y2wuZXhlDQogIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCiAjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWCAvWWMgL1l1DQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiQVNNViIgL0QgIkFTTUlORiIgL0ZEIC9HWiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJfREVCVUciIC9EICJBU01WIiAvRCAiQVNNSU5GIiAvRlIgL0ZEIC9HWiAvYw0KICMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQogTVRMPW1pZGwuZXhlDQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQpAQCAtMTU3LDU5ICs5NSw2NyBAQAogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCiAjIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6IldpbjMyX0RMTF9BU01fRGVidWdcemxpYjFkLmRsbCIgL3BkYnR5cGU6c2VwdA0KIA0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIFJlbGVhc2UiDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCiANCiAjIFBST1AgQkFTRSBVc2VfTUZDIDANCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ6bGliX19fV2luMzJfTElCX1JlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiemxpYl9fX1dpbjMyX0xJQl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInpsaWJfX19XaW4zMl9ETExfUmVsZWFzZSINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ6bGliX19fV2luMzJfRExMX1JlbGVhc2UiDQogIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KICMgUFJPUCBVc2VfTUZDIDANCiAjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIldpbjMyX0xJQl9SZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9MSUJfUmVsZWFzZSINCisjIFBST1AgT3V0cHV0X0RpciAiV2luMzJfRExMX1JlbGVhc2UiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0RMTF9SZWxlYXNlIg0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQogIyBQUk9QIFRhcmdldF9EaXIgIiINCiBDUFA9Y2wuZXhlDQogIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KICMgU1VCVFJBQ1QgQkFTRSBDUFAgL1lYIC9ZYyAvWXUNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9GRCAvYw0KICMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQorTVRMPW1pZGwuZXhlDQorIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQorIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KIFJTQz1yYy5leGUNCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KIEJTQzMyPWJzY21ha2UuZXhlDQogIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQogIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJQjMyPWxpbmsuZXhlIC1saWINCi0jIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCi0jIEFERCBMSUIzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYNCisjIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL291dDoiV2luMzJfRExMX1JlbGVhc2VcemxpYjEuZGxsIg0KIA0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIERlYnVnIg0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIERlYnVnIg0KIA0KICMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInpsaWJfX19XaW4zMl9MSUJfRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiemxpYl9fX1dpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ6bGliX19fV2luMzJfRExMX0RlYnVnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInpsaWJfX19XaW4zMl9ETExfRGVidWciDQogIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KICMgUFJPUCBVc2VfTUZDIDANCiAjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIldpbjMyX0xJQl9EZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV2luMzJfTElCX0RlYnVnIg0KKyMgUFJPUCBPdXRwdXRfRGlyICJXaW4zMl9ETExfRGVidWciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0RMTF9EZWJ1ZyINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KICMgUFJPUCBUYXJnZXRfRGlyICIiDQogQ1BQPWNsLmV4ZQ0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVggL1ljIC9ZdQ0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0ZEIC9HWiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJfREVCVUciIC9GUiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBDUFAgL1lYIC9ZYyAvWXUNCitNVEw9bWlkbC5leGUNCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCisjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQogUlNDPXJjLmV4ZQ0KICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQogQlNDMzI9YnNjbWFrZS5leGUNCiAjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCiAjIEFERCBCU0MzMiAvbm9sb2dvDQotTElCMzI9bGluay5leGUgLWxpYg0KLSMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KLSMgQUREIExJQjMyIC9ub2xvZ28gL291dDoiV2luMzJfTElCX0RlYnVnXHpsaWJkLmxpYiINCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKyMgQUREIExJTkszMiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiV2luMzJfRExMX0RlYnVnXHpsaWIxZC5kbGwiIC9wZGJ0eXBlOnNlcHQNCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBBU00gUmVsZWFzZSINCiANCkBAIC0yMjYsNyArMTcyLDcgQEAKIENQUD1jbC5leGUNCiAjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0ZEIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVggL1ljIC9ZdQ0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIkFTTVYiIC9EICJBU01JTkYiIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9EICJXSU4zMiIgL0QgIl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgL0QgIl9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiIC9EICJOREVCVUciIC9EICJBU01WIiAvRCAiQVNNSU5GIiAvRkQgL2MNCiAjIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KIFJTQz1yYy5leGUNCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KQEAgLTI1Myw3ICsxOTksNyBAQAogQ1BQPWNsLmV4ZQ0KICMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRkQgL0daIC9jDQogIyBTVUJUUkFDVCBCQVNFIENQUCAvWVggL1ljIC9ZdQ0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIkFTTVYiIC9EICJBU01JTkYiIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC9EICJfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIiAvRCAiX0RFQlVHIiAvRCAiQVNNViIgL0QgIkFTTUlORiIgL0ZSIC9GRCAvR1ogL2MNCiAjIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KIFJTQz1yYy5leGUNCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KQEAgLTI2NSwxOCArMjExLDcyIEBACiAjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCiAjIEFERCBMSUIzMiAvbm9sb2dvIC9vdXQ6IldpbjMyX0xJQl9BU01fRGVidWdcemxpYmQubGliIg0KIA0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiemxpYl9fX1dpbjMyX0xJQl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInpsaWJfX19XaW4zMl9MSUJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiV2luMzJfTElCX1JlbGVhc2UiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldpbjMyX0xJQl9SZWxlYXNlIg0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorQ1BQPWNsLmV4ZQ0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRkQgL2MNCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWCAvWWMgL1l1DQorIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0QgIldJTjMyIiAvRCAiX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIiAvRCAiX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSIgL0QgIk5ERUJVRyIgL0ZEIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYIC9ZYyAvWXUNCitSU0M9cmMuZXhlDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbw0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInpsaWJfX19XaW4zMl9MSUJfRGVidWciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiemxpYl9fX1dpbjMyX0xJQl9EZWJ1ZyINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiV2luMzJfTElCX0RlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXaW4zMl9MSUJfRGVidWciDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCitDUFA9Y2wuZXhlDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9ZWCAvWWMgL1l1DQorIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIiAvRCAiX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSIgL0QgIl9ERUJVRyIgL0ZSIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KK1JTQz1yYy5leGUNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvIC9vdXQ6IldpbjMyX0xJQl9EZWJ1Z1x6bGliZC5saWIiDQorDQogIUVORElGIA0KIA0KICMgQmVnaW4gVGFyZ2V0DQogDQotIyBOYW1lICJ6bGliIC0gV2luMzIgRExMIFJlbGVhc2UiDQotIyBOYW1lICJ6bGliIC0gV2luMzIgRExMIERlYnVnIg0KICMgTmFtZSAiemxpYiAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSINCiAjIE5hbWUgInpsaWIgLSBXaW4zMiBETEwgQVNNIERlYnVnIg0KLSMgTmFtZSAiemxpYiAtIFdpbjMyIExJQiBSZWxlYXNlIg0KLSMgTmFtZSAiemxpYiAtIFdpbjMyIExJQiBEZWJ1ZyINCisjIE5hbWUgInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCisjIE5hbWUgInpsaWIgLSBXaW4zMiBETEwgRGVidWciDQogIyBOYW1lICJ6bGliIC0gV2luMzIgTElCIEFTTSBSZWxlYXNlIg0KICMgTmFtZSAiemxpYiAtIFdpbjMyIExJQiBBU00gRGVidWciDQorIyBOYW1lICJ6bGliIC0gV2luMzIgTElCIFJlbGVhc2UiDQorIyBOYW1lICJ6bGliIC0gV2luMzIgTElCIERlYnVnIg0KICMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCiANCiAjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQpAQCAtMzI4LDIxICszMjgsMTMgQEAKIA0KIFNPVVJDRT0uLlwuLlx3aW4zMlx6bGliLmRlZg0KIA0KLSFJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBEZWJ1ZyINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSINCishSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBEZWJ1ZyINCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBSZWxlYXNlIg0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIFJlbGVhc2UiDQogDQotIyBQUk9QIEV4Y2x1ZGVfRnJvbV9CdWlsZCAxDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBMSUIgRGVidWciDQotDQotIyBQUk9QIEV4Y2x1ZGVfRnJvbV9CdWlsZCAxDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgRGVidWciDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBMSUIgQVNNIFJlbGVhc2UiDQogDQpAQCAtMzUyLDYgKzM0NCwxNCBAQAogDQogIyBQUk9QIEV4Y2x1ZGVfRnJvbV9CdWlsZCAxDQogDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBMSUIgUmVsZWFzZSINCisNCisjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBEZWJ1ZyINCisNCisjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCisNCiAhRU5ESUYgDQogDQogIyBFbmQgU291cmNlIEZpbGUNCkBAIC00MTksMTUgKzQxOSw3IEBACiANCiBTT1VSQ0U9Li5cLi5cY29udHJpYlxtYXNteDg2XGd2bWF0MzIuYXNtDQogDQotIUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBFeGNsdWRlX0Zyb21fQnVpbGQgMQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIERlYnVnIg0KLQ0KLSMgUFJPUCBFeGNsdWRlX0Zyb21fQnVpbGQgMQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KKyFJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgQVNNIFJlbGVhc2UiDQogDQogIyBCZWdpbiBDdXN0b20gQnVpbGQgLSBBc3NlbWJsaW5nLi4uDQogSW50RGlyPS5cV2luMzJfRExMX0FTTV9SZWxlYXNlDQpAQCAtNDUxLDExICs0NDMsMTEgQEAKIA0KICMgRW5kIEN1c3RvbSBCdWlsZA0KIA0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIFJlbGVhc2UiDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCiANCiAjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBEZWJ1ZyINCishRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBEZWJ1ZyINCiANCiAjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCiANCkBAIC00ODMsNiArNDc1LDE0IEBACiANCiAjIEVuZCBDdXN0b20gQnVpbGQNCiANCishRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBSZWxlYXNlIg0KKw0KKyMgUFJPUCBFeGNsdWRlX0Zyb21fQnVpbGQgMQ0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIERlYnVnIg0KKw0KKyMgUFJPUCBFeGNsdWRlX0Zyb21fQnVpbGQgMQ0KKw0KICFFTkRJRiANCiANCiAjIEVuZCBTb3VyY2UgRmlsZQ0KQEAgLTQ5MCw3ICs0OTAsMTUgQEAKIA0KIFNPVVJDRT0uLlwuLlxjb250cmliXG1hc214ODZcZ3ZtYXQzMmMuYw0KIA0KLSFJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCishSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KKw0KKyMgQUREIENQUCAvSSAiLi5cLi4iDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgQVNNIERlYnVnIg0KKw0KKyMgQUREIENQUCAvSSAiLi5cLi4iDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCiANCiAjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCiAjIEFERCBDUFAgL0kgIi4uXC4uIg0KQEAgLTUwMCwxMSArNTA4LDExIEBACiAjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCiAjIEFERCBDUFAgL0kgIi4uXC4uIg0KIA0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIEFTTSBSZWxlYXNlIg0KIA0KICMgQUREIENQUCAvSSAiLi5cLi4iDQogDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgQVNNIERlYnVnIg0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgTElCIEFTTSBEZWJ1ZyINCiANCiAjIEFERCBDUFAgL0kgIi4uXC4uIg0KIA0KQEAgLTUxOCwxNCArNTI2LDYgQEAKICMgUFJPUCBFeGNsdWRlX0Zyb21fQnVpbGQgMQ0KICMgQUREIENQUCAvSSAiLi5cLi4iDQogDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBMSUIgQVNNIFJlbGVhc2UiDQotDQotIyBBREQgQ1BQIC9JICIuLlwuLiINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBBU00gRGVidWciDQotDQotIyBBREQgQ1BQIC9JICIuLlwuLiINCi0NCiAhRU5ESUYgDQogDQogIyBFbmQgU291cmNlIEZpbGUNCkBAIC01MzMsMTUgKzUzMyw3IEBACiANCiBTT1VSQ0U9Li5cLi5cY29udHJpYlxtYXNteDg2XGluZmZhczMyLmFzbQ0KIA0KLSFJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgUmVsZWFzZSINCi0NCi0jIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBEZWJ1ZyINCi0NCi0jIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIERMTCBBU00gUmVsZWFzZSINCishSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIEFTTSBSZWxlYXNlIg0KIA0KICMgQmVnaW4gQ3VzdG9tIEJ1aWxkIC0gQXNzZW1ibGluZy4uLg0KIEludERpcj0uXFdpbjMyX0RMTF9BU01fUmVsZWFzZQ0KQEAgLTU2NSwxMSArNTU3LDExIEBACiANCiAjIEVuZCBDdXN0b20gQnVpbGQNCiANCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBSZWxlYXNlIg0KKyFFTFNFSUYgICIkKENGRykiID09ICJ6bGliIC0gV2luMzIgRExMIFJlbGVhc2UiDQogDQogIyBQUk9QIEV4Y2x1ZGVfRnJvbV9CdWlsZCAxDQogDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBMSUIgRGVidWciDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBETEwgRGVidWciDQogDQogIyBQUk9QIEV4Y2x1ZGVfRnJvbV9CdWlsZCAxDQogDQpAQCAtNTk3LDYgKzU4OSwxNCBAQAogDQogIyBFbmQgQ3VzdG9tIEJ1aWxkDQogDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWIgLSBXaW4zMiBMSUIgUmVsZWFzZSINCisNCisjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYiAtIFdpbjMyIExJQiBEZWJ1ZyINCisNCisjIFBST1AgRXhjbHVkZV9Gcm9tX0J1aWxkIDENCisNCiAhRU5ESUYgDQogDQogIyBFbmQgU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS9xbngvcGFja2FnZS5xcGcgYi9xbngvcGFja2FnZS5xcGcKaW5kZXggOGE0YTQ3Yy4uYmQ5M2QwNSAxMDA2NDQKLS0tIGEvcW54L3BhY2thZ2UucXBnCisrKyBiL3FueC9wYWNrYWdlLnFwZwpAQCAtMjUsMTAgKzI1LDEwIEBACiAgICAgICA8UVBHOkZpbGVzPgogICAgICAgICAgPFFQRzpBZGQgZmlsZT0iLi4vemNvbmYuaCIgaW5zdGFsbD0iL29wdC9pbmNsdWRlLyIgdXNlcj0icm9vdDpzeXMiIHBlcm1pc3Npb249IjY0NCIvPgogICAgICAgICAgPFFQRzpBZGQgZmlsZT0iLi4vemxpYi5oIiBpbnN0YWxsPSIvb3B0L2luY2x1ZGUvIiB1c2VyPSJyb290OnN5cyIgcGVybWlzc2lvbj0iNjQ0Ii8+Ci0gICAgICAgICA8UVBHOkFkZCBmaWxlPSIuLi9saWJ6LnNvLjEuMi4zIiBpbnN0YWxsPSIvb3B0L2xpYi8iIHVzZXI9InJvb3Q6YmluIiBwZXJtaXNzaW9uPSI2NDQiLz4KLSAgICAgICAgIDxRUEc6QWRkIGZpbGU9ImxpYnouc28iIGluc3RhbGw9Ii9vcHQvbGliLyIgY29tcG9uZW50PSJkZXYiIGZpbGV0eXBlPSJzeW1saW5rIiBsaW5rdG89ImxpYnouc28uMS4yLjMiLz4KLSAgICAgICAgIDxRUEc6QWRkIGZpbGU9ImxpYnouc28uMSIgaW5zdGFsbD0iL29wdC9saWIvIiBmaWxldHlwZT0ic3ltbGluayIgbGlua3RvPSJsaWJ6LnNvLjEuMi4zIi8+Ci0gICAgICAgICA8UVBHOkFkZCBmaWxlPSIuLi9saWJ6LnNvLjEuMi4zIiBpbnN0YWxsPSIvb3B0L2xpYi8iIGNvbXBvbmVudD0ic2xpYiIvPgorICAgICAgICAgPFFQRzpBZGQgZmlsZT0iLi4vbGliei5zby4xLjIuMy4xIiBpbnN0YWxsPSIvb3B0L2xpYi8iIHVzZXI9InJvb3Q6YmluIiBwZXJtaXNzaW9uPSI2NDQiLz4KKyAgICAgICAgIDxRUEc6QWRkIGZpbGU9ImxpYnouc28iIGluc3RhbGw9Ii9vcHQvbGliLyIgY29tcG9uZW50PSJkZXYiIGZpbGV0eXBlPSJzeW1saW5rIiBsaW5rdG89ImxpYnouc28uMS4yLjMuMSIvPgorICAgICAgICAgPFFQRzpBZGQgZmlsZT0ibGliei5zby4xIiBpbnN0YWxsPSIvb3B0L2xpYi8iIGZpbGV0eXBlPSJzeW1saW5rIiBsaW5rdG89ImxpYnouc28uMS4yLjMuMSIvPgorICAgICAgICAgPFFQRzpBZGQgZmlsZT0iLi4vbGliei5zby4xLjIuMy4xIiBpbnN0YWxsPSIvb3B0L2xpYi8iIGNvbXBvbmVudD0ic2xpYiIvPgogICAgICAgPC9RUEc6RmlsZXM+CiAKICAgICAgIDxRUEc6UGFja2FnZUZpbHRlcj4KQEAgLTYzLDcgKzYzLDcgQEAKICAgICAgICAgICAgIDwvUVBNOlByb2R1Y3REZXNjcmlwdGlvbj4KIAogICAgICAgICAgICAgPFFQTTpSZWxlYXNlRGVzY3JpcHRpb24+Ci0gICAgICAgICAgICAgICA8UVBNOlJlbGVhc2VWZXJzaW9uPjEuMi4zPC9RUE06UmVsZWFzZVZlcnNpb24+CisgICAgICAgICAgICAgICA8UVBNOlJlbGVhc2VWZXJzaW9uPjEuMi4zLjE8L1FQTTpSZWxlYXNlVmVyc2lvbj4KICAgICAgICAgICAgICAgIDxRUE06UmVsZWFzZVVyZ2VuY3k+TWVkaXVtPC9RUE06UmVsZWFzZVVyZ2VuY3k+CiAgICAgICAgICAgICAgICA8UVBNOlJlbGVhc2VTdGFiaWxpdHk+U3RhYmxlPC9RUE06UmVsZWFzZVN0YWJpbGl0eT4KICAgICAgICAgICAgICAgIDxRUE06UmVsZWFzZU5vdGVNaW5vcj48L1FQTTpSZWxlYXNlTm90ZU1pbm9yPgpkaWZmIC0tZ2l0IGEvdG9kby9NYWtlZmlsZS1uZXcgYi90b2RvL01ha2VmaWxlLW5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTA5ZWJiCi0tLSAvZGV2L251bGwKKysrIGIvdG9kby9NYWtlZmlsZS1uZXcKQEAgLTAsMCArMSwyMDEgQEAKKyMgTWFrZWZpbGUgZm9yIHpsaWIKKyMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDYgSmVhbi1sb3VwIEdhaWxseS4KKyMgRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorCisjIFRvIGNvbXBpbGUgYW5kIHRlc3QsIHR5cGU6CisjICAgIC4vY29uZmlndXJlOyBtYWtlIHRlc3QKKyMgVGhlIGNhbGwgb2YgY29uZmlndXJlIGlzIG9wdGlvbmFsIGlmIHlvdSBkb24ndCBoYXZlIHNwZWNpYWwgcmVxdWlyZW1lbnRzCisjIElmIHlvdSB3aXNoIHRvIGJ1aWxkIHpsaWIgYXMgYSBzaGFyZWQgbGlicmFyeSwgdXNlOiAuL2NvbmZpZ3VyZSAtcworCisjIFRvIHVzZSB0aGUgYXNtIGNvZGUsIHR5cGU6CisjICAgIGNwIGNvbnRyaWIvYXNtPzg2L21hdGNoLlMgLi9tYXRjaC5TCisjICAgIG1ha2UgTE9DPS1EQVNNViBPQkpBPW1hdGNoLm8KKworIyBUbyBpbnN0YWxsIC91c3IvbG9jYWwvbGliL2xpYnouKiBhbmQgL3Vzci9sb2NhbC9pbmNsdWRlL3psaWIuaCwgdHlwZToKKyMgICAgbWFrZSBpbnN0YWxsCisjIFRvIGluc3RhbGwgaW4gJEhPTUUgaW5zdGVhZCBvZiAvdXNyL2xvY2FsLCB1c2U6CisjICAgIG1ha2UgaW5zdGFsbCBwcmVmaXg9JEhPTUUKKworQ0M9Y2MKKworQ0ZMQUdTPS1PCisjQ0ZMQUdTPS1PIC1ETUFYX1dCSVRTPTE0IC1ETUFYX01FTV9MRVZFTD03CisjQ0ZMQUdTPS1nIC1EREVCVUcKKyNDRkxBR1M9LU8zIC1XYWxsIC1Xd3JpdGUtc3RyaW5ncyAtV3BvaW50ZXItYXJpdGggLVdjb252ZXJzaW9uIFwKKyMgICAgICAgICAgIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdtaXNzaW5nLXByb3RvdHlwZXMKKworU0ZMQUdTPSQoQ0ZMQUdTKQorI1NGTEFHUz0kKENGTEFHUykgLWZQSUMKKworTEQ9JChDQykKK0xERkxBR1M9bGliei5hCitMRFNIQVJFRD0kKENDKQorQ1BQPSQoQ0MpIC1FCisKK1NUQVRJQ0xJQj1saWJ6LmEKK1NIQVJFRExJQj1saWJ6LnNvCitTSEFSRURMSUJWPWxpYnouc28uMS4yLjMKK1NIQVJFRExJQk09bGliei5zby4xCitFWEU9CisKK0xJQlM9JChTVEFUSUNMSUIpICQoU0hBUkVETElCVikKKworQVI9YXIgcmMKK1JBTkxJQj1yYW5saWIKK1RBUj10YXIKK1NIRUxMPS9iaW4vc2gKKworcHJlZml4PS91c3IvbG9jYWwKK2V4ZWNfcHJlZml4PSR7cHJlZml4fQorbGliZGlyPSR7ZXhlY19wcmVmaXh9L2xpYgoraW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZQorbWFuZGlyPSR7cHJlZml4fS9zaGFyZS9tYW4KK21hbjNkaXI9JHttYW5kaXJ9L21hbjMKK3BrZ2NvbmZpZ2RpciA9ICR7bGliZGlyfS9wa2djb25maWcKKworT0JKUyA9IGFkbGVyMzIubyBjb21wcmVzcy5vIGNyYzMyLm8gZ3ppby5vIHVuY29tcHIubyBkZWZsYXRlLm8gdHJlZXMubyBcCisgICAgICAgenV0aWwubyBpbmZsYXRlLm8gaW5mYmFjay5vIGluZnRyZWVzLm8gaW5mZmFzdC5vCisKK09CSkEgPQorI09CSkEgPSBtYXRjaC5vCisjIHRvIHVzZSB0aGUgYXNtIGNvZGU6IG1ha2UgT0JKQT1tYXRjaC5vCisKK1RFU1RfT0JKUyA9IGV4YW1wbGUubyBtaW5pZ3ppcC5vCisKK09CSlNfUElDID0gJChPQkpTOi5vPS5waWMubykKK09CSkFfUElDID0gJChPQkpBOi5vPS5waWMubykKKworLlNVRkZJWEVTOiAuYyAubyAucGljLm8KKworLmMubzoKKwkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJCouYworCisuYy5waWMubzoKKwkkKENDKSAtYyAkKFNGTEFHUykgLW8gJEAgJCouYworCithbGw6ICQoU1RBVElDTElCKSBleGFtcGxlJChFWEUpIG1pbmlnemlwJChFWEUpCisjYWxsOiAkKFNUQVRJQ0xJQikgJChTSEFSRURMSUJWKSBleGFtcGxlJChFWEUpIG1pbmlnemlwJChFWEUpCisKK2NoZWNrOiB0ZXN0Cit0ZXN0OiBhbGwKKwlATERfTElCUkFSWV9QQVRIPS46JChMRF9MSUJSQVJZX1BBVEgpIDsgZXhwb3J0IExEX0xJQlJBUllfUEFUSDsgXAorCWVjaG8gaGVsbG8gd29ybGQgfCAuL21pbmlnemlwIHwgLi9taW5pZ3ppcCAtZCB8fCBcCisJICBlY2hvICcJCSoqKiBtaW5pZ3ppcCB0ZXN0IEZBSUxFRCAqKionIDsgXAorCWlmIC4vZXhhbXBsZTsgdGhlbiBcCisJICBlY2hvICcJCSoqKiB6bGliIHRlc3QgT0sgKioqJzsgXAorCWVsc2UgXAorCSAgZWNobyAnCQkqKiogemxpYiB0ZXN0IEZBSUxFRCAqKionOyBcCisJZmkKKworbWF0Y2gubzogbWF0Y2guUworCSQoQ1BQKSBtYXRjaC5TID4gX21hdGNoLnMKKwkkKENDKSAtYyBfbWF0Y2gucworCW12IF9tYXRjaC5vIG1hdGNoLm8KKwlybSAtZiBfbWF0Y2gucworCittYXRjaC5waWMubzogbWF0Y2guUworCSQoQ1BQKSBtYXRjaC5TID4gX21hdGNoLnMKKwkkKENDKSAtYyAtZlBJQyBfbWF0Y2gucworCW12IF9tYXRjaC5vIG1hdGNoLnBpYy5vCisJcm0gLWYgX21hdGNoLnMKKworJChTVEFUSUNMSUIpOiAkKE9CSlMpICQoT0JKQSkKKwkkKEFSKSAkQCAkKE9CSlMpICQoT0JKQSkKKwktQCAoJChSQU5MSUIpICRAIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQorCiskKFNIQVJFRExJQlYpOiAkKE9CSlNfUElDKSAkKE9CSkFfUElDKQorCSQoTERTSEFSRUQpIC1vICRAICQoT0JKU19QSUMpICQoT0JKQV9QSUMpCisJcm0gLWYgJChTSEFSRURMSUIpICQoU0hBUkVETElCTSkKKwlsbiAtcyAkQCAkKFNIQVJFRExJQikKKwlsbiAtcyAkQCAkKFNIQVJFRExJQk0pCisKK2V4YW1wbGUkKEVYRSk6IGV4YW1wbGUubyAkKFNUQVRJQ0xJQikKKwkkKExEKSAtbyAkQCBleGFtcGxlLm8gJChMREZMQUdTKQorCittaW5pZ3ppcCQoRVhFKTogbWluaWd6aXAubyAkKFNUQVRJQ0xJQikKKwkkKExEKSAtbyAkQCBtaW5pZ3ppcC5vICQoTERGTEFHUykKKworaW5zdGFsbDogJChMSUJTKQorCW1rZGlyIC1wICQoREVTVERJUikkKGV4ZWNfcHJlZml4KQorCW1rZGlyIC1wICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisJbWtkaXIgLXAgJChERVNURElSKSQobGliZGlyKQorCW1rZGlyIC1wICQoREVTVERJUikkKG1hbjNkaXIpCisJbWtkaXIgLXAgJChERVNURElSKSQocGtnY29uZmlnZGlyKQorCWNwIHpsaWIuaCB6Y29uZi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisJY2htb2QgNjQ0ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3psaWIuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS96Y29uZi5oCisJY3AgJChMSUJTKSAkKERFU1RESVIpJChsaWJkaXIpCisJY2QgJChERVNURElSKSQobGliZGlyKTsgY2htb2QgNzU1ICQoTElCUykKKwktQChjZCAkKERFU1RESVIpJChsaWJkaXIpOyAkKFJBTkxJQikgJChTVEFUSUNMSUIpIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQorCWNkICQoREVTVERJUikkKGxpYmRpcik7IGlmIHRlc3QgLWYgJChTSEFSRURMSUJWKTsgdGhlbiBcCisJICBybSAtZiAkKFNIQVJFRExJQikgJChTSEFSRURMSUJNKTsgXAorCSAgbG4gLXMgJChTSEFSRURMSUJWKSAkKFNIQVJFRExJQik7IFwKKwkgIGxuIC1zICQoU0hBUkVETElCVikgJChTSEFSRURMSUJNKTsgXAorCSAgKGxkY29uZmlnIHx8IHRydWUpICA+L2Rldi9udWxsIDI+JjE7IFwKKwlmaQorCWNwIHpsaWIuMyAkKERFU1RESVIpJChtYW4zZGlyKQorCWNobW9kIDY0NCAkKERFU1RESVIpJChtYW4zZGlyKS96bGliLjMKKwljcCB6bGliLnBjICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikKKwljaG1vZCA2NDQgJChERVNURElSKSQocGtnY29uZmlnZGlyKS96bGliLnBjCisjIFRoZSByYW5saWIgaW4gaW5zdGFsbCBpcyBuZWVkZWQgb24gTmVYVFNURVAgd2hpY2ggY2hlY2tzIGZpbGUgdGltZXMKKyMgbGRjb25maWcgaXMgZm9yIExpbnV4CisKK3VuaW5zdGFsbDoKKwljZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgcm0gLWYgemxpYi5oIHpjb25mLmgKKwljZCAkKERFU1RESVIpJChsaWJkaXIpOyBybSAtZiAkKFNUQVRJQ0xJQik7IFwKKwlpZiB0ZXN0IC1mICQoU0hBUkVETElCVik7IHRoZW4gXAorCSAgcm0gLWYgJChTSEFSRURMSUJWKSAkKFNIQVJFRExJQikgJChTSEFSRURMSUJNKTsgXAorCWZpCisJY2QgJChERVNURElSKSQobWFuM2Rpcik7IHJtIC1mIHpsaWIuMworCWNkICQoREVTVERJUikkKHBrZ2NvbmZpZ2Rpcik7IHJtIC1mIHpsaWIucGMKKworbW9zdGx5Y2xlYW46IGNsZWFuCitjbGVhbjoKKwlybSAtZiAqLm8gKn4gZXhhbXBsZSQoRVhFKSBtaW5pZ3ppcCQoRVhFKSBcCisJICAgbGliei4qIGZvby5neiBzb19sb2NhdGlvbnMgXAorCSAgIF9tYXRjaC5zIG1ha2V0cmVlIGNvbnRyaWIvaW5mYmFjazkvKi5vCisKK21haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgorZGlzdGNsZWFuOiBjbGVhbgorCWNwIC1wIE1ha2VmaWxlLmluIE1ha2VmaWxlCisJY3AgLXAgemNvbmYuaW4uaCB6Y29uZi5oCisJcm0gLWYgemxpYi5wYyAuRFNfU3RvcmUKKwordGFnczoKKwlldGFncyAqLltjaF0KKworZGVwZW5kOgorCW1ha2VkZXBlbmQgLS0gJChDRkxBR1MpIC0tICouW2NoXQorCisjICJmYWtlIiB0YXJnZXRzOiBub3QgcmVhbCBmaWxlbmFtZXMgYW5kIG5vIGRlcHMgKGVsc2UgInRvdWNoIGNsZWFuIiBkZWZlYXRzKQorLlBIT05ZOiBpbnN0YWxsIHVuaW5zdGFsbCBjbGVhbiB0YWdzIGRlcGVuZAorCisjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tICJtYWtlIGRlcGVuZCIgZGVwZW5kcyBvbiBpdC4KKworYWRsZXIzMi5vOiB6bGliLmggemNvbmYuaAorYWRsZXIzMi5waWMubzogemxpYi5oIHpjb25mLmgKK2NvbXByZXNzLm86IHpsaWIuaCB6Y29uZi5oCitjb21wcmVzcy5waWMubzogemxpYi5oIHpjb25mLmgKK2NyYzMyLm86IGNyYzMyLmggemxpYi5oIHpjb25mLmgKK2NyYzMyLnBpYy5vOiBjcmMzMi5oIHpsaWIuaCB6Y29uZi5oCitkZWZsYXRlLm86IGRlZmxhdGUuaCB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oCitkZWZsYXRlLnBpYy5vOiBkZWZsYXRlLmggenV0aWwuaCB6bGliLmggemNvbmYuaAorZXhhbXBsZS5vOiB6bGliLmggemNvbmYuaAorZXhhbXBsZS5waWMubzogemxpYi5oIHpjb25mLmgKK2d6aW8ubzogenV0aWwuaCB6bGliLmggemNvbmYuaAorZ3ppby5waWMubzogenV0aWwuaCB6bGliLmggemNvbmYuaAoraW5mZmFzdC5vOiB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oIGluZnRyZWVzLmggaW5mbGF0ZS5oIGluZmZhc3QuaAoraW5mZmFzdC5waWMubzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oIGluZmxhdGUuaCBpbmZmYXN0LmgKK2luZmxhdGUubzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oIGluZmxhdGUuaCBpbmZmYXN0LmgKK2luZmxhdGUucGljLm86IHp1dGlsLmggemxpYi5oIHpjb25mLmggaW5mdHJlZXMuaCBpbmZsYXRlLmggaW5mZmFzdC5oCitpbmZiYWNrLm86IHp1dGlsLmggemxpYi5oIHpjb25mLmggaW5mdHJlZXMuaCBpbmZsYXRlLmggaW5mZmFzdC5oCitpbmZiYWNrLnBpYy5vOiB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oIGluZnRyZWVzLmggaW5mbGF0ZS5oIGluZmZhc3QuaAoraW5mdHJlZXMubzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oCitpbmZ0cmVlcy5waWMubzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oCittaW5pZ3ppcC5vOiB6bGliLmggemNvbmYuaAorbWluaWd6aXAucGljLm86IHpsaWIuaCB6Y29uZi5oCit0cmVlcy5vOiBkZWZsYXRlLmggenV0aWwuaCB6bGliLmggemNvbmYuaCB0cmVlcy5oCit0cmVlcy5waWMubzogZGVmbGF0ZS5oIHp1dGlsLmggemxpYi5oIHpjb25mLmggdHJlZXMuaAordW5jb21wci5vOiB6bGliLmggemNvbmYuaAordW5jb21wci5waWMubzogemxpYi5oIHpjb25mLmgKK3p1dGlsLm86IHp1dGlsLmggemxpYi5oIHpjb25mLmgKK3p1dGlsLnBpYy5vOiB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oCmRpZmYgLS1naXQgYS90b2RvL1JFQURNRSBiL3RvZG8vUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4N2E3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi90b2RvL1JFQURNRQpAQCAtMCwwICsxIEBACitUaGlzICJ0b2RvIiBkaXJlY3RvcnkgY29udGFpbnMgd29ya3MgaW4gcHJvZ3Jlc3MuICBOb3RoaW5nIGluIGhlcmUgd29ya3MsIHNvIGRvbid0IHRyeSB0byB1c2UgaXQhCmRpZmYgLS1naXQgYS90cmVlcy5jIGIvdHJlZXMuYwppbmRleCAzOTVlNGUxLi45NGYyOGJiIDEwMDY0NAotLS0gYS90cmVlcy5jCisrKyBiL3RyZWVzLmMKQEAgLTEsNSArMSw2IEBACiAvKiB0cmVlcy5jIC0tIG91dHB1dCBkZWZsYXRlZCBkYXRhIHVzaW5nIEh1ZmZtYW4gY29kaW5nCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSBKZWFuLWxvdXAgR2FpbGx5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNiBKZWFuLWxvdXAgR2FpbGx5CisgKiBkZXRlY3RfZGF0YV90eXBlKCkgZnVuY3Rpb24gcHJvdmlkZWQgZnJlZWx5IGJ5IENvc21pbiBUcnV0YSwgMjAwNgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTE1Miw3ICsxNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsY29kZXMpKTsKIGxvY2FsIHZvaWQgY29tcHJlc3NfYmxvY2sgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGN0X2RhdGEgKmx0cmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RfZGF0YSAqZHRyZWUpKTsKLWxvY2FsIHZvaWQgc2V0X2RhdGFfdHlwZSAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKK2xvY2FsIGludCAgZGV0ZWN0X2RhdGFfdHlwZSBPRigoZGVmbGF0ZV9zdGF0ZSAqcykpOwogbG9jYWwgdW5zaWduZWQgYmlfcmV2ZXJzZSBPRigodW5zaWduZWQgdmFsdWUsIGludCBsZW5ndGgpKTsKIGxvY2FsIHZvaWQgYmlfd2luZHVwICAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKIGxvY2FsIHZvaWQgYmlfZmx1c2ggICAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKQEAgLTI1MCwxMSArMjUxLDEzIEBACiAgICAgaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjsKIAogICAgIC8qIEZvciBzb21lIGVtYmVkZGVkIHRhcmdldHMsIGdsb2JhbCB2YXJpYWJsZXMgYXJlIG5vdCBpbml0aWFsaXplZDogKi8KKyNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSUwogICAgIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7CiAgICAgc3RhdGljX2xfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfbGJpdHM7CiAgICAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTsKICAgICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0czsKICAgICBzdGF0aWNfYmxfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfYmxiaXRzOworI2VuZGlmCiAKICAgICAvKiBJbml0aWFsaXplIHRoZSBtYXBwaW5nIGxlbmd0aCAoMC4uMjU1KSAtPiBsZW5ndGggY29kZSAoMC4uMjgpICovCiAgICAgbGVuZ3RoID0gMDsKQEAgLTkzMSw4ICs5MzQsOCBAQAogICAgIGlmIChzLT5sZXZlbCA+IDApIHsKIAogICAgICAgICAvKiBDaGVjayBpZiB0aGUgZmlsZSBpcyBiaW5hcnkgb3IgdGV4dCAqLwotICAgICAgICBpZiAoc3RvcmVkX2xlbiA+IDAgJiYgcy0+c3RybS0+ZGF0YV90eXBlID09IFpfVU5LTk9XTikKLSAgICAgICAgICAgIHNldF9kYXRhX3R5cGUocyk7CisgICAgICAgIGlmIChzLT5zdHJtLT5kYXRhX3R5cGUgPT0gWl9VTktOT1dOKQorICAgICAgICAgICAgcy0+c3RybS0+ZGF0YV90eXBlID0gZGV0ZWN0X2RhdGFfdHlwZShzKTsKIAogICAgICAgICAvKiBDb25zdHJ1Y3QgdGhlIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovCiAgICAgICAgIGJ1aWxkX3RyZWUocywgKHRyZWVfZGVzYyAqKSgmKHMtPmxfZGVzYykpKTsKQEAgLTExMTgsMjQgKzExMjEsNDUgQEAKIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBTZXQgdGhlIGRhdGEgdHlwZSB0byBCSU5BUlkgb3IgVEVYVCwgdXNpbmcgYSBjcnVkZSBhcHByb3hpbWF0aW9uOgotICogc2V0IGl0IHRvIFpfVEVYVCBpZiBhbGwgc3ltYm9scyBhcmUgZWl0aGVyIHByaW50YWJsZSBjaGFyYWN0ZXJzICgzMyB0byAyNTUpCi0gKiBvciB3aGl0ZSBzcGFjZXMgKDkgdG8gMTMsIG9yIDMyKTsgb3Igc2V0IGl0IHRvIFpfQklOQVJZIG90aGVyd2lzZS4KKyAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgorICogLSBURVhUIGlmIHRoZSB0d28gY29uZGl0aW9ucyBiZWxvdyBhcmUgc2F0aXNmaWVkOgorICogICAgYSkgVGhlcmUgYXJlIG5vIG5vbi1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZQorICogICAgICAgImJsYWNrIGxpc3QiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuCisgKiAgICBiKSBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJpbnRhYmxlIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlCisgKiAgICAgICAid2hpdGUgbGlzdCIgKDkge1RBQn0sIDEwIHtMRn0sIDEzIHtDUn0sIDMyLi4yNTUpLgorICogLSBCSU5BUlkgb3RoZXJ3aXNlLgorICogLSBUaGUgZm9sbG93aW5nIHBhcnRpYWxseS1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgZm9ybSBhCisgKiAgICJncmF5IGxpc3QiIHRoYXQgaXMgaWdub3JlZCBpbiB0aGlzIGRldGVjdGlvbiBhbGdvcml0aG06CisgKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuCiAgKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZHMgRnJlcSBvZiBkeW5fbHRyZWUgYXJlIHNldC4KICAqLwotbG9jYWwgdm9pZCBzZXRfZGF0YV90eXBlKHMpCitsb2NhbCBpbnQgZGV0ZWN0X2RhdGFfdHlwZShzKQogICAgIGRlZmxhdGVfc3RhdGUgKnM7CiB7CisgICAgLyogYmxhY2tfbWFzayBpcyB0aGUgYml0IG1hc2sgb2YgYmxhY2stbGlzdGVkIGJ5dGVzCisgICAgICogc2V0IGJpdHMgMC4uNiwgMTQuLjI1LCBhbmQgMjguLjMxCisgICAgICogMHhmM2ZmYzA3ZiA9IGJpbmFyeSAxMTExMDAxMTExMTExMTExMTEwMDAwMDAwMTExMTExMQorICAgICAqLworICAgIHVuc2lnbmVkIGxvbmcgYmxhY2tfbWFzayA9IDB4ZjNmZmMwN2ZVTDsKICAgICBpbnQgbjsKIAotICAgIGZvciAobiA9IDA7IG4gPCA5OyBuKyspCisgICAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsICgiYmxhY2stbGlzdGVkIikgYnl0ZXMuICovCisgICAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+PSAxKQorICAgICAgICBpZiAoKGJsYWNrX21hc2sgJiAxKSAmJiAocy0+ZHluX2x0cmVlW25dLkZyZXEgIT0gMCkpCisgICAgICAgICAgICByZXR1cm4gWl9CSU5BUlk7CisKKyAgICAvKiBDaGVjayBmb3IgdGV4dHVhbCAoIndoaXRlLWxpc3RlZCIpIGJ5dGVzLiAqLworICAgIGlmIChzLT5keW5fbHRyZWVbOV0uRnJlcSAhPSAwIHx8IHMtPmR5bl9sdHJlZVsxMF0uRnJlcSAhPSAwCisgICAgICAgICAgICB8fCBzLT5keW5fbHRyZWVbMTNdLkZyZXEgIT0gMCkKKyAgICAgICAgcmV0dXJuIFpfVEVYVDsKKyAgICBmb3IgKG4gPSAzMjsgbiA8IExJVEVSQUxTOyBuKyspCiAgICAgICAgIGlmIChzLT5keW5fbHRyZWVbbl0uRnJlcSAhPSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgaWYgKG4gPT0gOSkKLSAgICAgICAgZm9yIChuID0gMTQ7IG4gPCAzMjsgbisrKQotICAgICAgICAgICAgaWYgKHMtPmR5bl9sdHJlZVtuXS5GcmVxICE9IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgcy0+c3RybS0+ZGF0YV90eXBlID0gKG4gPT0gMzIpID8gWl9URVhUIDogWl9CSU5BUlk7CisgICAgICAgICAgICByZXR1cm4gWl9URVhUOworCisgICAgLyogVGhlcmUgYXJlIG5vICJibGFjay1saXN0ZWQiIG9yICJ3aGl0ZS1saXN0ZWQiIGJ5dGVzOgorICAgICAqIHRoaXMgc3RyZWFtIGVpdGhlciBpcyBlbXB0eSBvciBoYXMgdG9sZXJhdGVkICgiZ3JheS1saXN0ZWQiKSBieXRlcyBvbmx5LgorICAgICAqLworICAgIHJldHVybiBaX0JJTkFSWTsKIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS93YXRjb20vd2F0Y29tX2YubWFrIGIvd2F0Y29tL3dhdGNvbV9mLm1hawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTIyMjlhCi0tLSAvZGV2L251bGwKKysrIGIvd2F0Y29tL3dhdGNvbV9mLm1hawpAQCAtMCwwICsxLDQwIEBACisjIE1ha2VmaWxlIGZvciB6bGliCisjIE9wZW5XYXRjb20gZmxhdCBtb2RlbAorIyBMYXN0IHVwZGF0ZWQ6IDI4LURlYy0yMDA1CisKKyMgVG8gdXNlLCBkbyAid21ha2UgLWYgd2F0Y29tX2YubWFrIgorCitDX1NPVVJDRSA9ICBhZGxlcjMyLmMgIGNvbXByZXNzLmMgY3JjMzIuYyAgIGRlZmxhdGUuYyAgICAmCisgICAgICAgICAgICBnemlvLmMgICAgIGluZmJhY2suYyAgaW5mZmFzdC5jIGluZmxhdGUuYyAgICAmCisgICAgICAgICAgICBpbmZ0cmVlcy5jIHRyZWVzLmMgICAgdW5jb21wci5jIHp1dGlsLmMKKworT0JKUyA9ICAgICAgYWRsZXIzMi5vYmogIGNvbXByZXNzLm9iaiBjcmMzMi5vYmogICBkZWZsYXRlLm9iaiAgICAmCisgICAgICAgICAgICBnemlvLm9iaiAgICAgaW5mYmFjay5vYmogIGluZmZhc3Qub2JqIGluZmxhdGUub2JqICAgICYKKyAgICAgICAgICAgIGluZnRyZWVzLm9iaiB0cmVlcy5vYmogICAgdW5jb21wci5vYmogenV0aWwub2JqCisKK0NDICAgICAgID0gd2NjMzg2CitMSU5LRVIgICA9IHdjbDM4NgorQ0ZMQUdTICAgPSAtenEgLW1mIC0zciAtZnAzIC1zIC1idD1kb3MgLW9pbHJ0Zm0gLWZyPW51bCAtd3gKK1pMSUJfTElCID0gemxpYl9mLmxpYgorCisuQy5PQko6CQorICAgICAgICAkKENDKSAkKENGTEFHUykgJFtACisKK2FsbDogJChaTElCX0xJQikgZXhhbXBsZS5leGUgbWluaWd6aXAuZXhlCisKKyQoWkxJQl9MSUIpOiAkKE9CSlMpCisJd2xpYiAtYiAtYyAkKFpMSUJfTElCKSAtK2FkbGVyMzIub2JqICAtK2NvbXByZXNzLm9iaiAtK2NyYzMyLm9iagorICAgICAgICB3bGliIC1iIC1jICQoWkxJQl9MSUIpIC0rZGVmbGF0ZS5vYmogIC0rZ3ppby5vYmogICAgIC0raW5mYmFjay5vYmoKKyAgICAgICAgd2xpYiAtYiAtYyAkKFpMSUJfTElCKSAtK2luZmZhc3Qub2JqICAtK2luZmxhdGUub2JqICAtK2luZnRyZWVzLm9iagorICAgICAgICB3bGliIC1iIC1jICQoWkxJQl9MSUIpIC0rdHJlZXMub2JqICAgIC0rdW5jb21wci5vYmogIC0renV0aWwub2JqCisKK2V4YW1wbGUuZXhlOiAkKFpMSUJfTElCKSBleGFtcGxlLm9iagorCSQoTElOS0VSKSAtbGRvczMyYSAtZmU9ZXhhbXBsZS5leGUgZXhhbXBsZS5vYmogJChaTElCX0xJQikKKworbWluaWd6aXAuZXhlOiAkKFpMSUJfTElCKSBtaW5pZ3ppcC5vYmoKKwkkKExJTktFUikgLWxkb3MzMmEgLWZlPW1pbmlnemlwLmV4ZSBtaW5pZ3ppcC5vYmogJChaTElCX0xJQikKKworY2xlYW46IC5TWU1CT0xJQworICAgICAgICAgIGRlbCAqLm9iagorICAgICAgICAgIGRlbCAkKFpMSUJfTElCKQorICAgICAgICAgIEBlY2hvIENsZWFuaW5nIGRvbmUKZGlmZiAtLWdpdCBhL3dhdGNvbS93YXRjb21fbC5tYWsgYi93YXRjb20vd2F0Y29tX2wubWFrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMDNlZGQKLS0tIC9kZXYvbnVsbAorKysgYi93YXRjb20vd2F0Y29tX2wubWFrCkBAIC0wLDAgKzEsNDAgQEAKKyMgTWFrZWZpbGUgZm9yIHpsaWIKKyMgT3BlbldhdGNvbSBsYXJnZSBtb2RlbAorIyBMYXN0IHVwZGF0ZWQ6IDI4LURlYy0yMDA1CisKKyMgVG8gdXNlLCBkbyAid21ha2UgLWYgd2F0Y29tX2wubWFrIgorCitDX1NPVVJDRSA9ICBhZGxlcjMyLmMgIGNvbXByZXNzLmMgY3JjMzIuYyAgIGRlZmxhdGUuYyAgICAmCisgICAgICAgICAgICBnemlvLmMgICAgIGluZmJhY2suYyAgaW5mZmFzdC5jIGluZmxhdGUuYyAgICAmCisgICAgICAgICAgICBpbmZ0cmVlcy5jIHRyZWVzLmMgICAgdW5jb21wci5jIHp1dGlsLmMKKworT0JKUyA9ICAgICAgYWRsZXIzMi5vYmogIGNvbXByZXNzLm9iaiBjcmMzMi5vYmogICBkZWZsYXRlLm9iaiAgICAmCisgICAgICAgICAgICBnemlvLm9iaiAgICAgaW5mYmFjay5vYmogIGluZmZhc3Qub2JqIGluZmxhdGUub2JqICAgICYKKyAgICAgICAgICAgIGluZnRyZWVzLm9iaiB0cmVlcy5vYmogICAgdW5jb21wci5vYmogenV0aWwub2JqCisKK0NDICAgICAgID0gd2NjCitMSU5LRVIgICA9IHdjbAorQ0ZMQUdTICAgPSAtenEgLW1sIC1zIC1idD1kb3MgLW9pbHJ0Zm0gLWZyPW51bCAtd3gKK1pMSUJfTElCID0gemxpYl9sLmxpYgorCisuQy5PQko6CQorICAgICAgICAkKENDKSAkKENGTEFHUykgJFtACisKK2FsbDogJChaTElCX0xJQikgZXhhbXBsZS5leGUgbWluaWd6aXAuZXhlCisKKyQoWkxJQl9MSUIpOiAkKE9CSlMpCisJd2xpYiAtYiAtYyAkKFpMSUJfTElCKSAtK2FkbGVyMzIub2JqICAtK2NvbXByZXNzLm9iaiAtK2NyYzMyLm9iagorICAgICAgICB3bGliIC1iIC1jICQoWkxJQl9MSUIpIC0rZGVmbGF0ZS5vYmogIC0rZ3ppby5vYmogICAgIC0raW5mYmFjay5vYmoKKyAgICAgICAgd2xpYiAtYiAtYyAkKFpMSUJfTElCKSAtK2luZmZhc3Qub2JqICAtK2luZmxhdGUub2JqICAtK2luZnRyZWVzLm9iagorICAgICAgICB3bGliIC1iIC1jICQoWkxJQl9MSUIpIC0rdHJlZXMub2JqICAgIC0rdW5jb21wci5vYmogIC0renV0aWwub2JqCisKK2V4YW1wbGUuZXhlOiAkKFpMSUJfTElCKSBleGFtcGxlLm9iagorCSQoTElOS0VSKSAtZmU9ZXhhbXBsZS5leGUgZXhhbXBsZS5vYmogJChaTElCX0xJQikKKworbWluaWd6aXAuZXhlOiAkKFpMSUJfTElCKSBtaW5pZ3ppcC5vYmoKKwkkKExJTktFUikgLWZlPW1pbmlnemlwLmV4ZSBtaW5pZ3ppcC5vYmogJChaTElCX0xJQikKKworY2xlYW46IC5TWU1CT0xJQworICAgICAgICAgIGRlbCAqLm9iagorICAgICAgICAgIGRlbCAkKFpMSUJfTElCKQorICAgICAgICAgIEBlY2hvIENsZWFuaW5nIGRvbmUKZGlmZiAtLWdpdCBhL3dpbjMyL0RMTF9GQVEudHh0IGIvd2luMzIvRExMX0ZBUS50eHQKaW5kZXggZmIxOGUwNy4uMTJjMDA5MCAxMDA2NDQKLS0tIGEvd2luMzIvRExMX0ZBUS50eHQKKysrIGIvd2luMzIvRExMX0ZBUS50eHQKQEAgLTE2LDcgKzE2LDcgQEAKIAogICAgIFBvaW50ZXJzIHRvIGEgcHJlY29tcGlsZWQgWkxJQjEuRExMIGNhbiBiZSBmb3VuZCBpbiB0aGUgemxpYgogICAgIHdlYiBzaXRlIGF0OgotICAgICAgaHR0cDovL3d3dy56bGliLm9yZy8KKyAgICAgIGh0dHA6Ly93d3cuemxpYi5uZXQvCiAKICAgICBBcHBsaWNhdGlvbnMgdGhhdCBsaW5rIHRvIFpMSUIxLkRMTCBjYW4gcmVseSBvbiB0aGUgZm9sbG93aW5nCiAgICAgc3BlY2lmaWNhdGlvbjoKQEAgLTM1MCw5ICszNTAsOSBAQAogICAgIHlvdXIgYnVpbGQgaXMgdW5vZmZpY2lhbC4gIFlvdSBzaG91bGQgZ2l2ZSBpdCBhIGRpZmZlcmVudCBmaWxlCiAgICAgbmFtZSwgYW5kL29yIGluc3RhbGwgaXQgaW4gYSBwcml2YXRlIGRpcmVjdG9yeSB0aGF0IGNhbiBiZQogICAgIGFjY2Vzc2VkIGJ5IHlvdXIgYXBwbGljYXRpb24gb25seSwgYW5kIGlzIG5vdCB2aXNpYmxlIHRvIHRoZQotICAgIG90aGVycyAoZS5nLiBpdCdzIG5vdCBpbiB0aGUgU1lTVEVNIG9yIHRoZSBTWVNURU0zMiBkaXJlY3RvcnksCi0gICAgYW5kIGl0J3Mgbm90IGluIHRoZSBQQVRIKS4gIE90aGVyd2lzZSwgeW91ciBidWlsZCBtYXkgY2xhc2gKLSAgICB3aXRoIGFwcGxpY2F0aW9ucyB0aGF0IGxpbmsgdG8gdGhlIG9mZmljaWFsIGJ1aWxkLgorICAgIG90aGVycyAoaS5lLiBpdCdzIG5laXRoZXIgaW4gdGhlIFBBVEgsIG5vciBpbiB0aGUgU1lTVEVNIG9yCisgICAgU1lTVEVNMzIgZGlyZWN0b3JpZXMpLiAgT3RoZXJ3aXNlLCB5b3VyIGJ1aWxkIG1heSBjbGFzaCB3aXRoCisgICAgYXBwbGljYXRpb25zIHRoYXQgbGluayB0byB0aGUgb2ZmaWNpYWwgYnVpbGQuCiAKICAgICBGb3IgZXhhbXBsZSwgaW4gQ3lnd2luLCB6bGliIGlzIGxpbmtlZCB0byB0aGUgQ3lnd2luIHJ1bnRpbWUKICAgICBDWUdXSU4xLkRMTCwgYW5kIGl0IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBuYW1lIENZR1ouRExMLgpkaWZmIC0tZ2l0IGEvd2luMzIvTWFrZWZpbGUuYm9yIGIvd2luMzIvTWFrZWZpbGUuYm9yCmluZGV4IGI4MDI1MTkuLjY3ZGFmYWEgMTAwNjQ0Ci0tLSBhL3dpbjMyL01ha2VmaWxlLmJvcgorKysgYi93aW4zMi9NYWtlZmlsZS5ib3IKQEAgLTEsOSArMSw2IEBACiAjIE1ha2VmaWxlIGZvciB6bGliCiAjIEJvcmxhbmQgQysrIGZvciBXaW4zMgogIwotIyBVcGRhdGVkIGZvciB6bGliIDEuMi54IGJ5IENvc21pbiBUcnV0YSwgMTEtTWFyLTIwMDMKLSMgTGFzdCB1cGRhdGVkOiAyOC1BdWctMjAwMwotIwogIyBVc2FnZToKICMgIG1ha2UgLWYgd2luMzIvTWFrZWZpbGUuYm9yCiAjICBtYWtlIC1mIHdpbjMyL01ha2VmaWxlLmJvciBMT0NBTF9aTElCPS1EQVNNViBPQkpBPW1hdGNoLm9iaiBPQkpQQT0rbWF0Y2gub2JqCkBAIC05OSw4ICs5Niw4IEBACiAKICMgY2xlYW51cAogY2xlYW46CisJLWRlbCAkKFpMSUJfTElCKQogCS1kZWwgKi5vYmoKLQktZGVsICoubGliCiAJLWRlbCAqLmV4ZQogCS1kZWwgKi50ZHMKIAktZGVsIHpsaWIuYmFrCmRpZmYgLS1naXQgYS93aW4zMi9NYWtlZmlsZS5tc2MgYi93aW4zMi9NYWtlZmlsZS5tc2MKaW5kZXggNTI4ZWNhYS4uNTkwMGQ2NiAxMDA2NDQKLS0tIGEvd2luMzIvTWFrZWZpbGUubXNjCisrKyBiL3dpbjMyL01ha2VmaWxlLm1zYwpAQCAtMSwxMSArMSw1IEBACi0jIE1ha2VmaWxlIGZvciB6bGliIC0tIE1pY3Jvc29mdCAoVmlzdWFsKSBDCi0jCi0jIEF1dGhvcnM6Ci0jICAgQ29zbWluIFRydXRhLCAxMS1NYXItMjAwMwotIyAgIENocmlzdGlhbiBTcGllbGVyLCAxOS1NYXItMjAwMwotIwotIyBMYXN0IHVwZGF0ZWQ6Ci0jICAgQ29zbWluIFRydXRhLCAyNy1BdWctMjAwMworIyBNYWtlZmlsZSBmb3IgemxpYiB1c2luZyBNaWNyb3NvZnQgKFZpc3VhbCkgQworIyB6bGliIGlzIGNvcHlyaWdodCAoQykgMTk5NS0yMDA2IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKICMKICMgVXNhZ2U6CiAjICAgbm1ha2UgLWYgd2luMzIvTWFrZWZpbGUubXNjICAgICAgICAgICAgKHN0YW5kYXJkIGJ1aWxkKQpAQCAtMjcsOSArMjEsMTAgQEAKIExEID0gbGluawogQVIgPSBsaWIKIFJDID0gcmMKLUNGTEFHUyAgPSAtbm9sb2dvIC1NRCAtTzIgJChMT0MpCitDRkxBR1MgID0gLW5vbG9nbyAtTUQgLU8yIC1PeS0gJChMT0MpCitXRkxBR1MgID0gLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUgLURfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFCiBBU0ZMQUdTID0gLWNvZmYKLUxERkxBR1MgPSAtbm9sb2dvIC1yZWxlYXNlCitMREZMQUdTID0gLW5vbG9nbyAtZGVidWcgLXJlbGVhc2UKIEFSRkxBR1MgPSAtbm9sb2dvCiBSQ0ZMQUdTID0gL2RXSU4zMiAvcgogCkBAIC01MCwyMSArNDUsMzEgQEAKICQoU0hBUkVETElCKTogd2luMzIvemxpYi5kZWYgJChPQkpTKSAkKE9CSkEpIHpsaWIxLnJlcwogCSQoTEQpICQoTERGTEFHUykgLWRlZjp3aW4zMi96bGliLmRlZiAtZGxsIC1pbXBsaWI6JChJTVBMSUIpIFwKIAkgIC1vdXQ6JEAgJChPQkpTKSAkKE9CSkEpIHpsaWIxLnJlcworCWlmIGV4aXN0ICRALm1hbmlmZXN0IFwKKwkgIG10IC1ub2xvZ28gLW1hbmlmZXN0ICRALm1hbmlmZXN0IC1vdXRwdXRyZXNvdXJjZTokQDsyCiAKIGV4YW1wbGUuZXhlOiBleGFtcGxlLm9iaiAkKFNUQVRJQ0xJQikKIAkkKExEKSAkKExERkxBR1MpIGV4YW1wbGUub2JqICQoU1RBVElDTElCKQorCWlmIGV4aXN0ICRALm1hbmlmZXN0IFwKKwkgIG10IC1ub2xvZ28gLW1hbmlmZXN0ICRALm1hbmlmZXN0IC1vdXRwdXRyZXNvdXJjZTokQDsxCiAKIG1pbmlnemlwLmV4ZTogbWluaWd6aXAub2JqICQoU1RBVElDTElCKQogCSQoTEQpICQoTERGTEFHUykgbWluaWd6aXAub2JqICQoU1RBVElDTElCKQorCWlmIGV4aXN0ICRALm1hbmlmZXN0IFwKKwkgIG10IC1ub2xvZ28gLW1hbmlmZXN0ICRALm1hbmlmZXN0IC1vdXRwdXRyZXNvdXJjZTokQDsxCiAKIGV4YW1wbGVfZC5leGU6IGV4YW1wbGUub2JqICQoSU1QTElCKQogCSQoTEQpICQoTERGTEFHUykgLW91dDokQCBleGFtcGxlLm9iaiAkKElNUExJQikKKwlpZiBleGlzdCAkQC5tYW5pZmVzdCBcCisJICBtdCAtbm9sb2dvIC1tYW5pZmVzdCAkQC5tYW5pZmVzdCAtb3V0cHV0cmVzb3VyY2U6JEA7MQogCiBtaW5pZ3ppcF9kLmV4ZTogbWluaWd6aXAub2JqICQoSU1QTElCKQogCSQoTEQpICQoTERGTEFHUykgLW91dDokQCBtaW5pZ3ppcC5vYmogJChJTVBMSUIpCisJaWYgZXhpc3QgJEAubWFuaWZlc3QgXAorCSAgbXQgLW5vbG9nbyAtbWFuaWZlc3QgJEAubWFuaWZlc3QgLW91dHB1dHJlc291cmNlOiRAOzEKIAogLmMub2JqOgotCSQoQ0MpIC1jICQoQ0ZMQUdTKSAkPAorCSQoQ0MpIC1jICQoV0ZMQUdTKSAkKENGTEFHUykgJDwKIAogLmFzbS5vYmo6CiAJJChBUykgLWMgJChBU0ZMQUdTKSAkPApAQCAtMTIzLDQgKzEyOCw2IEBACiAJLWRlbCAqLnJlcwogCS1kZWwgKi5leHAKIAktZGVsICouZXhlCisJLWRlbCAqLnBkYgorCS1kZWwgKi5tYW5pZmVzdAogCS1kZWwgZm9vLmd6CmRpZmYgLS1naXQgYS93aW4zMi96bGliLmRlZiBiL3dpbjMyL3psaWIuZGVmCmluZGV4IGE0N2NiYzEuLmRiZWE5YzUgMTAwNjQ0Ci0tLSBhL3dpbjMyL3psaWIuZGVmCisrKyBiL3dpbjMyL3psaWIuZGVmCkBAIC00MywxMiArNDMsMTUgQEAKICAgICBnenJld2luZAogICAgIGd6dGVsbAogICAgIGd6ZW9mCisgICAgZ3pkaXJlY3QKICAgICBnemNsb3NlCiAgICAgZ3plcnJvcgogICAgIGd6Y2xlYXJlcnIKIDsgY2hlY2tzdW0gZnVuY3Rpb25zCiAgICAgYWRsZXIzMgorICAgIGFkbGVyMzJfY29tYmluZQogICAgIGNyYzMyCisgICAgY3JjMzJfY29tYmluZQogOyB2YXJpb3VzIGhhY2tzLCBkb24ndCBsb29rIDopCiAgICAgZGVmbGF0ZUluaXRfCiAgICAgZGVmbGF0ZUluaXQyXwpkaWZmIC0tZ2l0IGEvd2luMzIvemxpYjEucmMgYi93aW4zMi96bGliMS5yYwppbmRleCA5OTAyNWM5Li4wZDFkN2ZmIDEwMDY0NAotLS0gYS93aW4zMi96bGliMS5yYworKysgYi93aW4zMi96bGliMS5yYwpAQCAtMSwxOSArMSwyMCBAQAotI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW52ZXIuaD4KKyNpbmNsdWRlICIuLi96bGliLmgiCiAKICNpZmRlZiBHQ0NfV0lORFJFUwogVlNfVkVSU0lPTl9JTkZPCQlWRVJTSU9OSU5GTwogI2Vsc2UKIFZTX1ZFUlNJT05fSU5GTwkJVkVSU0lPTklORk8JTU9WRUFCTEUgSU1QVVJFIExPQURPTkNBTEwgRElTQ0FSREFCTEUKICNlbmRpZgotICBGSUxFVkVSU0lPTgkJMSwyLDIsMAotICBQUk9EVUNUVkVSU0lPTgkxLDIsMiwwCisgIEZJTEVWRVJTSU9OCQlaTElCX1ZFUl9NQUpPUixaTElCX1ZFUl9NSU5PUixaTElCX1ZFUl9SRVZJU0lPTiwwCisgIFBST0RVQ1RWRVJTSU9OCVpMSUJfVkVSX01BSk9SLFpMSUJfVkVSX01JTk9SLFpMSUJfVkVSX1JFVklTSU9OLDAKICAgRklMRUZMQUdTTUFTSwkJVlNfRkZJX0ZJTEVGTEFHU01BU0sKICNpZmRlZiBfREVCVUcKICAgRklMRUZMQUdTCQkxCiAjZWxzZQogICBGSUxFRkxBR1MJCTAKICNlbmRpZgotICBGSUxFT1MJCVZPU19ET1NfV0lORE9XUzMyCisgIEZJTEVPUwkJVk9TX19XSU5ET1dTMzIKICAgRklMRVRZUEUJCVZGVF9ETEwKICAgRklMRVNVQlRZUEUJCTAJLy8gbm90IHVzZWQKIEJFR0lOCkBAIC0yMywxMyArMjQsMTMgQEAKICAgICAvL2xhbmd1YWdlIElEID0gVS5TLiBFbmdsaXNoLCBjaGFyIHNldCA9IFdpbmRvd3MsIE11bHRpbGluZ3VhbAogICAgIEJFR0lOCiAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwJInpsaWIgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5XDAiCi0gICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLAkiMS4yLjNcMCIKKyAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsCVpMSUJfVkVSU0lPTiAiXDAiCiAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwJInpsaWIxLmRsbFwwIgotICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwJIihDKSAxOTk1LTIwMDQgSmVhbi1sb3VwIEdhaWxseSAmIE1hcmsgQWRsZXJcMCIKKyAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsCSIoQykgMTk5NS0yMDA2IEplYW4tbG91cCBHYWlsbHkgJiBNYXJrIEFkbGVyXDAiCiAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsCSJ6bGliMS5kbGxcMCIKICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsCSJ6bGliXDAiCi0gICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLAkiMS4yLjNcMCIKLSAgICAgIFZBTFVFICJDb21tZW50cyIsIkRMTCBzdXBwb3J0IGJ5IEFsZXNzYW5kcm8gSWFjb3BldHRpICYgR2lsbGVzIFZvbGxhbnRcMCIKKyAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsCVpMSUJfVkVSU0lPTiAiXDAiCisgICAgICBWQUxVRSAiQ29tbWVudHMiLAkJIkZvciBtb3JlIGluZm9ybWF0aW9uIHZpc2l0IGh0dHA6Ly93d3cuemxpYi5uZXQvXDAiCiAgICAgRU5ECiAgIEVORAogICBCTE9DSyAiVmFyRmlsZUluZm8iCmRpZmYgLS1naXQgYS96Y29uZi5oIGIvemNvbmYuaAppbmRleCAwM2E5NDMxLi41NjE5Yzc2IDEwMDY0NAotLS0gYS96Y29uZi5oCisrKyBiL3pjb25mLmgKQEAgLTEsNSArMSw1IEBACiAvKiB6Y29uZi5oIC0tIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHpsaWIgY29tcHJlc3Npb24gbGlicmFyeQotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgSmVhbi1sb3VwIEdhaWxseS4KKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA2IEplYW4tbG91cCBHYWlsbHkuCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtMTEsNTIgKzExLDExNSBAQAogLyoKICAqIElmIHlvdSAqcmVhbGx5KiBuZWVkIGEgdW5pcXVlIHByZWZpeCBmb3IgYWxsIHR5cGVzIGFuZCBsaWJyYXJ5IGZ1bmN0aW9ucywKICAqIGNvbXBpbGUgd2l0aCAtRFpfUFJFRklYLiBUaGUgInN0YW5kYXJkIiB6bGliIHNob3VsZCBiZSBjb21waWxlZCB3aXRob3V0IGl0LgorICogRXZlbiBiZXR0ZXIgdGhhbiBjb21waWxpbmcgd2l0aCAtRFpfUFJFRklYIHdvdWxkIGJlIHRvIHVzZSBjb25maWd1cmUgdG8gc2V0CisgKiB0aGlzIHBlcm1hbmVudGx5IGluIHpjb25mLmggdXNpbmcgIi4vY29uZmlndXJlIC0tenByZWZpeCIuCiAgKi8KLSNpZmRlZiBaX1BSRUZJWAotIyAgZGVmaW5lIGRlZmxhdGVJbml0XyAgICAgICAgICB6X2RlZmxhdGVJbml0XwotIyAgZGVmaW5lIGRlZmxhdGUgICAgICAgICAgICAgICB6X2RlZmxhdGUKLSMgIGRlZmluZSBkZWZsYXRlRW5kICAgICAgICAgICAgel9kZWZsYXRlRW5kCi0jICBkZWZpbmUgaW5mbGF0ZUluaXRfICAgICAgICAgIHpfaW5mbGF0ZUluaXRfCi0jICBkZWZpbmUgaW5mbGF0ZSAgICAgICAgICAgICAgIHpfaW5mbGF0ZQotIyAgZGVmaW5lIGluZmxhdGVFbmQgICAgICAgICAgICB6X2luZmxhdGVFbmQKLSMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICAgel9kZWZsYXRlSW5pdDJfCi0jICBkZWZpbmUgZGVmbGF0ZVNldERpY3Rpb25hcnkgIHpfZGVmbGF0ZVNldERpY3Rpb25hcnkKLSMgIGRlZmluZSBkZWZsYXRlQ29weSAgICAgICAgICAgel9kZWZsYXRlQ29weQotIyAgZGVmaW5lIGRlZmxhdGVSZXNldCAgICAgICAgICB6X2RlZmxhdGVSZXNldAotIyAgZGVmaW5lIGRlZmxhdGVQYXJhbXMgICAgICAgICB6X2RlZmxhdGVQYXJhbXMKLSMgIGRlZmluZSBkZWZsYXRlQm91bmQgICAgICAgICAgel9kZWZsYXRlQm91bmQKLSMgIGRlZmluZSBkZWZsYXRlUHJpbWUgICAgICAgICAgel9kZWZsYXRlUHJpbWUKLSMgIGRlZmluZSBpbmZsYXRlSW5pdDJfICAgICAgICAgel9pbmZsYXRlSW5pdDJfCi0jICBkZWZpbmUgaW5mbGF0ZVNldERpY3Rpb25hcnkgIHpfaW5mbGF0ZVNldERpY3Rpb25hcnkKLSMgIGRlZmluZSBpbmZsYXRlU3luYyAgICAgICAgICAgel9pbmZsYXRlU3luYwotIyAgZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgICAgICB6X2luZmxhdGVTeW5jUG9pbnQKLSMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQotIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldAotIyAgZGVmaW5lIGluZmxhdGVCYWNrICAgICAgICAgICB6X2luZmxhdGVCYWNrCi0jICBkZWZpbmUgaW5mbGF0ZUJhY2tFbmQgICAgICAgIHpfaW5mbGF0ZUJhY2tFbmQKKyNpZmRlZiBaX1BSRUZJWCAgICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworCisvKiBhbGwgbGlua2VkIHN5bWJvbHMgKi8KKyMgIGRlZmluZSBfZGlzdF9jb2RlICAgICAgICAgICAgel9fZGlzdF9jb2RlCisjICBkZWZpbmUgX2xlbmd0aF9jb2RlICAgICAgICAgIHpfX2xlbmd0aF9jb2RlCisjICBkZWZpbmUgX3RyX2FsaWduICAgICAgICAgICAgIHpfX3RyX2FsaWduCisjICBkZWZpbmUgX3RyX2ZsdXNoX2Jsb2NrICAgICAgIHpfX3RyX2ZsdXNoX2Jsb2NrCisjICBkZWZpbmUgX3RyX2luaXQgICAgICAgICAgICAgIHpfX3RyX2luaXQKKyMgIGRlZmluZSBfdHJfc3RvcmVkX2Jsb2NrICAgICAgel9fdHJfc3RvcmVkX2Jsb2NrCisjICBkZWZpbmUgX3RyX3RhbGx5ICAgICAgICAgICAgIHpfX3RyX3RhbGx5CisjICBkZWZpbmUgYWRsZXIzMiAgICAgICAgICAgICAgIHpfYWRsZXIzMgorIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZSAgICAgICB6X2FkbGVyMzJfY29tYmluZQogIyAgZGVmaW5lIGNvbXByZXNzICAgICAgICAgICAgICB6X2NvbXByZXNzCiAjICBkZWZpbmUgY29tcHJlc3MyICAgICAgICAgICAgIHpfY29tcHJlc3MyCiAjICBkZWZpbmUgY29tcHJlc3NCb3VuZCAgICAgICAgIHpfY29tcHJlc3NCb3VuZAotIyAgZGVmaW5lIHVuY29tcHJlc3MgICAgICAgICAgICB6X3VuY29tcHJlc3MKLSMgIGRlZmluZSBhZGxlcjMyICAgICAgICAgICAgICAgel9hZGxlcjMyCiAjICBkZWZpbmUgY3JjMzIgICAgICAgICAgICAgICAgIHpfY3JjMzIKKyMgIGRlZmluZSBjcmMzMl9jb21iaW5lICAgICAgICAgel9jcmMzMl9jb21iaW5lCisjICBkZWZpbmUgZGVmbGF0ZSAgICAgICAgICAgICAgIHpfZGVmbGF0ZQorIyAgZGVmaW5lIGRlZmxhdGVCb3VuZCAgICAgICAgICB6X2RlZmxhdGVCb3VuZAorIyAgZGVmaW5lIGRlZmxhdGVDb3B5ICAgICAgICAgICB6X2RlZmxhdGVDb3B5CisjICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgIHpfZGVmbGF0ZUVuZAorIyAgZGVmaW5lIGRlZmxhdGVJbml0Ml8gICAgICAgICB6X2RlZmxhdGVJbml0Ml8KKyMgIGRlZmluZSBkZWZsYXRlSW5pdF8gICAgICAgICAgel9kZWZsYXRlSW5pdF8KKyMgIGRlZmluZSBkZWZsYXRlUGFyYW1zICAgICAgICAgel9kZWZsYXRlUGFyYW1zCisjICBkZWZpbmUgZGVmbGF0ZVByaW1lICAgICAgICAgIHpfZGVmbGF0ZVByaW1lCisjICBkZWZpbmUgZGVmbGF0ZVJlc2V0ICAgICAgICAgIHpfZGVmbGF0ZVJlc2V0CisjICBkZWZpbmUgZGVmbGF0ZVNldERpY3Rpb25hcnkgIHpfZGVmbGF0ZVNldERpY3Rpb25hcnkKKyMgIGRlZmluZSBkZWZsYXRlU2V0SGVhZGVyICAgICAgel9kZWZsYXRlU2V0SGVhZGVyCisjICBkZWZpbmUgZGVmbGF0ZVR1bmUgICAgICAgICAgIHpfZGVmbGF0ZVR1bmUKKyMgIGRlZmluZSBkZWZsYXRlX2NvcHlyaWdodCAgICAgel9kZWZsYXRlX2NvcHlyaWdodAogIyAgZGVmaW5lIGdldF9jcmNfdGFibGUgICAgICAgICB6X2dldF9jcmNfdGFibGUKKyMgIGRlZmluZSBnemNsZWFyZXJyICAgICAgICAgICAgel9nemNsZWFyZXJyCisjICBkZWZpbmUgZ3pjbG9zZSAgICAgICAgICAgICAgIHpfZ3pjbG9zZQorIyAgZGVmaW5lIGd6ZGlyZWN0ICAgICAgICAgICAgICB6X2d6ZGlyZWN0CisjICBkZWZpbmUgZ3pkb3BlbiAgICAgICAgICAgICAgIHpfZ3pkb3BlbgorIyAgZGVmaW5lIGd6ZW9mICAgICAgICAgICAgICAgICB6X2d6ZW9mCisjICBkZWZpbmUgZ3plcnJvciAgICAgICAgICAgICAgIHpfZ3plcnJvcgorIyAgZGVmaW5lIGd6Zmx1c2ggICAgICAgICAgICAgICB6X2d6Zmx1c2gKKyMgIGRlZmluZSBnemdldGMgICAgICAgICAgICAgICAgel9nemdldGMKKyMgIGRlZmluZSBnemdldHMgICAgICAgICAgICAgICAgel9nemdldHMKKyMgIGRlZmluZSBnem9wZW4gICAgICAgICAgICAgICAgel9nem9wZW4KKyMgIGRlZmluZSBnenByaW50ZiAgICAgICAgICAgICAgel9nenByaW50ZgorIyAgZGVmaW5lIGd6cHV0YyAgICAgICAgICAgICAgICB6X2d6cHV0YworIyAgZGVmaW5lIGd6cHV0cyAgICAgICAgICAgICAgICB6X2d6cHV0cworIyAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZAorIyAgZGVmaW5lIGd6cmV3aW5kICAgICAgICAgICAgICB6X2d6cmV3aW5kCisjICBkZWZpbmUgZ3pzZWVrICAgICAgICAgICAgICAgIHpfZ3pzZWVrCisjICBkZWZpbmUgZ3pzZXRwYXJhbXMgICAgICAgICAgIHpfZ3pzZXRwYXJhbXMKKyMgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwKKyMgIGRlZmluZSBnenVuZ2V0YyAgICAgICAgICAgICAgel9nenVuZ2V0YworIyAgZGVmaW5lIGd6d3JpdGUgICAgICAgICAgICAgICB6X2d6d3JpdGUKKyMgIGRlZmluZSBpbmZsYXRlICAgICAgICAgICAgICAgel9pbmZsYXRlCisjICBkZWZpbmUgaW5mbGF0ZUJhY2sgICAgICAgICAgIHpfaW5mbGF0ZUJhY2sKKyMgIGRlZmluZSBpbmZsYXRlQmFja0VuZCAgICAgICAgel9pbmZsYXRlQmFja0VuZAorIyAgZGVmaW5lIGluZmxhdGVCYWNrSW5pdF8gICAgICB6X2luZmxhdGVCYWNrSW5pdF8KKyMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQorIyAgZGVmaW5lIGluZmxhdGVFbmQgICAgICAgICAgICB6X2luZmxhdGVFbmQKKyMgIGRlZmluZSBpbmZsYXRlR2V0SGVhZGVyICAgICAgel9pbmZsYXRlR2V0SGVhZGVyCisjICBkZWZpbmUgaW5mbGF0ZUluaXQyXyAgICAgICAgIHpfaW5mbGF0ZUluaXQyXworIyAgZGVmaW5lIGluZmxhdGVJbml0XyAgICAgICAgICB6X2luZmxhdGVJbml0XworIyAgZGVmaW5lIGluZmxhdGVQcmltZSAgICAgICAgICB6X2luZmxhdGVQcmltZQorIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldAorIyAgZGVmaW5lIGluZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2luZmxhdGVTZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgaW5mbGF0ZVN5bmMgICAgICAgICAgIHpfaW5mbGF0ZVN5bmMKKyMgIGRlZmluZSBpbmZsYXRlU3luY1BvaW50ICAgICAgel9pbmZsYXRlU3luY1BvaW50CisjICBkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgICAgIHpfaW5mbGF0ZV9jb3B5cmlnaHQKKyMgIGRlZmluZSBpbmZsYXRlX2Zhc3QgICAgICAgICAgel9pbmZsYXRlX2Zhc3QKKyMgIGRlZmluZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlCisjICBkZWZpbmUgdW5jb21wcmVzcyAgICAgICAgICAgIHpfdW5jb21wcmVzcwogIyAgZGVmaW5lIHpFcnJvciAgICAgICAgICAgICAgICB6X3pFcnJvcgorIyAgZGVmaW5lIHpfZXJybXNnICAgICAgICAgICAgICB6X3pfZXJybXNnCisjICBkZWZpbmUgemNhbGxvYyAgICAgICAgICAgICAgIHpfemNhbGxvYworIyAgZGVmaW5lIHpjZnJlZSAgICAgICAgICAgICAgICB6X3pjZnJlZQorIyAgZGVmaW5lIHpsaWJDb21waWxlRmxhZ3MgICAgICB6X3psaWJDb21waWxlRmxhZ3MKKyMgIGRlZmluZSB6bGliVmVyc2lvbiAgICAgICAgICAgel96bGliVmVyc2lvbgogCi0jICBkZWZpbmUgYWxsb2NfZnVuYyAgICAgICAgICAgIHpfYWxsb2NfZnVuYwotIyAgZGVmaW5lIGZyZWVfZnVuYyAgICAgICAgICAgICB6X2ZyZWVfZnVuYwotIyAgZGVmaW5lIGluX2Z1bmMgICAgICAgICAgICAgICB6X2luX2Z1bmMKLSMgIGRlZmluZSBvdXRfZnVuYyAgICAgICAgICAgICAgel9vdXRfZnVuYworLyogYWxsIHpsaWIgdHlwZWRlZnMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCiAjICBkZWZpbmUgQnl0ZSAgICAgICAgICAgICAgICAgIHpfQnl0ZQotIyAgZGVmaW5lIHVJbnQgICAgICAgICAgICAgICAgICB6X3VJbnQKLSMgIGRlZmluZSB1TG9uZyAgICAgICAgICAgICAgICAgel91TG9uZwogIyAgZGVmaW5lIEJ5dGVmICAgICAgICAgICAgICAgICB6X0J5dGVmCisjICBkZWZpbmUgYWxsb2NfZnVuYyAgICAgICAgICAgIHpfYWxsb2NfZnVuYwogIyAgZGVmaW5lIGNoYXJmICAgICAgICAgICAgICAgICB6X2NoYXJmCisjICBkZWZpbmUgZnJlZV9mdW5jICAgICAgICAgICAgIHpfZnJlZV9mdW5jCisjICBkZWZpbmUgZ3pGaWxlICAgICAgICAgICAgICAgIHpfZ3pGaWxlCisjICBkZWZpbmUgZ3pfaGVhZGVyICAgICAgICAgICAgIHpfZ3pfaGVhZGVyCisjICBkZWZpbmUgZ3pfaGVhZGVycCAgICAgICAgICAgIHpfZ3pfaGVhZGVycAorIyAgZGVmaW5lIGluX2Z1bmMgICAgICAgICAgICAgICB6X2luX2Z1bmMKICMgIGRlZmluZSBpbnRmICAgICAgICAgICAgICAgICAgel9pbnRmCisjICBkZWZpbmUgb3V0X2Z1bmMgICAgICAgICAgICAgIHpfb3V0X2Z1bmMKKyMgIGRlZmluZSB1SW50ICAgICAgICAgICAgICAgICAgel91SW50CiAjICBkZWZpbmUgdUludGYgICAgICAgICAgICAgICAgIHpfdUludGYKKyMgIGRlZmluZSB1TG9uZyAgICAgICAgICAgICAgICAgel91TG9uZwogIyAgZGVmaW5lIHVMb25nZiAgICAgICAgICAgICAgICB6X3VMb25nZgotIyAgZGVmaW5lIHZvaWRwZiAgICAgICAgICAgICAgICB6X3ZvaWRwZgogIyAgZGVmaW5lIHZvaWRwICAgICAgICAgICAgICAgICB6X3ZvaWRwCisjICBkZWZpbmUgdm9pZHAgICAgICAgICAgICAgICAgIHpfdm9pZHAKKyMgIGRlZmluZSB2b2lkcGMgICAgICAgICAgICAgICAgel92b2lkcGMKKyMgIGRlZmluZSB2b2lkcGMgICAgICAgICAgICAgICAgel92b2lkcGMKKyMgIGRlZmluZSB2b2lkcGYgICAgICAgICAgICAgICAgel92b2lkcGYKKyMgIGRlZmluZSB2b2lkcGYgICAgICAgICAgICAgICAgel92b2lkcGYKKyMgIGRlZmluZSB6X3N0cmVhbSAgICAgICAgICAgICAgel96X3N0cmVhbQorIyAgZGVmaW5lIHpfc3RyZWFtcCAgICAgICAgICAgICB6X3pfc3RyZWFtcAorCisvKiBhbGwgemxpYiBzdHJ1Y3RzIGluIHpsaWIuaCBhbmQgemNvbmYuaCAqLworIyAgZGVmaW5lIGd6X2hlYWRlcl9zICAgICAgICAgICB6X2d6X2hlYWRlcl9zCisjICBkZWZpbmUgaW50ZXJuYWxfc3RhdGUgICAgICAgIHpfaW50ZXJuYWxfc3RhdGUKKyMgIGRlZmluZSB6X3N0cmVhbV9zICAgICAgICAgICAgel96X3N0cmVhbV9zCisKICNlbmRpZgogCiAjaWYgZGVmaW5lZChfX01TRE9TX18pICYmICFkZWZpbmVkKE1TRE9TKQpAQCAtMjQzLDYgKzMwNiwxMCBAQAogIyAgZW5kaWYKICNlbmRpZgogCisjaWZkZWYgSEFWRV9WSVNJQklMSVRZX1BSQUdNQQorIyAgZGVmaW5lIFpFWFRFUk4gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpIGV4dGVybgorI2VuZGlmCisKICNpZm5kZWYgWkVYVEVSTgogIyAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuCiAjZW5kaWYKQEAgLTMwNyw5ICszNzQsNiBAQAogCiAjaWYgZGVmaW5lZChfX01WU19fKQogIyAgZGVmaW5lIE5PX3ZzbnByaW50ZgotIyAgaWZkZWYgRkFSCi0jICAgIHVuZGVmIEZBUgotIyAgZW5kaWYKICNlbmRpZgogCiAvKiBNVlMgbGlua2VyIGRvZXMgbm90IHN1cHBvcnQgZXh0ZXJuYWwgbmFtZXMgbGFyZ2VyIHRoYW4gOCBieXRlcyAqLwpkaWZmIC0tZ2l0IGEvemNvbmYuaW4uaCBiL3pjb25mLmluLmgKaW5kZXggMDNhOTQzMS4uNTYxOWM3NiAxMDA2NDQKLS0tIGEvemNvbmYuaW4uaAorKysgYi96Y29uZi5pbi5oCkBAIC0xLDUgKzEsNSBAQAogLyogemNvbmYuaCAtLSBjb25maWd1cmF0aW9uIG9mIHRoZSB6bGliIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNiBKZWFuLWxvdXAgR2FpbGx5LgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTExLDUyICsxMSwxMTUgQEAKIC8qCiAgKiBJZiB5b3UgKnJlYWxseSogbmVlZCBhIHVuaXF1ZSBwcmVmaXggZm9yIGFsbCB0eXBlcyBhbmQgbGlicmFyeSBmdW5jdGlvbnMsCiAgKiBjb21waWxlIHdpdGggLURaX1BSRUZJWC4gVGhlICJzdGFuZGFyZCIgemxpYiBzaG91bGQgYmUgY29tcGlsZWQgd2l0aG91dCBpdC4KKyAqIEV2ZW4gYmV0dGVyIHRoYW4gY29tcGlsaW5nIHdpdGggLURaX1BSRUZJWCB3b3VsZCBiZSB0byB1c2UgY29uZmlndXJlIHRvIHNldAorICogdGhpcyBwZXJtYW5lbnRseSBpbiB6Y29uZi5oIHVzaW5nICIuL2NvbmZpZ3VyZSAtLXpwcmVmaXgiLgogICovCi0jaWZkZWYgWl9QUkVGSVgKLSMgIGRlZmluZSBkZWZsYXRlSW5pdF8gICAgICAgICAgel9kZWZsYXRlSW5pdF8KLSMgIGRlZmluZSBkZWZsYXRlICAgICAgICAgICAgICAgel9kZWZsYXRlCi0jICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgIHpfZGVmbGF0ZUVuZAotIyAgZGVmaW5lIGluZmxhdGVJbml0XyAgICAgICAgICB6X2luZmxhdGVJbml0XwotIyAgZGVmaW5lIGluZmxhdGUgICAgICAgICAgICAgICB6X2luZmxhdGUKLSMgIGRlZmluZSBpbmZsYXRlRW5kICAgICAgICAgICAgel9pbmZsYXRlRW5kCi0jICBkZWZpbmUgZGVmbGF0ZUluaXQyXyAgICAgICAgIHpfZGVmbGF0ZUluaXQyXwotIyAgZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVTZXREaWN0aW9uYXJ5Ci0jICBkZWZpbmUgZGVmbGF0ZUNvcHkgICAgICAgICAgIHpfZGVmbGF0ZUNvcHkKLSMgIGRlZmluZSBkZWZsYXRlUmVzZXQgICAgICAgICAgel9kZWZsYXRlUmVzZXQKLSMgIGRlZmluZSBkZWZsYXRlUGFyYW1zICAgICAgICAgel9kZWZsYXRlUGFyYW1zCi0jICBkZWZpbmUgZGVmbGF0ZUJvdW5kICAgICAgICAgIHpfZGVmbGF0ZUJvdW5kCi0jICBkZWZpbmUgZGVmbGF0ZVByaW1lICAgICAgICAgIHpfZGVmbGF0ZVByaW1lCi0jICBkZWZpbmUgaW5mbGF0ZUluaXQyXyAgICAgICAgIHpfaW5mbGF0ZUluaXQyXwotIyAgZGVmaW5lIGluZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2luZmxhdGVTZXREaWN0aW9uYXJ5Ci0jICBkZWZpbmUgaW5mbGF0ZVN5bmMgICAgICAgICAgIHpfaW5mbGF0ZVN5bmMKLSMgIGRlZmluZSBpbmZsYXRlU3luY1BvaW50ICAgICAgel9pbmZsYXRlU3luY1BvaW50Ci0jICBkZWZpbmUgaW5mbGF0ZUNvcHkgICAgICAgICAgIHpfaW5mbGF0ZUNvcHkKLSMgIGRlZmluZSBpbmZsYXRlUmVzZXQgICAgICAgICAgel9pbmZsYXRlUmVzZXQKLSMgIGRlZmluZSBpbmZsYXRlQmFjayAgICAgICAgICAgel9pbmZsYXRlQmFjawotIyAgZGVmaW5lIGluZmxhdGVCYWNrRW5kICAgICAgICB6X2luZmxhdGVCYWNrRW5kCisjaWZkZWYgWl9QUkVGSVggICAgIC8qIG1heSBiZSBzZXQgdG8gI2lmIDEgYnkgLi9jb25maWd1cmUgKi8KKworLyogYWxsIGxpbmtlZCBzeW1ib2xzICovCisjICBkZWZpbmUgX2Rpc3RfY29kZSAgICAgICAgICAgIHpfX2Rpc3RfY29kZQorIyAgZGVmaW5lIF9sZW5ndGhfY29kZSAgICAgICAgICB6X19sZW5ndGhfY29kZQorIyAgZGVmaW5lIF90cl9hbGlnbiAgICAgICAgICAgICB6X190cl9hbGlnbgorIyAgZGVmaW5lIF90cl9mbHVzaF9ibG9jayAgICAgICB6X190cl9mbHVzaF9ibG9jaworIyAgZGVmaW5lIF90cl9pbml0ICAgICAgICAgICAgICB6X190cl9pbml0CisjICBkZWZpbmUgX3RyX3N0b3JlZF9ibG9jayAgICAgIHpfX3RyX3N0b3JlZF9ibG9jaworIyAgZGVmaW5lIF90cl90YWxseSAgICAgICAgICAgICB6X190cl90YWxseQorIyAgZGVmaW5lIGFkbGVyMzIgICAgICAgICAgICAgICB6X2FkbGVyMzIKKyMgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmUgICAgICAgel9hZGxlcjMyX2NvbWJpbmUKICMgIGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcwogIyAgZGVmaW5lIGNvbXByZXNzMiAgICAgICAgICAgICB6X2NvbXByZXNzMgogIyAgZGVmaW5lIGNvbXByZXNzQm91bmQgICAgICAgICB6X2NvbXByZXNzQm91bmQKLSMgIGRlZmluZSB1bmNvbXByZXNzICAgICAgICAgICAgel91bmNvbXByZXNzCi0jICBkZWZpbmUgYWRsZXIzMiAgICAgICAgICAgICAgIHpfYWRsZXIzMgogIyAgZGVmaW5lIGNyYzMyICAgICAgICAgICAgICAgICB6X2NyYzMyCisjICBkZWZpbmUgY3JjMzJfY29tYmluZSAgICAgICAgIHpfY3JjMzJfY29tYmluZQorIyAgZGVmaW5lIGRlZmxhdGUgICAgICAgICAgICAgICB6X2RlZmxhdGUKKyMgIGRlZmluZSBkZWZsYXRlQm91bmQgICAgICAgICAgel9kZWZsYXRlQm91bmQKKyMgIGRlZmluZSBkZWZsYXRlQ29weSAgICAgICAgICAgel9kZWZsYXRlQ29weQorIyAgZGVmaW5lIGRlZmxhdGVFbmQgICAgICAgICAgICB6X2RlZmxhdGVFbmQKKyMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICAgel9kZWZsYXRlSW5pdDJfCisjICBkZWZpbmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfCisjICBkZWZpbmUgZGVmbGF0ZVBhcmFtcyAgICAgICAgIHpfZGVmbGF0ZVBhcmFtcworIyAgZGVmaW5lIGRlZmxhdGVQcmltZSAgICAgICAgICB6X2RlZmxhdGVQcmltZQorIyAgZGVmaW5lIGRlZmxhdGVSZXNldCAgICAgICAgICB6X2RlZmxhdGVSZXNldAorIyAgZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVTZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgZGVmbGF0ZVNldEhlYWRlciAgICAgIHpfZGVmbGF0ZVNldEhlYWRlcgorIyAgZGVmaW5lIGRlZmxhdGVUdW5lICAgICAgICAgICB6X2RlZmxhdGVUdW5lCisjICBkZWZpbmUgZGVmbGF0ZV9jb3B5cmlnaHQgICAgIHpfZGVmbGF0ZV9jb3B5cmlnaHQKICMgIGRlZmluZSBnZXRfY3JjX3RhYmxlICAgICAgICAgel9nZXRfY3JjX3RhYmxlCisjICBkZWZpbmUgZ3pjbGVhcmVyciAgICAgICAgICAgIHpfZ3pjbGVhcmVycgorIyAgZGVmaW5lIGd6Y2xvc2UgICAgICAgICAgICAgICB6X2d6Y2xvc2UKKyMgIGRlZmluZSBnemRpcmVjdCAgICAgICAgICAgICAgel9nemRpcmVjdAorIyAgZGVmaW5lIGd6ZG9wZW4gICAgICAgICAgICAgICB6X2d6ZG9wZW4KKyMgIGRlZmluZSBnemVvZiAgICAgICAgICAgICAgICAgel9nemVvZgorIyAgZGVmaW5lIGd6ZXJyb3IgICAgICAgICAgICAgICB6X2d6ZXJyb3IKKyMgIGRlZmluZSBnemZsdXNoICAgICAgICAgICAgICAgel9nemZsdXNoCisjICBkZWZpbmUgZ3pnZXRjICAgICAgICAgICAgICAgIHpfZ3pnZXRjCisjICBkZWZpbmUgZ3pnZXRzICAgICAgICAgICAgICAgIHpfZ3pnZXRzCisjICBkZWZpbmUgZ3pvcGVuICAgICAgICAgICAgICAgIHpfZ3pvcGVuCisjICBkZWZpbmUgZ3pwcmludGYgICAgICAgICAgICAgIHpfZ3pwcmludGYKKyMgIGRlZmluZSBnenB1dGMgICAgICAgICAgICAgICAgel9nenB1dGMKKyMgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMKKyMgIGRlZmluZSBnenJlYWQgICAgICAgICAgICAgICAgel9nenJlYWQKKyMgIGRlZmluZSBnenJld2luZCAgICAgICAgICAgICAgel9nenJld2luZAorIyAgZGVmaW5lIGd6c2VlayAgICAgICAgICAgICAgICB6X2d6c2VlaworIyAgZGVmaW5lIGd6c2V0cGFyYW1zICAgICAgICAgICB6X2d6c2V0cGFyYW1zCisjICBkZWZpbmUgZ3p0ZWxsICAgICAgICAgICAgICAgIHpfZ3p0ZWxsCisjICBkZWZpbmUgZ3p1bmdldGMgICAgICAgICAgICAgIHpfZ3p1bmdldGMKKyMgIGRlZmluZSBnendyaXRlICAgICAgICAgICAgICAgel9nendyaXRlCisjICBkZWZpbmUgaW5mbGF0ZSAgICAgICAgICAgICAgIHpfaW5mbGF0ZQorIyAgZGVmaW5lIGluZmxhdGVCYWNrICAgICAgICAgICB6X2luZmxhdGVCYWNrCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tFbmQgICAgICAgIHpfaW5mbGF0ZUJhY2tFbmQKKyMgIGRlZmluZSBpbmZsYXRlQmFja0luaXRfICAgICAgel9pbmZsYXRlQmFja0luaXRfCisjICBkZWZpbmUgaW5mbGF0ZUNvcHkgICAgICAgICAgIHpfaW5mbGF0ZUNvcHkKKyMgIGRlZmluZSBpbmZsYXRlRW5kICAgICAgICAgICAgel9pbmZsYXRlRW5kCisjICBkZWZpbmUgaW5mbGF0ZUdldEhlYWRlciAgICAgIHpfaW5mbGF0ZUdldEhlYWRlcgorIyAgZGVmaW5lIGluZmxhdGVJbml0Ml8gICAgICAgICB6X2luZmxhdGVJbml0Ml8KKyMgIGRlZmluZSBpbmZsYXRlSW5pdF8gICAgICAgICAgel9pbmZsYXRlSW5pdF8KKyMgIGRlZmluZSBpbmZsYXRlUHJpbWUgICAgICAgICAgel9pbmZsYXRlUHJpbWUKKyMgIGRlZmluZSBpbmZsYXRlUmVzZXQgICAgICAgICAgel9pbmZsYXRlUmVzZXQKKyMgIGRlZmluZSBpbmZsYXRlU2V0RGljdGlvbmFyeSAgel9pbmZsYXRlU2V0RGljdGlvbmFyeQorIyAgZGVmaW5lIGluZmxhdGVTeW5jICAgICAgICAgICB6X2luZmxhdGVTeW5jCisjICBkZWZpbmUgaW5mbGF0ZVN5bmNQb2ludCAgICAgIHpfaW5mbGF0ZVN5bmNQb2ludAorIyAgZGVmaW5lIGluZmxhdGVfY29weXJpZ2h0ICAgICB6X2luZmxhdGVfY29weXJpZ2h0CisjICBkZWZpbmUgaW5mbGF0ZV9mYXN0ICAgICAgICAgIHpfaW5mbGF0ZV9mYXN0CisjICBkZWZpbmUgaW5mbGF0ZV90YWJsZSAgICAgICAgIHpfaW5mbGF0ZV90YWJsZQorIyAgZGVmaW5lIHVuY29tcHJlc3MgICAgICAgICAgICB6X3VuY29tcHJlc3MKICMgIGRlZmluZSB6RXJyb3IgICAgICAgICAgICAgICAgel96RXJyb3IKKyMgIGRlZmluZSB6X2Vycm1zZyAgICAgICAgICAgICAgel96X2Vycm1zZworIyAgZGVmaW5lIHpjYWxsb2MgICAgICAgICAgICAgICB6X3pjYWxsb2MKKyMgIGRlZmluZSB6Y2ZyZWUgICAgICAgICAgICAgICAgel96Y2ZyZWUKKyMgIGRlZmluZSB6bGliQ29tcGlsZUZsYWdzICAgICAgel96bGliQ29tcGlsZUZsYWdzCisjICBkZWZpbmUgemxpYlZlcnNpb24gICAgICAgICAgIHpfemxpYlZlcnNpb24KIAotIyAgZGVmaW5lIGFsbG9jX2Z1bmMgICAgICAgICAgICB6X2FsbG9jX2Z1bmMKLSMgIGRlZmluZSBmcmVlX2Z1bmMgICAgICAgICAgICAgel9mcmVlX2Z1bmMKLSMgIGRlZmluZSBpbl9mdW5jICAgICAgICAgICAgICAgel9pbl9mdW5jCi0jICBkZWZpbmUgb3V0X2Z1bmMgICAgICAgICAgICAgIHpfb3V0X2Z1bmMKKy8qIGFsbCB6bGliIHR5cGVkZWZzIGluIHpsaWIuaCBhbmQgemNvbmYuaCAqLwogIyAgZGVmaW5lIEJ5dGUgICAgICAgICAgICAgICAgICB6X0J5dGUKLSMgIGRlZmluZSB1SW50ICAgICAgICAgICAgICAgICAgel91SW50Ci0jICBkZWZpbmUgdUxvbmcgICAgICAgICAgICAgICAgIHpfdUxvbmcKICMgIGRlZmluZSBCeXRlZiAgICAgICAgICAgICAgICAgel9CeXRlZgorIyAgZGVmaW5lIGFsbG9jX2Z1bmMgICAgICAgICAgICB6X2FsbG9jX2Z1bmMKICMgIGRlZmluZSBjaGFyZiAgICAgICAgICAgICAgICAgel9jaGFyZgorIyAgZGVmaW5lIGZyZWVfZnVuYyAgICAgICAgICAgICB6X2ZyZWVfZnVuYworIyAgZGVmaW5lIGd6RmlsZSAgICAgICAgICAgICAgICB6X2d6RmlsZQorIyAgZGVmaW5lIGd6X2hlYWRlciAgICAgICAgICAgICB6X2d6X2hlYWRlcgorIyAgZGVmaW5lIGd6X2hlYWRlcnAgICAgICAgICAgICB6X2d6X2hlYWRlcnAKKyMgIGRlZmluZSBpbl9mdW5jICAgICAgICAgICAgICAgel9pbl9mdW5jCiAjICBkZWZpbmUgaW50ZiAgICAgICAgICAgICAgICAgIHpfaW50ZgorIyAgZGVmaW5lIG91dF9mdW5jICAgICAgICAgICAgICB6X291dF9mdW5jCisjICBkZWZpbmUgdUludCAgICAgICAgICAgICAgICAgIHpfdUludAogIyAgZGVmaW5lIHVJbnRmICAgICAgICAgICAgICAgICB6X3VJbnRmCisjICBkZWZpbmUgdUxvbmcgICAgICAgICAgICAgICAgIHpfdUxvbmcKICMgIGRlZmluZSB1TG9uZ2YgICAgICAgICAgICAgICAgel91TG9uZ2YKLSMgIGRlZmluZSB2b2lkcGYgICAgICAgICAgICAgICAgel92b2lkcGYKICMgIGRlZmluZSB2b2lkcCAgICAgICAgICAgICAgICAgel92b2lkcAorIyAgZGVmaW5lIHZvaWRwICAgICAgICAgICAgICAgICB6X3ZvaWRwCisjICBkZWZpbmUgdm9pZHBjICAgICAgICAgICAgICAgIHpfdm9pZHBjCisjICBkZWZpbmUgdm9pZHBjICAgICAgICAgICAgICAgIHpfdm9pZHBjCisjICBkZWZpbmUgdm9pZHBmICAgICAgICAgICAgICAgIHpfdm9pZHBmCisjICBkZWZpbmUgdm9pZHBmICAgICAgICAgICAgICAgIHpfdm9pZHBmCisjICBkZWZpbmUgel9zdHJlYW0gICAgICAgICAgICAgIHpfel9zdHJlYW0KKyMgIGRlZmluZSB6X3N0cmVhbXAgICAgICAgICAgICAgel96X3N0cmVhbXAKKworLyogYWxsIHpsaWIgc3RydWN0cyBpbiB6bGliLmggYW5kIHpjb25mLmggKi8KKyMgIGRlZmluZSBnel9oZWFkZXJfcyAgICAgICAgICAgel9nel9oZWFkZXJfcworIyAgZGVmaW5lIGludGVybmFsX3N0YXRlICAgICAgICB6X2ludGVybmFsX3N0YXRlCisjICBkZWZpbmUgel9zdHJlYW1fcyAgICAgICAgICAgIHpfel9zdHJlYW1fcworCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19NU0RPU19fKSAmJiAhZGVmaW5lZChNU0RPUykKQEAgLTI0Myw2ICszMDYsMTAgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfVklTSUJJTElUWV9QUkFHTUEKKyMgIGRlZmluZSBaRVhURVJOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKSBleHRlcm4KKyNlbmRpZgorCiAjaWZuZGVmIFpFWFRFUk4KICMgIGRlZmluZSBaRVhURVJOIGV4dGVybgogI2VuZGlmCkBAIC0zMDcsOSArMzc0LDYgQEAKIAogI2lmIGRlZmluZWQoX19NVlNfXykKICMgIGRlZmluZSBOT192c25wcmludGYKLSMgIGlmZGVmIEZBUgotIyAgICB1bmRlZiBGQVIKLSMgIGVuZGlmCiAjZW5kaWYKIAogLyogTVZTIGxpbmtlciBkb2VzIG5vdCBzdXBwb3J0IGV4dGVybmFsIG5hbWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKi8KZGlmZiAtLWdpdCBhL3psaWIuMyBiL3psaWIuMwppbmRleCA5MGI4MTYyLi41MDY5YjM3IDEwMDY0NAotLS0gYS96bGliLjMKKysrIGIvemxpYi4zCkBAIC0xLDQgKzEsNCBAQAotLlRIIFpMSUIgMyAiMTggSnVseSAyMDA1IgorLlRIIFpMSUIgMyAiMTYgQXVndXN0IDIwMDYiCiAuU0ggTkFNRQogemxpYiBcLSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkKIC5TSCBTWU5PUFNJUwpAQCAtMTMzLDcgKzEzMyw3IEBACiBTZW5kIHF1ZXN0aW9ucyBhbmQvb3IgY29tbWVudHMgdG8gemxpYkBnemlwLm9yZywKIG9yIChmb3IgdGhlIFdpbmRvd3MgRExMIHZlcnNpb24pIHRvIEdpbGxlcyBWb2xsYW50IChpbmZvQHdpbmltYWdlLmNvbSkuCiAuU0ggQVVUSE9SUwotVmVyc2lvbiAxLjIuMworVmVyc2lvbiAxLjIuMy4xCiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSBKZWFuLWxvdXAgR2FpbGx5IChqbG91cEBnemlwLm9yZykKIGFuZCBNYXJrIEFkbGVyIChtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1KS4KIC5MUApkaWZmIC0tZ2l0IGEvemxpYi5oIGIvemxpYi5oCmluZGV4IDAyMjgxNzkuLjIwZGJjZDAgMTAwNjQ0Ci0tLSBhL3psaWIuaAorKysgYi96bGliLmgKQEAgLTEsNyArMSw3IEBACiAvKiB6bGliLmggLS0gaW50ZXJmYWNlIG9mIHRoZSAnemxpYicgZ2VuZXJhbCBwdXJwb3NlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAgdmVyc2lvbiAxLjIuMywgSnVseSAxOHRoLCAyMDA1CisgIHZlcnNpb24gMS4yLjMuMSwgQXVndXN0IDE2dGgsIDIwMDYKIAotICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCisgIENvcHlyaWdodCAoQykgMTk5NS0yMDA2IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKIAogICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogICB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCkBAIC0zNyw4ICszNywxMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2RlZmluZSBaTElCX1ZFUlNJT04gIjEuMi4zIgotI2RlZmluZSBaTElCX1ZFUk5VTSAweDEyMzAKKyNkZWZpbmUgWkxJQl9WRVJTSU9OICIxLjIuMy4xIgorI2RlZmluZSBaTElCX1ZFUk5VTSAweDEyMzEKKyNkZWZpbmUgWkxJQl9WRVJfTUFKT1IgMQorI2RlZmluZSBaTElCX1ZFUl9NSU5PUiAyCisjZGVmaW5lIFpMSUJfVkVSX1JFVklTSU9OIDMKIAogLyoKICAgICAgVGhlICd6bGliJyBjb21wcmVzc2lvbiBsaWJyYXJ5IHByb3ZpZGVzIGluLW1lbW9yeSBjb21wcmVzc2lvbiBhbmQKQEAgLTM1MywxMCArMzU2LDE0IEBACiAKICAgICAgaW5mbGF0ZUluaXQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoCiAgICBtZW1vcnksIFpfVkVSU0lPTl9FUlJPUiBpZiB0aGUgemxpYiBsaWJyYXJ5IHZlcnNpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlCi0gICB2ZXJzaW9uIGFzc3VtZWQgYnkgdGhlIGNhbGxlci4gIG1zZyBpcyBzZXQgdG8gbnVsbCBpZiB0aGVyZSBpcyBubyBlcnJvcgotICAgbWVzc2FnZS4gaW5mbGF0ZUluaXQgZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbiBhcGFydCBmcm9tIHJlYWRpbmcKLSAgIHRoZSB6bGliIGhlYWRlciBpZiBwcmVzZW50OiB0aGlzIHdpbGwgYmUgZG9uZSBieSBpbmZsYXRlKCkuICAoU28gbmV4dF9pbiBhbmQKLSAgIGF2YWlsX2luIG1heSBiZSBtb2RpZmllZCwgYnV0IG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVuY2hhbmdlZC4pCisgICB2ZXJzaW9uIGFzc3VtZWQgYnkgdGhlIGNhbGxlciwgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHBhcmFtZXRlcnMgYXJlCisgICBpbnZhbGlkLCBzdWNoIGFzIGEgbnVsbCBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUuICBtc2cgaXMgc2V0IHRvIG51bGwgaWYKKyAgIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuIGluZmxhdGVJbml0IGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24KKyAgIGFwYXJ0IGZyb20gcG9zc2libHkgcmVhZGluZyB0aGUgemxpYiBoZWFkZXIgaWYgcHJlc2VudDogYWN0dWFsIGRlY29tcHJlc3Npb24KKyAgIHdpbGwgYmUgZG9uZSBieSBpbmZsYXRlKCkuICAoU28gbmV4dF9pbiBhbmQgYXZhaWxfaW4gbWF5IGJlIG1vZGlmaWVkLCBidXQKKyAgIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVudXNlZCBhbmQgdW5jaGFuZ2VkLikgIFRoZSBjdXJyZW50CisgICBpbXBsZW1lbnRhdGlvbiBvZiBpbmZsYXRlSW5pdCgpIGRvZXMgbm90IHByb2Nlc3MgYW55IGhlYWRlciBpbmZvcm1hdGlvbiAtLQorICAgdGhhdCBpcyBkZWZlcnJlZCB1bnRpbCBpbmZsYXRlKCkgaXMgY2FsbGVkLgogKi8KIAogCkBAIC02NDUsOSArNjUyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1TG9uZyBzb3VyY2VMZW4pKTsKIC8qCiAgICAgIGRlZmxhdGVCb3VuZCgpIHJldHVybnMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGNvbXByZXNzZWQgc2l6ZSBhZnRlcgotICAgZGVmbGF0aW9uIG9mIHNvdXJjZUxlbiBieXRlcy4gIEl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGRlZmxhdGVJbml0KCkKLSAgIG9yIGRlZmxhdGVJbml0MigpLiAgVGhpcyB3b3VsZCBiZSB1c2VkIHRvIGFsbG9jYXRlIGFuIG91dHB1dCBidWZmZXIKLSAgIGZvciBkZWZsYXRpb24gaW4gYSBzaW5nbGUgcGFzcywgYW5kIHNvIHdvdWxkIGJlIGNhbGxlZCBiZWZvcmUgZGVmbGF0ZSgpLgorICAgZGVmbGF0aW9uIG9mIHNvdXJjZUxlbiBieXRlcy4gIEl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGRlZmxhdGVJbml0KCkgb3IKKyAgIGRlZmxhdGVJbml0MigpLCBhbmQgYWZ0ZXIgZGVmbGF0ZVNldEhlYWRlcigpLCBpZiB1c2VkLiAgVGhpcyB3b3VsZCBiZSB1c2VkCisgICB0byBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIGZvciBkZWZsYXRpb24gaW4gYSBzaW5nbGUgcGFzcywgYW5kIHNvIHdvdWxkIGJlCisgICBjYWxsZWQgYmVmb3JlIGRlZmxhdGUoKS4KICovCiAKIFpFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVByaW1lIE9GKCh6X3N0cmVhbXAgc3RybSwKQEAgLTcyNiwxMSArNzM0LDE1IEBACiAgICBhIGNyYzMyIGluc3RlYWQgb2YgYW4gYWRsZXIzMi4KIAogICAgICBpbmZsYXRlSW5pdDIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoCi0gICBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIGEgcGFyYW1ldGVyIGlzIGludmFsaWQgKHN1Y2ggYXMgYSBudWxsIHN0cm0pLiBtc2cKLSAgIGlzIHNldCB0byBudWxsIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBpbmZsYXRlSW5pdDIgZG9lcyBub3QgcGVyZm9ybQotICAgYW55IGRlY29tcHJlc3Npb24gYXBhcnQgZnJvbSByZWFkaW5nIHRoZSB6bGliIGhlYWRlciBpZiBwcmVzZW50OiB0aGlzIHdpbGwKLSAgIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAoU28gbmV4dF9pbiBhbmQgYXZhaWxfaW4gbWF5IGJlIG1vZGlmaWVkLCBidXQgbmV4dF9vdXQKLSAgIGFuZCBhdmFpbF9vdXQgYXJlIHVuY2hhbmdlZC4pCisgICBtZW1vcnksIFpfVkVSU0lPTl9FUlJPUiBpZiB0aGUgemxpYiBsaWJyYXJ5IHZlcnNpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlCisgICB2ZXJzaW9uIGFzc3VtZWQgYnkgdGhlIGNhbGxlciwgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHBhcmFtZXRlcnMgYXJlCisgICBpbnZhbGlkLCBzdWNoIGFzIGEgbnVsbCBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUuICBtc2cgaXMgc2V0IHRvIG51bGwgaWYKKyAgIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuIGluZmxhdGVJbml0MiBkb2VzIG5vdCBwZXJmb3JtIGFueSBkZWNvbXByZXNzaW9uCisgICBhcGFydCBmcm9tIHBvc3NpYmx5IHJlYWRpbmcgdGhlIHpsaWIgaGVhZGVyIGlmIHByZXNlbnQ6IGFjdHVhbCBkZWNvbXByZXNzaW9uCisgICB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAgKFNvIG5leHRfaW4gYW5kIGF2YWlsX2luIG1heSBiZSBtb2RpZmllZCwgYnV0CisgICBuZXh0X291dCBhbmQgYXZhaWxfb3V0IGFyZSB1bnVzZWQgYW5kIHVuY2hhbmdlZC4pICBUaGUgY3VycmVudAorICAgaW1wbGVtZW50YXRpb24gb2YgaW5mbGF0ZUluaXQyKCkgZG9lcyBub3QgcHJvY2VzcyBhbnkgaGVhZGVyIGluZm9ybWF0aW9uIC0tCisgICB0aGF0IGlzIGRlZmVycmVkIHVudGlsIGluZmxhdGUoKSBpcyBjYWxsZWQuCiAqLwogCiBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVTZXREaWN0aW9uYXJ5IE9GKCh6X3N0cmVhbXAgc3RybSwKQEAgLTEyMzAsNyArMTI0Miw4IEBACiAvKgogICAgICBGbHVzaGVzIGFsbCBwZW5kaW5nIG91dHB1dCBpZiBuZWNlc3NhcnksIGNsb3NlcyB0aGUgY29tcHJlc3NlZCBmaWxlCiAgICBhbmQgZGVhbGxvY2F0ZXMgYWxsIHRoZSAoZGUpY29tcHJlc3Npb24gc3RhdGUuIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHpsaWIKLSAgIGVycm9yIG51bWJlciAoc2VlIGZ1bmN0aW9uIGd6ZXJyb3IgYmVsb3cpLgorICAgZXJyb3IgbnVtYmVyLiAgTm90ZSB0aGF0IG9uY2UgZmlsZSBpcyBjbG9zZSwgeW91IGNhbm5vdCBjYWxsIGd6ZXJyb3Igd2l0aAorICAgZmlsZSwgc2luY2UgaXRzIHN0cnVjdHVyZXMgaGF2ZSBiZWVuIGRlYWxsb2NhdGVkLgogKi8KIAogWkVYVEVSTiBjb25zdCBjaGFyICogWkVYUE9SVCBnemVycm9yIE9GKChnekZpbGUgZmlsZSwgaW50ICplcnJudW0pKTsKQEAgLTEyNDAsNiArMTI1Myw5IEBACiAgICBlcnJvciBvY2N1cnJlZCBpbiB0aGUgZmlsZSBzeXN0ZW0gYW5kIG5vdCBpbiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSwKICAgIGVycm51bSBpcyBzZXQgdG8gWl9FUlJOTyBhbmQgdGhlIGFwcGxpY2F0aW9uIG1heSBjb25zdWx0IGVycm5vCiAgICB0byBnZXQgdGhlIGV4YWN0IGVycm9yIGNvZGUuCisKKyAgIFRoZSBhcHBsaWNhdGlvbiBtdXN0IG5vdCBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZyBhbmQgZnV0dXJlIGNhbGxzIHRvCisgICB0aGlzIGZ1bmN0aW9uIG1heSBpbnZhbGlkYXRlIHRoZSByZXR1cm5lZCBzdHJpbmcuCiAqLwogCiBaRVhURVJOIHZvaWQgWkVYUE9SVCBnemNsZWFyZXJyIE9GKChnekZpbGUgZmlsZSkpOwpAQCAtMTMzOSw4ICsxMzU1LDcgQEAKICAgICAgICAgaW5mbGF0ZUluaXQyXygoc3RybSksICh3aW5kb3dCaXRzKSwgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0pKQogI2RlZmluZSBpbmZsYXRlQmFja0luaXQoc3RybSwgd2luZG93Qml0cywgd2luZG93KSBcCiAgICAgICAgIGluZmxhdGVCYWNrSW5pdF8oKHN0cm0pLCAod2luZG93Qml0cyksICh3aW5kb3cpLCBcCi0gICAgICAgIFpMSUJfVkVSU0lPTiwgc2l6ZW9mKHpfc3RyZWFtKSkKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaTElCX1ZFUlNJT04sIHNpemVvZih6X3N0cmVhbSkpCiAKICNpZiAhZGVmaW5lZChaVVRJTF9IKSAmJiAhZGVmaW5lZChOT19EVU1NWV9ERUNMKQogICAgIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSB7aW50IGR1bW15O307IC8qIGhhY2sgZm9yIGJ1Z2d5IGNvbXBpbGVycyAqLwpkaWZmIC0tZ2l0IGEvemxpYi5tYXAgYi96bGliLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTY4M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvemxpYi5tYXAKQEAgLTAsMCArMSw0NCBAQAorWkxJQl8xLjIuMCB7CisgIGdsb2JhbDoKKyAgICBjb21wcmVzc0JvdW5kOworICAgIGRlZmxhdGVCb3VuZDsKKyAgICBpbmZsYXRlQmFjazsKKyAgICBpbmZsYXRlQmFja0VuZDsKKyAgICBpbmZsYXRlQmFja0luaXRfOworICAgIGluZmxhdGVDb3B5OworICBsb2NhbDoKKyAgICBkZWZsYXRlX2NvcHlyaWdodDsKKyAgICBpbmZsYXRlX2NvcHlyaWdodDsKKyAgICBpbmZsYXRlX2Zhc3Q7CisgICAgaW5mbGF0ZV90YWJsZTsKKyAgICB6Y2FsbG9jOworICAgIHpjZnJlZTsKKyAgICB6X2Vycm1zZzsKKyAgICBfKjsKK307CisKK1pMSUJfMS4yLjAuMiB7CisgICAgZ3pjbGVhcmVycjsKKyAgICBnenVuZ2V0YzsKKyAgICB6bGliQ29tcGlsZUZsYWdzOworfSBaTElCXzEuMi4wOworCitaTElCXzEuMi4wLjggeworICAgIGRlZmxhdGVQcmltZTsKK30gWkxJQl8xLjIuMC4yOworCitaTElCXzEuMi4yIHsKKyAgICBhZGxlcjMyX2NvbWJpbmU7CisgICAgY3JjMzJfY29tYmluZTsKKyAgICBkZWZsYXRlU2V0SGVhZGVyOworICAgIGluZmxhdGVHZXRIZWFkZXI7Cit9IFpMSUJfMS4yLjAuODsKKworWkxJQl8xLjIuMi4zIHsKKyAgICBkZWZsYXRlVHVuZTsKKyAgICBnemRpcmVjdDsKK30gWkxJQl8xLjIuMjsKKworWkxJQl8xLjIuMi40IHsKKyAgICBpbmZsYXRlUHJpbWU7Cit9IFpMSUJfMS4yLjIuMzsKZGlmZiAtLWdpdCBhL3psaWIucGMuaW4gYi96bGliLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzU1YWEKLS0tIC9kZXYvbnVsbAorKysgYi96bGliLnBjLmluCkBAIC0wLDAgKzEsMTIgQEAKK3ByZWZpeD1AcHJlZml4QAorZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorbGliZGlyPUBsaWJkaXJACitpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorCitOYW1lOiB6bGliCitEZXNjcmlwdGlvbjogemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5CitWZXJzaW9uOiBAVkVSU0lPTkAKKworUmVxdWlyZXM6IAorTGliczogLUwke2xpYmRpcn0gLWx6CitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQpkaWZmIC0tZ2l0IGEvenV0aWwuaCBiL3p1dGlsLmgKaW5kZXggYjdkNWVmZi4uY2RkYzRhNyAxMDA2NDQKLS0tIGEvenV0aWwuaAorKysgYi96dXRpbC5oCkBAIC0xLDUgKzEsNSBAQAogLyogenV0aWwuaCAtLSBpbnRlcm5hbCBpbnRlcmZhY2UgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNiBKZWFuLWxvdXAgR2FpbGx5LgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTIzLDcgKzIzLDcgQEAKICMgIGluY2x1ZGUgPHN0cmluZy5oPgogIyAgaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKLSNpZmRlZiBOT19FUlJOT19ICisjaWYgZGVmaW5lZChOT19FUlJOT19IKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCiAjICAgaWZkZWYgX1dJTjMyX1dDRQogICAgICAgLyogVGhlIE1pY3Jvc29mdCBDIFJ1bi1UaW1lIExpYnJhcnkgZm9yIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlCiAgICAgICAgKiBlcnJuby4gIFdlIGRlZmluZSBpdCBhcyBhIGdsb2JhbCB2YXJpYWJsZSB0byBzaW1wbGlmeSBwb3J0aW5nLgpAQCAtMzQsOSArMzQsNyBAQAogIyAgIGVuZGlmCiAgICAgZXh0ZXJuIGludCBlcnJubzsKICNlbHNlCi0jICBpZm5kZWYgX1dJTjMyX1dDRQotIyAgICBpbmNsdWRlIDxlcnJuby5oPgotIyAgZW5kaWYKKyMgICBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmCiAKICNpZm5kZWYgbG9jYWwKQEAgLTE1MSw3ICsxNDksNyBAQAogIyAgZGVmaW5lIGZkb3BlbihmZCxtb2RlKSBOVUxMIC8qIE5vIGZkb3BlbigpICovCiAjZW5kaWYKIAotI2lmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPiA2MDApKQorI2lmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPiA2MDApKSAmJiAhZGVmaW5lZCBfX0lOVEVSSVgKICMgIGlmIGRlZmluZWQoX1dJTjMyX1dDRSkKICMgICAgZGVmaW5lIGZkb3BlbihmZCxtb2RlKSBOVUxMIC8qIE5vIGZkb3BlbigpICovCiAjICAgIGlmbmRlZiBfUFRSRElGRl9UX0RFRklORUQK