From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 87C866E896 for ; Thu, 20 Feb 2020 01:13:41 +0000 (UTC) From: Akeem G Abodunrin Date: Wed, 19 Feb 2020 09:57:51 -0800 Message-Id: <20200219175751.15293-2-akeem.g.abodunrin@intel.com> In-Reply-To: <20200219175751.15293-1-akeem.g.abodunrin@intel.com> References: <20200219175751.15293-1-akeem.g.abodunrin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 1/1] tools/generate_cb_buffer: Add script to assemble CB kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: akeem.g.abodunrin@intel.com, jon.bloomfield@intel.com, sudeep.dutt@intel.com, daniel.vetter@intel.com, joonas.lahtinen@linux.intel.com, jani.nikula@intel.com, chris.p.wilson@intel.com, prathap.kumar.valsan@intel.com, mika.kuoppala@intel.com, francesco.balestrieri@intel.com, ville.syrjala@linux.intel.com, petri.latvala@intel.com, igt-dev@lists.freedesktop.org List-ID: VGhpcyBwYXRjaCBhZGRzIHNjcmlwdCBhbmQgYXBwbGljYWJsZSBhc3NlbWJseSBzb3VyY2VzLCBz byB0aGF0IHdlIGNhbiB1c2UKaWd0IHRvIGFzc2VtYmxlIENsZWFyIEJhdGNoIEJ1ZmZlciBrZXJu ZWwgZm9yIGdlbjcgYW5kIGdlbjcuNSBkZXZpY2VzIC0KUmVzdWx0YW50IGhlYWRlciBmaWxlcyB3 b3VsZCBiZSBpbXBvcnRlZCB0byBpOTE1LCBhbmQgdXNlZCBhcyB0aGV5IGFyZS4uLgoKV2l0aCB0 aGlzIHBhdGNoLCB1c2VyIG5lZWQgdG8gaGF2ZSBtZXNhIGNvbmZpZ3VyZWQgb24gdGhlaXIgcGxh dGZvcm0sCmJlZm9yZSBpZ3QgY291bGQgYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBwdXJwb3NlIG9m IGFzc2VtYmxpbmcgdGhlIGtlcm5lbApmcm9tIHNvdXJjZS4KClRoaXMgaXMgbmVlZGVkIGZvciAi U2VjdXJpdHkgbWl0aWdhdGlvbiBmb3IgSW50ZWwgR2VuNy83LjUgSFdzIgpJbnRlbCBJRDogUFNJ UlQtVEEtMjAxOTEwLTAwMS9DVkVJRDogQ1ZFLTIwMTktMTQ2MTUKCnYyOiBBZGRyZXNzZWQgZm9y bWF0dGluZywgLWcgb3B0aW9uIGFuZCBvdGhlciBtaW5vciBpc3N1ZXMgKFBldHJpKQoKQ2M6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMu bGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFs YUBpbnRlbC5jb20+CkNjOiBCbG9vbWZpZWxkIEpvbiA8am9uLmJsb29tZmllbGRAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBBa2VlbSBHIEFib2R1bnJpbiA8YWtlZW0uZy5hYm9kdW5yaW5AaW50 ZWwuY29tPgotLS0KIHNjcmlwdHMvYXNtX2V1X2tlcm5lbC5zaCAgICAgICAgICAgICAgICB8IDE2 NSArKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2Fzc2VtYmx5X3NvdXJjZS9oc3dfY2xl YXJfYnVmLmFzbSB8IDE0MSArKysrKysrKysrKysrKysrKysrKwogdG9vbHMvYXNzZW1ibHlfc291 cmNlL2l2Yl9jbGVhcl9idWYuYXNtIHwgMTM5ICsrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVz IGNoYW5nZWQsIDQ0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA3NTUgc2NyaXB0cy9h c21fZXVfa2VybmVsLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvYXNzZW1ibHlfc291cmNl L2hzd19jbGVhcl9idWYuYXNtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvYXNzZW1ibHlfc291 cmNlL2l2Yl9jbGVhcl9idWYuYXNtCgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9hc21fZXVfa2VybmVs LnNoIGIvc2NyaXB0cy9hc21fZXVfa2VybmVsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4 IDAwMDAwMDAwLi5kODczYzQ5MAotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvYXNtX2V1X2tl cm5lbC5zaApAQCAtMCwwICsxLDE2NSBAQAorIyEvYmluL2Jhc2gKKyMKKyMgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVAorIworIyBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlv bgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorIyB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorIyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyMgU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAorIyBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisjIFNvZnR3YXJlLgor IworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisjIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisjIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKKyMgSU4gVEhFIFNPRlRXQVJFLgorCitleHBvcnQgQVNTRU1CTFlfU09VUkNFPS4v dG9vbHMvYXNzZW1ibHlfc291cmNlCisKK2Z1bmN0aW9uIGdldF9oZWxwIHsKKyAgICAgICAgZWNo byAiVXNhZ2U6ICAgIGFzbV9ldV9rZXJuZWwuc2ggW29wdGlvbnNdIgorICAgICAgICBlY2hvICJS ZW1lbWJlciB0byBydW4gdGhpcyBhcyByb290IgorICAgICAgICBlY2hvICJOb3RlOiBUaGUgJGk5 MTVfZmlsZW5hbWUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQgc2hvdWxk IG5ldmVyIGJlIG1vZGlmaWVkIC0gaXQgd291bGQgYmUgaW1wb3J0ZWQgdG8gaTkxNSwgdG8gdXNl IGFzIGl0IGlzLi4uIgorICAgICAgICBlY2hvICIgIgorICAgICAgICBlY2hvICJQbGVhc2UgbWFr ZSBzdXJlIHlvdXIgTWVzYSB0b29sIGlzIGNvbXBpbGVkLCBhbmQgcnVuIHRoaXMgc2NyaXB0IGZy b20gSUdUIHNvdXJjZSByb290IGRpcmVjdG9yeSIKKyAgICAgICAgZWNobyAiICIKKyAgICAgICAg ZWNobyAiT3B0aW9ucyBhcmU6IgorICAgICAgICBlY2hvICIgLWggICAgICAgICAgICAgICAgICAg ICAgIGRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UsIGFuZCBleGl0IgorICAgICAgICBlY2hvICIg LWc9cGxhdGZvcm0gICAgICAgICAgICAgIGdlbmVyYXRpb24gb2YgZGV2aWNlOiB1c2UgImhzdyIg Zm9yIGdlbjcuNSwgYW5kICJpdmIiIGZvciBnZW43IGRldmljZXMiCisgICAgICAgIGVjaG8gIiAt bz1uYW1lX29mX2ZpbGUgICAgICAgICAgb3V0cHV0IGZpbGUgdG8gc3RvcmUgTWVzYSBhc3NlbWJs ZWQgYy1saXRlcmFsIGZvciB0aGUgZGV2aWNlIC0gSWYgbm9uZSBzcGVjaWZpZWQsIGRlZmF1bHQg ZmlsZSB3aWxsIGJlIHVzZWQgLSBpdmIvaHN3LWNiX2Fzc2VtYmxlZCIKKyAgICAgICAgZWNobyAi IC1tPW1lc2EgICAgICAgICAgICAgICAgICBNZXNhIHNvdXJjZSBkaXJlY3RvcnkiCisgICAgICAg IGVjaG8gIiAiCisgICAgICAgIGVjaG8gIiBVc2FnZSBleGFtcGxlOiBcInNjcmlwdHMvYXNtX2V1 X2tlcm5lbC5zaCAtZyBoc3cgLW8gaHN3X2NsZWFyX2J1ZmZlci5oIC1tIC9wYXRoL3RvL01lc2Ev c291cmNlL2RpcmVjdG9yeVwiIgorfQorCitmdW5jdGlvbiBpbmNsdWRlX2d1YXJkICMgJDE9Zmls ZW5hbWUKK3sKKwllY2hvICJfXyQoYmFzZW5hbWUgJDEpX18iIHwgdHIgWzpsb3dlcjpdIFs6dXBw ZXI6XSB8IHRyIFs6cHVuY3Q6XSBfCit9CisKK2Z1bmN0aW9uIHByZWZpeF9oZWFkZXIgIyAkMT1m aWxlbmFtZSAkMj1jb21tZW50Cit7CisJZ3VhcmQ9JChpbmNsdWRlX2d1YXJkICQxKQorCWNvbW1l bnQ9JDIKKworCWNhdCA8PEVPRgorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwor LyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKgorICogR2VuZXJh dGVkIGJ5OiBJR1QgR3B1IFRvb2xzIG9uICQoZGF0ZSkKKyAqLworCisjaWZuZGVmICRndWFyZAor I2RlZmluZSAkZ3VhcmQKKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKy8qICRjb21tZW50 ICovCitFT0YKK30KKworZnVuY3Rpb24gcG9zdGZpeF9mb290ZXIgIyBmaWxlbmFtZQoreworCWd1 YXJkPSQoaW5jbHVkZV9ndWFyZCAkMSkKKworCWNhdCA8PEVPRgorCisKKyNlbmRpZiAvKiAkZ3Vh cmQgKi8KK0VPRgorfQorCitmdW5jdGlvbiBjaGVja19vdXRwdXRfZmlsZSAjY2hlY2sgb3V0cHV0 IGZpbGUKK3sKKyAgICAgICAgaWYgWyAieCRvdXRwdXRfZmlsZSIgIT0gIngiIF07IHRoZW4KKyAg ICAgICAgICAgICAgICBpZiBbIC1mICIkb3V0cHV0X2ZpbGUiIF07IHRoZW4KKyAgICAgICAgICAg ICAgICAgICAgICAgIGVjaG8gLWUgIldhcm5pbmc6IFRoZSBcIiRvdXRwdXRfZmlsZVwiIGZpbGUg YWxyZWFkeSBleGlzdCAtIGNob29zZSBhbm90aGVyIGZpbGVcbiIKKyAgICAgICAgICAgICAgICAg ICAgICAgIGdldF9oZWxwCisgICAgICAgICAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAg ICAgICAgICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIyBJdCBpcyBva2F5IHRv IG92ZXJ3cml0ZSBkZWZhdWx0IGZpbGUgY3JlYXRlZAorICAgICAgICAgICAgICAgIGVjaG8gLWUg Ik91dHB1dCBmaWxlIG5vdCBzcGVjaWZpZWQgLSB1c2luZyBkZWZhdWx0IGZpbGUgXCIkZ2VuX2Rl dmljZS1jYl9hc3NlbWJsZWRcIlxuIgorICAgICAgICAgICAgICAgIG91dHB1dF9maWxlPSIkZ2Vu X2RldmljZS1jYl9hc3NlbWJsZWQiCisgICAgICAgIGZpCit9CitmdW5jdGlvbiBhc21fY2Jfa2Vy bmVsICMgYXMtcm9vdCA8YXJncz4KK3sKKyAgICAgICAgY2hlY2tfb3V0cHV0X2ZpbGUKKworICAg ICAgICAjIFVzaW5nIGk5NjVfYXNtIHRvb2wgdG8gYXNzZW1ibGUgaGV4IGZpbGUgZnJvbSBhc3Nl bWJseSBzb3VyY2UKKyAgICAgICAgJEk5NjVfQVNNIC1nICRnZW5fZGV2aWNlIC10IGNfbGl0ZXJh bCAgJGlucHV0X2FzbV9zb3VyY2UgLW8gJG91dHB1dF9maWxlCisKKyAgICAgICAgIyBHZW5lcmF0 ZSBoZWFkZXIgZmlsZQorICAgICAgICBpZiBbICIkZ2VuX2RldmljZSIgPT0gImhzdyIgXTsgdGhl bgorICAgICAgICAgICAgICAgIGVjaG8gIkdlbmVyYXRpbmcgZ2VuNy41IENCIEtlcm5lbCBoZWFk ZXIgZmlsZSBcImdlbjdfNV9jbGVhcmJ1ZmZlci5oXCIgZm9yIGk5MTUgZHJpdmVyLi4uIgorCisg ICAgICAgICAgICAgICAgaTkxNV9maWxlbmFtZT1nZW43XzVfY2xlYXJidWZmZXIuaAorICAgICAg ICAgICAgICAgIHByZWZpeF9oZWFkZXIgJGk5MTVfZmlsZW5hbWUgIk1lZGlhIENCIEtlcm5lbCBm b3IgZ2VuNy41IGRldmljZXMiID4gJGk5MTVfZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBjYXQg JG91dHB1dF9maWxlID4+ICRpOTE1X2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgcG9zdGZpeF9m b290ZXIgJGk5MTVfZmlsZW5hbWUgPj4gJGk5MTVfZmlsZW5hbWUKKworICAgICAgICBlbGlmIFsg IiRnZW5fZGV2aWNlIiA9PSAiaXZiIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAiR2Vu ZXJhdGluZyBnZW43IENCIEtlcm5lbCBoZWFkZXIgZmlsZSBcImdlbjdfY2xlYXJidWZmZXIuaFwi IGZvciBpOTE1IGRyaXZlci4uLiIKKworICAgICAgICAgICAgICAgIGk5MTVfZmlsZW5hbWU9Z2Vu N19jbGVhcmJ1ZmZlci5oCisgICAgICAgICAgICAgICAgcHJlZml4X2hlYWRlciAkaTkxNV9maWxl bmFtZSAiTWVkaWEgQ0IgS2VybmVsIGZvciBnZW43IGRldmljZXMiID4gJGk5MTVfZmlsZW5hbWUK KyAgICAgICAgICAgICAgICBjYXQgJG91dHB1dF9maWxlID4+ICRpOTE1X2ZpbGVuYW1lCisgICAg ICAgICAgICAgICAgcG9zdGZpeF9mb290ZXIgJGk5MTVfZmlsZW5hbWUgPj4gJGk5MTVfZmlsZW5h bWUKKyAgICAgICAgZmkKK30KKword2hpbGUgZ2V0b3B0cyAiaGc6bzptOiIgb3B0OyBkbworCWNh c2UgJG9wdCBpbgorCQloKSBnZXRfaGVscDsgZXhpdCAwOzsKKwkJZykgZ2VuX2RldmljZT0iJE9Q VEFSRyIgOzsKKwkJbykgb3V0cHV0X2ZpbGU9IiRPUFRBUkciIDs7CisgICAgICAgICAgICAgICAg bSkgbWVzYV9kaXI9IiRPUFRBUkciIDs7CisJCVw/KQorCQkJZWNobyAtZSAiVW5rbm93biBvcHRp b246IC0kT1BUQVJHXG4iCisJCQlnZXRfaGVscAorCQkJZXhpdCAxCisJCQk7OworCWVzYWMKK2Rv bmUKK3NoaWZ0ICQoKCRPUFRJTkQtMSkpCisKK2lmIFsgIngkMSIgIT0gIngiIF07IHRoZW4KKwll Y2hvIC1lICJVbmtub3duIG9wdGlvbjogJDFcbiIKKwlnZXRfaGVscAorCWV4aXQgMQorZmkKKwor STk2NV9BU009IiRtZXNhX2Rpci9idWlsZC9kZWJ1Zy9zcmMvaW50ZWwvdG9vbHMvaTk2NV9hc20i CitpZiBbICEgLWYgJHtJOTY1X0FTTX0gXTsgdGhlbgorICAgICAgICBlY2hvIC1lICJpOTY1X2Fz bSBub3QgZm91bmQgYXQgJHtJOTY1X0FTTX1cbiIKKyAgICAgICAgZ2V0X2hlbHAKKyAgICAgICAg ZXhpdCAxCitmaQorCitpZiBbICJ4JGdlbl9kZXZpY2UiICE9ICJ4IiBdOyB0aGVuCisgICAgICAg IGlmIFsgIiRnZW5fZGV2aWNlIiA9PSAiaHN3IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgaW5w dXRfYXNtX3NvdXJjZT0iJHtBU1NFTUJMWV9TT1VSQ0V9L2hzd19jbGVhcl9idWYuYXNtIgorICAg ICAgICBlbGlmIFsgIiRnZW5fZGV2aWNlIiA9PSAiaXZiIiBdOyB0aGVuCisgICAgICAgICAgICAg ICAgaW5wdXRfYXNtX3NvdXJjZT0iJHtBU1NFTUJMWV9TT1VSQ0V9L2l2Yl9jbGVhcl9idWYuYXNt IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZWNobyAtZSAiVW5rbm93biBwbGF0Zm9y bSBzcGVjaWZpZWRcbiIKKyAgICAgICAgICAgICAgICBnZXRfaGVscAorICAgICAgICAgICAgICAg IGV4aXQgMQorICAgICAgICBmaQorCWFzbV9jYl9rZXJuZWwKK2Vsc2UKKyAgICAgICAgZWNobyAt ZSAiUGxhdGZvcm0gZ2VuZXJhdGlvbiBub3Qgc3BlY2lmaWVkXG4iCisgICAgICAgIGdldF9oZWxw CisgICAgICAgIGV4aXQgMQorZmkKZGlmZiAtLWdpdCBhL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9o c3dfY2xlYXJfYnVmLmFzbSBiL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9oc3dfY2xlYXJfYnVmLmFz bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYmMyOWJhZjIKLS0tIC9kZXYv bnVsbAorKysgYi90b29scy9hc3NlbWJseV9zb3VyY2UvaHN3X2NsZWFyX2J1Zi5hc20KQEAgLTAs MCArMSwxNDEgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBD b3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworLyoqCisgKiBLZXJuZWwgbmFtZTog aHN3X2NsZWFyX2J1Zi5hc20KKyAqCisgKiBLZXJuZWwgZm9yIFBBVlAgYnVmZmVyIGNsZWFyLgor ICoKKyAqCTEuIENsZWFyIGFsbCA2NCBHUkYgcmVnaXN0ZXJzIGFzc2lnbmVkIHRvIHRoZSBrZXJu ZWwgd2l0aCBkZXNpZ25hdGVkIHZhbHVlOworICoJMi4gV3JpdGUgMzJ4MTYgYmxvY2sgb2YgYWxs ICIwIiB0byByZW5kZXIgdGFyZ2V0IGJ1ZmZlciB3aGljaCBpbmRpcmVjdGx5IGNsZWFycworICoJ ICAgNTEyIGJ5dGVzIG9mIFJlbmRlciBDYWNoZS4KKyAqLworCisvKiBTdG9yZSBkZXNpZ25hdGVk ICJjbGVhciBHUkYiIHZhbHVlICovCittb3YoMSkgICAgICAgICAgZjAuMTwxPlVXICAgICAgIGcx LjI8MCwxLDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyoqCisgKiBD dXJiZSBGb3JtYXQKKyAqCisgKiBEVyAxLjAgLSBCbG9jayBPZmZzZXQgdG8gd3JpdGUgUmVuZGVy IENhY2hlCisgKiBEVyAxLjEgWzE1OjBdIC0gQ2xlYXIgV29yZAorICogRFcgMS4yIC0gRGVsYXkg aXRlcmF0aW9ucworICogRFcgMS4zIC0gRW5hYmxlIEluc3RydW1lbnRhdGlvbiAob25seSBmb3Ig ZGVidWcpCisgKiBEVyAxLjQgLSBSc3ZkIChpbnRlbmRlZCBmb3IgY29udGV4dCBJRCkKKyAqIERX IDEuNSAtIFszMToxNl06U2xpY2VDb3VudCwgWzE1OjBdOlN1YlNsaWNlUGVyU2xpY2VDb3VudAor ICogRFcgMS42IC0gUnN2ZCBNQlogKGludGVuZGVkIGZvciBFbmFibGUgV2FpdCBvbiBUb3RhbCBU aHJlYWQgQ291bnQpCisgKiBEVyAxLjcgLSBSc3ZkIE1CWiAoaW50ZWRlZCBmb3IgVG90YWwgVGhy ZWFkIENvdW50KQorICoKKyAqIEJpbmRpbmcgVGFibGUKKyAqCisgKiBCVEkgMDogMkQgU3VyZmFj ZSB0byBoZWxwIGNsZWFyIEwzIChSZW5kZXIvRGF0YSBDYWNoZSkKKyAqIEJUSSAxOiBXYWl0L0lu c3RydW1lbnRhdGlvbiBCdWZmZXIKKyAqICBTaXplIDogKFNsaWNlQ291bnQgKiBTdWJTbGljZUNv dW50ICAqIDE2IEVVcy9TdWJTbGljZSkgcm93cyAqICgxNiB0aHJlYWRzL0VVKSBjb2xzIChGb3Jt YXQgUjMyX1VJTlQpCisgKiAgICAgICAgIEV4cGVjdGVkIHRvIGJlIGluaXRpYWxpemVkIHRvIDAg YnkgZHJpdmVyL2Fub3RoZXIga2VybmVsCisgKiAgTGF5b3V0OgorICogICAgICAgICAgUm93Tjog SGlzdG9ncmFtIGZvciBFVS1OOiAoU2xpY2VJRCpTdWJTbGljZVBlclNsaWNlQ291bnQgKyBTU0lE KSoxNiArIEVVSUQgW2Fzc3VtZSBtYXggMTYgRVVzIC8gU1NdCisgKiAgICAgICAgICBDb2wta1tE Vy1rXTogVGhyZWFkcyBFeGVjdXRlZCBvbiBUaHJlYWRJRC1rIGZvciBFVS1OCisgKi8KK2FkZCgx KSAgICAgICAgICBnMS4yPDE+VUQgICAgICAgZzEuMjwwLDEsMD5VRCAgIDB4MDAwMDAwMDFVRCAg ICB7IGFsaWduMSAxTiB9OyAvKiBMb29wIGNvdW50IHRvIGRlbGF5IGtlcm5lbDogSW5pdCB0byAo ZzEuMiArIDEpICovCitjbXAuei5mMC4wKDEpICAgbnVsbDwxPlVEICAgICAgIGcxLjM8MCwxLDA+ VUQgICAweDAwMDAwMDAwVUQgICAgeyBhbGlnbjEgMU4gfTsKKygrZjAuMCkgam1waSgxKSAzNTJE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSBXRV9h bGwgMU4gfTsKKworLyoqCisgKiBTdGF0ZSBSZWdpc3RlciBoYXMgaW5mbyBvbiB3aGVyZSB0aGlz IHRocmVhZCBpcyBydW5uaW5nCisgKglJVkI6IHNyMC4wIDo6IFsxNToxM106IE1CWiwgMTI6IEhT SUQgKEhhbGYtU2xpY2UgSUQpLCBbMTE6OF1FVUlELCBbMjowXSBUaHJlYWRTbG90SUQKKyAqCUhT Vzogc3IwLjAgOjogMTU6IE1CWiwgWzE0OjEzXTogU2xpY2VJRCwgMTI6IEhTSUQgKEhhbGYtU2xp Y2UgSUQpLCBbMTE6OF1FVUlELCBbMjowXSBUaHJlYWRTbG90SUQKKyAqLworbW92KDgpICAgICAg ICAgIGczPDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxp Z24xIDFRIH07CitzaHIoMSkgICAgICAgICAgZzM8MT5EICAgICAgICAgIHNyMDwwLDEsMD5EICAg ICAxMkQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBnMzwxPkQg ICAgICAgICAgZzM8MCwxLDA+RCAgICAgIDFEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAv KiBnMyBoYXMgSFNJRCAqLworc2hyKDEpICAgICAgICAgIGczLjE8MT5EICAgICAgICBzcjA8MCwx LDA+RCAgICAgMTNEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAg ZzMuMTwxPkQgICAgICAgIGczLjE8MCwxLDA+RCAgICAzRCAgICAgICAgICAgICAgeyBhbGlnbjEg MU4gfTsgLyogZzMuMSBoYXMgc2xpY2VJRCAqLworbXVsKDEpICAgICAgICAgIGczLjU8MT5EICAg ICAgICBnMy4xPDAsMSwwPkQgICAgZzEuMTA8MCwxLDA+VVcgIHsgYWxpZ24xIDFOIH07CithZGQo MSkgICAgICAgICAgZzM8MT5EICAgICAgICAgIGczPDAsMSwwPkQgICAgICBnMy41PDAsMSwwPkQg ICAgeyBhbGlnbjEgMU4gfTsgLyogZzMgPSBzbGljZUlEICogU3ViU2xpY2VQZXJTbGljZUNvdW50 ICsgSFNJRCAqLworc2hyKDEpICAgICAgICAgIGczLjI8MT5EICAgICAgICBzcjA8MCwxLDA+RCAg ICAgOEQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzMuMjwx PkQgICAgICAgIGczLjI8MCwxLDA+RCAgICAxNUQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsg LyogZzMuMiA9IEVVSUQgKi8KK211bCgxKSAgICAgICAgICBnMy40PDE+RCAgICAgICAgZzM8MCwx LDA+RCAgICAgIDE2RCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYWRkKDEpICAgICAgICAg IGczLjI8MT5EICAgICAgICBnMy4yPDAsMSwwPkQgICAgZzMuNDwwLDEsMD5EICAgIHsgYWxpZ24x IDFOIH07IC8qIGczLjIgbm93IHBvaW50cyB0byBFVSByb3cgbnVtYmVyIChZLXBpeGVsID0gViBh ZGRyZXNzICkgIGluIGluc3RydW1lbnRhdGlvbiBzdXJmICovCisKK21vdig4KSAgICAgICAgICBn NTwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx USB9OworYW5kKDEpICAgICAgICAgIGczLjM8MT5EICAgICAgICBzcjA8MCwxLDA+RCAgICAgN0Qg ICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CittdWwoMSkgICAgICAgICAgZzMuMzwxPkQgICAg ICAgIGczLjM8MCwxLDA+RCAgICA0RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworbW92 KDgpICAgICAgICAgIGc0PDE+VUQgICAgICAgICBnMDw4LDgsMT5VRCAgICAgICAgICAgICAgICAg ICAgIHsgYWxpZ24xIDFRIH07IC8qIEluaXRpYWxpemUgbWVzc2FnZSBoZWFkZXIgd2l0aCBnMCAq LworbW92KDEpICAgICAgICAgIGc0PDE+VUQgICAgICAgICBnMy4zPDAsMSwwPlVEICAgICAgICAg ICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIG9mZnNldCAqLworbW92KDEpICAgICAg ICAgIGc0LjE8MT5VRCAgICAgICBnMy4yPDAsMSwwPlVEICAgICAgICAgICAgICAgICAgIHsgYWxp Z24xIDFOIH07IC8qIEJsb2NrIG9mZnNldCAqLworbW92KDEpICAgICAgICAgIGc0LjI8MT5VRCAg ICAgICAweDAwMDAwMDAzVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJs b2NrIHNpemUgKDEgcm93IHggNCBieXRlcykgKi8KK2FuZCgxKSAgICAgICAgICBnNC4zPDE+VUQg ICAgICAgZzQuMzwwLDEsMD5VVyAgIDB4ZmZmZmZmZmZVRCAgICB7IGFsaWduMSAxTiB9OworCisv KiBNZWRpYSBibG9jayByZWFkIHRvIGZldGNoIGN1cnJlbnQgdmFsdWUgYXQgc3BlY2lmaWVkIGxv Y2F0aW9uIGluIGluc3RydW1lbnRhdGlvbiBidWZmZXIgKi8KK3NlbmRjKDgpICAgICAgICBnNTwx PlVEICAgICAgICAgZzQ8OCw4LDE+RiAgICAgIDB4MDIxOTAwMDEKKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayByZWFkIE1zZ0N0cmwgPSAw eDAgU3VyZmFjZSA9IDEgbWxlbiAxIHJsZW4gMSB7IGFsaWduMSAxUSB9OworYWRkKDEpICAgICAg ICAgIGc1PDE+RCAgICAgICAgICBnNTwwLDEsMD5EICAgICAgMUQgICAgICAgICAgICAgIHsgYWxp Z24xIDFOIH07CisKKy8qIE1lZGlhIGJsb2NrIHdyaXRlIGZvciB1cGRhdGVkIHZhbHVlIGF0IHNw ZWNpZmllZCBsb2NhdGlvbiBpbiBpbnN0cnVtZW50YXRpb24gYnVmZmVyICovCitzZW5kYyg4KSAg ICAgICAgZzU8MT5VRCAgICAgICAgIGc0PDgsOCwxPkYgICAgICAweDA0MGE4MDAxCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHdyaXRlIE1z Z0N0cmwgPSAweDAgU3VyZmFjZSA9IDEgbWxlbiAyIHJsZW4gMCB7IGFsaWduMSAxUSB9OworCisv KiBEZWxheSB0aHJlYWQgZm9yIHNwZWNpZmllZCBwYXJhbWV0ZXIgKi8KK2FkZC5uei5mMC4wKDEp ICBnMS4yPDE+VUQgICAgICAgZzEuMjwwLDEsMD5VRCAgIC0xRCAgICAgICAgICAgICB7IGFsaWdu MSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIC0zMkQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2FsbCAxTiB9OworCisvKiBTdG9yZSBkZXNpZ25h dGVkICJjbGVhciBHUkYiIHZhbHVlICovCittb3YoMSkgICAgICAgICAgZjAuMTwxPlVXICAgICAg IGcxLjI8MCwxLDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyogSW5p dGlhbGl6ZSBsb29waW5nIHBhcmFtZXRlcnMgKi8KK21vdigxKSAgICAgICAgICBhMDwxPkQgICAg ICAgICAgMEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBJ bml0aWFsaXplIGEwLjA6dz0wICovCittb3YoMSkgICAgICAgICAgYTAuNDwxPlcgICAgICAgIDEy N1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogTG9vcCBjb3Vu dC4gRWFjaCBsb29wIGNvbnRhaW5zIDE2IEdSRidzICovCisKKy8qIFdyaXRlIDMyeDE2IGFsbCAi MCIgYmxvY2sgKi8KK21vdig4KSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzA8OCw4LDE+VUQg ICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9OworbW92KDgpICAgICAgICAgIGcxMjc8 MT5VRCAgICAgICBnMDw4LDgsMT5VRCAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07 Cittb3YoMikgICAgICAgICAgZzI8MT5VRCAgICAgICAgIGcxPDIsMiwxPlVXICAgICAgICAgICAg ICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK21vdigxKSAgICAgICAgICBnMi4yPDE+VUQgICAgICAg MHgwMDBmMDAwZlVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBz aXplICgxNngxNikgKi8KK2FuZCgxKSAgICAgICAgICBnMi4zPDE+VUQgICAgICAgZzIuMzwwLDEs MD5VVyAgIDB4ZmZmZmZmZWZVRCAgICB7IGFsaWduMSAxTiB9OworbW92KDE2KSAgICAgICAgIGcz PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFI IH07Cittb3YoMTYpICAgICAgICAgZzQ8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAg ICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNTwxPlVEICAgICAg ICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2 KSAgICAgICAgIGc2PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAg IHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzc8MT5VRCAgICAgICAgIDB4MDAwMDAw MDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBn ODwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx SCB9OworbW92KDE2KSAgICAgICAgIGc5PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAg ICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzEwPDE+VUQgICAg ICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK3NlbmRj KDgpICAgICAgICBudWxsPDE+VUQgICAgICAgZzI8OCw4LDE+RiAgICAgIDB4MTIwYTgwMDAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3Jp dGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMCBtbGVuIDkgcmxlbiAwIHsgYWxpZ24xIDFRIH07 CithZGQoMSkgICAgICAgICAgZzI8MT5VRCAgICAgICAgIGcxPDAsMSwwPlVXICAgICAweDAwMTBV VyAgICAgICAgeyBhbGlnbjEgMU4gfTsKK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQgICAgICAg ZzI8OCw4LDE+RiAgICAgIDB4MTIwYTgwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0g MCBtbGVuIDkgcmxlbiAwIHsgYWxpZ24xIDFRIH07CisKKy8qIE5vdywgY2xlYXIgYWxsIEdSRiBy ZWdpc3RlcnMgKi8KK2FkZC5uei5mMC4wKDEpICBhMC40PDE+VyAgICAgICAgYTAuNDwwLDEsMD5X ICAgIC0xVyAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworbW92KDE2KSAgICAgICAgIGdbYTBd PDE+VVcgICAgICBmMC4xPDAsMSwwPlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07 CithZGQoMSkgICAgICAgICAgYTA8MT5EICAgICAgICAgIGEwPDAsMSwwPkQgICAgICAzMkQgICAg ICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKygrZjAuMCkgam1waSgxKSAtNjREICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKwor LyogVGVybWluYW50ZSB0aGUgdGhyZWFkICovCitzZW5kYyg4KSAgICAgICAgbnVsbDwxPlVEICAg ICAgIGcxMjc8OCw4LDE+RiAgICAweDgyMDAwMDEwCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhyZWFkX3NwYXduZXIgTXNnRGVzYzogbWxlbiAxIHJsZW4gMCAgICAgICAgICAgeyBhbGln bjEgMVEgRU9UIH07CmRpZmYgLS1naXQgYS90b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFy X2J1Zi5hc20gYi90b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20KbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmIyMWJjOTQ4Ci0tLSAvZGV2L251bGwKKysr IGIvdG9vbHMvYXNzZW1ibHlfc291cmNlL2l2Yl9jbGVhcl9idWYuYXNtCkBAIC0wLDAgKzEsMTM5 IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCisvKgorICogQ29weXJpZ2h0 IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKy8qKgorICogS2VybmVsIG5hbWU6IGl2Yl9jbGVh cl9idWYuYXNtCisgKgorICogS2VybmVsIGZvciBQQVZQIGJ1ZmZlciBjbGVhci4KKyAqCisgKgkx LiBDbGVhciBhbGwgNjQgR1JGIHJlZ2lzdGVycyBhc3NpZ25lZCB0byB0aGUga2VybmVsIHdpdGgg ZGVzaWduYXRlZCB2YWx1ZTsKKyAqCTIuIFdyaXRlIDMyeDE2IGJsb2NrIG9mIGFsbCAiMCIgdG8g cmVuZGVyIHRhcmdldCBidWZmZXIgd2hpY2ggaW5kaXJlY3RseSBjbGVhcnMKKyAqCSAgIDUxMiBi eXRlcyBvZiBSZW5kZXIgQ2FjaGUuCisgKi8KKworLyogU3RvcmUgZGVzaWduYXRlZCAiY2xlYXIg R1JGIiB2YWx1ZSAqLworbW92KDEpICAgICAgICAgIGYwLjE8MT5VVyAgICAgICBnMS4yPDAsMSww PlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKKy8qKgorICogQ3VyYmUgRm9y bWF0CisgKgorICogRFcgMS4wIC0gQmxvY2sgT2Zmc2V0IHRvIHdyaXRlIFJlbmRlciBDYWNoZQor ICogRFcgMS4xIFsxNTowXSAtIENsZWFyIFdvcmQKKyAqIERXIDEuMiAtIERlbGF5IGl0ZXJhdGlv bnMKKyAqIERXIDEuMyAtIEVuYWJsZSBJbnN0cnVtZW50YXRpb24gKG9ubHkgZm9yIGRlYnVnKQor ICogRFcgMS40IC0gUnN2ZCAoaW50ZW5kZWQgZm9yIGNvbnRleHQgSUQpCisgKiBEVyAxLjUgLSBb MzE6MTZdOlNsaWNlQ291bnQsIFsxNTowXTpTdWJTbGljZVBlclNsaWNlQ291bnQKKyAqIERXIDEu NiAtIFJzdmQgTUJaIChpbnRlbmRlZCBmb3IgRW5hYmxlIFdhaXQgb24gVG90YWwgVGhyZWFkIENv dW50KQorICogRFcgMS43IC0gUnN2ZCBNQlogKGludGVkZWQgZm9yIFRvdGFsIFRocmVhZCBDb3Vu dCkKKyAqCisgKiBCaW5kaW5nIFRhYmxlCisgKgorICogQlRJIDA6IDJEIFN1cmZhY2UgdG8gaGVs cCBjbGVhciBMMyAoUmVuZGVyL0RhdGEgQ2FjaGUpCisgKiBCVEkgMTogV2FpdC9JbnN0cnVtZW50 YXRpb24gQnVmZmVyCisgKiAgU2l6ZSA6IChTbGljZUNvdW50ICogU3ViU2xpY2VDb3VudCAgKiAx NiBFVXMvU3ViU2xpY2UpIHJvd3MgKiAoMTYgdGhyZWFkcy9FVSkgY29scyAoRm9ybWF0IFIzMl9V SU5UKQorICogICAgICAgICBFeHBlY3RlZCB0byBiZSBpbml0aWFsaXplZCB0byAwIGJ5IGRyaXZl ci9hbm90aGVyIGtlcm5lbAorICogIExheW91dCA6CisgKiAgICAgICAgICAgUm93TjogSGlzdG9n cmFtIGZvciBFVS1OOiAoU2xpY2VJRCpTdWJTbGljZVBlclNsaWNlQ291bnQgKyBTU0lEKSoxNiAr IEVVSUQgW2Fzc3VtZSBtYXggMTYgRVVzIC8gU1NdCisgKiAgICAgICAgICAgQ29sLWtbRFcta106 IFRocmVhZHMgRXhlY3V0ZWQgb24gVGhyZWFkSUQtayBmb3IgRVUtTgorICovCithZGQoMSkgICAg ICAgICAgZzEuMjwxPlVEICAgICAgIGcxLjI8MCwxLDA+VUQgICAweDAwMDAwMDAxVUQgICAgeyBh bGlnbjEgMU4gfTsgLyogTG9vcCBjb3VudCB0byBkZWxheSBrZXJuZWw6IEluaXQgdG8gKGcxLjIg KyAxKSAqLworY21wLnouZjAuMCgxKSAgIG51bGw8MT5VRCAgICAgICBnMS4zPDAsMSwwPlVEICAg MHgwMDAwMDAwMFVEICAgIHsgYWxpZ24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgNDREICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFO IH07CisKKy8qKgorICogU3RhdGUgUmVnaXN0ZXIgaGFzIGluZm8gb24gd2hlcmUgdGhpcyB0aHJl YWQgaXMgcnVubmluZworICoJSVZCOiBzcjAuMCA6OiBbMTU6MTNdOiBNQlosIDEyOiBIU0lEIChI YWxmLVNsaWNlIElEKSwgWzExOjhdRVVJRCwgWzI6MF0gVGhyZWFkU2xvdElECisgKglIU1c6IHNy MC4wIDo6IDE1OiBNQlosIFsxNDoxM106IFNsaWNlSUQsIDEyOiBIU0lEIChIYWxmLVNsaWNlIElE KSwgWzExOjhdRVVJRCwgWzI6MF0gVGhyZWFkU2xvdElECisgKi8KK21vdig4KSAgICAgICAgICBn MzwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx USB9Oworc2hyKDEpICAgICAgICAgIGczPDE+RCAgICAgICAgICBzcjA8MCwxLDA+RCAgICAgMTJE ICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzM8MT5EICAgICAg ICAgIGczPDAsMSwwPkQgICAgICAxRCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMg aGFzIEhTSUQgKi8KK3NocigxKSAgICAgICAgICBnMy4xPDE+RCAgICAgICAgc3IwPDAsMSwwPkQg ICAgIDEzRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAgIGczLjE8 MT5EICAgICAgICBnMy4xPDAsMSwwPkQgICAgM0QgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07 IC8qIGczLjEgaGFzIHNsaWNlSUQgKi8KK211bCgxKSAgICAgICAgICBnMy41PDE+RCAgICAgICAg ZzMuMTwwLDEsMD5EICAgIGcxLjEwPDAsMSwwPlVXICB7IGFsaWduMSAxTiB9OworYWRkKDEpICAg ICAgICAgIGczPDE+RCAgICAgICAgICBnMzwwLDEsMD5EICAgICAgZzMuNTwwLDEsMD5EICAgIHsg YWxpZ24xIDFOIH07IC8qIGczID0gc2xpY2VJRCAqIFN1YlNsaWNlUGVyU2xpY2VDb3VudCArIEhT SUQgKi8KK3NocigxKSAgICAgICAgICBnMy4yPDE+RCAgICAgICAgc3IwPDAsMSwwPkQgICAgIDhE ICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAgIGczLjI8MT5EICAg ICAgICBnMy4yPDAsMSwwPkQgICAgMTVEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIGcz LjIgPSBFVUlEICovCittdWwoMSkgICAgICAgICAgZzMuNDwxPkQgICAgICAgIGczPDAsMSwwPkQg ICAgICAxNkQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FkZCgxKSAgICAgICAgICBnMy4y PDE+RCAgICAgICAgZzMuMjwwLDEsMD5EICAgIGczLjQ8MCwxLDA+RCAgICB7IGFsaWduMSAxTiB9 OyAvKiBnMy4yIG5vdyBwb2ludHMgdG8gRVUgcm93IG51bWJlciAoWS1waXhlbCA9IFYgYWRkcmVz cyApICBpbiBpbnN0cnVtZW50YXRpb24gc3VyZiAqLworCittb3YoOCkgICAgICAgICAgZzU8MT5V RCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsK K2FuZCgxKSAgICAgICAgICBnMy4zPDE+RCAgICAgICAgc3IwPDAsMSwwPkQgICAgIDdEICAgICAg ICAgICAgICB7IGFsaWduMSAxTiB9OworbXVsKDEpICAgICAgICAgIGczLjM8MT5EICAgICAgICBn My4zPDAsMSwwPkQgICAgNEQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKK21vdig4KSAg ICAgICAgICBnNDwxPlVEICAgICAgICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAgICAgICB7 IGFsaWduMSAxUSB9OyAvKiBJbml0aWFsaXplIG1lc3NhZ2UgaGVhZGVyIHdpdGggZzAgKi8KK21v digxKSAgICAgICAgICBnNDwxPlVEICAgICAgICAgZzMuMzwwLDEsMD5VRCAgICAgICAgICAgICAg ICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBvZmZzZXQgKi8KK21vdigxKSAgICAgICAgICBn NC4xPDE+VUQgICAgICAgZzMuMjwwLDEsMD5VRCAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx TiB9OyAvKiBCbG9jayBvZmZzZXQgKi8KK21vdigxKSAgICAgICAgICBnNC4yPDE+VUQgICAgICAg MHgwMDAwMDAwM1VEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBz aXplICgxIHJvdyB4IDQgYnl0ZXMpICovCithbmQoMSkgICAgICAgICAgZzQuMzwxPlVEICAgICAg IGc0LjM8MCwxLDA+VVcgICAweGZmZmZmZmZmVUQgICAgeyBhbGlnbjEgMU4gfTsKKworLyogTWVk aWEgYmxvY2sgcmVhZCB0byBmZXRjaCBjdXJyZW50IHZhbHVlIGF0IHNwZWNpZmllZCBsb2NhdGlv biBpbiBpbnN0cnVtZW50YXRpb24gYnVmZmVyICovCitzZW5kYyg4KSAgICAgICAgZzU8MT5VRCAg ICAgICAgIGc0PDgsOCwxPkYgICAgICAweDAyMTkwMDAxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHJlYWQgTXNnQ3RybCA9IDB4MCBTdXJm YWNlID0gMSBtbGVuIDEgcmxlbiAxIHsgYWxpZ24xIDFRIH07CithZGQoMSkgICAgICAgICAgZzU8 MT5EICAgICAgICAgIGc1PDAsMSwwPkQgICAgICAxRCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4g fTsKKworLyogTWVkaWEgYmxvY2sgd3JpdGUgZm9yIHVwZGF0ZWQgdmFsdWUgYXQgc3BlY2lmaWVk IGxvY2F0aW9uIGluIGluc3RydW1lbnRhdGlvbiBidWZmZXIgKi8KK3NlbmRjKDgpICAgICAgICBn NTwxPlVEICAgICAgICAgZzQ8OCw4LDE+RiAgICAgIDB4MDQwYTgwMDEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9 IDB4MCBTdXJmYWNlID0gMSBtbGVuIDIgcmxlbiAwIHsgYWxpZ24xIDFRIH07CisvKiBEZWxheSB0 aHJlYWQgZm9yIHNwZWNpZmllZCBwYXJhbWV0ZXIgKi8KK2FkZC5uei5mMC4wKDEpICBnMS4yPDE+ VUQgICAgICAgZzEuMjwwLDEsMD5VRCAgIC0xRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9Owor KCtmMC4wKSBqbXBpKDEpIC00RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgYWxpZ24xIFdFX2FsbCAxTiB9OworCisvKiBTdG9yZSBkZXNpZ25hdGVkICJjbGVh ciBHUkYiIHZhbHVlICovCittb3YoMSkgICAgICAgICAgZjAuMTwxPlVXICAgICAgIGcxLjI8MCwx LDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyogSW5pdGlhbGl6ZSBs b29waW5nIHBhcmFtZXRlcnMgKi8KK21vdigxKSAgICAgICAgICBhMDwxPkQgICAgICAgICAgMEQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBJbml0aWFsaXpl IGEwLjA6dz0wICovCittb3YoMSkgICAgICAgICAgYTAuNDwxPlcgICAgICAgIDEyN1cgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogTG9vcCBjb3VudC4gRWFjaCBs b29wIGNvbnRhaW5zIDE2IEdSRidzICovCisKKy8qIFdyaXRlIDMyeDE2IGFsbCAiMCIgYmxvY2sg Ki8KK21vdig4KSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzA8OCw4LDE+VUQgICAgICAgICAg ICAgICAgICAgICB7IGFsaWduMSAxUSB9OworbW92KDgpICAgICAgICAgIGcxMjc8MT5VRCAgICAg ICBnMDw4LDgsMT5VRCAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3YoMikg ICAgICAgICAgZzI8MT5VRCAgICAgICAgIGcxPDIsMiwxPlVXICAgICAgICAgICAgICAgICAgICAg eyBhbGlnbjEgMU4gfTsKK21vdigxKSAgICAgICAgICBnMi4yPDE+VUQgICAgICAgMHgwMDBmMDAw ZlVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBzaXplICgxNngx NikgKi8KK2FuZCgxKSAgICAgICAgICBnMi4zPDE+VUQgICAgICAgZzIuMzwwLDEsMD5VVyAgIDB4 ZmZmZmZmZWZVRCAgICB7IGFsaWduMSAxTiB9OworbW92KDE2KSAgICAgICAgIGczPDE+VUQgICAg ICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3Yo MTYpICAgICAgICAgZzQ8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNTwxPlVEICAgICAgICAgMHgwMDAw MDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAg IGc2PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24x IDFIIH07Cittb3YoMTYpICAgICAgICAgZzc8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAg ICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnODwxPlVEICAg ICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92 KDE2KSAgICAgICAgIGc5PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAg ICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzEwPDE+VUQgICAgICAgIDB4MDAw MDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK3NlbmRjKDgpICAgICAg ICBudWxsPDE+VUQgICAgICAgZzI8OCw4LDE+RiAgICAgIDB4MTIwYTgwMDAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3Ry bCA9IDB4MCBTdXJmYWNlID0gMCBtbGVuIDkgcmxlbiAwIHsgYWxpZ24xIDFRIH07CithZGQoMSkg ICAgICAgICAgZzI8MT5VRCAgICAgICAgIGcxPDAsMSwwPlVXICAgICAweDAwMTBVVyAgICAgICAg eyBhbGlnbjEgMU4gfTsKK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQgICAgICAgZzI8OCw4LDE+ RiAgICAgIDB4MTIwYTgwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNn RGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMCBtbGVuIDkg cmxlbiAwIHsgYWxpZ24xIDFRIH07CisKKy8qIE5vdywgY2xlYXIgYWxsIEdSRiByZWdpc3RlcnMg Ki8KK2FkZC5uei5mMC4wKDEpICBhMC40PDE+VyAgICAgICAgYTAuNDwwLDEsMD5XICAgIC0xVyAg ICAgICAgICAgICB7IGFsaWduMSAxTiB9OworbW92KDE2KSAgICAgICAgIGdbYTBdPDE+VVcgICAg ICBmMC4xPDAsMSwwPlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07CithZGQoMSkg ICAgICAgICAgYTA8MT5EICAgICAgICAgIGEwPDAsMSwwPkQgICAgICAzMkQgICAgICAgICAgICAg eyBhbGlnbjEgMU4gfTsKKygrZjAuMCkgam1waSgxKSAtOEQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyogVGVybWlu YW50ZSB0aGUgdGhyZWFkICovCitzZW5kYyg4KSAgICAgICAgbnVsbDwxPlVEICAgICAgIGcxMjc8 OCw4LDE+RiAgICAweDgyMDAwMDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFk X3NwYXduZXIgTXNnRGVzYzogbWxlbiAxIHJsZW4gMCAgICAgICAgICAgeyBhbGlnbjEgMVEgRU9U IH07Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=