From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek_=3Czbyszek=40in=2Ewaw=2Epl=3E?= To: git-commits@fedoraproject.org Subject: [rpms/fedora-packager] epel10: Merge separate "upstream" into this repository Date: Thu, 25 Jun 2026 13:19:36 GMT Message-ID: <178239357673.1.11118422072317855033.rpms-fedora-packager-411d7a36b2b9@fedoraproject.org> List-ID: X-Git-Repo: rpms/fedora-packager X-Git-Branch: epel10 X-Git-Rev: 411d7a36b2b9567628feb0a563a0c0295657f3b7 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZmVkb3JhLXBhY2thZ2VyCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWwxMAog ICAgICAgICAgICBDb21taXQgOiA0MTFkN2EzNmIyYjk1Njc2MjhmZWIwYTU2M2EwYzAyOTU2NTdm M2I3CiAgICAgICAgICAgIEF1dGhvciA6IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgPHpi eXN6ZWtAaW4ud2F3LnBsPgogICAgICAgICAgICBEYXRlICAgOiAyMDI0LTA4LTA5VDExOjI1OjQ0 LTA0OjAwCiAgICAgICAgICAgIFN0YXRzICA6ICsxMTEyLy0zMCBpbiAxNSBmaWxlKHMpCiAgICAg ICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZmVkb3Jh LXBhY2thZ2VyL2MvNDExZDdhMzZiMmI5NTY3NjI4ZmViMGE1NjNhMGMwMjk1NjU3ZjNiNz9icmFu Y2g9ZXBlbDEwCgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIE1lcmdlIHNlcGFyYXRlICJ1 cHN0cmVhbSIgaW50byB0aGlzIHJlcG9zaXRvcnkKClRoZXJlIGlzIG5vIHBvaW50IGluIGhhdmlu ZyBhIHNlcGFyYXRlIHVwc3RyZWFtLCB0aGVyZSBhcmUgbm8gb3RoZXIKdXNlcnMgb2YgdGhhdCBw cm9qZWN0IGV4Y2VwdCBmb3IgRmVkb3JhLiBNeSBtb3ZpbmcgdGhlIGZldyBmaWxlcyB0aGF0Cndl IG5lZWQgaGVyZSwgd2UgY2FuIHNpbXBsaWZ5IHRoZSB3b3JrZmxvdyBxdWl0ZSBhIGJpdC4KCkRp ZmZlcmVuY2UgaW4gYnVpbGQgb3V0cHV0czoKJCBycG1kaWZmIC1pVCBub2FyY2gvZmVkb3JhLXBh Y2thZ2VyLTAuNi4wLjctezExLDEyfS5mYzQxLm5vYXJjaC5ycG0KcmVtb3ZlZCAgICAgUkVRVUlS RVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlcikgPSAwLjYuMC43LTExLmZjNDEKYWRkZWQgICAgICAg UkVRVUlSRVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlcikgPSAwLjYuMC43LTEyLmZjNDEKcmVtb3Zl ZCAgICAgUFJPVklERVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlcikgPSAwLjYuMC43LTExLmZjNDEK YWRkZWQgICAgICAgUFJPVklERVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlcikgPSAwLjYuMC43LTEy LmZjNDEKcmVtb3ZlZCAgICAgUFJPVklERVMgZmVkb3JhLXBhY2thZ2VyID0gMC42LjAuNy0xMS5m YzQxCmFkZGVkICAgICAgIFBST1ZJREVTIGZlZG9yYS1wYWNrYWdlciA9IDAuNi4wLjctMTIuZmM0 MQpyZW1vdmVkICAgICBSRVFVSVJFUyBycG1saWIoUGFydGlhbEhhcmRsaW5rU2V0cykgPD0gNC4w LjQtMQpyZW1vdmVkICAgICAvdXNyL3NoYXJlL2RvYy9mZWRvcmEtcGFja2FnZXIKcmVtb3ZlZCAg ICAgL3Vzci9zaGFyZS9kb2MvZmVkb3JhLXBhY2thZ2VyL0FVVEhPUlMKcmVtb3ZlZCAgICAgL3Vz ci9zaGFyZS9kb2MvZmVkb3JhLXBhY2thZ2VyL0NoYW5nZUxvZwpyZW1vdmVkICAgICAvdXNyL3No YXJlL2RvYy9mZWRvcmEtcGFja2FnZXIvVE9ETwoKJCBycG1kaWZmIC1pVCBub2FyY2gvZmVkb3Jh LXBhY2thZ2VyLWtlcmJlcm9zLTAuNi4wLjctezExLDEyfS5mYzQxLm5vYXJjaC5ycG0KcmVtb3Zl ZCAgICAgUkVRVUlSRVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlci1rZXJiZXJvcykgPSAwLjYuMC43 LTExLmZjNDEKYWRkZWQgICAgICAgUkVRVUlSRVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlci1rZXJi ZXJvcykgPSAwLjYuMC43LTEyLmZjNDEKcmVtb3ZlZCAgICAgUFJPVklERVMgY29uZmlnKGZlZG9y YS1wYWNrYWdlci1rZXJiZXJvcykgPSAwLjYuMC43LTExLmZjNDEKYWRkZWQgICAgICAgUFJPVklE RVMgY29uZmlnKGZlZG9yYS1wYWNrYWdlci1rZXJiZXJvcykgPSAwLjYuMC43LTEyLmZjNDEKcmVt b3ZlZCAgICAgUFJPVklERVMgZmVkb3JhLXBhY2thZ2VyLWtlcmJlcm9zID0gMC42LjAuNy0xMS5m YzQxCmFkZGVkICAgICAgIFBST1ZJREVTIGZlZG9yYS1wYWNrYWdlci1rZXJiZXJvcyA9IDAuNi4w LjctMTIuZmM0MQpyZW1vdmVkICAgICAvdXNyL3NoYXJlL2xpY2Vuc2VzL2ZlZG9yYS1wYWNrYWdl ci1rZXJiZXJvcwpyZW1vdmVkICAgICAvdXNyL3NoYXJlL2xpY2Vuc2VzL2ZlZG9yYS1wYWNrYWdl ci1rZXJiZXJvcy9DT1BZSU5HCmFkZGVkICAgICAgIC91c3Ivc2hhcmUvbGljZW5zZXMvZmVkb3Jh LXBhY2thZ2VyCmFkZGVkICAgICAgIC91c3Ivc2hhcmUvbGljZW5zZXMvZmVkb3JhLXBhY2thZ2Vy L0NPUFlJTkcKClRoZSB0aHJlZSBkb2MgZmlsZXMgYXJlIGRyb3BwZWQgYmVjYXVzZSB0aGV5IGFy ZSBjb21wbGV0ZWx5IG91dGRhdGVkCmFuZCBpbmNvbXBsZXRlIGFuZCBpdCBkb2Vzbid0IG1ha2Ug c2Vuc2UgdG8gaW5zdGFsbCB0aGVtLgpUaGUgQ09QWUlORyBmaWxlcyBpcyBzaGFyZWQgYmVjYXVz ZSB0aGF0J3Mgc2ltcGxlci4KCi0tLQpkaWZmIC0tZ2l0IGEvQ09QWUlORyBiL0NPUFlJTkcKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhOWVkMAotLS0gL2Rldi9udWxsCisr KyBiL0NPUFlJTkcKQEAgLTAsMCArMSw2NzQgQEAKKyAgICAgICAgICAgICAgICAgICAgR05VIEdF TkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLCAy OSBKdW5lIDIwMDcKKworIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4gPGh0dHA6Ly9mc2Yub3JnLz4KKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29w eSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1l bnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFByZWFtYmxlCisKKyAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlz IGEgZnJlZSwgY29weWxlZnQgbGljZW5zZSBmb3IKK3NvZnR3YXJlIGFuZCBvdGhlciBraW5kcyBv ZiB3b3Jrcy4KKworICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYW5kIG90aGVyIHBy YWN0aWNhbCB3b3JrcyBhcmUgZGVzaWduZWQKK3RvIHRha2UgYXdheSB5b3VyIGZyZWVkb20gdG8g c2hhcmUgYW5kIGNoYW5nZSB0aGUgd29ya3MuICBCeSBjb250cmFzdCwKK3RoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRv CitzaGFyZSBhbmQgY2hhbmdlIGFsbCB2ZXJzaW9ucyBvZiBhIHByb2dyYW0tLXRvIG1ha2Ugc3Vy ZSBpdCByZW1haW5zIGZyZWUKK3NvZnR3YXJlIGZvciBhbGwgaXRzIHVzZXJzLiAgV2UsIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHVzZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCithbnkgb3Ro ZXIgd29yayByZWxlYXNlZCB0aGlzIHdheSBieSBpdHMgYXV0aG9ycy4gIFlvdSBjYW4gYXBwbHkg aXQgdG8KK3lvdXIgcHJvZ3JhbXMsIHRvby4KKworICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29m dHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CitwcmljZS4gIE91ciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91Cito YXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFu ZCBjaGFyZ2UgZm9yCit0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2Ug Y29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQord2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0 aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdCBpbiBuZXcKK2ZyZWUgcHJvZ3JhbXMsIGFu ZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCisgIFRvIHByb3RlY3Qg eW91ciByaWdodHMsIHdlIG5lZWQgdG8gcHJldmVudCBvdGhlcnMgZnJvbSBkZW55aW5nIHlvdQor dGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVy ZWZvcmUsIHlvdSBoYXZlCitjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgaWYgeW91IGRpc3RyaWJ1 dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYKK3lvdSBtb2RpZnkgaXQ6IHJlc3BvbnNp YmlsaXRpZXMgdG8gcmVzcGVjdCB0aGUgZnJlZWRvbSBvZiBvdGhlcnMuCisKKyAgRm9yIGV4YW1w bGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgor Z3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgcGFzcyBvbiB0byB0aGUgcmVjaXBpZW50cyB0 aGUgc2FtZQorZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUg dGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKK29yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2RlLiAgQW5k IHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5Citrbm93IHRoZWlyIHJpZ2h0 cy4KKworICBEZXZlbG9wZXJzIHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3RlY3QgeW91ciByaWdo dHMgd2l0aCB0d28gc3RlcHM6CisoMSkgYXNzZXJ0IGNvcHlyaWdodCBvbiB0aGUgc29mdHdhcmUs IGFuZCAoMikgb2ZmZXIgeW91IHRoaXMgTGljZW5zZQorZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNz aW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KKworICBGb3IgdGhlIGRl dmVsb3BlcnMnIGFuZCBhdXRob3JzJyBwcm90ZWN0aW9uLCB0aGUgR1BMIGNsZWFybHkgZXhwbGFp bnMKK3RoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZv ciBib3RoIHVzZXJzJyBhbmQKK2F1dGhvcnMnIHNha2UsIHRoZSBHUEwgcmVxdWlyZXMgdGhhdCBt b2RpZmllZCB2ZXJzaW9ucyBiZSBtYXJrZWQgYXMKK2NoYW5nZWQsIHNvIHRoYXQgdGhlaXIgcHJv YmxlbXMgd2lsbCBub3QgYmUgYXR0cmlidXRlZCBlcnJvbmVvdXNseSB0bworYXV0aG9ycyBvZiBw cmV2aW91cyB2ZXJzaW9ucy4KKworICBTb21lIGRldmljZXMgYXJlIGRlc2lnbmVkIHRvIGRlbnkg dXNlcnMgYWNjZXNzIHRvIGluc3RhbGwgb3IgcnVuCittb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUg c29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKK2NhbiBkbyBz by4gIFRoaXMgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgYWltIG9mCitw cm90ZWN0aW5nIHVzZXJzJyBmcmVlZG9tIHRvIGNoYW5nZSB0aGUgc29mdHdhcmUuICBUaGUgc3lz dGVtYXRpYworcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9k dWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KK3VzZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoZXJlIGl0 IGlzIG1vc3QgdW5hY2NlcHRhYmxlLiAgVGhlcmVmb3JlLCB3ZQoraGF2ZSBkZXNpZ25lZCB0aGlz IHZlcnNpb24gb2YgdGhlIEdQTCB0byBwcm9oaWJpdCB0aGUgcHJhY3RpY2UgZm9yIHRob3NlCitw cm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBk b21haW5zLCB3ZQorc3RhbmQgcmVhZHkgdG8gZXh0ZW5kIHRoaXMgcHJvdmlzaW9uIHRvIHRob3Nl IGRvbWFpbnMgaW4gZnV0dXJlIHZlcnNpb25zCitvZiB0aGUgR1BMLCBhcyBuZWVkZWQgdG8gcHJv dGVjdCB0aGUgZnJlZWRvbSBvZiB1c2Vycy4KKworICBGaW5hbGx5LCBldmVyeSBwcm9ncmFtIGlz IHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZSBwYXRlbnRzLgorU3RhdGVzIHNob3Vs ZCBub3QgYWxsb3cgcGF0ZW50cyB0byByZXN0cmljdCBkZXZlbG9wbWVudCBhbmQgdXNlIG9mCitz b2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBk bywgd2Ugd2lzaCB0bworYXZvaWQgdGhlIHNwZWNpYWwgZGFuZ2VyIHRoYXQgcGF0ZW50cyBhcHBs aWVkIHRvIGEgZnJlZSBwcm9ncmFtIGNvdWxkCittYWtlIGl0IGVmZmVjdGl2ZWx5IHByb3ByaWV0 YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB0aGUgR1BMIGFzc3VyZXMgdGhhdAorcGF0ZW50cyBjYW5u b3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCisKKyAgVGhlIHByZWNp c2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21v ZGlmaWNhdGlvbiBmb2xsb3cuCisKKyAgICAgICAgICAgICAgICAgICAgICAgVEVSTVMgQU5EIENP TkRJVElPTlMKKworICAwLiBEZWZpbml0aW9ucy4KKworICAiVGhpcyBMaWNlbnNlIiByZWZlcnMg dG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKworICAiQ29w eXJpZ2h0IiBhbHNvIG1lYW5zIGNvcHlyaWdodC1saWtlIGxhd3MgdGhhdCBhcHBseSB0byBvdGhl ciBraW5kcyBvZgord29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KKworICAiVGhl IFByb2dyYW0iIHJlZmVycyB0byBhbnkgY29weXJpZ2h0YWJsZSB3b3JrIGxpY2Vuc2VkIHVuZGVy IHRoaXMKK0xpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJM aWNlbnNlZXMiIGFuZAorInJlY2lwaWVudHMiIG1heSBiZSBpbmRpdmlkdWFscyBvciBvcmdhbml6 YXRpb25zLgorCisgIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRh cHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKK2luIGEgZmFzaGlvbiByZXF1aXJpbmcgY29weXJp Z2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBhbgorZXhhY3QgY29weS4g IFRoZSByZXN1bHRpbmcgd29yayBpcyBjYWxsZWQgYSAibW9kaWZpZWQgdmVyc2lvbiIgb2YgdGhl CitlYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KKwor ICBBICJjb3ZlcmVkIHdvcmsiIG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmllZCBQcm9ncmFtIG9y IGEgd29yayBiYXNlZAorb24gdGhlIFByb2dyYW0uCisKKyAgVG8gInByb3BhZ2F0ZSIgYSB3b3Jr IG1lYW5zIHRvIGRvIGFueXRoaW5nIHdpdGggaXQgdGhhdCwgd2l0aG91dAorcGVybWlzc2lvbiwg d291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgoraW5mcmlu Z2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0IGV4ZWN1dGluZyBp dCBvbiBhCitjb21wdXRlciBvciBtb2RpZnlpbmcgYSBwcml2YXRlIGNvcHkuICBQcm9wYWdhdGlv biBpbmNsdWRlcyBjb3B5aW5nLAorZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZp Y2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKK3B1YmxpYywgYW5kIGluIHNvbWUgY291 bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC4KKworICBUbyAiY29udmV5IiBhIHdvcmsg bWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCitwYXJ0aWVz IHRvIG1ha2Ugb3IgcmVjZWl2ZSBjb3BpZXMuICBNZXJlIGludGVyYWN0aW9uIHdpdGggYSB1c2Vy IHRocm91Z2gKK2EgY29tcHV0ZXIgbmV0d29yaywgd2l0aCBubyB0cmFuc2ZlciBvZiBhIGNvcHks IGlzIG5vdCBjb252ZXlpbmcuCisKKyAgQW4gaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2UgZGlz cGxheXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMiCit0byB0aGUgZXh0ZW50IHRoYXQgaXQg aW5jbHVkZXMgYSBjb252ZW5pZW50IGFuZCBwcm9taW5lbnRseSB2aXNpYmxlCitmZWF0dXJlIHRo YXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikK K3RlbGxzIHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSB3b3JrIChl eGNlcHQgdG8gdGhlCitleHRlbnQgdGhhdCB3YXJyYW50aWVzIGFyZSBwcm92aWRlZCksIHRoYXQg bGljZW5zZWVzIG1heSBjb252ZXkgdGhlCit3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhv dyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgordGhlIGludGVyZmFjZSBwcmVz ZW50cyBhIGxpc3Qgb2YgdXNlciBjb21tYW5kcyBvciBvcHRpb25zLCBzdWNoIGFzIGEKK21lbnUs IGEgcHJvbWluZW50IGl0ZW0gaW4gdGhlIGxpc3QgbWVldHMgdGhpcyBjcml0ZXJpb24uCisKKyAg MS4gU291cmNlIENvZGUuCisKKyAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0 aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKK2ZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0 byBpdC4gICJPYmplY3QgY29kZSIgbWVhbnMgYW55IG5vbi1zb3VyY2UKK2Zvcm0gb2YgYSB3b3Jr LgorCisgIEEgIlN0YW5kYXJkIEludGVyZmFjZSIgbWVhbnMgYW4gaW50ZXJmYWNlIHRoYXQgZWl0 aGVyIGlzIGFuIG9mZmljaWFsCitzdGFuZGFyZCBkZWZpbmVkIGJ5IGEgcmVjb2duaXplZCBzdGFu ZGFyZHMgYm9keSwgb3IsIGluIHRoZSBjYXNlIG9mCitpbnRlcmZhY2VzIHNwZWNpZmllZCBmb3Ig YSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAoraXMgd2lkZWx5IHVz ZWQgYW1vbmcgZGV2ZWxvcGVycyB3b3JraW5nIGluIHRoYXQgbGFuZ3VhZ2UuCisKKyAgVGhlICJT eXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywg b3RoZXIKK3RoYW4gdGhlIHdvcmsgYXMgYSB3aG9sZSwgdGhhdCAoYSkgaXMgaW5jbHVkZWQgaW4g dGhlIG5vcm1hbCBmb3JtIG9mCitwYWNrYWdpbmcgYSBNYWpvciBDb21wb25lbnQsIGJ1dCB3aGlj aCBpcyBub3QgcGFydCBvZiB0aGF0IE1ham9yCitDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9u bHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKK01ham9yIENvbXBvbmVudCwg b3IgdG8gaW1wbGVtZW50IGEgU3RhbmRhcmQgSW50ZXJmYWNlIGZvciB3aGljaCBhbgoraW1wbGVt ZW50YXRpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4gc291cmNlIGNvZGUgZm9ybS4g IEEKKyJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNz ZW50aWFsIGNvbXBvbmVudAorKGtlcm5lbCwgd2luZG93IHN5c3RlbSwgYW5kIHNvIG9uKSBvZiB0 aGUgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbQorKGlmIGFueSkgb24gd2hpY2ggdGhlIGV4ZWN1 dGFibGUgd29yayBydW5zLCBvciBhIGNvbXBpbGVyIHVzZWQgdG8KK3Byb2R1Y2UgdGhlIHdvcmss IG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgorCisgIFRoZSAi Q29ycmVzcG9uZGluZyBTb3VyY2UiIGZvciBhIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSBtZWFu cyBhbGwKK3RoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAo Zm9yIGFuIGV4ZWN1dGFibGUKK3dvcmspIHJ1biB0aGUgb2JqZWN0IGNvZGUgYW5kIHRvIG1vZGlm eSB0aGUgd29yaywgaW5jbHVkaW5nIHNjcmlwdHMgdG8KK2NvbnRyb2wgdGhvc2UgYWN0aXZpdGll cy4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHdvcmsncworU3lzdGVtIExpYnJh cmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJl ZQorcHJvZ3JhbXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBpbiBwZXJmb3JtaW5nIHRob3Nl IGFjdGl2aXRpZXMgYnV0Cit3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIHdvcmsuICBGb3IgZXhh bXBsZSwgQ29ycmVzcG9uZGluZyBTb3VyY2UKK2luY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9u IGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCit0aGUgd29yaywgYW5kIHRo ZSBzb3VyY2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkKK2xpbmtl ZCBzdWJwcm9ncmFtcyB0aGF0IHRoZSB3b3JrIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBy ZXF1aXJlLAorc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJv bCBmbG93IGJldHdlZW4gdGhvc2UKK3N1YnByb2dyYW1zIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUg d29yay4KKworICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0 aGluZyB0aGF0IHVzZXJzCitjYW4gcmVnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5IGZyb20gb3RoZXIg cGFydHMgb2YgdGhlIENvcnJlc3BvbmRpbmcKK1NvdXJjZS4KKworICBUaGUgQ29ycmVzcG9uZGlu ZyBTb3VyY2UgZm9yIGEgd29yayBpbiBzb3VyY2UgY29kZSBmb3JtIGlzIHRoYXQKK3NhbWUgd29y ay4KKworICAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KKworICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5k ZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgorY29weXJpZ2h0IG9u IHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVkIHRoZSBzdGF0ZWQKK2Nv bmRpdGlvbnMgYXJlIG1ldC4gIFRoaXMgTGljZW5zZSBleHBsaWNpdGx5IGFmZmlybXMgeW91ciB1 bmxpbWl0ZWQKK3Blcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUg b3V0cHV0IGZyb20gcnVubmluZyBhCitjb3ZlcmVkIHdvcmsgaXMgY292ZXJlZCBieSB0aGlzIExp Y2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKK2NvbnRlbnQsIGNvbnN0aXR1dGVz IGEgY292ZXJlZCB3b3JrLiAgVGhpcyBMaWNlbnNlIGFja25vd2xlZGdlcyB5b3VyCityaWdodHMg b2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0 IGxhdy4KKworICBZb3UgbWF5IG1ha2UsIHJ1biBhbmQgcHJvcGFnYXRlIGNvdmVyZWQgd29ya3Mg dGhhdCB5b3UgZG8gbm90Citjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlv dXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucworaW4gZm9yY2UuICBZb3UgbWF5IGNvbnZleSBj b3ZlcmVkIHdvcmtzIHRvIG90aGVycyBmb3IgdGhlIHNvbGUgcHVycG9zZQorb2YgaGF2aW5nIHRo ZW0gbWFrZSBtb2RpZmljYXRpb25zIGV4Y2x1c2l2ZWx5IGZvciB5b3UsIG9yIHByb3ZpZGUgeW91 Cit3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQg eW91IGNvbXBseSB3aXRoCit0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIGluIGNvbnZleWluZyBh bGwgbWF0ZXJpYWwgZm9yIHdoaWNoIHlvdSBkbworbm90IGNvbnRyb2wgY29weXJpZ2h0LiAgVGhv c2UgdGh1cyBtYWtpbmcgb3IgcnVubmluZyB0aGUgY292ZXJlZCB3b3JrcworZm9yIHlvdSBtdXN0 IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgor YW5kIGNvbnRyb2wsIG9uIHRlcm1zIHRoYXQgcHJvaGliaXQgdGhlbSBmcm9tIG1ha2luZyBhbnkg Y29waWVzIG9mCit5b3VyIGNvcHlyaWdodGVkIG1hdGVyaWFsIG91dHNpZGUgdGhlaXIgcmVsYXRp b25zaGlwIHdpdGggeW91LgorCisgIENvbnZleWluZyB1bmRlciBhbnkgb3RoZXIgY2lyY3Vtc3Rh bmNlcyBpcyBwZXJtaXR0ZWQgc29sZWx5IHVuZGVyCit0aGUgY29uZGl0aW9ucyBzdGF0ZWQgYmVs b3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFsbG93ZWQ7IHNlY3Rpb24gMTAKK21ha2VzIGl0IHVu bmVjZXNzYXJ5LgorCisgIDMuIFByb3RlY3RpbmcgVXNlcnMnIExlZ2FsIFJpZ2h0cyBGcm9tIEFu dGktQ2lyY3VtdmVudGlvbiBMYXcuCisKKyAgTm8gY292ZXJlZCB3b3JrIHNoYWxsIGJlIGRlZW1l ZCBwYXJ0IG9mIGFuIGVmZmVjdGl2ZSB0ZWNobm9sb2dpY2FsCittZWFzdXJlIHVuZGVyIGFueSBh cHBsaWNhYmxlIGxhdyBmdWxmaWxsaW5nIG9ibGlnYXRpb25zIHVuZGVyIGFydGljbGUKKzExIG9m IHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBv cgorc2ltaWxhciBsYXdzIHByb2hpYml0aW5nIG9yIHJlc3RyaWN0aW5nIGNpcmN1bXZlbnRpb24g b2Ygc3VjaAorbWVhc3VyZXMuCisKKyAgV2hlbiB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB5 b3Ugd2FpdmUgYW55IGxlZ2FsIHBvd2VyIHRvIGZvcmJpZAorY2lyY3VtdmVudGlvbiBvZiB0ZWNo bm9sb2dpY2FsIG1lYXN1cmVzIHRvIHRoZSBleHRlbnQgc3VjaCBjaXJjdW12ZW50aW9uCitpcyBl ZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNw ZWN0IHRvCit0aGUgY292ZXJlZCB3b3JrLCBhbmQgeW91IGRpc2NsYWltIGFueSBpbnRlbnRpb24g dG8gbGltaXQgb3BlcmF0aW9uIG9yCittb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgYXMgYSBtZWFu cyBvZiBlbmZvcmNpbmcsIGFnYWluc3QgdGhlIHdvcmsncwordXNlcnMsIHlvdXIgb3IgdGhpcmQg cGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCit0ZWNobm9s b2dpY2FsIG1lYXN1cmVzLgorCisgIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCisKKyAg WW91IG1heSBjb252ZXkgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3Mgc291cmNlIGNv ZGUgYXMgeW91CityZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBj b25zcGljdW91c2x5IGFuZAorYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBh cHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlOwora2VlcCBpbnRhY3QgYWxsIG5vdGljZXMgc3Rh dGluZyB0aGF0IHRoaXMgTGljZW5zZSBhbmQgYW55Citub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRl ZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CitrZWVwIGludGFj dCBhbGwgbm90aWNlcyBvZiB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7IGFuZCBnaXZlIGFs bAorcmVjaXBpZW50cyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlIFByb2dy YW0uCisKKyAgWW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNlIGZvciBlYWNoIGNv cHkgdGhhdCB5b3UgY29udmV5LAorYW5kIHlvdSBtYXkgb2ZmZXIgc3VwcG9ydCBvciB3YXJyYW50 eSBwcm90ZWN0aW9uIGZvciBhIGZlZS4KKworICA1LiBDb252ZXlpbmcgTW9kaWZpZWQgU291cmNl IFZlcnNpb25zLgorCisgIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3Jh bSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KK3Byb2R1Y2UgaXQgZnJvbSB0aGUgUHJvZ3JhbSwg aW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCit0ZXJtcyBvZiBzZWN0aW9uIDQs IHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKwor ICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0 IHlvdSBtb2RpZmllZAorICAgIGl0LCBhbmQgZ2l2aW5nIGEgcmVsZXZhbnQgZGF0ZS4KKworICAg IGIpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IGl0 IGlzCisgICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkgY29uZGl0aW9ucyBh ZGRlZCB1bmRlciBzZWN0aW9uCisgICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhl IHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bworICAgICJrZWVwIGludGFjdCBhbGwgbm90aWNl cyIuCisKKyAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9s ZSwgdW5kZXIgdGhpcworICAgIExpY2Vuc2UgdG8gYW55b25lIHdobyBjb21lcyBpbnRvIHBvc3Nl c3Npb24gb2YgYSBjb3B5LiAgVGhpcworICAgIExpY2Vuc2Ugd2lsbCB0aGVyZWZvcmUgYXBwbHks IGFsb25nIHdpdGggYW55IGFwcGxpY2FibGUgc2VjdGlvbiA3CisgICAgYWRkaXRpb25hbCB0ZXJt cywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKKyAgICByZWdh cmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBwYWNrYWdlZC4gIFRoaXMgTGljZW5zZSBnaXZlcyBubwor ICAgIHBlcm1pc3Npb24gdG8gbGljZW5zZSB0aGUgd29yayBpbiBhbnkgb3RoZXIgd2F5LCBidXQg aXQgZG9lcyBub3QKKyAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBz ZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgorCisgICAgZCkgSWYgdGhlIHdvcmsgaGFzIGludGVyYWN0 aXZlIHVzZXIgaW50ZXJmYWNlcywgZWFjaCBtdXN0IGRpc3BsYXkKKyAgICBBcHByb3ByaWF0ZSBM ZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKKyAg ICBpbnRlcmZhY2VzIHRoYXQgZG8gbm90IGRpc3BsYXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNl cywgeW91cgorICAgIHdvcmsgbmVlZCBub3QgbWFrZSB0aGVtIGRvIHNvLgorCisgIEEgY29tcGls YXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsgd2l0aCBvdGhlciBzZXBhcmF0ZSBhbmQgaW5kZXBlbmRl bnQKK3dvcmtzLCB3aGljaCBhcmUgbm90IGJ5IHRoZWlyIG5hdHVyZSBleHRlbnNpb25zIG9mIHRo ZSBjb3ZlcmVkIHdvcmssCithbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2gg YXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAoraW4gb3Igb24gYSB2b2x1bWUgb2YgYSBzdG9y YWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxlZCBhbgorImFnZ3JlZ2F0ZSIgaWYg dGhlIGNvbXBpbGF0aW9uIGFuZCBpdHMgcmVzdWx0aW5nIGNvcHlyaWdodCBhcmUgbm90Cit1c2Vk IHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidz IHVzZXJzCitiZXlvbmQgd2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuICBJbmNsdXNp b24gb2YgYSBjb3ZlcmVkIHdvcmsKK2luIGFuIGFnZ3JlZ2F0ZSBkb2VzIG5vdCBjYXVzZSB0aGlz IExpY2Vuc2UgdG8gYXBwbHkgdG8gdGhlIG90aGVyCitwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgor CisgIDYuIENvbnZleWluZyBOb24tU291cmNlIEZvcm1zLgorCisgIFlvdSBtYXkgY29udmV5IGEg Y292ZXJlZCB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgdGhlIHRlcm1zCitvZiBzZWN0 aW9ucyA0IGFuZCA1LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGNvbnZleSB0aGUKK21hY2hpbmUt cmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGlj ZW5zZSwKK2luIG9uZSBvZiB0aGVzZSB3YXlzOgorCisgICAgYSkgQ29udmV5IHRoZSBvYmplY3Qg Y29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAorICAgIChpbmNsdWRp bmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgdGhlCisg ICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgZml4ZWQgb24gYSBkdXJhYmxlIHBoeXNpY2FsIG1lZGl1 bQorICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgorCisgICAg YikgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwg cHJvZHVjdAorICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwg YWNjb21wYW5pZWQgYnkgYQorICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0 aHJlZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCisgICAgbG9uZyBhcyB5b3Ugb2ZmZXIgc3BhcmUg cGFydHMgb3IgY3VzdG9tZXIgc3VwcG9ydCBmb3IgdGhhdCBwcm9kdWN0CisgICAgbW9kZWwsIHRv IGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQor ICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwgdGhlIHNvZnR3YXJl IGluIHRoZQorICAgIHByb2R1Y3QgdGhhdCBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwgb24g YSBkdXJhYmxlIHBoeXNpY2FsCisgICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3 YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubworICAgIG1vcmUgdGhhbiB5b3VyIHJlYXNv bmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcworICAgIGNvbnZleWluZyBv ZiBzb3VyY2UsIG9yICgyKSBhY2Nlc3MgdG8gY29weSB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNv dXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgorCisgICAgYykgQ29udmV5 IGluZGl2aWR1YWwgY29waWVzIG9mIHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29weSBvZiB0aGUK KyAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAg VGhpcworICAgIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25seSBvY2Nhc2lvbmFsbHkgYW5kIG5v bmNvbW1lcmNpYWxseSwgYW5kCisgICAgb25seSBpZiB5b3UgcmVjZWl2ZWQgdGhlIG9iamVjdCBj b2RlIHdpdGggc3VjaCBhbiBvZmZlciwgaW4gYWNjb3JkCisgICAgd2l0aCBzdWJzZWN0aW9uIDZi LgorCisgICAgZCkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBieSBvZmZlcmluZyBhY2Nlc3MgZnJv bSBhIGRlc2lnbmF0ZWQKKyAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBv ZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBp biB0aGUgc2FtZSB3YXkgdGhyb3VnaCB0aGUgc2FtZSBwbGFjZSBhdCBubworICAgIGZ1cnRoZXIg Y2hhcmdlLiAgWW91IG5lZWQgbm90IHJlcXVpcmUgcmVjaXBpZW50cyB0byBjb3B5IHRoZQorICAg IENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhl IHBsYWNlIHRvCisgICAgY29weSB0aGUgb2JqZWN0IGNvZGUgaXMgYSBuZXR3b3JrIHNlcnZlciwg dGhlIENvcnJlc3BvbmRpbmcgU291cmNlCisgICAgbWF5IGJlIG9uIGEgZGlmZmVyZW50IHNlcnZl ciAob3BlcmF0ZWQgYnkgeW91IG9yIGEgdGhpcmQgcGFydHkpCisgICAgdGhhdCBzdXBwb3J0cyBl cXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCisgICAg Y2xlYXIgZGlyZWN0aW9ucyBuZXh0IHRvIHRoZSBvYmplY3QgY29kZSBzYXlpbmcgd2hlcmUgdG8g ZmluZCB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBz ZXJ2ZXIgaG9zdHMgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2Js aWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCisgICAgYXZhaWxhYmxlIGZvciBhcyBsb25nIGFz IG5lZWRlZCB0byBzYXRpc2Z5IHRoZXNlIHJlcXVpcmVtZW50cy4KKworICAgIGUpIENvbnZleSB0 aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQK KyAgICB5b3UgaW5mb3JtIG90aGVyIHBlZXJzIHdoZXJlIHRoZSBvYmplY3QgY29kZSBhbmQgQ29y cmVzcG9uZGluZworICAgIFNvdXJjZSBvZiB0aGUgd29yayBhcmUgYmVpbmcgb2ZmZXJlZCB0byB0 aGUgZ2VuZXJhbCBwdWJsaWMgYXQgbm8KKyAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4K KworICBBIHNlcGFyYWJsZSBwb3J0aW9uIG9mIHRoZSBvYmplY3QgY29kZSwgd2hvc2Ugc291cmNl IGNvZGUgaXMgZXhjbHVkZWQKK2Zyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lz dGVtIExpYnJhcnksIG5lZWQgbm90IGJlCitpbmNsdWRlZCBpbiBjb252ZXlpbmcgdGhlIG9iamVj dCBjb2RlIHdvcmsuCisKKyAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1 bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKK3RhbmdpYmxlIHBlcnNvbmFsIHByb3BlcnR5 IHdoaWNoIGlzIG5vcm1hbGx5IHVzZWQgZm9yIHBlcnNvbmFsLCBmYW1pbHksCitvciBob3VzZWhv bGQgcHVycG9zZXMsIG9yICgyKSBhbnl0aGluZyBkZXNpZ25lZCBvciBzb2xkIGZvciBpbmNvcnBv cmF0aW9uCitpbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVj dCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCitkb3VidGZ1bCBjYXNlcyBzaGFsbCBiZSByZXNvbHZl ZCBpbiBmYXZvciBvZiBjb3ZlcmFnZS4gIEZvciBhIHBhcnRpY3VsYXIKK3Byb2R1Y3QgcmVjZWl2 ZWQgYnkgYSBwYXJ0aWN1bGFyIHVzZXIsICJub3JtYWxseSB1c2VkIiByZWZlcnMgdG8gYQordHlw aWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBv ZiB0aGUgc3RhdHVzCitvZiB0aGUgcGFydGljdWxhciB1c2VyIG9yIG9mIHRoZSB3YXkgaW4gd2hp Y2ggdGhlIHBhcnRpY3VsYXIgdXNlcgorYWN0dWFsbHkgdXNlcywgb3IgZXhwZWN0cyBvciBpcyBl eHBlY3RlZCB0byB1c2UsIHRoZSBwcm9kdWN0LiAgQSBwcm9kdWN0CitpcyBhIGNvbnN1bWVyIHBy b2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbAor Y29tbWVyY2lhbCwgaW5kdXN0cmlhbCBvciBub24tY29uc3VtZXIgdXNlcywgdW5sZXNzIHN1Y2gg dXNlcyByZXByZXNlbnQKK3RoZSBvbmx5IHNpZ25pZmljYW50IG1vZGUgb2YgdXNlIG9mIHRoZSBw cm9kdWN0LgorCisgICJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIGZvciBhIFVzZXIgUHJvZHVj dCBtZWFucyBhbnkgbWV0aG9kcywKK3Byb2NlZHVyZXMsIGF1dGhvcml6YXRpb24ga2V5cywgb3Ig b3RoZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gaW5zdGFsbAorYW5kIGV4ZWN1dGUgbW9kaWZp ZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQor YSBtb2RpZmllZCB2ZXJzaW9uIG9mIGl0cyBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRoZSBpbmZv cm1hdGlvbiBtdXN0CitzdWZmaWNlIHRvIGVuc3VyZSB0aGF0IHRoZSBjb250aW51ZWQgZnVuY3Rp b25pbmcgb2YgdGhlIG1vZGlmaWVkIG9iamVjdAorY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRl ZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKK21vZGlmaWNhdGlvbiBoYXMgYmVl biBtYWRlLgorCisgIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlz IHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCitzcGVjaWZpY2FsbHkgZm9yIHVzZSBpbiwgYSBVc2Vy IFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcworcGFydCBvZiBhIHRyYW5zYWN0 aW9uIGluIHdoaWNoIHRoZSByaWdodCBvZiBwb3NzZXNzaW9uIGFuZCB1c2Ugb2YgdGhlCitVc2Vy IFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9y IGZvciBhCitmaXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUgdHJhbnNhY3Rpb24gaXMg Y2hhcmFjdGVyaXplZCksIHRoZQorQ29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQgdW5kZXIg dGhpcyBzZWN0aW9uIG11c3QgYmUgYWNjb21wYW5pZWQKK2J5IHRoZSBJbnN0YWxsYXRpb24gSW5m b3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQoraWYgbmVpdGhl ciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBhYmlsaXR5IHRvIGluc3RhbGwK K21vZGlmaWVkIG9iamVjdCBjb2RlIG9uIHRoZSBVc2VyIFByb2R1Y3QgKGZvciBleGFtcGxlLCB0 aGUgd29yayBoYXMKK2JlZW4gaW5zdGFsbGVkIGluIFJPTSkuCisKKyAgVGhlIHJlcXVpcmVtZW50 IHRvIHByb3ZpZGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIGRvZXMgbm90IGluY2x1ZGUgYQor cmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJh bnR5LCBvciB1cGRhdGVzCitmb3IgYSB3b3JrIHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5z dGFsbGVkIGJ5IHRoZSByZWNpcGllbnQsIG9yIGZvcgordGhlIFVzZXIgUHJvZHVjdCBpbiB3aGlj aCBpdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQuICBBY2Nlc3MgdG8gYQorbmV0d29y ayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBh bmQKK2FkdmVyc2VseSBhZmZlY3RzIHRoZSBvcGVyYXRpb24gb2YgdGhlIG5ldHdvcmsgb3Igdmlv bGF0ZXMgdGhlIHJ1bGVzIGFuZAorcHJvdG9jb2xzIGZvciBjb21tdW5pY2F0aW9uIGFjcm9zcyB0 aGUgbmV0d29yay4KKworICBDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCwgYW5kIEluc3Rh bGxhdGlvbiBJbmZvcm1hdGlvbiBwcm92aWRlZCwKK2luIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlv biBtdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgaXMgcHVibGljbHkKK2RvY3VtZW50ZWQgKGFuZCB3 aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCitzb3VyY2Ug Y29kZSBmb3JtKSwgYW5kIG11c3QgcmVxdWlyZSBubyBzcGVjaWFsIHBhc3N3b3JkIG9yIGtleSBm b3IKK3VucGFja2luZywgcmVhZGluZyBvciBjb3B5aW5nLgorCisgIDcuIEFkZGl0aW9uYWwgVGVy bXMuCisKKyAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1l bnQgdGhlIHRlcm1zIG9mIHRoaXMKK0xpY2Vuc2UgYnkgbWFraW5nIGV4Y2VwdGlvbnMgZnJvbSBv bmUgb3IgbW9yZSBvZiBpdHMgY29uZGl0aW9ucy4KK0FkZGl0aW9uYWwgcGVybWlzc2lvbnMgdGhh dCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZW50aXJlIFByb2dyYW0gc2hhbGwKK2JlIHRyZWF0ZWQg YXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRl bnQKK3RoYXQgdGhleSBhcmUgdmFsaWQgdW5kZXIgYXBwbGljYWJsZSBsYXcuICBJZiBhZGRpdGlv bmFsIHBlcm1pc3Npb25zCithcHBseSBvbmx5IHRvIHBhcnQgb2YgdGhlIFByb2dyYW0sIHRoYXQg cGFydCBtYXkgYmUgdXNlZCBzZXBhcmF0ZWx5Cit1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0 IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5Cit0aGlzIExpY2Vuc2Ugd2l0 aG91dCByZWdhcmQgdG8gdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMuCisKKyAgV2hlbiB5b3Ug Y29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgor cmVtb3ZlIGFueSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGZyb20gdGhhdCBjb3B5LCBvciBmcm9t IGFueSBwYXJ0IG9mCitpdC4gIChBZGRpdGlvbmFsIHBlcm1pc3Npb25zIG1heSBiZSB3cml0dGVu IHRvIHJlcXVpcmUgdGhlaXIgb3duCityZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3Ug bW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKK2FkZGl0aW9uYWwgcGVybWlzc2lvbnMg b24gbWF0ZXJpYWwsIGFkZGVkIGJ5IHlvdSB0byBhIGNvdmVyZWQgd29yaywKK2ZvciB3aGljaCB5 b3UgaGF2ZSBvciBjYW4gZ2l2ZSBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgcGVybWlzc2lvbi4KKwor ICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIGZv ciBtYXRlcmlhbCB5b3UKK2FkZCB0byBhIGNvdmVyZWQgd29yaywgeW91IG1heSAoaWYgYXV0aG9y aXplZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlcnMgb2YKK3RoYXQgbWF0ZXJpYWwpIHN1cHBsZW1l bnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgorCisgICAgYSkgRGlzY2xh aW1pbmcgd2FycmFudHkgb3IgbGltaXRpbmcgbGlhYmlsaXR5IGRpZmZlcmVudGx5IGZyb20gdGhl CisgICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKKwor ICAgIGIpIFJlcXVpcmluZyBwcmVzZXJ2YXRpb24gb2Ygc3BlY2lmaWVkIHJlYXNvbmFibGUgbGVn YWwgbm90aWNlcyBvcgorICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBv ciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKKyAgICBOb3RpY2VzIGRpc3BsYXllZCBieSB3b3Jr cyBjb250YWluaW5nIGl0OyBvcgorCisgICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRp b24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgorICAgIHJlcXVpcmluZyB0aGF0 IG1vZGlmaWVkIHZlcnNpb25zIG9mIHN1Y2ggbWF0ZXJpYWwgYmUgbWFya2VkIGluCisgICAgcmVh c29uYWJsZSB3YXlzIGFzIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCB2ZXJzaW9uOyBvcgor CisgICAgZCkgTGltaXRpbmcgdGhlIHVzZSBmb3IgcHVibGljaXR5IHB1cnBvc2VzIG9mIG5hbWVz IG9mIGxpY2Vuc29ycyBvcgorICAgIGF1dGhvcnMgb2YgdGhlIG1hdGVyaWFsOyBvcgorCisgICAg ZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3IGZvciB1c2Ug b2Ygc29tZQorICAgIHRyYWRlIG5hbWVzLCB0cmFkZW1hcmtzLCBvciBzZXJ2aWNlIG1hcmtzOyBv cgorCisgICAgZikgUmVxdWlyaW5nIGluZGVtbmlmaWNhdGlvbiBvZiBsaWNlbnNvcnMgYW5kIGF1 dGhvcnMgb2YgdGhhdAorICAgIG1hdGVyaWFsIGJ5IGFueW9uZSB3aG8gY29udmV5cyB0aGUgbWF0 ZXJpYWwgKG9yIG1vZGlmaWVkIHZlcnNpb25zIG9mCisgICAgaXQpIHdpdGggY29udHJhY3R1YWwg YXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgorICAgIGFueSBs aWFiaWxpdHkgdGhhdCB0aGVzZSBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBkaXJlY3RseSBpbXBv c2Ugb24KKyAgICB0aG9zZSBsaWNlbnNvcnMgYW5kIGF1dGhvcnMuCisKKyAgQWxsIG90aGVyIG5v bi1wZXJtaXNzaXZlIGFkZGl0aW9uYWwgdGVybXMgYXJlIGNvbnNpZGVyZWQgImZ1cnRoZXIKK3Jl c3RyaWN0aW9ucyIgd2l0aGluIHRoZSBtZWFuaW5nIG9mIHNlY3Rpb24gMTAuICBJZiB0aGUgUHJv Z3JhbSBhcyB5b3UKK3JlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBu b3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCitnb3Zlcm5lZCBieSB0aGlzIExpY2Vuc2UgYWxvbmcg d2l0aCBhIHRlcm0gdGhhdCBpcyBhIGZ1cnRoZXIKK3Jlc3RyaWN0aW9uLCB5b3UgbWF5IHJlbW92 ZSB0aGF0IHRlcm0uICBJZiBhIGxpY2Vuc2UgZG9jdW1lbnQgY29udGFpbnMKK2EgZnVydGhlciBy ZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhp cworTGljZW5zZSwgeW91IG1heSBhZGQgdG8gYSBjb3ZlcmVkIHdvcmsgbWF0ZXJpYWwgZ292ZXJu ZWQgYnkgdGhlIHRlcm1zCitvZiB0aGF0IGxpY2Vuc2UgZG9jdW1lbnQsIHByb3ZpZGVkIHRoYXQg dGhlIGZ1cnRoZXIgcmVzdHJpY3Rpb24gZG9lcworbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2lu ZyBvciBjb252ZXlpbmcuCisKKyAgSWYgeW91IGFkZCB0ZXJtcyB0byBhIGNvdmVyZWQgd29yayBp biBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24sIHlvdQorbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2 YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCithZGRpdGlvbmFsIHRlcm1zIHRo YXQgYXBwbHkgdG8gdGhvc2UgZmlsZXMsIG9yIGEgbm90aWNlIGluZGljYXRpbmcKK3doZXJlIHRv IGZpbmQgdGhlIGFwcGxpY2FibGUgdGVybXMuCisKKyAgQWRkaXRpb25hbCB0ZXJtcywgcGVybWlz c2l2ZSBvciBub24tcGVybWlzc2l2ZSwgbWF5IGJlIHN0YXRlZCBpbiB0aGUKK2Zvcm0gb2YgYSBz ZXBhcmF0ZWx5IHdyaXR0ZW4gbGljZW5zZSwgb3Igc3RhdGVkIGFzIGV4Y2VwdGlvbnM7Cit0aGUg YWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCisKKyAgOC4gVGVybWluYXRpb24u CisKKyAgWW91IG1heSBub3QgcHJvcGFnYXRlIG9yIG1vZGlmeSBhIGNvdmVyZWQgd29yayBleGNl cHQgYXMgZXhwcmVzc2x5Citwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1w dCBvdGhlcndpc2UgdG8gcHJvcGFnYXRlIG9yCittb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwg YXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKK3RoaXMgTGljZW5zZSAo aW5jbHVkaW5nIGFueSBwYXRlbnQgbGljZW5zZXMgZ3JhbnRlZCB1bmRlciB0aGUgdGhpcmQKK3Bh cmFncmFwaCBvZiBzZWN0aW9uIDExKS4KKworICBIb3dldmVyLCBpZiB5b3UgY2Vhc2UgYWxsIHZp b2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UsIHRoZW4geW91cgorbGljZW5zZSBmcm9tIGEgcGFydGlj dWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0ZWQgKGEpCitwcm92aXNpb25hbGx5LCB1 bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCitmaW5h bGx5IHRlcm1pbmF0ZXMgeW91ciBsaWNlbnNlLCBhbmQgKGIpIHBlcm1hbmVudGx5LCBpZiB0aGUg Y29weXJpZ2h0Citob2xkZXIgZmFpbHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5 IHNvbWUgcmVhc29uYWJsZSBtZWFucworcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0 aW9uLgorCisgIE1vcmVvdmVyLCB5b3VyIGxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJp Z2h0IGhvbGRlciBpcworcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhv bGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCit2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1l YW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCityZWNlaXZlZCBub3RpY2Ugb2Yg dmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSAoZm9yIGFueSB3b3JrKSBmcm9tIHRoYXQKK2NvcHly aWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMg YWZ0ZXIKK3lvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgorCisgIFRlcm1pbmF0aW9uIG9mIHlv dXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCitsaWNl bnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciByaWdodHMgZnJvbSB5 b3UgdW5kZXIKK3RoaXMgTGljZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUgYmVlbiB0ZXJtaW5h dGVkIGFuZCBub3QgcGVybWFuZW50bHkKK3JlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0 byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKK21hdGVyaWFsIHVuZGVyIHNlY3Rp b24gMTAuCisKKyAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMu CisKKyAgWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBpbiBvcmRl ciB0byByZWNlaXZlIG9yCitydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHBy b3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCitvY2N1cnJpbmcgc29sZWx5IGFzIGEgY29uc2Vx dWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbgordG8gcmVjZWl2ZSBhIGNv cHkgbGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93ZXZlciwKK25vdGhp bmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3Bh Z2F0ZSBvcgorbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBUaGVzZSBhY3Rpb25zIGluZnJpbmdl IGNvcHlyaWdodCBpZiB5b3UgZG8KK25vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3Jl LCBieSBtb2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQorY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNh dGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KKworICAxMC4gQXV0 b21hdGljIExpY2Vuc2luZyBvZiBEb3duc3RyZWFtIFJlY2lwaWVudHMuCisKKyAgRWFjaCB0aW1l IHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseQor cmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29ycywgdG8gcnVuLCBt b2RpZnkgYW5kCitwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4g IFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCitmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhp cmQgcGFydGllcyB3aXRoIHRoaXMgTGljZW5zZS4KKworICBBbiAiZW50aXR5IHRyYW5zYWN0aW9u IiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCitvcmdhbml6YXRp b24sIG9yIHN1YnN0YW50aWFsbHkgYWxsIGFzc2V0cyBvZiBvbmUsIG9yIHN1YmRpdmlkaW5nIGFu Citvcmdhbml6YXRpb24sIG9yIG1lcmdpbmcgb3JnYW5pemF0aW9ucy4gIElmIHByb3BhZ2F0aW9u IG9mIGEgY292ZXJlZAord29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBl YWNoIHBhcnR5IHRvIHRoYXQKK3RyYW5zYWN0aW9uIHdobyByZWNlaXZlcyBhIGNvcHkgb2YgdGhl IHdvcmsgYWxzbyByZWNlaXZlcyB3aGF0ZXZlcgorbGljZW5zZXMgdG8gdGhlIHdvcmsgdGhlIHBh cnR5J3MgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QgaGFkIG9yIGNvdWxkCitnaXZlIHVuZGVyIHRo ZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQor Q29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4g aW50ZXJlc3QsIGlmCit0aGUgcHJlZGVjZXNzb3IgaGFzIGl0IG9yIGNhbiBnZXQgaXQgd2l0aCBy ZWFzb25hYmxlIGVmZm9ydHMuCisKKyAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJl c3RyaWN0aW9ucyBvbiB0aGUgZXhlcmNpc2Ugb2YgdGhlCityaWdodHMgZ3JhbnRlZCBvciBhZmZp cm1lZCB1bmRlciB0aGlzIExpY2Vuc2UuICBGb3IgZXhhbXBsZSwgeW91IG1heQorbm90IGltcG9z ZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9m CityaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCB5b3UgbWF5IG5vdCBpbml0 aWF0ZSBsaXRpZ2F0aW9uCisoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWlt IGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAorYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5n ZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCitzYWxlLCBvciBpbXBv cnRpbmcgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24gb2YgaXQuCisKKyAgMTEuIFBhdGVudHMu CisKKyAgQSAiY29udHJpYnV0b3IiIGlzIGEgY29weXJpZ2h0IGhvbGRlciB3aG8gYXV0aG9yaXpl cyB1c2UgdW5kZXIgdGhpcworTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hp Y2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKK3dvcmsgdGh1cyBsaWNlbnNlZCBpcyBjYWxs ZWQgdGhlIGNvbnRyaWJ1dG9yJ3MgImNvbnRyaWJ1dG9yIHZlcnNpb24iLgorCisgIEEgY29udHJp YnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwor b3duZWQgb3IgY29udHJvbGxlZCBieSB0aGUgY29udHJpYnV0b3IsIHdoZXRoZXIgYWxyZWFkeSBh Y3F1aXJlZCBvcgoraGVyZWFmdGVyIGFjcXVpcmVkLCB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBi eSBzb21lIG1hbm5lciwgcGVybWl0dGVkCitieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNp bmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCitidXQgZG8gbm90IGluY2x1 ZGUgY2xhaW1zIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIG9ubHkgYXMgYQorY29uc2VxdWVuY2Ug b2YgZnVydGhlciBtb2RpZmljYXRpb24gb2YgdGhlIGNvbnRyaWJ1dG9yIHZlcnNpb24uICBGb3IK K3B1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdo dCB0byBncmFudAorcGF0ZW50IHN1YmxpY2Vuc2VzIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0 aCB0aGUgcmVxdWlyZW1lbnRzIG9mCit0aGlzIExpY2Vuc2UuCisKKyAgRWFjaCBjb250cmlidXRv ciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUKK3Bh dGVudCBsaWNlbnNlIHVuZGVyIHRoZSBjb250cmlidXRvcidzIGVzc2VudGlhbCBwYXRlbnQgY2xh aW1zLCB0bworbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhl cndpc2UgcnVuLCBtb2RpZnkgYW5kCitwcm9wYWdhdGUgdGhlIGNvbnRlbnRzIG9mIGl0cyBjb250 cmlidXRvciB2ZXJzaW9uLgorCisgIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywg YSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCithZ3JlZW1lbnQgb3IgY29tbWl0bWVu dCwgaG93ZXZlciBkZW5vbWluYXRlZCwgbm90IHRvIGVuZm9yY2UgYSBwYXRlbnQKKyhzdWNoIGFz IGFuIGV4cHJlc3MgcGVybWlzc2lvbiB0byBwcmFjdGljZSBhIHBhdGVudCBvciBjb3ZlbmFudCBu b3QgdG8KK3N1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBw YXRlbnQgbGljZW5zZSB0byBhCitwYXJ0eSBtZWFucyB0byBtYWtlIHN1Y2ggYW4gYWdyZWVtZW50 IG9yIGNvbW1pdG1lbnQgbm90IHRvIGVuZm9yY2UgYQorcGF0ZW50IGFnYWluc3QgdGhlIHBhcnR5 LgorCisgIElmIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIGtub3dpbmdseSByZWx5aW5nIG9u IGEgcGF0ZW50IGxpY2Vuc2UsCithbmQgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG9mIHRoZSB3 b3JrIGlzIG5vdCBhdmFpbGFibGUgZm9yIGFueW9uZQordG8gY29weSwgZnJlZSBvZiBjaGFyZ2Ug YW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQorcHVibGljbHkg YXZhaWxhYmxlIG5ldHdvcmsgc2VydmVyIG9yIG90aGVyIHJlYWRpbHkgYWNjZXNzaWJsZSBtZWFu cywKK3RoZW4geW91IG11c3QgZWl0aGVyICgxKSBjYXVzZSB0aGUgQ29ycmVzcG9uZGluZyBTb3Vy Y2UgdG8gYmUgc28KK2F2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2Vs ZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKK3BhdGVudCBsaWNlbnNlIGZvciB0aGlzIHBhcnRpY3Vs YXIgd29yaywgb3IgKDMpIGFycmFuZ2UsIGluIGEgbWFubmVyCitjb25zaXN0ZW50IHdpdGggdGhl IHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UsIHRvIGV4dGVuZCB0aGUgcGF0ZW50CitsaWNl bnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMg eW91IGhhdmUKK2FjdHVhbCBrbm93bGVkZ2UgdGhhdCwgYnV0IGZvciB0aGUgcGF0ZW50IGxpY2Vu c2UsIHlvdXIgY29udmV5aW5nIHRoZQorY292ZXJlZCB3b3JrIGluIGEgY291bnRyeSwgb3IgeW91 ciByZWNpcGllbnQncyB1c2Ugb2YgdGhlIGNvdmVyZWQgd29yaworaW4gYSBjb3VudHJ5LCB3b3Vs ZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0Citjb3Vu dHJ5IHRoYXQgeW91IGhhdmUgcmVhc29uIHRvIGJlbGlldmUgYXJlIHZhbGlkLgorCisgIElmLCBw dXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IK K2FycmFuZ2VtZW50LCB5b3UgY29udmV5LCBvciBwcm9wYWdhdGUgYnkgcHJvY3VyaW5nIGNvbnZl eWFuY2Ugb2YsIGEKK2NvdmVyZWQgd29yaywgYW5kIGdyYW50IGEgcGF0ZW50IGxpY2Vuc2UgdG8g c29tZSBvZiB0aGUgcGFydGllcworcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXpp bmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5CitvciBjb252ZXkgYSBzcGVjaWZpYyBj b3B5IG9mIHRoZSBjb3ZlcmVkIHdvcmssIHRoZW4gdGhlIHBhdGVudCBsaWNlbnNlCit5b3UgZ3Jh bnQgaXMgYXV0b21hdGljYWxseSBleHRlbmRlZCB0byBhbGwgcmVjaXBpZW50cyBvZiB0aGUgY292 ZXJlZAord29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCisKKyAgQSBwYXRlbnQgbGljZW5zZSBp cyAiZGlzY3JpbWluYXRvcnkiIGlmIGl0IGRvZXMgbm90IGluY2x1ZGUgd2l0aGluCit0aGUgc2Nv cGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcworY29u ZGl0aW9uZWQgb24gdGhlIG5vbi1leGVyY2lzZSBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgcmlnaHRz IHRoYXQgYXJlCitzcGVjaWZpY2FsbHkgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBZb3Ug bWF5IG5vdCBjb252ZXkgYSBjb3ZlcmVkCit3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBh cnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcworaW4gdGhlIGJ1c2luZXNzIG9m IGRpc3RyaWJ1dGluZyBzb2Z0d2FyZSwgdW5kZXIgd2hpY2ggeW91IG1ha2UgcGF5bWVudAordG8g dGhlIHRoaXJkIHBhcnR5IGJhc2VkIG9uIHRoZSBleHRlbnQgb2YgeW91ciBhY3Rpdml0eSBvZiBj b252ZXlpbmcKK3RoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50 cywgdG8gYW55IG9mIHRoZQorcGFydGllcyB3aG8gd291bGQgcmVjZWl2ZSB0aGUgY292ZXJlZCB3 b3JrIGZyb20geW91LCBhIGRpc2NyaW1pbmF0b3J5CitwYXRlbnQgbGljZW5zZSAoYSkgaW4gY29u bmVjdGlvbiB3aXRoIGNvcGllcyBvZiB0aGUgY292ZXJlZCB3b3JrCitjb252ZXllZCBieSB5b3Ug KG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQorZm9y IGFuZCBpbiBjb25uZWN0aW9uIHdpdGggc3BlY2lmaWMgcHJvZHVjdHMgb3IgY29tcGlsYXRpb25z IHRoYXQKK2NvbnRhaW4gdGhlIGNvdmVyZWQgd29yaywgdW5sZXNzIHlvdSBlbnRlcmVkIGludG8g dGhhdCBhcnJhbmdlbWVudCwKK29yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHBy aW9yIHRvIDI4IE1hcmNoIDIwMDcuCisKKyAgTm90aGluZyBpbiB0aGlzIExpY2Vuc2Ugc2hhbGwg YmUgY29uc3RydWVkIGFzIGV4Y2x1ZGluZyBvciBsaW1pdGluZworYW55IGltcGxpZWQgbGljZW5z ZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKK290aGVyd2lzZSBi ZSBhdmFpbGFibGUgdG8geW91IHVuZGVyIGFwcGxpY2FibGUgcGF0ZW50IGxhdy4KKworICAxMi4g Tm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KKworICBJZiBjb25kaXRpb25zIGFyZSBp bXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCitvdGhl cndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRo ZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNl LiAgSWYgeW91IGNhbm5vdCBjb252ZXkgYQorY292ZXJlZCB3b3JrIHNvIGFzIHRvIHNhdGlzZnkg c2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitMaWNlbnNlIGFuZCBh bnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91 IG1heQorbm90IGNvbnZleSBpdCBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgeW91IGFncmVlIHRv IHRlcm1zIHRoYXQgb2JsaWdhdGUgeW91Cit0byBjb2xsZWN0IGEgcm95YWx0eSBmb3IgZnVydGhl ciBjb252ZXlpbmcgZnJvbSB0aG9zZSB0byB3aG9tIHlvdSBjb252ZXkKK3RoZSBQcm9ncmFtLCB0 aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwor TGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gY29udmV5aW5nIHRoZSBQ cm9ncmFtLgorCisgIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlLgorCisgIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMg TGljZW5zZSwgeW91IGhhdmUKK3Blcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3Zl cmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKK3VuZGVyIHZlcnNpb24gMyBvZiB0aGUgR05V IEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGludG8gYSBzaW5nbGUKK2NvbWJpbmVkIHdv cmssIGFuZCB0byBjb252ZXkgdGhlIHJlc3VsdGluZyB3b3JrLiAgVGhlIHRlcm1zIG9mIHRoaXMK K0xpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUg Y292ZXJlZCB3b3JrLAorYnV0IHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50cyBvZiB0aGUgR05VIEFm ZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorc2VjdGlvbiAxMywgY29uY2VybmluZyBpbnRl cmFjdGlvbiB0aHJvdWdoIGEgbmV0d29yayB3aWxsIGFwcGx5IHRvIHRoZQorY29tYmluYXRpb24g YXMgc3VjaC4KKworICAxNC4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGlzIExpY2Vuc2UuCisKKyAg VGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBu ZXcgdmVyc2lvbnMgb2YKK3RoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUg dG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKK2JlIHNpbWlsYXIgaW4gc3Bpcml0IHRv IHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bworYWRkcmVz cyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKKyAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEg ZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKK1Byb2dyYW0gc3BlY2lmaWVz IHRoYXQgYSBjZXJ0YWluIG51bWJlcmVkIHZlcnNpb24gb2YgdGhlIEdOVSBHZW5lcmFsCitQdWJs aWMgTGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iIGFwcGxpZXMgdG8gaXQsIHlvdSBoYXZl IHRoZQorb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVy IG9mIHRoYXQgbnVtYmVyZWQKK3ZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9l cyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZQorR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCitieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgIElmIHRoZSBQcm9ncmFtIHNwZWNpZmll cyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKK3ZlcnNpb25zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBjYW4gYmUgdXNlZCwgdGhhdCBwcm94eSdzCitwdWJs aWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJzaW9uIHBlcm1hbmVudGx5IGF1dGhv cml6ZXMgeW91Cit0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KKworICBM YXRlciBsaWNlbnNlIHZlcnNpb25zIG1heSBnaXZlIHlvdSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVu dAorcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBp bXBvc2VkIG9uIGFueQorYXV0aG9yIG9yIGNvcHlyaWdodCBob2xkZXIgYXMgYSByZXN1bHQgb2Yg eW91ciBjaG9vc2luZyB0byBmb2xsb3cgYQorbGF0ZXIgdmVyc2lvbi4KKworICAxNS4gRGlzY2xh aW1lciBvZiBXYXJyYW50eS4KKworICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dS QU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCitBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBX SEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUCitIT0xERVJTIEFO RC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdB UlJBTlRZCitPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UuICBUSEUgRU5U SVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFN CitJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBB U1NVTUUgVEhFIENPU1QgT0YKK0FMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09S UkVDVElPTi4KKworICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCisKKyAgSU4gTk8gRVZF TlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklU SU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1P RElGSUVTIEFORC9PUiBDT05WRVlTCitUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJF IExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKK0dFTkVSQUwsIFNQRUNJ QUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRI RQorVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gTE9TUyBPRgorREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJB VEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQKK1BBUlRJRVMgT1IgQSBGQUlM VVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgUFJPR1JBTVMpLAor RVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRI RSBQT1NTSUJJTElUWSBPRgorU1VDSCBEQU1BR0VTLgorCisgIDE3LiBJbnRlcnByZXRhdGlvbiBv ZiBTZWN0aW9ucyAxNSBhbmQgMTYuCisKKyAgSWYgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudHkg YW5kIGxpbWl0YXRpb24gb2YgbGlhYmlsaXR5IHByb3ZpZGVkCithYm92ZSBjYW5ub3QgYmUgZ2l2 ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKK3Jldmlld2lu ZyBjb3VydHMgc2hhbGwgYXBwbHkgbG9jYWwgbGF3IHRoYXQgbW9zdCBjbG9zZWx5IGFwcHJveGlt YXRlcworYW4gYWJzb2x1dGUgd2FpdmVyIG9mIGFsbCBjaXZpbCBsaWFiaWxpdHkgaW4gY29ubmVj dGlvbiB3aXRoIHRoZQorUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBv ZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQorY29weSBvZiB0aGUgUHJvZ3JhbSBpbiByZXR1cm4g Zm9yIGEgZmVlLgorCisgICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJ VElPTlMKKworICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3 IFByb2dyYW1zCisKKyAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50 IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAorcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRo ZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAorZnJlZSBzb2Z0d2FyZSB3 aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVy bXMuCisKKyAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHBy b2dyYW0uICBJdCBpcyBzYWZlc3QKK3RvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNo IHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKK3N0YXRlIHRoZSBleGNsdXNpb24gb2Yg d2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKK3RoZSAiY29weXJp Z2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5k LgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVm IGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUg b2YgYXV0aG9yPgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitBbHNv IGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQg cGFwZXIgbWFpbC4KKworICBJZiB0aGUgcHJvZ3JhbSBkb2VzIHRlcm1pbmFsIGludGVyYWN0aW9u LCBtYWtlIGl0IG91dHB1dCBhIHNob3J0Citub3RpY2UgbGlrZSB0aGlzIHdoZW4gaXQgc3RhcnRz IGluIGFuIGludGVyYWN0aXZlIG1vZGU6CisKKyAgICA8cHJvZ3JhbT4gIENvcHlyaWdodCAoQykg PHllYXI+ICA8bmFtZSBvZiBhdXRob3I+CisgICAgVGhpcyBwcm9ncmFtIGNvbWVzIHdpdGggQUJT T0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KKyAgICBUaGlz IGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0 CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxz LgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91 bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLiAgT2YgY291cnNlLCB5b3VyIHByb2dyYW0ncyBjb21tYW5kcworbWlnaHQgYmUgZGlmZmVy ZW50OyBmb3IgYSBHVUkgaW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJhYm91dCBib3giLgor CisgIFlvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBw cm9ncmFtbWVyKSBvciBzY2hvb2wsCitpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2Ns YWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgorRm9yIG1vcmUgaW5mb3JtYXRp b24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUK KzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworICBUaGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCitp bnRvIHByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGlu ZSBsaWJyYXJ5LCB5b3UKK21heSBjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlu a2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAordGhlIGxpYnJhcnkuICBJZiB0aGlz IGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsCitQdWJs aWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4gIEJ1dCBmaXJzdCwgcGxlYXNlIHJl YWQKKzxodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93aHktbm90LWxncGwuaHRtbD4uCgpk aWZmIC0tZ2l0IGEvZmVkb3JhLWJ1cm4teXViaWtleS5weSBiL2ZlZG9yYS1idXJuLXl1YmlrZXku cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVmZDk5ZQotLS0gL2Rldi9u dWxsCisrKyBiL2ZlZG9yYS1idXJuLXl1YmlrZXkucHkKQEAgLTAsMCArMSw5MyBAQAorIyEvdXNy L2Jpbi9weXRob24zCisKKyMgQ29weXJpZ2h0IChDKSAyMDEwIFJlZCBIYXQgSW5jLgorIyBBdXRo b3I6IE1pa2UgTWNHcmF0aCA8bW1jZ3JhdGhAcmVkaGF0LmNvbT4KKyMgCisjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uICBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5odG1sIGZvcgor IyB0aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlLgorCisjIHlrcGVyc29uYWxpemUgLW9maXhl ZD1jY2NjY2NjY2NjY2kgLWFmY2FhMGM1YmYyZTgzZWMwNDBlNGFlYjdmODU2NTI5MyAtb3VpZD0x ZTdmMWRhN2Q2ZDEKK2Zyb20gZmVkb3JhLmNsaWVudCBpbXBvcnQgQWNjb3VudFN5c3RlbSwgQXV0 aEVycm9yCitmcm9tIGdldHBhc3MgaW1wb3J0IGdldHBhc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBn ZXR0ZXh0Citmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9ydCB5dWJpY28K KwordCA9IGdldHRleHQudHJhbnNsYXRpb24oJ2ZhcycsICcvdXNyL3NoYXJlL2xvY2FsZScsIGZh bGxiYWNrID0gVHJ1ZSkKK18gPSB0LmdldHRleHQKKwordHJ5OgorICAgIHlrZXkgPSB5dWJpY28u ZmluZF95dWJpa2V5KEZhbHNlKQorZXhjZXB0IHl1Ymljby55dWJpa2V5Lll1YmlLZXlFcnJvciBh cyBleDoKKyAgICBwcmludCgnVW5hYmxlIHRvIGdldCBhY2Nlc3MgdG8gYSB5dWJpa2V5OiAlcycg JSBleCkKKyAgICBzeXMuZXhpdCgxKQorCitwYXJzZXIgPSBPcHRpb25QYXJzZXIodmVyc2lvbiA9 ICIwLjEiKQorcGFyc2VyLmFkZF9vcHRpb24oJy11JywgJy0tdXNlcm5hbWUnLAorICAgICAgICAg ICAgICAgICAgZGVzdCA9ICd1c2VybmFtZScsCisgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0g Tm9uZSwKKyAgICAgICAgICAgICAgICAgIG1ldGF2YXIgPSAndXNlcm5hbWUnLAorICAgICAgICAg ICAgICAgICAgaGVscCA9IF8oJ0ZlZG9yYSBBY2NvdW50IFN5c3RlbSB1c2VybmFtZScpKQorcGFy c2VyLmFkZF9vcHRpb24oJy1TJywgJy0tc2xvdCcsCisgICAgICAgICAgICAgICAgICBkZXN0ID0g J3Nsb3QnLAorICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9ICcxJywKKyAgICAgICAgICAgICAg ICAgIG1ldGF2YXIgPSAnc2xvdCcsCisgICAgICAgICAgICAgICAgICBoZWxwID0gXygnVGhlIFl1 YmlrZXkgc2xvdCB0byBiZSB1c2VkJykpCitwYXJzZXIuYWRkX29wdGlvbignLVUnLCAnLS11cmwn LAorICAgICAgICAgICAgICAgICAgZGVzdCA9ICd1cmwnLAorICAgICAgICAgICAgICAgICAgZGVm YXVsdCA9ICdodHRwczovL2FkbWluLmZlZG9yYXByb2plY3Qub3JnL2FjY291bnRzLycsCisgICAg ICAgICAgICAgICAgICBtZXRhdmFyID0gJ3VybCcsCisgICAgICAgICAgICAgICAgICBoZWxwID0g XygnRkFTIFVSTCAoRGVmYXVsdDogaHR0cHM6Ly9hZG1pbi5mZWRvcmFwcm9qZWN0Lm9yZy9hY2Nv dW50cy8nKSkKKworKG9wdHMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorc2xvdCA9IG9w dHMuc2xvdAorCitpZiBub3Qgb3B0cy51c2VybmFtZToKKyAgICBwcmludChfKCdQbGVhc2UgcHJv dmlkZSBhIHVzZXJuYW1lLicpKQorICAgIHBhcnNlci5wcmludF9oZWxwKCkKKyAgICBzeXMuZXhp dCgwKQorCitwcmludChfKAorJycnCitBdHRlbnRpb246IFlvdSBhcmUgYWJvdXQgdG8gcmVwcm9n cmFtIHlvdXIgeXViaWtleSEgIFBsZWFzZSBlbnN1cmUgaXQgaXMKK3BsdWdnZWQgaW4gdG8geW91 ciBVU0Igc2xvdCBiZWZvcmUgY29udGludWluZy4gIFRoZSBzZWNyZXQga2V5IGN1cnJlbnRseSBv bgoreW91ciB5dWJpa2V5IHdpbGwgYmUgZGVzdHJveWVkIGFzIHBhcnQgb2YgdGhpcyBvcGVyYXRp b24hCisKKycnJykpCisKK3ByaW50KCdDb250YWN0aW5nICVzJyAlIG9wdHMudXJsKQorcGFzc3dv cmQgPSBnZXRwYXNzKCdQYXNzd29yZCBmb3IgJXM6ICcgJSBvcHRzLnVzZXJuYW1lKQorCitmYXMg PSBBY2NvdW50U3lzdGVtKHVzZXJuYW1lPW9wdHMudXNlcm5hbWUsIHBhc3N3b3JkPXBhc3N3b3Jk LCBiYXNlX3VybD1vcHRzLnVybCkKK3RyeToKKyAgICBuZXdfa2V5ID0gZmFzLnNlbmRfcmVxdWVz dCgneXViaWtleS9nZW5rZXknLCBhdXRoPVRydWUpCitleGNlcHQgQXV0aEVycm9yIGFzIGU6Cisg ICAgcHJpbnQoZSkKKyAgICBzeXMuZXhpdCgxKQorCitwcmludCgiIikKK3ByaW50KF8oJ05ldyBr ZXkgZ2VuZXJhdGVkIGluIEZBUywgYXR0ZW1wdGluZyB0byBidXJuIHRvIHl1YmlrZXknKSkKK3By aW50KCIiKQorCitvcHRzID0gbmV3X2tleVsna2V5J10uc3BsaXQoKQorCit0cnk6CisgICAgeWtj b25maWcgPSB5a2V5LmluaXRfY29uZmlnKCkKKyAgICB5a2NvbmZpZy5tb2RlX3l1YmlrZXlfb3Rw KGYnaDp7b3B0c1sxXX0nLmVuY29kZSgpLCBmJ2g6e29wdHNbMl19Jy5lbmNvZGUoKSkKKyAgICB5 a2NvbmZpZy5maXhlZF9zdHJpbmcoc3RyKGYnbTp7b3B0c1swXX0nKSkKKyAgICB5a2NvbmZpZy50 aWNrZXRfZmxhZygnQVBQRU5EX0NSJywgVHJ1ZSkKKyAgICB5a2NvbmZpZy5jb25maWdfZmxhZygn U1RBVElDX1RJQ0tFVCcsIEZhbHNlKQorICAgIGlmIHlrZXkudmVyc2lvbl9udW0oKSA+PSAoMiwg MSk6CisgICAgICAgIHlrY29uZmlnLmNvbmZpZ19mbGFnKCdTVFJPTkdfUFcxJywgRmFsc2UpCisg ICAgICAgIHlrY29uZmlnLmNvbmZpZ19mbGFnKCdTVFJPTkdfUFcyJywgRmFsc2UpCisgICAgICAg IHlrY29uZmlnLmNvbmZpZ19mbGFnKCdNQU5fVVBEQVRFJywgRmFsc2UpCisgICAgaWYgeWtleS52 ZXJzaW9uX251bSgpID49ICgyLCAyKToKKyAgICAgICAgeWtjb25maWcuZXh0ZW5kZWRfZmxhZygn U0VSSUFMX0FQSV9WSVNJQkxFJywgVHJ1ZSkKKyAgICB5a2V5LndyaXRlX2NvbmZpZyh5a2NvbmZp Zywgc2xvdD1pbnQoc2xvdCkpCisgICAgcHJpbnQoIlN1Y2Nlc3MhICBZb3VyIFl1YmlrZXkgSUQg aXMgJXMiICUgb3B0c1swXSkKK2V4Y2VwdCB5dWJpY28ueXViaWtleS5ZdWJpS2V5RXJyb3IgYXMg ZXg6CisgICAgcHJpbnQoJ1l1YmlrZXkgZXJyb3I6ICVzJyAlIGV4KQoKZGlmZiAtLWdpdCBhL2Zl ZG9yYS1nZXRzdm4gYi9mZWRvcmEtZ2V0c3ZuCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw MDAwMDAuLjcyZjA4YWIKLS0tIC9kZXYvbnVsbAorKysgYi9mZWRvcmEtZ2V0c3ZuCkBAIC0wLDAg KzEsMjIgQEAKKyMhIC9iaW4vc2gKKworaWYgWyAkIyAtbmUgMyBdOwordGhlbgorCWVjaG8gIlVz YWdlOiAkMCA8cHJvamVjdD4gPHVybD4gPHJldmlzaW9uPiIKKwlleGl0IDEKK2ZpCisKK3Byb2pl Y3Q9JDEKK3VybD0kMgorcmV2PSQzCisKK3RtcGRpcj1gbWt0ZW1wIC1kYAorY3VyZGlyPWBwd2Rg CisKKygKKyAgICBjZCAke3RtcGRpcn0KKyAgICBMQU5HPUMgVFo9R01UIHN2biBleHBvcnQgJHt1 cmx9IC1yICR7cmV2fSAke3Byb2plY3R9CisgICAgdGFyIGNqdmYgJHtjdXJkaXJ9LyR7cHJvamVj dH0tc3ZuJHtyZXZ9LnRhci5iejIgJHtwcm9qZWN0fQorKQorCitybSAtcmYgJHt0bXBkaXJ9Cgpk aWZmIC0tZ2l0IGEvZmVkb3JhLXBhY2thZ2VyLnNwZWMgYi9mZWRvcmEtcGFja2FnZXIuc3BlYwpp bmRleCA5NzBlOTE5Li5hOTdmMTYxIDEwMDY0NAotLS0gYS9mZWRvcmEtcGFja2FnZXIuc3BlYwor KysgYi9mZWRvcmEtcGFja2FnZXIuc3BlYwpAQCAtMSw3ICsxLDMgQEAKLSVpZiAhICgwJXs/ZmVk b3JhfSA+IDEyIHx8IDAlez9yaGVsfSA+IDUpCi0leyE/cHl0aG9uX3NpdGVsaWI6ICVnbG9iYWwg cHl0aG9uX3NpdGVsaWIgJSgle19fcHl0aG9ufSAtYyAiZnJvbSBkaXN0dXRpbHMuc3lzY29uZmln IGltcG9ydCBnZXRfcHl0aG9uX2xpYjsgcHJpbnQoZ2V0X3B5dGhvbl9saWIoKSkiKX0KLSVlbmRp ZgotCiBOYW1lOiAgICAgICAgICAgZmVkb3JhLXBhY2thZ2VyCiBWZXJzaW9uOiAgICAgICAgMC42 LjAuNwogUmVsZWFzZTogICAgICAgICVhdXRvcmVsZWFzZQpAQCAtMTAsMTEgKzYsMjUgQEAgU3Vt bWFyeTogICAgICAgIFRvb2xzIGZvciBzZXR0aW5nIHVwIGEgZmVkb3JhIG1haW50YWluZXIgZW52 aXJvbm1lbnQKICMgQXV0b21hdGljYWxseSBjb252ZXJ0ZWQgZnJvbSBvbGQgZm9ybWF0OiBHUEx2 MisgLSByZXZpZXcgaXMgaGlnaGx5IHJlY29tbWVuZGVkLgogTGljZW5zZTogICAgICAgIEdQTC0y LjAtb3ItbGF0ZXIKIFVSTDogICAgICAgICAgICBodHRwczovL3BhZ3VyZS5pby9mZWRvcmEtcGFj a2FnZXIKLVNvdXJjZTA6ICAgICAgICBodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvZmVkb3Jh LXBhY2thZ2VyL2ZlZG9yYS1wYWNrYWdlci0le3ZlcnNpb259LnRhci5iejIKKworU291cmNlMDog ICAgICAgIENPUFlJTkcKK1NvdXJjZTE6ICAgICAgICBmZWRvcmEtZ2V0c3ZuCitTb3VyY2UyOiAg ICAgICAgcGtnbmFtZS5weQorU291cmNlMzogICAgICAgIHJwbWJ1aWxkLW1kNQorU291cmNlNDog ICAgICAgIHNlY29uZGFyeS1rb2ppCitTb3VyY2U1OiAgICAgICAgZmtpbml0CitTb3VyY2U2OiAg ICAgICAgZmVkb3JhLWJ1cm4teXViaWtleS5weQorCitTb3VyY2UxMDogICAgICAgZmVkb3JhLmNv bmYKK1NvdXJjZTExOiAgICAgICBzMzkwLmNvbmYKK1NvdXJjZTEyOiAgICAgICBzdGcuY29uZgor U291cmNlMTM6ICAgICAgIGZlZG9yYXByb2plY3Rfb3JnCitTb3VyY2UxNDogICAgICAgc3RnX2Zl ZG9yYXByb2plY3Rfb3JnCitTb3VyY2UxNTogICAgICAgZmVkb3JhcHJvamVjdF9pcGFfY2EuY3J0 CitTb3VyY2UxNjogICAgICAgc3RnX2ZlZG9yYXByb2plY3RfaXBhX2NhLmNydAogCiBCdWlsZFJl cXVpcmVzOiAgcHl0aG9uMy1kZXZlbAotQnVpbGRSZXF1aXJlczogIG1ha2UKLUJ1aWxkUmVxdWly ZXM6ICBhdXRvbWFrZQorCiBSZXF1aXJlczogICAgICAga29qaSA+PSAxLjExLjAKIFJlcXVpcmVz OiAgICAgICBib2RoaS1jbGllbnQKIFJlcXVpcmVzOiAgICAgICBycG0tYnVpbGQgcnBtZGV2dG9v bHMgcnBtbGludApAQCAtMzYsNTEgKzQ2LDU2IEBAIFN1bW1hcnk6ICAgICAgICBmaWxlcyBmb3Ig Y29ubmVjdGluZyB2aWEga2VyYmVyb3MgdG8gRmVkb3JhCiAjIFRoaXMgaXMgdGhlIHZlcnNpb24g aW4gd2hpY2ggU05JIHdhcyBmaXhlZAogJWlmIDAlez9mZWRvcmF9CiBSZXF1aXJlczogICAgICAg a3JiNS13b3Jrc3RhdGlvbiA+PSAxLjE0LjMtNAotJWVsc2UKLSVpZiAwJXs/cmhlbH0gPj0gNwor JWVsaWYgMCV7P3JoZWx9ID49IDcKIFJlcXVpcmVzOiAgICAgICBrcmI1LXdvcmtzdGF0aW9uICA+ PSAxLjE0LjEtMjQKICVlbHNlCiAjIG9sZGVyIHJoZWxzIHdvbnQgZnVsbHkgd29yayB3aXRob3V0 IGNvbmZpZ3VyYXRpb24sIGJ1dCBsZXRzIG1ha2Ugc3VyZSB0aGV5IGhhdmUga3JiCiAjIHdlIHNo b3VsZCBiZSBhYmxlIHRvIGFzc3VtZSBuZXdlciBSSEVMcydzIHdpbGwgaGF2ZSBhIG5ldyBlbm91 Z2ggdmVyc2lvbgogUmVxdWlyZXM6ICAgICAgIGtyYjUtd29ya3N0YXRpb24KICVlbmRpZgotJWVu ZGlmCiBSZXF1aXJlczogICAgICAga3JiNS1wa2luaXQKIAotQnVpbGRBcmNoOiAgICAgIG5vYXJj aAotCiAlZGVzY3JpcHRpb24ga2VyYmVyb3MKIEZpbGVzIGZvciBjb25uZWN0aW5nIHZpYSBrZXJi ZXJvcyB0byBGZWRvcmEKIAogJXByZXAKLSVzZXR1cCAtcQorIyBuYWRhCiAKICVidWlsZAotJWNv bmZpZ3VyZSBQWVRIT049JXtfX3B5dGhvbjN9Ci0lbWFrZV9idWlsZAorIyBuYWRhCiAKICVpbnN0 YWxsCi0lbWFrZV9pbnN0YWxsCi1zZWQgLWkgLXIgJ3N8IyEvdXNyL2Jpbi9weXRob24kfCMhJXtf X3B5dGhvbjN9fCcgJXtidWlsZHJvb3R9L3Vzci8qYmluLyoKK2luc3RhbGwgLUQgJXtTT1VSQ0Uw fSAle2J1aWxkcm9vdH0le19saWNlbnNlZGlyfS8le25hbWV9L0NPUFlJTkcKK2luc3RhbGwgLUQg JXtTT1VSQ0UxfSAle2J1aWxkcm9vdH0le19iaW5kaXJ9L2ZlZG9yYS1nZXRzdm4KK2luc3RhbGwg LUQgJXtTT1VSQ0UyfSAle2J1aWxkcm9vdH0le19iaW5kaXJ9L3BrZ25hbWUKK2luc3RhbGwgLUQg JXtTT1VSQ0UzfSAle2J1aWxkcm9vdH0le19iaW5kaXJ9L3JwbWJ1aWxkLW1kNQoraW5zdGFsbCAt RCAle1NPVVJDRTR9ICV7YnVpbGRyb290fSV7X2JpbmRpcn0vczM5MC1rb2ppCitpbnN0YWxsIC1E ICV7U09VUkNFNH0gJXtidWlsZHJvb3R9JXtfYmluZGlyfS9zdGcta29qaQoraW5zdGFsbCAtRCAl e1NPVVJDRTV9ICV7YnVpbGRyb290fSV7X2JpbmRpcn0vZmtpbml0CitpbnN0YWxsIC1EICV7U09V UkNFNn0gJXtidWlsZHJvb3R9JXtfYmluZGlyfS9mZWRvcmEtYnVybi15dWJpa2V5CisKK2luc3Rh bGwgLW0wNjQ0IC1EdCAle2J1aWxkcm9vdH0le19zeXNjb25mZGlyfS9rb2ppLmNvbmYuZC8gXAor ICAle1NPVVJDRTEwfSAle1NPVVJDRTExfSAle1NPVVJDRTEyfQoraW5zdGFsbCAtbTA2NDQgLUR0 ICV7YnVpbGRyb290fSV7X3N5c2NvbmZkaXJ9L2tyYjUuY29uZi5kLyBcCisgICV7U09VUkNFMTN9 ICV7U09VUkNFMTR9CitpbnN0YWxsIC1tMDY0NCAtRHQgJXtidWlsZHJvb3R9JXtfc3lzY29uZmRp cn0vcGtpL2lwYS8gXAorICAle1NPVVJDRTE1fSAle1NPVVJDRTE2fQorCiAjIFRoZSBmZWRvcmEt YnVybi15dWJpa2V5IHV0aWxpdHkgb25seSB3b3JrZWQgd2l0aCBmYXMyLCB3aGljaCBpcyBub3cg cmV0aXJlZC4KLXJtIC1mICV7YnVpbGRyb290fS91c3Ivc2Jpbi9mZWRvcmEtYnVybi15dWJpa2V5 CisjIHJtIC1mICV7YnVpbGRyb290fS91c3Ivc2Jpbi9mZWRvcmEtYnVybi15dWJpa2V5CiAKICVm aWxlcwotJWxpY2Vuc2UgQ09QWUlORwotJWRvYyBUT0RPIEFVVEhPUlMgQ2hhbmdlTG9nCi0le19i aW5kaXJ9LyoKLSVleGNsdWRlICV7X2JpbmRpcn0vZmVkb3JhLWhvc3RlZAotJWV4Y2x1ZGUgJXtf YmluZGlyfS9mZWRvcmEtcGFja2FnZXItc2V0dXAKLSVleGNsdWRlICV7X2JpbmRpcn0vZmVkb3Jh ZGV2LXBrZ293bmVycwotJWV4Y2x1ZGUgJXtfYmluZGlyfS9mZWRvcmEtY2VydAotJWV4Y2x1ZGUg JXtfYmluZGlyfS9ma2luaXQKLSVleGNsdWRlICV7cHl0aG9uM19zaXRlbGlifS9mZWRvcmFfY2Vy dAotCislbGljZW5zZSAle19saWNlbnNlZGlyfS8le25hbWV9LworJXtfYmluZGlyfS9mZWRvcmEt Z2V0c3ZuCisle19iaW5kaXJ9L3BrZ25hbWUKKyV7X2JpbmRpcn0vcnBtYnVpbGQtbWQ1Cisle19i aW5kaXJ9L3MzOTAta29qaQorJXtfYmluZGlyfS9zdGcta29qaQorJXtfYmluZGlyfS9mZWRvcmEt YnVybi15dWJpa2V5CiAlY29uZmlnKG5vcmVwbGFjZSkgJXtfc3lzY29uZmRpcn0va29qaS5jb25m LmQvKgogCi0KICVmaWxlcyBrZXJiZXJvcwotJWxpY2Vuc2UgQ09QWUlORworJWxpY2Vuc2UgJXtf bGljZW5zZWRpcn0vJXtuYW1lfS8KICV7X2JpbmRpcn0vZmtpbml0CiAlY29uZmlnICV7X3N5c2Nv bmZkaXJ9L2tyYjUuY29uZi5kLyoKICV7X3N5c2NvbmZkaXJ9L3BraS9pcGEvKgoKZGlmZiAtLWdp dCBhL2ZlZG9yYS5jb25mIGIvZmVkb3JhLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNDI5ZDY3OQotLS0gL2Rldi9udWxsCisrKyBiL2ZlZG9yYS5jb25mCkBAIC0wLDAg KzEsMTYgQEAKK1tmZWRvcmFdCisKKztjb25maWd1cmF0aW9uIGZvciBrb2ppIGNsaSB0b29sCisK Kzt1cmwgb2YgWE1MUlBDIHNlcnZlcgorc2VydmVyID0gaHR0cHM6Ly9rb2ppLmZlZG9yYXByb2pl Y3Qub3JnL2tvamlodWIKKworO3VybCBvZiB3ZWIgaW50ZXJmYWNlCit3ZWJ1cmwgPSBodHRwczov L2tvamkuZmVkb3JhcHJvamVjdC5vcmcva29qaQorCis7dXJsIG9mIHBhY2thZ2UgZG93bmxvYWQg c2l0ZQordG9wdXJsID0gaHR0cHM6Ly9rb2ppcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy8KKworYXV0 aHR5cGUgPSBrZXJiZXJvcworCit1c2VfZmFzdF91cGxvYWQgPSB5ZXMKCmRpZmYgLS1naXQgYS9m ZWRvcmFwcm9qZWN0X2lwYV9jYS5jcnQgYi9mZWRvcmFwcm9qZWN0X2lwYV9jYS5jcnQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRhMWM3YgotLS0gL2Rldi9udWxsCisrKyBi L2ZlZG9yYXByb2plY3RfaXBhX2NhLmNydApAQCAtMCwwICsxLDIyIEBACistLS0tLUJFR0lOIENF UlRJRklDQVRFLS0tLS0KK01JSURwRENDQW95Z0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZB REE4TVJvd0dBWURWUVFLREJGR1JVUlAKK1VrRlFVazlLUlVOVUxrOVNSekVlTUJ3R0ExVUVBd3dW UTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1CNFgKK0RURTJNVEF4TXpFek1EUTBObG9YRFRN Mk1UQXhNekV6TURRME5sb3dQREVhTUJnR0ExVUVDZ3dSUmtWRVQxSkIKK1VGSlBTa1ZEVkM1UFVr Y3hIakFjQmdOVkJBTU1GVU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVRDQ0FTSXcKK0RRWUpL b1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMTEZDUHJzUEQzWVcveXp2SWQ3VXNXQ3Ev QWMKK2NEN0lPdGx0NDZzbFRhNDkwVHZmcHd6QjFJd0EzSDBMVEVZVjdMT05NSXhKSVQ4SDRIMlA3 QS9TNGVEdEE2c1oKK3MyNlFwKzNZTGorakhPd3ZOaU9ORzVZQkluNnZnVUtjMVNkd3l1UXNOd2NH c0gxblYydlhyS1l6NGNjTXVkMVAKK3R6endSTVNXZ3daTFhjTHZNTVhZcERDeHU0cFZtZ0V0VG5Z ejdEaWk3TUoyYUpzV0V1c2x6akw2SGphZWdmR0QKK0pqWENycW1OS2NnYmdEN2ZRcTA1d2lZdzhB YkFyamhmT2JETzYyNmI0bmFCMFZ4TGI5dkdUREJhUmJJZUw3T3IKK25NMTFCV1ZxWUFGRlJaUEwx alhrZWI5QnByOW9qNFBkdVJxNit0U1pQYTN3Z3Rub293QU4yQXFMSEtNQ0F3RUEKK0FhT0JzRENC clRBZkJnTlZIU01FR0RBV2dCUVZyaWpCaHJMQjZ4d2t3alpyb0FsV0pHSXB2REFQQmdOVkhSTUIK K0FmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCeGpBZEJnTlZIUTRFRmdRVUZhNG93WWF5 d2VzY0pNSTIKK2E2QUpWaVJpS2J3d1NnWUlLd1lCQlFVSEFRRUVQakE4TURvR0NDc0dBUVVGQnpB QmhpNW9kSFJ3T2k4dmFYQmgKK01ERXVjR2g0TWk1bVpXUnZjbUZ3Y205cVpXTjBMbTl5WnpvNE1D OWpZUzl2WTNOd01BMEdDU3FHU0liM0RRRUIKK0N3VUFBNElCQVFBWkU1WlZmMk1ST3RSUjJPMDBl Y1h3bDN2QkU3Mnh3ODdFUWRBUTZKOXNEanVnNVlyVlc2T1UKK09mYVJvVkx5QlNpNXVQZ2oyUlo5 VmVQZEdOU0RaNjZEaHNwUHRtYldjVzBNMVgyUVBYd1dRL0lkajNNZktFMzMKK2IrVjRBNlQ1NXAx a3hYbmlObDBLWkhsRFZNRUNsdHdSQmtkOW1qcjNMZ1d6ay9FZ3F5aVA1NnhyV0VzdktVeXYKK1pN dm95Rmt5Mi9CYU5UTjhLT3Bvc2pEUVp3UjVzcUUvQ0p6bS9RSlBnLzZ6UTQvdGtGRE9jN1pxSVZr Zklxb1kKK3N5Y05ZTExha3FDVjU5eHVKMnVEYlY4U244TGJINStlM1B4MG1hcG5WeG44ZkpBUGND cURPbVhKNVRWa1ZZbEgKK25ZWU9za3FFdzVzdEhZdUV3dWpSMnVYbzh2Zm1JTXBaCistLS0tLUVO RCBDRVJUSUZJQ0FURS0tLS0tCgpkaWZmIC0tZ2l0IGEvZmVkb3JhcHJvamVjdF9vcmcgYi9mZWRv cmFwcm9qZWN0X29yZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjJkZDEw Ci0tLSAvZGV2L251bGwKKysrIGIvZmVkb3JhcHJvamVjdF9vcmcKQEAgLTAsMCArMSwxMSBAQAor W3JlYWxtc10KKyBGRURPUkFQUk9KRUNULk9SRyA9IHsKKyAgICAgICAga2RjID0gaHR0cHM6Ly9p ZC5mZWRvcmFwcm9qZWN0Lm9yZy9LZGNQcm94eQorICAgICAgICBwa2luaXRfYW5jaG9ycyA9IEZJ TEU6L2V0Yy9wa2kvaXBhL2ZlZG9yYXByb2plY3RfaXBhX2NhLmNydAorIH0KK1tkb21haW5fcmVh bG1dCisgLmZlZG9yYXByb2plY3Qub3JnID0gRkVET1JBUFJPSkVDVC5PUkcKKyBmZWRvcmFwcm9q ZWN0Lm9yZyA9IEZFRE9SQVBST0pFQ1QuT1JHCisgLmNlbnRvcy5vcmcgPSBGRURPUkFQUk9KRUNU Lk9SRworIGNlbnRvcy5vcmcgPSBGRURPUkFQUk9KRUNULk9SRworCgpkaWZmIC0tZ2l0IGEvZmtp bml0IGIvZmtpbml0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNlMDlkYmMK LS0tIC9kZXYvbnVsbAorKysgYi9ma2luaXQKQEAgLTAsMCArMSwxMTIgQEAKKyMhL2Jpbi9iYXNo CisKKyMgQ3JlYXRlZCBieSBhcmdiYXNoLWluaXQgdjIuMTAuMAorIyBBUkdfT1BUSU9OQUxfU0lO R0xFKFt1c2VyXSxbdV0sW0ZlZG9yYSBhY2NvdW50IG5hbWVdLFskVVNFUl0pCisjIEFSR19PUFRJ T05BTF9CT09MRUFOKFtzdGFnaW5nXSxbXSxbVXNlIHRoZSBzdGFnaW5nIGluZnJhc3RydWN0dXJl XSkKKyMgQVJHX0hFTFAoW0FjcXVpcmUgYSBLZXJiZXJvcyB0aWNrZXQtZ3JhbnRpbmcgdGlja2V0 IGZvciBGZWRvcmFdKQorIyBBUkdCQVNIX0dPKCkKKyMgbmVlZGVkIGJlY2F1c2Ugb2YgQXJnYmFz aCAtLT4gbTRfaWdub3JlKFsKKyMjIyBTVEFSVCBPRiBDT0RFIEdFTkVSQVRFRCBCWSBBcmdiYXNo IHYyLjEwLjAgb25lIGxpbmUgYWJvdmUgIyMjCisjIEFyZ2Jhc2ggaXMgYSBiYXNoIGNvZGUgZ2Vu ZXJhdG9yIHVzZWQgdG8gZ2V0IGFyZ3VtZW50cyBwYXJzaW5nIHJpZ2h0LgorIyBBcmdiYXNoIGlz IEZSRUUgU09GVFdBUkUsIHNlZSBodHRwczovL2FyZ2Jhc2guaW8gZm9yIG1vcmUgaW5mbworCisK K2RpZSgpCit7CisJbG9jYWwgX3JldD0iJHsyOi0xfSIKKwl0ZXN0ICIke19QUklOVF9IRUxQOi1u b30iID0geWVzICYmIHByaW50X2hlbHAgPiYyCisJZWNobyAiJDEiID4mMgorCWV4aXQgIiR7X3Jl dH0iCit9CisKKworYmVnaW5zX3dpdGhfc2hvcnRfb3B0aW9uKCkKK3sKKwlsb2NhbCBmaXJzdF9v cHRpb24gYWxsX3Nob3J0X29wdGlvbnM9J3VoJworCWZpcnN0X29wdGlvbj0iJHsxOjA6MX0iCisJ dGVzdCAiJGFsbF9zaG9ydF9vcHRpb25zIiA9ICIke2FsbF9zaG9ydF9vcHRpb25zLyRmaXJzdF9v cHRpb24vfSIgJiYgcmV0dXJuIDEgfHwgcmV0dXJuIDAKK30KKworIyBUSEUgREVGQVVMVFMgSU5J VElBTElaQVRJT04gLSBPUFRJT05BTFMKK19hcmdfdXNlcj0iJFVTRVIiCitfYXJnX3N0YWdpbmc9 Im9mZiIKKworCitwcmludF9oZWxwKCkKK3sKKwlwcmludGYgJyVzXG4nICJBY3F1aXJlIGEgS2Vy YmVyb3MgdGlja2V0LWdyYW50aW5nIHRpY2tldCBmb3IgRmVkb3JhIgorCXByaW50ZiAnVXNhZ2U6 ICVzIFstdXwtLXVzZXIgPGFyZz5dIFstLShuby0pc3RhZ2luZ10gWy1ofC0taGVscF1cbicgIiQw IgorCXByaW50ZiAnXHQlc1xuJyAiLXUsIC0tdXNlcjogRmVkb3JhIGFjY291bnQgbmFtZSAoZGVm YXVsdDogJyRVU0VSJykiCisJcHJpbnRmICdcdCVzXG4nICItLXN0YWdpbmc6IFVzZSB0aGUgc3Rh Z2luZyBpbmZyYXN0cnVjdHVyZSAob2ZmIGJ5IGRlZmF1bHQpIgorCXByaW50ZiAnXHQlc1xuJyAi LWgsIC0taGVscDogUHJpbnRzIGhlbHAiCit9CisKKworcGFyc2VfY29tbWFuZGxpbmUoKQorewor CXdoaWxlIHRlc3QgJCMgLWd0IDAKKwlkbworCQlfa2V5PSIkMSIKKwkJY2FzZSAiJF9rZXkiIGlu CisJCQktdXwtLXVzZXIpCisJCQkJdGVzdCAkIyAtbHQgMiAmJiBkaWUgIk1pc3NpbmcgdmFsdWUg Zm9yIHRoZSBvcHRpb25hbCBhcmd1bWVudCAnJF9rZXknLiIgMQorCQkJCV9hcmdfdXNlcj0iJDIi CisJCQkJc2hpZnQKKwkJCQk7OworCQkJLS11c2VyPSopCisJCQkJX2FyZ191c2VyPSIke19rZXkj Iy0tdXNlcj19IgorCQkJCTs7CisJCQktdSopCisJCQkJX2FyZ191c2VyPSIke19rZXkjIy11fSIK KwkJCQk7OworCQkJLS1zdGFnaW5nKQorCQkJCV9hcmdfc3RhZ2luZz0ib24iCisJCQkJOzsKKwkJ CS1ofC0taGVscCkKKwkJCQlwcmludF9oZWxwCisJCQkJZXhpdCAwCisJCQkJOzsKKwkJCS1oKikK KwkJCQlwcmludF9oZWxwCisJCQkJZXhpdCAwCisJCQkJOzsKKwkJCSopCisJCQkJX1BSSU5UX0hF TFA9eWVzIGRpZSAiRkFUQUwgRVJST1I6IEdvdCBhbiB1bmV4cGVjdGVkIGFyZ3VtZW50ICckMSci IDEKKwkJCQk7OworCQllc2FjCisJCXNoaWZ0CisJZG9uZQorfQorCitwYXJzZV9jb21tYW5kbGlu ZSAiJEAiCisKKyMgT1RIRVIgU1RVRkYgR0VORVJBVEVEIEJZIEFyZ2Jhc2gKKworIyMjIEVORCBP RiBDT0RFIEdFTkVSQVRFRCBCWSBBcmdiYXNoIChzb3J0b2YpICMjIyBdKQorIyBbIDwtLSBuZWVk ZWQgYmVjYXVzZSBvZiBBcmdiYXNoCisKK2ZpbmFsaXplKCkKK3sKKyAgcm0gLWYgJGFybW9yY2Fj aGUKK30KKworc2V0IC1lCisKK2FybW9yY2FjaGU9JChta3RlbXApCit0cmFwIGZpbmFsaXplIEVY SVQKKworaWYgWyAiJF9hcmdfc3RhZ2luZyIgPT0gIm9uIiBdOyB0aGVuCisgICAgZG9tYWluPVNU Ry5GRURPUkFQUk9KRUNULk9SRworZWxzZQorICAgIGRvbWFpbj1GRURPUkFQUk9KRUNULk9SRwor ZmkKKwora2luaXQgLW4gQCRkb21haW4gLWMgRklMRTokYXJtb3JjYWNoZQorCitlY2hvICJFbnRl ciB5b3VyIHBhc3N3b3JkIGFuZCBPVFAgY29uY2F0ZW5hdGVkLiAoSWdub3JlIHRoYXQgdGhlIHBy b21wdCBpcyBmb3Igb25seSB0aGUgdG9rZW4pIgora2luaXQgLVQgRklMRTokYXJtb3JjYWNoZSAk X2FyZ191c2VyQCRkb21haW4KKworCisjIF5eXiAgVEVSTUlOQVRFIFlPVVIgQ09ERSBCRUZPUkUg VEhFIEJPVFRPTSBBUkdCQVNIIE1BUktFUiAgXl5eCisKKyMgXSA8LS0gbmVlZGVkIGJlY2F1c2Ug b2YgQXJnYmFzaAoKZGlmZiAtLWdpdCBhL3BrZ25hbWUucHkgYi9wa2duYW1lLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMGFkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9w a2duYW1lLnB5CkBAIC0wLDAgKzEsMzIgQEAKKyMhL3Vzci9iaW4vcHl0aG9uMworIiIiCitQaXBl IHBhY2thZ2UgTkVWUkFzIGludG8gdGhpcyBzY3JpcHQgdG8gZ2V0IHBhY2thZ2UgbmFtZXMuCisK K05FVlJBIHN0YW5kcyBmb3IgTmFtZSwgRXBvY2gsIFZlcnNpb24sIFJlbGVhc2UsIEFyY2hpdGVj dHVyZS4gRS5nLjoKKworICAgICQgZWNobyBmZWRvcmEtcGFja2FnZXItMDowLjYuMC40LTEuZmMz Mi5ub2FyY2ggfCBwa2duYW1lCisgICAgZmVkb3JhLXBhY2thZ2VyCisKK1lvdSBjYW4gb21pdCBl cG9jaCBhbmQvb3IgYXJjaGl0ZWN0dXJlOgorCisgICAgJCBlY2hvIGZlZG9yYS1wYWNrYWdlci0w LjYuMC40LTEuZmMzMiB8IHBrZ25hbWUKKyAgICBmZWRvcmEtcGFja2FnZXIKKworQnV0LCBpZiB2 ZXJzaW9uIGFuZCByZWxlYXNlIGlzIG9taXR0ZWQsIHRoZSBzY3JpcHQgY2FuIHByb2R1Y2UgaW52 YWxpZCByZXN1bHRzOgorCisgICAgJCBlY2hvIGZlZG9yYS1wYWNrYWdlciB8IHBrZ25hbWUKKyAg ICBmZWRvcmEKKworQ3JlYXRlZCBieSBNaXJvIEhyb27EjW9rLCB3aXRoIHN1Z2dlc3Rpb25zIGZy b20gQWRhbSBXaWxsaWFtc29uLgorCitUaGlzIHNjcmlwdCBpcyB0cml2aWFsLCBjb25zaWRlciBp dCBQdWJsaWMgRG9tYWluLgorIiIiCitpbXBvcnQgZmlsZWlucHV0CitpbXBvcnQgc3lzCisKKwor aWYgbGVuKHN5cy5hcmd2KSA+IDE6CisgICAgc3lzLmV4aXQoX19kb2NfXy5zdHJpcCgpKQorCitm b3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoKToKKyAgICBwcmludChsaW5lLnJzcGxpdCgiLSIs IDIpWzBdKQoKZGlmZiAtLWdpdCBhL3JwbWJ1aWxkLW1kNSBiL3JwbWJ1aWxkLW1kNQpuZXcgZmls ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZWZlMDRkCi0tLSAvZGV2L251bGwKKysrIGIv cnBtYnVpbGQtbWQ1CkBAIC0wLDAgKzEsNiBAQAorIyEvYmluL2Jhc2gKK3JwbWJ1aWxkIC0tZGVm aW5lICJfc291cmNlX2ZpbGVkaWdlc3RfYWxnb3JpdGhtIDEiIFwKKyAgICAgICAgIC0tZGVmaW5l ICJfYmluYXJ5X2ZpbGVkaWdlc3RfYWxnb3JpdGhtIDEiIFwKKyAgICAgICAgIC0tZGVmaW5lICJf YmluYXJ5X3BheWxvYWQgdzkuZ3pkaW8iIFwKKyAgICAgICAgIC0tZGVmaW5lICJfc291cmNlX3Bh eWxvYWQgdzkuZ3pkaW8iIFwKKyAgICAgICAgIC0tZGVmaW5lICJfZGVmYXVsdF9wYXRjaF9mdXp6 IDIiICIkQCIKCmRpZmYgLS1naXQgYS9zMzkwLmNvbmYgYi9zMzkwLmNvbmYKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg5MGFiOAotLS0gL2Rldi9udWxsCisrKyBiL3MzOTAu Y29uZgpAQCAtMCwwICsxLDE2IEBACitbczM5MF0KKworO2NvbmZpZ3VyYXRpb24gZm9yIGtvamkg Y2xpIHRvb2wKKworO3VybCBvZiBYTUxSUEMgc2VydmVyCitzZXJ2ZXIgPSBodHRwczovL3MzOTAu a29qaS5mZWRvcmFwcm9qZWN0Lm9yZy9rb2ppaHViCisKKzt1cmwgb2Ygd2ViIGludGVyZmFjZQor d2VidXJsID0gaHR0cHM6Ly9zMzkwLmtvamkuZmVkb3JhcHJvamVjdC5vcmcva29qaQorCis7dXJs IG9mIHBhY2thZ2UgZG93bmxvYWQgc2l0ZQordG9wdXJsID0gaHR0cHM6Ly9zMzkwcGtncy5mZWRv cmFwcm9qZWN0Lm9yZy8KKworYXV0aHR5cGUgPSBrZXJiZXJvcworCit1c2VfZmFzdF91cGxvYWQg PSB5ZXMKCmRpZmYgLS1naXQgYS9zZWNvbmRhcnkta29qaSBiL3NlY29uZGFyeS1rb2ppCm5ldyBm aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgxM2ViN2UKLS0tIC9kZXYvbnVsbAorKysg Yi9zZWNvbmRhcnkta29qaQpAQCAtMCwwICsxLDEyIEBACisjISAvYmluL3NoCisKK2FyY2g9YGJh c2VuYW1lICQwIHwgY3V0IC1kICctJyAtZiAxYAorCitjb25maWc9Ii9ldGMva29qaS5jb25mLmQv JHthcmNofS5jb25mIgorCitpZiBbICEgLWYgJGNvbmZpZyBdOyB0aGVuCisgICAgZWNobyAiQ29u ZmlnIGZpbGUgZm9yICRhcmNoIGRvZXNuJ3QgZXhpc3QiCisgICAgZXhpdCAxCitmaQorCitrb2pp IC0tcHJvZmlsZSAke2FyY2h9ICIkQCIKCmRpZmYgLS1naXQgYS9zdGcuY29uZiBiL3N0Zy5jb25m Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMWM3MzMKLS0tIC9kZXYvbnVs bAorKysgYi9zdGcuY29uZgpAQCAtMCwwICsxLDE2IEBACitbc3RnXQorCis7Y29uZmlndXJhdGlv biBmb3Iga29qaSBjbGkgdG9vbAorCis7dXJsIG9mIFhNTFJQQyBzZXJ2ZXIKK3NlcnZlciA9IGh0 dHBzOi8va29qaS5zdGcuZmVkb3JhcHJvamVjdC5vcmcva29qaWh1YgorCis7dXJsIG9mIHdlYiBp bnRlcmZhY2UKK3dlYnVybCA9IGh0dHBzOi8va29qaS5zdGcuZmVkb3JhcHJvamVjdC5vcmcva29q aQorCis7dXJsIG9mIHBhY2thZ2UgZG93bmxvYWQgc2l0ZQordG9wdXJsID0gaHR0cHM6Ly9rb2pp cGtncy5zdGcuZmVkb3JhcHJvamVjdC5vcmcvCisKK2F1dGh0eXBlID0ga2VyYmVyb3MKKwordXNl X2Zhc3RfdXBsb2FkID0geWVzCgpkaWZmIC0tZ2l0IGEvc3RnX2ZlZG9yYXByb2plY3RfaXBhX2Nh LmNydCBiL3N0Z19mZWRvcmFwcm9qZWN0X2lwYV9jYS5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNDFhM2FjNgotLS0gL2Rldi9udWxsCisrKyBiL3N0Z19mZWRvcmFwcm9q ZWN0X2lwYV9jYS5jcnQKQEAgLTAsMCArMSwyNyBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t LS0tCitNSUlFcVRDQ0F4R2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURCQU1SNHdIQVlE VlFRS0RCVlRWRWN1CitSa1ZFVDFKQlVGSlBTa1ZEVkM1UFVrY3hIakFjQmdOVkJBTU1GVU5sY25S cFptbGpZWFJsSUVGMWRHaHZjbWwwCitlVEFlRncweU1UQXlNVEV4TXpFeE1EQmFGdzAwTVRBeU1U RXhNekV4TURCYU1FQXhIakFjQmdOVkJBb01GVk5VCitSeTVHUlVSUFVrRlFVazlLUlVOVUxrOVNS ekVlTUJ3R0ExVUVBd3dWUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5CithWFI1TUlJQm9qQU5CZ2tx aGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUEwTXpROU9WZzRLVEVzMkdvCitBU3djVzF6 L3RKYzYweDdIRzVWRkM2RVdmdDNNUEgxcDRBUExKL0JaNEYvK0NoSGJiRzM1TlRpZzBxSzBTaUxZ CitjdDhHeXc2NkZvQjJLUXZrcy8xa0NYdVFxdUxuTUNtOWFFRkFqbE5EdFVoOWtjR3JyakNmUDRk dXdUNnAvZGwwCitIdWU5Si9GckNYZnJ4bjNHU3dpempDMlpaWlYvc0wzaURoM3AyZUJEa3NYcGpH Z1F1RHUybiswZzVVMGRzTmhNCis5RVlSa1gySi92ZUVTUzN6cFlEd1JWSFB3eElxbUVHckswd3Jv cVh3UlpWZjI1SGRzbVA0QjY1SXozYVFLZVhFCitwbEx0WjZQOTlZZk9SUXZ1OUdMaGNnTFBsNVJR cHZSQkdhY3B5ekdMaFhxcEFJbDMxUHl1ckMrOXlBdkxBTkZsCitOY3hmOHljdkhHb090aVJQQWJt V1crUCt3ZXVvbm1lc0huOG4zUFY2SlhjVWtHb1NGZGZYdzBNREFoTEhDR1F4Cis4RHlyT1o4enNr V2RCekZ4ZENPSVMvQ09udlVXQnNqRjZoenVVZ0lrM0hvODlMeUJZS1ptMW9DK0lDVGc5NEF1Citk RTFNT1pRMUE5UmxsTjNMUDFkSFBpQWRydEJkdVdQc0NZY25tZ2VpSEgrakxyMnRBZ01CQUFHamdh MHdnYW93CitId1lEVlIwakJCZ3dGb0FVUXl1bkVVQ09seVNvMnkzK3NGcjdpdk01eUc4d0R3WURW UjBUQVFIL0JBVXdBd0VCCisvekFPQmdOVkhROEJBZjhFQkFNQ0FjWXdIUVlEVlIwT0JCWUVGRU1y cHhGQWpwY2txTnN0L3JCYSs0cnpPY2h2CitNRWNHQ0NzR0FRVUZCd0VCQkRzd09UQTNCZ2dyQmdF RkJRY3dBWVlyYUhSMGNEb3ZMMmx3WVMxallTNXpkR2N1CitabVZrYjNKaGNISnZhbVZqZEM1dmNt Y3ZZMkV2YjJOemNEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FZRUFEVlhzCiszaVR4REE3Y0E2VERL ZmpzM0dySGs5NExubkx4QUlLVHViWUV3MVVabVZjeCsrSkN5MnVVYzdab3JncTVXa05QCit4bXFy S3FoSlRWNkJ6b1ZWaEZ4ZG9mK3JvM3FXODBkUmNBdFVtOWhlcXI4SEJHam9STWEvbU1sRHM3bmIv MEFICitYTGU3VVdZR1czcW94eFVJZU1XTDFVNzM2YWdXVkZ4UlNlNG5nOHV2ckdhYzd0SzB0VzNv aUFrSWQzUHdMNkJNCitqTGFvTXNmWEZPSzEzR0FQMlAvVm51TERNSk42dGFSMkJHUWtxaTdvWjlE bVI2SGNxRzRNdFlCaVFnTGh2SDc1CitKc0tDL1JPTHRsQy9nYlNoc3k1V0R5M0Riby9FaThRTXFo dWRRcnRObFFlTlVYQVNtOHJVdmtKbWVJc3BUelBECitmT3l3aFZ5Z1lpeUl2aWdHT21pdXd0ZnBQ UWFQSE9Xc29zZ2t3bXpxMTA0d252MklMYVE4K29ZZjYxN2J4bGRSCis5ZDZsOE9NT2lZcXQzNGZM Yk1TdzE1RytPRW5sN3Q5NlVTdUNYSWloVlRVMVlrcW1ydWhuL080RWVYZDlRaUlyCis3cWxHY25L SnB4d0xDbUhCdHcza3Y4UGdLOUVqR1FwTFBGVFBpSVAwclNIVFZUUUZVYjhJWSt0R0cwanoKKy0t LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCmRpZmYgLS1naXQgYS9zdGdfZmVkb3JhcHJvamVjdF9v cmcgYi9zdGdfZmVkb3JhcHJvamVjdF9vcmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOTQwNDIyZQotLS0gL2Rldi9udWxsCisrKyBiL3N0Z19mZWRvcmFwcm9qZWN0X29yZwpA QCAtMCwwICsxLDggQEAKK1tyZWFsbXNdCisgU1RHLkZFRE9SQVBST0pFQ1QuT1JHID0geworICAg ICAgICBrZGMgPSBodHRwczovL2lkLnN0Zy5mZWRvcmFwcm9qZWN0Lm9yZy9LZGNQcm94eQorICAg ICAgICBwa2luaXRfYW5jaG9ycyA9IEZJTEU6L2V0Yy9wa2kvaXBhL3N0Z19mZWRvcmFwcm9qZWN0 X2lwYV9jYS5jcnQKKyB9CitbZG9tYWluX3JlYWxtXQorIC5zdGcuZmVkb3JhcHJvamVjdC5vcmcg PSBTVEcuRkVET1JBUFJPSkVDVC5PUkcKKyBzdGcuZmVkb3JhcHJvamVjdC5vcmcgPSBTVEcuRkVE T1JBUFJPSkVDVC5PUkcK