From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B2C966EE99 for ; Fri, 21 Feb 2020 06:07:26 +0000 (UTC) From: Akeem G Abodunrin Date: Thu, 20 Feb 2020 14:51:37 -0800 Message-Id: <20200220225137.18687-2-akeem.g.abodunrin@intel.com> In-Reply-To: <20200220225137.18687-1-akeem.g.abodunrin@intel.com> References: <20200220225137.18687-1-akeem.g.abodunrin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 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 bWF0dGluZywgLWcgb3B0aW9uIGFuZCBvdGhlciBtaW5vciBpc3N1ZXMgKFBldHJpKQpWMzogVXBk YXRlIHNjcmlwdCBkdWUgdG8gc3VnZ2VzdGVkIGNoYW5nZXMgaW4gaTkxNSwgYW5kIE1lc2EgdG9v bAoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNj OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUGV0cmkgTGF0dmFsYSA8cGV0 cmkubGF0dmFsYUBpbnRlbC5jb20+CkNjOiBCbG9vbWZpZWxkIEpvbiA8am9uLmJsb29tZmllbGRA aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBa2VlbSBHIEFib2R1bnJpbiA8YWtlZW0uZy5hYm9k dW5yaW5AaW50ZWwuY29tPgotLS0KIHNjcmlwdHMvYXNtX2V1X2tlcm5lbC5zaCAgICAgICAgICAg ICAgICB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2Fzc2VtYmx5X3NvdXJj ZS9oc3dfY2xlYXJfYnVmLmFzbSB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9h c3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20gfCAxMzkgKysrKysrKysrKysrKysrKysr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDQzMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA3 NTUgc2NyaXB0cy9hc21fZXVfa2VybmVsLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvYXNz ZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYuYXNtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv YXNzZW1ibHlfc291cmNlL2l2Yl9jbGVhcl9idWYuYXNtCgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9h c21fZXVfa2VybmVsLnNoIGIvc2NyaXB0cy9hc21fZXVfa2VybmVsLnNoCm5ldyBmaWxlIG1vZGUg MTAwNzU1CmluZGV4IDAwMDAwMDAwLi41ZTQxNjg4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Njcmlw dHMvYXNtX2V1X2tlcm5lbC5zaApAQCAtMCwwICsxLDE1MyBAQAorIyEvYmluL2Jhc2gKKyMKKyMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworIyBDb3B5cmlnaHQgwqkgMjAyMCBJbnRl bCBDb3Jwb3JhdGlvbgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorIyBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor IyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorIyBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyMg U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorIyBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisj IFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisjIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisjIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisj IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MKKyMgSU4gVEhFIFNPRlRXQVJFLgorCitleHBvcnQgQVNTRU1C TFlfU09VUkNFPS4vdG9vbHMvYXNzZW1ibHlfc291cmNlCisKK2Z1bmN0aW9uIGdldF9oZWxwIHsK KyAgICAgICAgZWNobyAiVXNhZ2U6ICAgIGFzbV9ldV9rZXJuZWwuc2ggW29wdGlvbnNdIgorICAg ICAgICBlY2hvICJOb3RlOiBoc3dfY2xlYXJfa2VybmVsLmMvaXZiX2NsZWFyX2tlcm5lbC5jIGF1 dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoaXMgc2NyaXB0IHNob3VsZCBuZXZlciBiZSBtb2Rp ZmllZCAtIGl0IHdvdWxkIGJlIGltcG9ydGVkIHRvIGk5MTUsIHRvIHVzZSBhcyBpdCBpcy4uLiIK KyAgICAgICAgZWNobyAiICIKKyAgICAgICAgZWNobyAiUGxlYXNlIG1ha2Ugc3VyZSB5b3VyIE1l c2EgdG9vbCBpcyBjb21waWxlZCwgYW5kIHJ1biB0aGlzIHNjcmlwdCBmcm9tIElHVCBzb3VyY2Ug cm9vdCBkaXJlY3RvcnkiCisgICAgICAgIGVjaG8gIiAiCisgICAgICAgIGVjaG8gIk9wdGlvbnMg YXJlOiIKKyAgICAgICAgZWNobyAiIC1oICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRo aXMgaGVscCBtZXNzYWdlLCBhbmQgZXhpdCIKKyAgICAgICAgZWNobyAiIC1nPXBsYXRmb3JtICAg ICAgICAgICAgICBnZW5lcmF0aW9uIG9mIGRldmljZTogdXNlICJoc3ciIGZvciBnZW43LjUsIGFu ZCAiaXZiIiBmb3IgZ2VuNyBkZXZpY2VzIgorICAgICAgICBlY2hvICIgLW89bmFtZV9vZl9maWxl ICAgICAgICAgIG91dHB1dCBmaWxlIHRvIHN0b3JlIE1lc2EgYXNzZW1ibGVkIGMtbGl0ZXJhbCBm b3IgdGhlIGRldmljZSAtIElmIG5vbmUgc3BlY2lmaWVkLCBkZWZhdWx0IGZpbGUgd2lsbCBiZSB1 c2VkIC0gaXZiL2hzdy1jYl9hc3NlbWJsZWQiCisgICAgICAgIGVjaG8gIiAtbT1tZXNhICAgICAg ICAgICAgICAgICAgTWVzYSBzb3VyY2UgZGlyZWN0b3J5IgorICAgICAgICBlY2hvICIgIgorICAg ICAgICBlY2hvICIgVXNhZ2UgZXhhbXBsZTogXCJzY3JpcHRzL2FzbV9ldV9rZXJuZWwuc2ggLWcg aHN3IC1vIGhzd19jbGVhcl9idWZmZXIuaCAtbSAvcGF0aC90by9NZXNhL3NvdXJjZS9kaXJlY3Rv cnlcIiIKK30KKworZnVuY3Rpb24gaW5jbHVkZV9hcnJheSAjICQxPWFycmF5X25hbWUKK3sKKwll Y2hvICJzdGF0aWMgY29uc3QgdTMyICQoYmFzZW5hbWUgJDEpX2NsZWFyX2tlcm5lbFtdID0geyIK K30KK2Z1bmN0aW9uIHByZWZpeF9oZWFkZXIgIyAkMT1maWxlbmFtZSAkMj1jb21tZW50Cit7CisJ YXJyYXlfbmFtZT0kKGluY2x1ZGVfYXJyYXkgJDEpCisKKwljYXQgPDxFT0YKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIEdlbmVyYXRlZCBieTogSUdUIEdwdSBUb29scyBvbiAkKGRhdGUpCisg Ki8KKworJGFycmF5X25hbWUKK0VPRgorfQorCitmdW5jdGlvbiBwb3N0Zml4X2Zvb3RlciAjIGZp bGVuYW1lCit7CisJY2F0IDw8RU9GCit9OworRU9GCit9CisKK2Z1bmN0aW9uIGNoZWNrX291dHB1 dF9maWxlICNjaGVjayBvdXRwdXQgZmlsZQoreworICAgICAgICBpZiBbICJ4JG91dHB1dF9maWxl IiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGlmIFsgLWYgIiRvdXRwdXRfZmlsZSIg XTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtZSAiV2FybmluZzogVGhlIFwi JG91dHB1dF9maWxlXCIgZmlsZSBhbHJlYWR5IGV4aXN0IC0gY2hvb3NlIGFub3RoZXIgZmlsZVxu IgorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2hlbHAKKyAgICAgICAgICAgICAgICAgICAg ICAgIGV4aXQgMQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICAjIEl0IGlzIG9rYXkgdG8gb3ZlcndyaXRlIGRlZmF1bHQgZmlsZSBjcmVhdGVkCisgICAg ICAgICAgICAgICAgZWNobyAtZSAiT3V0cHV0IGZpbGUgbm90IHNwZWNpZmllZCAtIHVzaW5nIGRl ZmF1bHQgZmlsZSBcIiRnZW5fZGV2aWNlLWNiX2Fzc2VtYmxlZFwiXG4iCisgICAgICAgICAgICAg ICAgb3V0cHV0X2ZpbGU9IiRnZW5fZGV2aWNlLWNiX2Fzc2VtYmxlZCIKKyAgICAgICAgZmkKK30K K2Z1bmN0aW9uIGFzbV9jYl9rZXJuZWwgIyBhcy1yb290IDxhcmdzPgoreworICAgICAgICBjaGVj a19vdXRwdXRfZmlsZQorCisgICAgICAgICMgVXNpbmcgaTk2NV9hc20gdG9vbCB0byBhc3NlbWJs ZSBoZXggZmlsZSBmcm9tIGFzc2VtYmx5IHNvdXJjZQorICAgICAgICAkSTk2NV9BU00gLWcgJGdl bl9kZXZpY2UgLXQgY19saXRlcmFsICAkaW5wdXRfYXNtX3NvdXJjZSAtbyAkb3V0cHV0X2ZpbGUK KworICAgICAgICAjIEdlbmVyYXRlIGhlYWRlciBmaWxlCisgICAgICAgIGlmIFsgIiRnZW5fZGV2 aWNlIiA9PSAiaHN3IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAiR2VuZXJhdGluZyBn ZW43LjUgQ0IgS2VybmVsIGFzc2VtYmxlZCBmaWxlIFwiaHN3X2NsZWFyX2tlcm5lbC5jXCIgZm9y IGk5MTUgZHJpdmVyLi4uIgorCisgICAgICAgICAgICAgICAgaTkxNV9maWxlbmFtZT1oc3dfY2xl YXJfa2VybmVsLmMKKyAgICAgICAgICAgICAgICBwcmVmaXhfaGVhZGVyICRnZW5fZGV2aWNlID4g JGk5MTVfZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBjYXQgJG91dHB1dF9maWxlID4+ICRpOTE1 X2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgcG9zdGZpeF9mb290ZXIgJGk5MTVfZmlsZW5hbWUg Pj4gJGk5MTVfZmlsZW5hbWUKKworICAgICAgICBlbGlmIFsgIiRnZW5fZGV2aWNlIiA9PSAiaXZi IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAiR2VuZXJhdGluZyBnZW43IENCIEtlcm5l bCBhc3NlbWJsZWQgZmlsZSBcIml2Yl9jbGVhcl9rZXJuZWwuY1wiIGZvciBpOTE1IGRyaXZlci4u LiIKKworICAgICAgICAgICAgICAgIGk5MTVfZmlsZW5hbWU9aXZiX2NsZWFyX2tlcm5lbC5jCisg ICAgICAgICAgICAgICAgcHJlZml4X2hlYWRlciAkZ2VuX2RldmljZSA+ICRpOTE1X2ZpbGVuYW1l CisgICAgICAgICAgICAgICAgY2F0ICRvdXRwdXRfZmlsZSA+PiAkaTkxNV9maWxlbmFtZQorICAg ICAgICAgICAgICAgIHBvc3RmaXhfZm9vdGVyICRpOTE1X2ZpbGVuYW1lID4+ICRpOTE1X2ZpbGVu YW1lCisgICAgICAgIGZpCit9CisKK3doaWxlIGdldG9wdHMgImhnOm86bToiIG9wdDsgZG8KKwlj YXNlICRvcHQgaW4KKwkJaCkgZ2V0X2hlbHA7IGV4aXQgMDs7CisJCWcpIGdlbl9kZXZpY2U9IiRP UFRBUkciIDs7CisJCW8pIG91dHB1dF9maWxlPSIkT1BUQVJHIiA7OworICAgICAgICAgICAgICAg IG0pIG1lc2FfZGlyPSIkT1BUQVJHIiA7OworCQlcPykKKwkJCWVjaG8gLWUgIlVua25vd24gb3B0 aW9uOiAtJE9QVEFSR1xuIgorCQkJZ2V0X2hlbHAKKwkJCWV4aXQgMQorCQkJOzsKKwllc2FjCitk b25lCitzaGlmdCAkKCgkT1BUSU5ELTEpKQorCitpZiBbICJ4JDEiICE9ICJ4IiBdOyB0aGVuCisJ ZWNobyAtZSAiVW5rbm93biBvcHRpb246ICQxXG4iCisJZ2V0X2hlbHAKKwlleGl0IDEKK2ZpCisK K0k5NjVfQVNNPSIkbWVzYV9kaXIvYnVpbGQvZGVidWcvc3JjL2ludGVsL3Rvb2xzL2k5NjVfYXNt IgoraWYgWyAhIC1mICR7STk2NV9BU019IF07IHRoZW4KKyAgICAgICAgZWNobyAtZSAiaTk2NV9h c20gbm90IGZvdW5kIGF0ICR7STk2NV9BU019XG4iCisgICAgICAgIGdldF9oZWxwCisgICAgICAg IGV4aXQgMQorZmkKKworaWYgWyAieCRnZW5fZGV2aWNlIiAhPSAieCIgXTsgdGhlbgorICAgICAg ICBpZiBbICIkZ2VuX2RldmljZSIgPT0gImhzdyIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGlu cHV0X2FzbV9zb3VyY2U9IiR7QVNTRU1CTFlfU09VUkNFfS9oc3dfY2xlYXJfYnVmLmFzbSIKKyAg ICAgICAgZWxpZiBbICIkZ2VuX2RldmljZSIgPT0gIml2YiIgXTsgdGhlbgorICAgICAgICAgICAg ICAgIGlucHV0X2FzbV9zb3VyY2U9IiR7QVNTRU1CTFlfU09VUkNFfS9pdmJfY2xlYXJfYnVmLmFz bSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVjaG8gLWUgIlVua25vd24gcGxhdGZv cm0gc3BlY2lmaWVkXG4iCisgICAgICAgICAgICAgICAgZ2V0X2hlbHAKKyAgICAgICAgICAgICAg ICBleGl0IDEKKyAgICAgICAgZmkKKwlhc21fY2Jfa2VybmVsCitlbHNlCisgICAgICAgIGVjaG8g LWUgIlBsYXRmb3JtIGdlbmVyYXRpb24gbm90IHNwZWNpZmllZFxuIgorICAgICAgICBnZXRfaGVs cAorICAgICAgICBleGl0IDEKK2ZpCmRpZmYgLS1naXQgYS90b29scy9hc3NlbWJseV9zb3VyY2Uv aHN3X2NsZWFyX2J1Zi5hc20gYi90b29scy9hc3NlbWJseV9zb3VyY2UvaHN3X2NsZWFyX2J1Zi5h c20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmJjMjliYWYyCi0tLSAvZGV2 L251bGwKKysrIGIvdG9vbHMvYXNzZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYuYXNtCkBAIC0w LDAgKzEsMTQxIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCisvKgorICog Q29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKy8qKgorICogS2VybmVsIG5hbWU6 IGhzd19jbGVhcl9idWYuYXNtCisgKgorICogS2VybmVsIGZvciBQQVZQIGJ1ZmZlciBjbGVhci4K KyAqCisgKgkxLiBDbGVhciBhbGwgNjQgR1JGIHJlZ2lzdGVycyBhc3NpZ25lZCB0byB0aGUga2Vy bmVsIHdpdGggZGVzaWduYXRlZCB2YWx1ZTsKKyAqCTIuIFdyaXRlIDMyeDE2IGJsb2NrIG9mIGFs bCAiMCIgdG8gcmVuZGVyIHRhcmdldCBidWZmZXIgd2hpY2ggaW5kaXJlY3RseSBjbGVhcnMKKyAq CSAgIDUxMiBieXRlcyBvZiBSZW5kZXIgQ2FjaGUuCisgKi8KKworLyogU3RvcmUgZGVzaWduYXRl ZCAiY2xlYXIgR1JGIiB2YWx1ZSAqLworbW92KDEpICAgICAgICAgIGYwLjE8MT5VVyAgICAgICBn MS4yPDAsMSwwPlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKKy8qKgorICog Q3VyYmUgRm9ybWF0CisgKgorICogRFcgMS4wIC0gQmxvY2sgT2Zmc2V0IHRvIHdyaXRlIFJlbmRl ciBDYWNoZQorICogRFcgMS4xIFsxNTowXSAtIENsZWFyIFdvcmQKKyAqIERXIDEuMiAtIERlbGF5 IGl0ZXJhdGlvbnMKKyAqIERXIDEuMyAtIEVuYWJsZSBJbnN0cnVtZW50YXRpb24gKG9ubHkgZm9y IGRlYnVnKQorICogRFcgMS40IC0gUnN2ZCAoaW50ZW5kZWQgZm9yIGNvbnRleHQgSUQpCisgKiBE VyAxLjUgLSBbMzE6MTZdOlNsaWNlQ291bnQsIFsxNTowXTpTdWJTbGljZVBlclNsaWNlQ291bnQK KyAqIERXIDEuNiAtIFJzdmQgTUJaIChpbnRlbmRlZCBmb3IgRW5hYmxlIFdhaXQgb24gVG90YWwg VGhyZWFkIENvdW50KQorICogRFcgMS43IC0gUnN2ZCBNQlogKGludGVkZWQgZm9yIFRvdGFsIFRo cmVhZCBDb3VudCkKKyAqCisgKiBCaW5kaW5nIFRhYmxlCisgKgorICogQlRJIDA6IDJEIFN1cmZh Y2UgdG8gaGVscCBjbGVhciBMMyAoUmVuZGVyL0RhdGEgQ2FjaGUpCisgKiBCVEkgMTogV2FpdC9J bnN0cnVtZW50YXRpb24gQnVmZmVyCisgKiAgU2l6ZSA6IChTbGljZUNvdW50ICogU3ViU2xpY2VD b3VudCAgKiAxNiBFVXMvU3ViU2xpY2UpIHJvd3MgKiAoMTYgdGhyZWFkcy9FVSkgY29scyAoRm9y bWF0IFIzMl9VSU5UKQorICogICAgICAgICBFeHBlY3RlZCB0byBiZSBpbml0aWFsaXplZCB0byAw IGJ5IGRyaXZlci9hbm90aGVyIGtlcm5lbAorICogIExheW91dDoKKyAqICAgICAgICAgIFJvd046 IEhpc3RvZ3JhbSBmb3IgRVUtTjogKFNsaWNlSUQqU3ViU2xpY2VQZXJTbGljZUNvdW50ICsgU1NJ RCkqMTYgKyBFVUlEIFthc3N1bWUgbWF4IDE2IEVVcyAvIFNTXQorICogICAgICAgICAgQ29sLWtb RFcta106IFRocmVhZHMgRXhlY3V0ZWQgb24gVGhyZWFkSUQtayBmb3IgRVUtTgorICovCithZGQo MSkgICAgICAgICAgZzEuMjwxPlVEICAgICAgIGcxLjI8MCwxLDA+VUQgICAweDAwMDAwMDAxVUQg ICAgeyBhbGlnbjEgMU4gfTsgLyogTG9vcCBjb3VudCB0byBkZWxheSBrZXJuZWw6IEluaXQgdG8g KGcxLjIgKyAxKSAqLworY21wLnouZjAuMCgxKSAgIG51bGw8MT5VRCAgICAgICBnMS4zPDAsMSww PlVEICAgMHgwMDAwMDAwMFVEICAgIHsgYWxpZ24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgMzUy RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0Vf YWxsIDFOIH07CisKKy8qKgorICogU3RhdGUgUmVnaXN0ZXIgaGFzIGluZm8gb24gd2hlcmUgdGhp cyB0aHJlYWQgaXMgcnVubmluZworICoJSVZCOiBzcjAuMCA6OiBbMTU6MTNdOiBNQlosIDEyOiBI U0lEIChIYWxmLVNsaWNlIElEKSwgWzExOjhdRVVJRCwgWzI6MF0gVGhyZWFkU2xvdElECisgKglI U1c6IHNyMC4wIDo6IDE1OiBNQlosIFsxNDoxM106IFNsaWNlSUQsIDEyOiBIU0lEIChIYWxmLVNs aWNlIElEKSwgWzExOjhdRVVJRCwgWzI6MF0gVGhyZWFkU2xvdElECisgKi8KK21vdig4KSAgICAg ICAgICBnMzwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFs aWduMSAxUSB9Oworc2hyKDEpICAgICAgICAgIGczPDE+RCAgICAgICAgICBzcjA8MCwxLDA+RCAg ICAgMTJEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzM8MT5E ICAgICAgICAgIGczPDAsMSwwPkQgICAgICAxRCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsg LyogZzMgaGFzIEhTSUQgKi8KK3NocigxKSAgICAgICAgICBnMy4xPDE+RCAgICAgICAgc3IwPDAs MSwwPkQgICAgIDEzRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAg IGczLjE8MT5EICAgICAgICBnMy4xPDAsMSwwPkQgICAgM0QgICAgICAgICAgICAgIHsgYWxpZ24x IDFOIH07IC8qIGczLjEgaGFzIHNsaWNlSUQgKi8KK211bCgxKSAgICAgICAgICBnMy41PDE+RCAg ICAgICAgZzMuMTwwLDEsMD5EICAgIGcxLjEwPDAsMSwwPlVXICB7IGFsaWduMSAxTiB9OworYWRk KDEpICAgICAgICAgIGczPDE+RCAgICAgICAgICBnMzwwLDEsMD5EICAgICAgZzMuNTwwLDEsMD5E ICAgIHsgYWxpZ24xIDFOIH07IC8qIGczID0gc2xpY2VJRCAqIFN1YlNsaWNlUGVyU2xpY2VDb3Vu dCArIEhTSUQgKi8KK3NocigxKSAgICAgICAgICBnMy4yPDE+RCAgICAgICAgc3IwPDAsMSwwPkQg ICAgIDhEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAgIGczLjI8 MT5EICAgICAgICBnMy4yPDAsMSwwPkQgICAgMTVEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07 IC8qIGczLjIgPSBFVUlEICovCittdWwoMSkgICAgICAgICAgZzMuNDwxPkQgICAgICAgIGczPDAs MSwwPkQgICAgICAxNkQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FkZCgxKSAgICAgICAg ICBnMy4yPDE+RCAgICAgICAgZzMuMjwwLDEsMD5EICAgIGczLjQ8MCwxLDA+RCAgICB7IGFsaWdu MSAxTiB9OyAvKiBnMy4yIG5vdyBwb2ludHMgdG8gRVUgcm93IG51bWJlciAoWS1waXhlbCA9IFYg YWRkcmVzcyApICBpbiBpbnN0cnVtZW50YXRpb24gc3VyZiAqLworCittb3YoOCkgICAgICAgICAg ZzU8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEg MVEgfTsKK2FuZCgxKSAgICAgICAgICBnMy4zPDE+RCAgICAgICAgc3IwPDAsMSwwPkQgICAgIDdE ICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworbXVsKDEpICAgICAgICAgIGczLjM8MT5EICAg ICAgICBnMy4zPDAsMSwwPkQgICAgNEQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKK21v dig4KSAgICAgICAgICBnNDwxPlVEICAgICAgICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAg ICAgICB7IGFsaWduMSAxUSB9OyAvKiBJbml0aWFsaXplIG1lc3NhZ2UgaGVhZGVyIHdpdGggZzAg Ki8KK21vdigxKSAgICAgICAgICBnNDwxPlVEICAgICAgICAgZzMuMzwwLDEsMD5VRCAgICAgICAg ICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBvZmZzZXQgKi8KK21vdigxKSAgICAg ICAgICBnNC4xPDE+VUQgICAgICAgZzMuMjwwLDEsMD5VRCAgICAgICAgICAgICAgICAgICB7IGFs aWduMSAxTiB9OyAvKiBCbG9jayBvZmZzZXQgKi8KK21vdigxKSAgICAgICAgICBnNC4yPDE+VUQg ICAgICAgMHgwMDAwMDAwM1VEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBC bG9jayBzaXplICgxIHJvdyB4IDQgYnl0ZXMpICovCithbmQoMSkgICAgICAgICAgZzQuMzwxPlVE ICAgICAgIGc0LjM8MCwxLDA+VVcgICAweGZmZmZmZmZmVUQgICAgeyBhbGlnbjEgMU4gfTsKKwor LyogTWVkaWEgYmxvY2sgcmVhZCB0byBmZXRjaCBjdXJyZW50IHZhbHVlIGF0IHNwZWNpZmllZCBs b2NhdGlvbiBpbiBpbnN0cnVtZW50YXRpb24gYnVmZmVyICovCitzZW5kYyg4KSAgICAgICAgZzU8 MT5VRCAgICAgICAgIGc0PDgsOCwxPkYgICAgICAweDAyMTkwMDAxCisKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgcmVhZCBNc2dDdHJsID0g MHgwIFN1cmZhY2UgPSAxIG1sZW4gMSBybGVuIDEgeyBhbGlnbjEgMVEgfTsKK2FkZCgxKSAgICAg ICAgICBnNTwxPkQgICAgICAgICAgZzU8MCwxLDA+RCAgICAgIDFEICAgICAgICAgICAgICB7IGFs aWduMSAxTiB9OworCisvKiBNZWRpYSBibG9jayB3cml0ZSBmb3IgdXBkYXRlZCB2YWx1ZSBhdCBz cGVjaWZpZWQgbG9jYXRpb24gaW4gaW5zdHJ1bWVudGF0aW9uIGJ1ZmZlciAqLworc2VuZGMoOCkg ICAgICAgIGc1PDE+VUQgICAgICAgICBnNDw4LDgsMT5GICAgICAgMHgwNDBhODAwMQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0ZSBN c2dDdHJsID0gMHgwIFN1cmZhY2UgPSAxIG1sZW4gMiBybGVuIDAgeyBhbGlnbjEgMVEgfTsKKwor LyogRGVsYXkgdGhyZWFkIGZvciBzcGVjaWZpZWQgcGFyYW1ldGVyICovCithZGQubnouZjAuMCgx KSAgZzEuMjwxPlVEICAgICAgIGcxLjI8MCwxLDA+VUQgICAtMUQgICAgICAgICAgICAgeyBhbGln bjEgMU4gfTsKKygrZjAuMCkgam1waSgxKSAtMzJEICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyogU3RvcmUgZGVzaWdu YXRlZCAiY2xlYXIgR1JGIiB2YWx1ZSAqLworbW92KDEpICAgICAgICAgIGYwLjE8MT5VVyAgICAg ICBnMS4yPDAsMSwwPlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKKy8qIElu aXRpYWxpemUgbG9vcGluZyBwYXJhbWV0ZXJzICovCittb3YoMSkgICAgICAgICAgYTA8MT5EICAg ICAgICAgIDBEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyog SW5pdGlhbGl6ZSBhMC4wOnc9MCAqLworbW92KDEpICAgICAgICAgIGEwLjQ8MT5XICAgICAgICAx MjdXICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIExvb3AgY291 bnQuIEVhY2ggbG9vcCBjb250YWlucyAxNiBHUkYncyAqLworCisvKiBXcml0ZSAzMngxNiBhbGwg IjAiIGJsb2NrICovCittb3YoOCkgICAgICAgICAgZzI8MT5VRCAgICAgICAgIGcwPDgsOCwxPlVE ICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsKK21vdig4KSAgICAgICAgICBnMTI3 PDE+VUQgICAgICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9 OworbW92KDIpICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMTwyLDIsMT5VVyAgICAgICAgICAg ICAgICAgICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMSkgICAgICAgICAgZzIuMjwxPlVEICAgICAg IDB4MDAwZjAwMGZVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sg c2l6ZSAoMTZ4MTYpICovCithbmQoMSkgICAgICAgICAgZzIuMzwxPlVEICAgICAgIGcyLjM8MCwx LDA+VVcgICAweGZmZmZmZmVmVUQgICAgeyBhbGlnbjEgMU4gfTsKK21vdigxNikgICAgICAgICBn MzwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx SCB9OworbW92KDE2KSAgICAgICAgIGc0PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAg ICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzU8MT5VRCAgICAg ICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigx NikgICAgICAgICBnNjwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAg ICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc3PDE+VUQgICAgICAgICAweDAwMDAw MDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAg Zzg8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEg MUggfTsKK21vdigxNikgICAgICAgICBnOTwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAg ICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGcxMDwxPlVEICAg ICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07CitzZW5k Yyg4KSAgICAgICAgbnVsbDwxPlVEICAgICAgIGcyPDgsOCwxPkYgICAgICAweDEyMGE4MDAwCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHdy aXRlIE1zZ0N0cmwgPSAweDAgU3VyZmFjZSA9IDAgbWxlbiA5IHJsZW4gMCB7IGFsaWduMSAxUSB9 OworYWRkKDEpICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMTwwLDEsMD5VVyAgICAgMHgwMDEw VVcgICAgICAgIHsgYWxpZ24xIDFOIH07CitzZW5kYyg4KSAgICAgICAgbnVsbDwxPlVEICAgICAg IGcyPDgsOCwxPkYgICAgICAweDEyMGE4MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHdyaXRlIE1zZ0N0cmwgPSAweDAgU3VyZmFjZSA9 IDAgbWxlbiA5IHJsZW4gMCB7IGFsaWduMSAxUSB9OworCisvKiBOb3csIGNsZWFyIGFsbCBHUkYg cmVnaXN0ZXJzICovCithZGQubnouZjAuMCgxKSAgYTAuNDwxPlcgICAgICAgIGEwLjQ8MCwxLDA+ VyAgICAtMVcgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK21vdigxNikgICAgICAgICBnW2Ew XTwxPlVXICAgICAgZjAuMTwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9 OworYWRkKDEpICAgICAgICAgIGEwPDE+RCAgICAgICAgICBhMDwwLDEsMD5EICAgICAgMzJEICAg ICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgLTY0RCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisK Ky8qIFRlcm1pbmFudGUgdGhlIHRocmVhZCAqLworc2VuZGMoOCkgICAgICAgIG51bGw8MT5VRCAg ICAgICBnMTI3PDgsOCwxPkYgICAgMHg4MjAwMDAxMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRocmVhZF9zcGF3bmVyIE1zZ0Rlc2M6IG1sZW4gMSBybGVuIDAgICAgICAgICAgIHsgYWxp Z24xIDFRIEVPVCB9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvYXNzZW1ibHlfc291cmNlL2l2Yl9jbGVh cl9idWYuYXNtIGIvdG9vbHMvYXNzZW1ibHlfc291cmNlL2l2Yl9jbGVhcl9idWYuYXNtCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iMjFiYzk0OAotLS0gL2Rldi9udWxsCisr KyBiL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9pdmJfY2xlYXJfYnVmLmFzbQpAQCAtMCwwICsxLDEz OSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENvcHlyaWdo dCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0 CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisvKioKKyAqIEtlcm5lbCBuYW1lOiBpdmJfY2xl YXJfYnVmLmFzbQorICoKKyAqIEtlcm5lbCBmb3IgUEFWUCBidWZmZXIgY2xlYXIuCisgKgorICoJ MS4gQ2xlYXIgYWxsIDY0IEdSRiByZWdpc3RlcnMgYXNzaWduZWQgdG8gdGhlIGtlcm5lbCB3aXRo IGRlc2lnbmF0ZWQgdmFsdWU7CisgKgkyLiBXcml0ZSAzMngxNiBibG9jayBvZiBhbGwgIjAiIHRv IHJlbmRlciB0YXJnZXQgYnVmZmVyIHdoaWNoIGluZGlyZWN0bHkgY2xlYXJzCisgKgkgICA1MTIg Ynl0ZXMgb2YgUmVuZGVyIENhY2hlLgorICovCisKKy8qIFN0b3JlIGRlc2lnbmF0ZWQgImNsZWFy IEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAgICBmMC4xPDE+VVcgICAgICAgZzEuMjwwLDEs MD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworCisvKioKKyAqIEN1cmJlIEZv cm1hdAorICoKKyAqIERXIDEuMCAtIEJsb2NrIE9mZnNldCB0byB3cml0ZSBSZW5kZXIgQ2FjaGUK KyAqIERXIDEuMSBbMTU6MF0gLSBDbGVhciBXb3JkCisgKiBEVyAxLjIgLSBEZWxheSBpdGVyYXRp b25zCisgKiBEVyAxLjMgLSBFbmFibGUgSW5zdHJ1bWVudGF0aW9uIChvbmx5IGZvciBkZWJ1ZykK KyAqIERXIDEuNCAtIFJzdmQgKGludGVuZGVkIGZvciBjb250ZXh0IElEKQorICogRFcgMS41IC0g WzMxOjE2XTpTbGljZUNvdW50LCBbMTU6MF06U3ViU2xpY2VQZXJTbGljZUNvdW50CisgKiBEVyAx LjYgLSBSc3ZkIE1CWiAoaW50ZW5kZWQgZm9yIEVuYWJsZSBXYWl0IG9uIFRvdGFsIFRocmVhZCBD b3VudCkKKyAqIERXIDEuNyAtIFJzdmQgTUJaIChpbnRlZGVkIGZvciBUb3RhbCBUaHJlYWQgQ291 bnQpCisgKgorICogQmluZGluZyBUYWJsZQorICoKKyAqIEJUSSAwOiAyRCBTdXJmYWNlIHRvIGhl bHAgY2xlYXIgTDMgKFJlbmRlci9EYXRhIENhY2hlKQorICogQlRJIDE6IFdhaXQvSW5zdHJ1bWVu dGF0aW9uIEJ1ZmZlcgorICogIFNpemUgOiAoU2xpY2VDb3VudCAqIFN1YlNsaWNlQ291bnQgICog MTYgRVVzL1N1YlNsaWNlKSByb3dzICogKDE2IHRocmVhZHMvRVUpIGNvbHMgKEZvcm1hdCBSMzJf VUlOVCkKKyAqICAgICAgICAgRXhwZWN0ZWQgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBieSBkcml2 ZXIvYW5vdGhlciBrZXJuZWwKKyAqICBMYXlvdXQgOgorICogICAgICAgICAgIFJvd046IEhpc3Rv Z3JhbSBmb3IgRVUtTjogKFNsaWNlSUQqU3ViU2xpY2VQZXJTbGljZUNvdW50ICsgU1NJRCkqMTYg KyBFVUlEIFthc3N1bWUgbWF4IDE2IEVVcyAvIFNTXQorICogICAgICAgICAgIENvbC1rW0RXLWtd OiBUaHJlYWRzIEV4ZWN1dGVkIG9uIFRocmVhZElELWsgZm9yIEVVLU4KKyAqLworYWRkKDEpICAg ICAgICAgIGcxLjI8MT5VRCAgICAgICBnMS4yPDAsMSwwPlVEICAgMHgwMDAwMDAwMVVEICAgIHsg YWxpZ24xIDFOIH07IC8qIExvb3AgY291bnQgdG8gZGVsYXkga2VybmVsOiBJbml0IHRvIChnMS4y ICsgMSkgKi8KK2NtcC56LmYwLjAoMSkgICBudWxsPDE+VUQgICAgICAgZzEuMzwwLDEsMD5VRCAg IDB4MDAwMDAwMDBVRCAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIDQ0RCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2FsbCAx TiB9OworCisvKioKKyAqIFN0YXRlIFJlZ2lzdGVyIGhhcyBpbmZvIG9uIHdoZXJlIHRoaXMgdGhy ZWFkIGlzIHJ1bm5pbmcKKyAqCUlWQjogc3IwLjAgOjogWzE1OjEzXTogTUJaLCAxMjogSFNJRCAo SGFsZi1TbGljZSBJRCksIFsxMTo4XUVVSUQsIFsyOjBdIFRocmVhZFNsb3RJRAorICoJSFNXOiBz cjAuMCA6OiAxNTogTUJaLCBbMTQ6MTNdOiBTbGljZUlELCAxMjogSFNJRCAoSGFsZi1TbGljZSBJ RCksIFsxMTo4XUVVSUQsIFsyOjBdIFRocmVhZFNsb3RJRAorICovCittb3YoOCkgICAgICAgICAg ZzM8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEg MVEgfTsKK3NocigxKSAgICAgICAgICBnMzwxPkQgICAgICAgICAgc3IwPDAsMSwwPkQgICAgIDEy RCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAgIGczPDE+RCAgICAg ICAgICBnMzwwLDEsMD5EICAgICAgMUQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIGcz IGhhcyBIU0lEICovCitzaHIoMSkgICAgICAgICAgZzMuMTwxPkQgICAgICAgIHNyMDwwLDEsMD5E ICAgICAxM0QgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBnMy4x PDE+RCAgICAgICAgZzMuMTwwLDEsMD5EICAgIDNEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9 OyAvKiBnMy4xIGhhcyBzbGljZUlEICovCittdWwoMSkgICAgICAgICAgZzMuNTwxPkQgICAgICAg IGczLjE8MCwxLDA+RCAgICBnMS4xMDwwLDEsMD5VVyAgeyBhbGlnbjEgMU4gfTsKK2FkZCgxKSAg ICAgICAgICBnMzwxPkQgICAgICAgICAgZzM8MCwxLDA+RCAgICAgIGczLjU8MCwxLDA+RCAgICB7 IGFsaWduMSAxTiB9OyAvKiBnMyA9IHNsaWNlSUQgKiBTdWJTbGljZVBlclNsaWNlQ291bnQgKyBI U0lEICovCitzaHIoMSkgICAgICAgICAgZzMuMjwxPkQgICAgICAgIHNyMDwwLDEsMD5EICAgICA4 RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBnMy4yPDE+RCAg ICAgICAgZzMuMjwwLDEsMD5EICAgIDE1RCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBn My4yID0gRVVJRCAqLworbXVsKDEpICAgICAgICAgIGczLjQ8MT5EICAgICAgICBnMzwwLDEsMD5E ICAgICAgMTZEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithZGQoMSkgICAgICAgICAgZzMu MjwxPkQgICAgICAgIGczLjI8MCwxLDA+RCAgICBnMy40PDAsMSwwPkQgICAgeyBhbGlnbjEgMU4g fTsgLyogZzMuMiBub3cgcG9pbnRzIHRvIEVVIHJvdyBudW1iZXIgKFktcGl4ZWwgPSBWIGFkZHJl c3MgKSAgaW4gaW5zdHJ1bWVudGF0aW9uIHN1cmYgKi8KKworbW92KDgpICAgICAgICAgIGc1PDE+ VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07 CithbmQoMSkgICAgICAgICAgZzMuMzwxPkQgICAgICAgIHNyMDwwLDEsMD5EICAgICA3RCAgICAg ICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK211bCgxKSAgICAgICAgICBnMy4zPDE+RCAgICAgICAg ZzMuMzwwLDEsMD5EICAgIDREICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworCittb3YoOCkg ICAgICAgICAgZzQ8MT5VRCAgICAgICAgIGcwPDgsOCwxPlVEICAgICAgICAgICAgICAgICAgICAg eyBhbGlnbjEgMVEgfTsgLyogSW5pdGlhbGl6ZSBtZXNzYWdlIGhlYWRlciB3aXRoIGcwICovCitt b3YoMSkgICAgICAgICAgZzQ8MT5VRCAgICAgICAgIGczLjM8MCwxLDA+VUQgICAgICAgICAgICAg ICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sgb2Zmc2V0ICovCittb3YoMSkgICAgICAgICAg ZzQuMTwxPlVEICAgICAgIGczLjI8MCwxLDA+VUQgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEg MU4gfTsgLyogQmxvY2sgb2Zmc2V0ICovCittb3YoMSkgICAgICAgICAgZzQuMjwxPlVEICAgICAg IDB4MDAwMDAwMDNVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sg c2l6ZSAoMSByb3cgeCA0IGJ5dGVzKSAqLworYW5kKDEpICAgICAgICAgIGc0LjM8MT5VRCAgICAg ICBnNC4zPDAsMSwwPlVXICAgMHhmZmZmZmZmZlVEICAgIHsgYWxpZ24xIDFOIH07CisKKy8qIE1l ZGlhIGJsb2NrIHJlYWQgdG8gZmV0Y2ggY3VycmVudCB2YWx1ZSBhdCBzcGVjaWZpZWQgbG9jYXRp b24gaW4gaW5zdHJ1bWVudGF0aW9uIGJ1ZmZlciAqLworc2VuZGMoOCkgICAgICAgIGc1PDE+VUQg ICAgICAgICBnNDw4LDgsMT5GICAgICAgMHgwMjE5MDAwMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayByZWFkIE1zZ0N0cmwgPSAweDAgU3Vy ZmFjZSA9IDEgbWxlbiAxIHJsZW4gMSB7IGFsaWduMSAxUSB9OworYWRkKDEpICAgICAgICAgIGc1 PDE+RCAgICAgICAgICBnNTwwLDEsMD5EICAgICAgMUQgICAgICAgICAgICAgIHsgYWxpZ24xIDFO IH07CisKKy8qIE1lZGlhIGJsb2NrIHdyaXRlIGZvciB1cGRhdGVkIHZhbHVlIGF0IHNwZWNpZmll ZCBsb2NhdGlvbiBpbiBpbnN0cnVtZW50YXRpb24gYnVmZmVyICovCitzZW5kYyg4KSAgICAgICAg ZzU8MT5VRCAgICAgICAgIGc0PDgsOCwxPkYgICAgICAweDA0MGE4MDAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHdyaXRlIE1zZ0N0cmwg PSAweDAgU3VyZmFjZSA9IDEgbWxlbiAyIHJsZW4gMCB7IGFsaWduMSAxUSB9OworLyogRGVsYXkg dGhyZWFkIGZvciBzcGVjaWZpZWQgcGFyYW1ldGVyICovCithZGQubnouZjAuMCgxKSAgZzEuMjwx PlVEICAgICAgIGcxLjI8MCwxLDA+VUQgICAtMUQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsK KygrZjAuMCkgam1waSgxKSAtNEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyogU3RvcmUgZGVzaWduYXRlZCAiY2xl YXIgR1JGIiB2YWx1ZSAqLworbW92KDEpICAgICAgICAgIGYwLjE8MT5VVyAgICAgICBnMS4yPDAs MSwwPlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKKy8qIEluaXRpYWxpemUg bG9vcGluZyBwYXJhbWV0ZXJzICovCittb3YoMSkgICAgICAgICAgYTA8MT5EICAgICAgICAgIDBE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogSW5pdGlhbGl6 ZSBhMC4wOnc9MCAqLworbW92KDEpICAgICAgICAgIGEwLjQ8MT5XICAgICAgICAxMjdXICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIExvb3AgY291bnQuIEVhY2gg bG9vcCBjb250YWlucyAxNiBHUkYncyAqLworCisvKiBXcml0ZSAzMngxNiBhbGwgIjAiIGJsb2Nr ICovCittb3YoOCkgICAgICAgICAgZzI8MT5VRCAgICAgICAgIGcwPDgsOCwxPlVEICAgICAgICAg ICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsKK21vdig4KSAgICAgICAgICBnMTI3PDE+VUQgICAg ICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9OworbW92KDIp ICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMTwyLDIsMT5VVyAgICAgICAgICAgICAgICAgICAg IHsgYWxpZ24xIDFOIH07Cittb3YoMSkgICAgICAgICAgZzIuMjwxPlVEICAgICAgIDB4MDAwZjAw MGZVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sgc2l6ZSAoMTZ4 MTYpICovCithbmQoMSkgICAgICAgICAgZzIuMzwxPlVEICAgICAgIGcyLjM8MCwxLDA+VVcgICAw eGZmZmZmZmVmVUQgICAgeyBhbGlnbjEgMU4gfTsKK21vdigxNikgICAgICAgICBnMzwxPlVEICAg ICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92 KDE2KSAgICAgICAgIGc0PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAg ICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzU8MT5VRCAgICAgICAgIDB4MDAw MDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAg ICBnNjwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWdu MSAxSCB9OworbW92KDE2KSAgICAgICAgIGc3PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAg ICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzg8MT5VRCAg ICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21v digxNikgICAgICAgICBnOTwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAg ICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGcxMDwxPlVEICAgICAgICAweDAw MDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07CitzZW5kYyg4KSAgICAg ICAgbnVsbDwxPlVEICAgICAgIGcyPDgsOCwxPkYgICAgICAweDEyMGE4MDAwCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHdyaXRlIE1zZ0N0 cmwgPSAweDAgU3VyZmFjZSA9IDAgbWxlbiA5IHJsZW4gMCB7IGFsaWduMSAxUSB9OworYWRkKDEp ICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMTwwLDEsMD5VVyAgICAgMHgwMDEwVVcgICAgICAg IHsgYWxpZ24xIDFOIH07CitzZW5kYyg4KSAgICAgICAgbnVsbDwxPlVEICAgICAgIGcyPDgsOCwx PkYgICAgICAweDEyMGE4MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyIE1z Z0Rlc2M6IG1lZGlhIGJsb2NrIHdyaXRlIE1zZ0N0cmwgPSAweDAgU3VyZmFjZSA9IDAgbWxlbiA5 IHJsZW4gMCB7IGFsaWduMSAxUSB9OworCisvKiBOb3csIGNsZWFyIGFsbCBHUkYgcmVnaXN0ZXJz ICovCithZGQubnouZjAuMCgxKSAgYTAuNDwxPlcgICAgICAgIGEwLjQ8MCwxLDA+VyAgICAtMVcg ICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK21vdigxNikgICAgICAgICBnW2EwXTwxPlVXICAg ICAgZjAuMTwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworYWRkKDEp ICAgICAgICAgIGEwPDE+RCAgICAgICAgICBhMDwwLDEsMD5EICAgICAgMzJEICAgICAgICAgICAg IHsgYWxpZ24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgLThEICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisKKy8qIFRlcm1p bmFudGUgdGhlIHRocmVhZCAqLworc2VuZGMoOCkgICAgICAgIG51bGw8MT5VRCAgICAgICBnMTI3 PDgsOCwxPkYgICAgMHg4MjAwMDAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVh ZF9zcGF3bmVyIE1zZ0Rlc2M6IG1sZW4gMSBybGVuIDAgICAgICAgICAgIHsgYWxpZ24xIDFRIEVP VCB9OwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK