<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>218407</bug_id>
          
          <creation_ts>2020-10-30 16:30:24 -0700</creation_ts>
          <short_desc>[webkit-patch] Append identifier to commit message</short_desc>
          <delta_ts>2020-11-04 16:03:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703250</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-30 16:30:24 -0700</bug_when>
    <thetext>We need to append the identifier to the commit message so that identifiers are present in places which do not natively support them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703252</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-30 16:30:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/70902230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703253</commentid>
    <comment_count>2</comment_count>
      <attachid>412809</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-30 16:36:53 -0700</bug_when>
    <thetext>Created attachment 412809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703279</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-30 17:52:29 -0700</bug_when>
    <thetext>I think we probably want to override &apos;trunk&apos; and make it &apos;main&apos; to prepare for our new Git-only world, I&apos;m also not certain if we want this at the beginning or end of the commit message. I did the end of the commit message (like git-svn and Chromium do), but that is less accessible than making it the 2nd line of the commit message.

The worst part about all of this is that once we make this decision, we really don&apos;t want to back-track on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703685</commentid>
    <comment_count>4</comment_count>
      <attachid>412968</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-11-02 14:02:35 -0800</bug_when>
    <thetext>Created attachment 412968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704598</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-11-04 14:13:42 -0800</bug_when>
    <thetext>Probably need to do this from commit-log-editor, but I&apos;m still not entirely sure how this script works, because it requires being passed a ChangeLog to function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704646</commentid>
    <comment_count>6</comment_count>
      <attachid>412968</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-11-04 16:03:35 -0800</bug_when>
    <thetext>Comment on attachment 412968
Patch

Was really trying to avoid doing this server-side, because I&apos;m pretty sure we will end up needing to it after the commit has already happened (ie, edit the changelog after a commit has occurred)

I&apos;m not super excited about doing editing commit messages right after the commit has happened, but that might be the best solution.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412809</attachid>
            <date>2020-10-30 16:36:53 -0700</date>
            <delta_ts>2020-11-02 14:02:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218407-20201030163653.patch</filename>
            <type>text/plain</type>
            <size>30649</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTIwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIwLTEwLTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0LXBhdGNoXSBBcHBlbmQgaWRlbnRpZmllciB0byBjb21taXQg
bWVzc2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4NDA3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDkwMjIzMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6IEJ1bXAgdmVyc2lvbgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19p
bml0X18ucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9tb2Nrcy9wb3Blbi5weToKKyAgICAgICAgKFBvcGVuQmFzZSk6CisgICAgICAgIChQ
b3BlbkJhc2Uud2l0aF9mYWxsYmFjayk6IFVzZSBnZW51aW5lIFBvcGVuIGlmIG5vIHByb2dyYW0g
aXMgZm91bmQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzLnB5OiBNb3ZlIHRvIHN1YnByb2Nlc3NfLnB5LgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3Mv
c3VicHJvY2Vzc18ucHk6IE1vdmVkIGZyb20gc3VicHJvY2Vzcy5weS4KKyAgICAgICAgKFN1YnBy
b2Nlc3MuZmFsbGJhY2spOiBBbGxvdyBtb2NrIFBvcGVuIHRvIGZhbGwtYmFjayB0byB0aGUgZ2Vu
dWluZSBmdW5jdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGVja291dC5weToKKyAgICAgICAgKENoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdCk6IEFwcGVuZCBpZGVudGlmaWVyIHRvIGNvbW1pdCBtZXNzYWdlLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Ogor
CiAyMDIwLTEwLTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbd2Via2l0cHldIFVzZSBhbGxvd2xpc3QgYW5kIGJsb2NrbGlzdApJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjkyMDYpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQgaW1wb3J0IFRp
bWVvdXQKIGZyb20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0IFRpbWVvdXRF
eHBpcmVkLCBDb21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5Lm91dHB1dF9j
YXB0dXJlIGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRwdXREdXBsaWNh
dGUKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgNCwgMjApCit2ZXJzaW9uID0gVmVyc2lvbigwLCA1
LCAwKQogCiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5zdGFsbCBpbXBvcnQgUGFja2FnZSwgQXV0
b0luc3RhbGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkJKHJldmlzaW9uIDI2OTIwNikKKysrIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18u
cHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDYgQEAKIAogZnJvbSB3ZWJraXRjb3JlcHku
bW9ja3MuY29udGV4dF9zdGFjayBpbXBvcnQgQ29udGV4dFN0YWNrCiBmcm9tIHdlYmtpdGNvcmVw
eS5tb2Nrcy50aW1lXyBpbXBvcnQgVGltZQotZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Muc3VicHJv
Y2VzcyBpbXBvcnQgUHJvY2Vzc0NvbXBsZXRpb24sIFN1YnByb2Nlc3MKK2Zyb20gd2Via2l0Y29y
ZXB5Lm1vY2tzLnN1YnByb2Nlc3NfIGltcG9ydCBQcm9jZXNzQ29tcGxldGlvbiwgU3VicHJvY2Vz
cwogCiBmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy5yZXF1ZXN0cyBpbXBvcnQgUmVzcG9uc2UKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9j
a3MvcG9wZW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9wb3Blbi5weQkocmV2aXNpb24gMjY5MjA2KQorKysg
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9w
b3Blbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjIsMTQgKzIyLDE1IEBACiAKIGltcG9ydCBvcwog
aW1wb3J0IGlvCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBsb2csIHN0cmluZ191dGlscywgVGltZW91dCwgVGltZW91dEV4cGlyZWQsIHVuaWNvZGUKIGZy
b20gd2Via2l0Y29yZXB5Lm1vY2tzIGltcG9ydCBTdWJwcm9jZXNzCiAKKwogIyBUaGlzIGZpbGUg
aXMgbW9ja2VkIHZlcnNpb24gb2YgdGhlIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0LiBUaGlzIG9i
amVjdCBkaWZmZXJzIHNsaWdodGx5IGJldHdlZW4gUHl0aG9uIDIgYW5kIDMuCiAjIFRoaXMgb2Jq
ZWN0IGlzIG5vdCBhIGNvbXBsZXRlIG1vY2sgb2Ygc3VicHJvY2Vzcy5Qb3BlbiwgYnV0IGl0IGRv
ZXMgZW5hYmxlIHRob3JvdWdoIHRlc3Rpbmcgb2YgY29kZSB3aGljaCB1c2VzIFBvcGVuLAogIyBp
biBwYXJ0aWN1bGFyLCB0aGUgc3VicHJvY2Vzcy5jaGVja19jYWxsLCBzdWJwcm9jZXNzLmNoZWNr
X291dHB1dCBhbmQgc3VicHJvY2Vzcy5ydW4gY29tbWFuZHMuCkBAIC0zOSw4ICs0MCwxNiBAQCBm
cm9tIHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgU3VicHJvY2VzCiAKIAogY2xhc3MgUG9wZW5C
YXNlKG9iamVjdCk6CisgICAgb3JpZ2luYWwgPSBzdWJwcm9jZXNzLlBvcGVuCiAgICAgTkVYVF9Q
SUQgPSBvcy5nZXRwaWQoKSArIDEKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB3aXRoX2Zh
bGxiYWNrKGNscywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmV0dXJuIGNscygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBP
U0Vycm9yLCBBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICByZXR1cm4gY2xzLm9yaWdpbmFs
KCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzLCBidWZzaXpl
PU5vbmUsIGN3ZD1Ob25lLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgog
ICAgICAgICBzZWxmLl9jb21wbGV0aW9uID0gTm9uZQogICAgICAgICBzZWxmLl9jb21tdW5pY2F0
aW9uX3N0YXJ0ZWQgPSBGYWxzZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3Mvc3Vi
cHJvY2Vzcy5weQkocmV2aXNpb24gMjY5MjA2KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzLnB5CShub25leGlzdGVu
dCkKQEAgLTEsMTg3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgotIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWZyb20gZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9f
a2V5Ci1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzLCB1bmljb2RlCi1mcm9t
IHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgQ29udGV4dFN0YWNrCi0KLQotY2xhc3MgUHJvY2Vz
c0NvbXBsZXRpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZT1O
b25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIGVsYXBzZWQ9MCk6Ci0gICAgICAgIHNlbGYu
cmV0dXJuY29kZSA9IDEgaWYgcmV0dXJuY29kZSBpcyBOb25lIGVsc2UgcmV0dXJuY29kZQotICAg
ICAgICBzZWxmLnN0ZG91dCA9IHN0cmluZ191dGlscy5lbmNvZGUoc3Rkb3V0KSBpZiBzdGRvdXQg
ZWxzZSBiJycKLSAgICAgICAgc2VsZi5zdGRlcnIgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKHN0ZGVy
cikgaWYgc3RkZXJyIGVsc2UgYicnCi0gICAgICAgIHNlbGYuZWxhcHNlZCA9IGVsYXBzZWQKLQot
Ci1jbGFzcyBTdWJwcm9jZXNzKENvbnRleHRTdGFjayk6Ci0gICAgIiIiCi0gICAgT3JnYW5pemUg
UHJvY2Vzc0NvbXBsZXRpb25zIHNvIGNhbGxzIHRvIHN1YnByb2Nlc3MgZnVuY3Rpb25zIHdpbGwg
cmV0dXJuIGEgUHJvY2Vzc0NvbXBsZXRpb24gZm9yCi0gICAgYSBzZXQgb2YgYXJndW1lbnRzIG9y
IHRyaWdnZXIgYSBQcm9jZXNzQ29tcGxldGlvbiBnZW5lcmF0b3IuIG1vY2tzLlN1YnByb2Nlc3Mg
bWFrZXMgYW4gYXR0ZW1wdCB0bwotICAgIHByaW9yaXRpemUgQ29tbWFuZFJvdXRlIG9iamVjdHMg
Zm9yIGEgZ2l2ZW4gc2V0IG9mIGFyZ3VtZW50cyBzdWNoIHRoYXQgdGhlIG1vc3Qgc3BlY2lmaWMg
YXBwbGljYWJsZSByb3V0ZQotICAgIGlzIHByZWZlcmVkLgotCi0gICAgRXhhbXBsZSB1c2FnZSBt
b2NraW5nIGEgc2luZ2xlIGNvbW1hbmQ6Ci0gICAgICAgIHdpdGggbW9ja3MuU3VicHJvY2VzcygK
LSAgICAgICAgICAgICdscycsIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0
dXJuY29kZT0wLCBzdGRvdXQ9J2ZpbGUxLnR4dFxuZmlsZTIudHh0XG4nKSwKLSAgICAgICAgKToK
LSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bihbJ2xzJ10sIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVu
Y29kaW5nPSd1dGYtOCcpCi0gICAgICAgICAgICBhc3NlcnQgcmVzdWx0LnJldHVybmNvZGUgPT0g
MAotICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5zdGRvdXQgPT0gJ2ZpbGUxLnR4dFxuZmlsZTIu
dHh0XG4nCi0KLSAgICBFeGFtcGxlIHVzYWdlIG1vY2tpbmcgYSBzZXQgb2YgY29tbWFuZHM6Ci0g
ICAgICAgIHdpdGggbW9ja3MuU3VicHJvY2VzcygKLSAgICAgICAgICAgIG1vY2tzLlN1YnByb2Nl
c3MuQ29tbWFuZFJvdXRlKCdjb21tYW5kLWEnLCAnYXJndW1lbnQnLCBjb21wbGV0aW9uPW1vY2tz
LlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCkpLAotICAgICAgICAgICAgbW9ja3MuU3Vi
cHJvY2Vzcy5Db21tYW5kUm91dGUoJ2NvbW1hbmQtYicsIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24ocmV0dXJuY29kZT0tMSkpLAotICAgICAgICApOgotICAgICAgICAgICAgcmVz
dWx0ID0gcnVuKFsnY29tbWFuZC1hJywgJ2FyZ3VtZW50J10pCi0gICAgICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldHVybmNvZGUgPT0gMAotCi0gICAgICAgICAgICByZXN1bHQgPSBydW4oWydjb21t
YW5kLWInXSkKLSAgICAgICAgICAgIGFzc2VydCByZXN1bHQucmV0dXJuY29kZSA9PSAtMQotICAg
ICIiIgotICAgIHRvcCA9IE5vbmUKLQotICAgIGNsYXNzIENvbW1hbmRSb3V0ZShvYmplY3QpOgot
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAg
IGNvbXBsZXRpb24gPSBrd2FyZ3MucG9wKCdjb21wbGV0aW9uJywgUHJvY2Vzc0NvbXBsZXRpb24o
KSkKLSAgICAgICAgICAgIGN3ZCA9IGt3YXJncy5wb3AoJ2N3ZCcsIE5vbmUpCi0gICAgICAgICAg
ICBpbnB1dCA9IGt3YXJncy5wb3AoJ2lucHV0JywgTm9uZSkKLSAgICAgICAgICAgIGdlbmVyYXRv
ciA9IGt3YXJncy5wb3AoJ2dlbmVyYXRvcicsIE5vbmUpCi0gICAgICAgICAgICBpZiBrd2FyZ3Mu
a2V5cygpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19pbml0X18oKSBnb3Qg
YW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50IHt9Jy5mb3JtYXQoa3dhcmdzLmtleXMoKVsw
XSkpCi0KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgc3RyKSBvciBpc2luc3RhbmNl
KGFyZ3MsIHVuaWNvZGUpOgotICAgICAgICAgICAgICAgIHNlbGYuYXJncyA9IFthcmdzXQotICAg
ICAgICAgICAgZWxpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdBcmd1bWVudHMgbXVzdCBiZSBwcm92aWRlZCB0byBhIENvbW1hbmRSb3V0ZScpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKLQotICAgICAgICAg
ICAgc2VsZi5nZW5lcmF0b3IgPSBnZW5lcmF0b3Igb3IgKGxhbWJkYSAqYXJncywgKiprd2FyZ3M6
IGNvbXBsZXRpb24pCi0gICAgICAgICAgICBzZWxmLmN3ZCA9IGN3ZAotICAgICAgICAgICAgc2Vs
Zi5pbnB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUoaW5wdXQpIGlmIGlucHV0IGVsc2UgTm9uZQot
Ci0gICAgICAgIGRlZiBtYXRjaGVzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAg
ICBjd2QgPSBrd2FyZ3MucG9wKCdjd2QnLCBOb25lKQotICAgICAgICAgICAgaW5wdXQgPSBrd2Fy
Z3MucG9wKCdpbnB1dCcsIE5vbmUpCi0gICAgICAgICAgICBpZiBrd2FyZ3Mua2V5cygpOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWF0Y2hlcygpIGdvdCBhbiB1bmV4cGVjdGVk
IGtleXdvcmQgYXJndW1lbnQge30nLmZvcm1hdChrd2FyZ3Mua2V5cygpWzBdKSkKLQotICAgICAg
ICAgICAgaWYgbGVuKHNlbGYuYXJncykgPiBsZW4oYXJncyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIGZvciBjb3VudCBpbiByYW5nZShsZW4oc2VsZi5hcmdz
KSk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5hcmdzW2NvdW50XSBpcyBOb25lOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuYXJn
c1tjb3VudF0gPT0gYXJnc1tjb3VudF06Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGYuYXJnc1tjb3VudF0sICdtYXRjaCcpIGFu
ZCBzZWxmLmFyZ3NbY291bnRdLm1hdGNoKGFyZ3NbY291bnRdKToKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbGlmIHJlLm1hdGNoKHNlbGYuYXJnc1tjb3Vu
dF0sIGFyZ3NbY291bnRdKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAgICAgaWYgc2VsZi5jd2QgaXMgbm90IE5v
bmUgYW5kIGN3ZCAhPSBzZWxmLmN3ZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgICAgIGlmIHNlbGYuaW5wdXQgaXMgbm90IE5vbmUgYW5kIGlucHV0ICE9IHNlbGYuaW5w
dXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICByZXR1cm4gVHJ1
ZQotCi0gICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAg
ICAgICAgY3dkID0ga3dhcmdzLnBvcCgnY3dkJywgTm9uZSkKLSAgICAgICAgICAgIGlucHV0ID0g
a3dhcmdzLnBvcCgnaW5wdXQnLCBOb25lKQotICAgICAgICAgICAgaWYga3dhcmdzLmtleXMoKToK
LSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19fY2FsbF9fKCkgZ290IGFuIHVuZXhw
ZWN0ZWQga2V5d29yZCBhcmd1bWVudCB7fScuZm9ybWF0KGt3YXJncy5rZXlzKClbMF0pKQotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuZ2VuZXJhdG9yKCphcmdzLCBjd2Q9Y3dkLCBpbnB1dD1pbnB1
dCkKLQotICAgICAgICBAY2xhc3NtZXRob2QKLSAgICAgICAgZGVmIGNvbXBhcmUoY2xzLCBhLCBi
KToKLSAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gWwotICAgICAgICAgICAgICAgIGxlbihi
LmFyZ3MpIC0gbGVuKGEuYXJncyksCi0gICAgICAgICAgICAgICAgMCBpZiB0eXBlKGEuY3dkKSA9
PSB0eXBlKGIuY3dkKSBlbHNlIC0xIGlmIGEuY3dkIGVsc2UgMSwKLSAgICAgICAgICAgICAgICAw
IGlmIHR5cGUoYS5pbnB1dCkgPT0gdHlwZShiLmlucHV0KSBlbHNlIC0xIGlmIGEuaW5wdXQgZWxz
ZSAxLAotICAgICAgICAgICAgXToKLSAgICAgICAgICAgICAgICBpZiBjYW5kaWRhdGU6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUKLSAgICAgICAgICAgIHJldHVybiAwCi0K
LSAgICBSb3V0ZSA9IENvbW1hbmRSb3V0ZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNv
bXBsZXRpb25fZ2VuZXJhdG9yX2ZvcihjbHMsIHByb2dyYW0pOgotICAgICAgICBjdXJyZW50ID0g
Y2xzLnRvcAotICAgICAgICBjYW5kaWRhdGVzID0gW10KLSAgICAgICAgd2hpbGUgY3VycmVudDoK
LSAgICAgICAgICAgIGZvciBjb21wbGV0aW9uIGluIGN1cnJlbnQuY29tcGxldGlvbnM6Ci0gICAg
ICAgICAgICAgICAgaWYgY29tcGxldGlvbi5hcmdzWzBdID09IHByb2dyYW06Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGNvbXBsZXRpb24pCi0gICAgICAgICAgICAgICAg
aWYgY3VycmVudC5vcmRlcmVkOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAg
ICAgY3VycmVudCA9IGN1cnJlbnQucHJldmlvdXMKLQotICAgICAgICBpZiBjYW5kaWRhdGVzOgot
ICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMKLQotICAgICAgICBpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApOgotICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoIk5vIHN1
Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICd7cGF0aH0nOiAne3BhdGh9JyIuZm9ybWF0KHBhdGg9cHJv
Z3JhbSkpCi0gICAgICAgIHJhaXNlIE9TRXJyb3IoJ1tFcnJubyAyXSBObyBzdWNoIGZpbGUgb3Ig
ZGlyZWN0b3J5JykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb21wbGV0aW9uX2Zvcihj
bHMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGNhbmRpZGF0ZXMgPSBbCi0gICAgICAgICAg
ICBjYW5kaWRhdGUgZm9yIGNhbmRpZGF0ZSBpbiBjbHMuY29tcGxldGlvbl9nZW5lcmF0b3JfZm9y
KGFyZ3NbMF0pIGlmIGNhbmRpZGF0ZS5tYXRjaGVzKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAg
XQotICAgICAgICBpZiBub3QgY2FuZGlkYXRlczoKLSAgICAgICAgICAgIHJhaXNlIEFzc2VydGlv
bkVycm9yKCdQcm92aWRlZCBhcmd1bWVudHMgdG8ge30gZG8gbm90IG1hdGNoIGEgcHJvdmlkZWQg
Y29tcGxldGlvbicuZm9ybWF0KGFyZ3NbMF0pKQotCi0gICAgICAgIGNvbXBsZXRpb24gPSBjYW5k
aWRhdGVzWzBdCi0gICAgICAgIGN1cnJlbnQgPSBjbHMudG9wCi0gICAgICAgIHdoaWxlIGN1cnJl
bnQ6Ci0gICAgICAgICAgICBpZiBjdXJyZW50Lm9yZGVyZWQgYW5kIGNvbXBsZXRpb24gaXMgY3Vy
cmVudC5jb21wbGV0aW9uc1swXToKLSAgICAgICAgICAgICAgICBjdXJyZW50LmNvbXBsZXRpb25z
LnBvcCgwKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBjdXJyZW50ID0gY3Vy
cmVudC5wcmV2aW91cwotICAgICAgICByZXR1cm4gY29tcGxldGlvbigqYXJncywgKiprd2FyZ3Mp
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYg
YWxsKFtpc2luc3RhbmNlKGFyZywgc2VsZi5Db21tYW5kUm91dGUpIGZvciBhcmcgaW4gYXJnc10p
OgotICAgICAgICAgICAgc2VsZi5vcmRlcmVkID0ga3dhcmdzLnBvcCgnb3JkZXJlZCcsIEZhbHNl
KQotICAgICAgICAgICAgaWYga3dhcmdzLmtleXMoKToKLSAgICAgICAgICAgICAgICByYWlzZSBU
eXBlRXJyb3IoJ19faW5pdF9fKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCB7
fScuZm9ybWF0KGt3YXJncy5rZXlzKClbMF0pKQotICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9u
cyA9IGxpc3QoYXJncykgaWYgc2VsZi5vcmRlcmVkIGVsc2Ugc29ydGVkKGFyZ3MsIGtleT1jbXBf
dG9fa2V5KHNlbGYuQ29tbWFuZFJvdXRlLmNvbXBhcmUpKQotICAgICAgICBlbGlmIGFueShbaXNp
bnN0YW5jZShhcmcsIHNlbGYuQ29tbWFuZFJvdXRlKSBmb3IgYXJnIGluIGFyZ3NdKToKLSAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcignbW9ja3MuU3VicHJvY2VzcyBhcmd1bWVudHMgbXVzdCBi
ZSBvZiBhIGNvbnNpc3RlbnQgdHlwZScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxm
Lm9yZGVyZWQgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9ucyA9IFtzZWxmLkNv
bW1hbmRSb3V0ZSgqYXJncywgKiprd2FyZ3MpXQotCi0gICAgICAgIHN1cGVyKFN1YnByb2Nlc3Ms
IHNlbGYpLl9faW5pdF9fKGNscz1TdWJwcm9jZXNzKQotCi0gICAgICAgICMgQWxsb3cgbW9jayB0
byBiZSBtYW5hZ2VkIHZpYSBhdXRvaW5zdGFsbAotICAgICAgICBmcm9tIG1vY2sgaW1wb3J0IHBh
dGNoCi0gICAgICAgIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLnBvcGVuIGltcG9ydCBQb3Blbgot
ICAgICAgICBzZWxmLnBhdGNoZXMuYXBwZW5kKHBhdGNoKCdzdWJwcm9jZXNzLlBvcGVuJywgbmV3
PVBvcGVuKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvbW9ja3Mvc3VicHJvY2Vzc18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzXy5w
eQkocmV2aXNpb24gMjY5MjA2KQkoZnJvbSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3N1YnByb2Nlc3MucHk6MjY5MjA2KQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9j
ZXNzXy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4NyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworZnJvbSBmdW5j
dG9vbHMgaW1wb3J0IGNtcF90b19rZXkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdf
dXRpbHMsIHVuaWNvZGUKK2Zyb20gd2Via2l0Y29yZXB5Lm1vY2tzIGltcG9ydCBDb250ZXh0U3Rh
Y2sKKworCitjbGFzcyBQcm9jZXNzQ29tcGxldGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXR1cm5jb2RlPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgZWxhcHNl
ZD0wKToKKyAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gMSBpZiByZXR1cm5jb2RlIGlzIE5vbmUg
ZWxzZSByZXR1cm5jb2RlCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gc3RyaW5nX3V0aWxzLmVuY29k
ZShzdGRvdXQpIGlmIHN0ZG91dCBlbHNlIGInJworICAgICAgICBzZWxmLnN0ZGVyciA9IHN0cmlu
Z191dGlscy5lbmNvZGUoc3RkZXJyKSBpZiBzdGRlcnIgZWxzZSBiJycKKyAgICAgICAgc2VsZi5l
bGFwc2VkID0gZWxhcHNlZAorCisKK2NsYXNzIFN1YnByb2Nlc3MoQ29udGV4dFN0YWNrKToKKyAg
ICAiIiIKKyAgICBPcmdhbml6ZSBQcm9jZXNzQ29tcGxldGlvbnMgc28gY2FsbHMgdG8gc3VicHJv
Y2VzcyBmdW5jdGlvbnMgd2lsbCByZXR1cm4gYSBQcm9jZXNzQ29tcGxldGlvbiBmb3IKKyAgICBh
IHNldCBvZiBhcmd1bWVudHMgb3IgdHJpZ2dlciBhIFByb2Nlc3NDb21wbGV0aW9uIGdlbmVyYXRv
ci4gbW9ja3MuU3VicHJvY2VzcyBtYWtlcyBhbiBhdHRlbXB0IHRvCisgICAgcHJpb3JpdGl6ZSBD
b21tYW5kUm91dGUgb2JqZWN0cyBmb3IgYSBnaXZlbiBzZXQgb2YgYXJndW1lbnRzIHN1Y2ggdGhh
dCB0aGUgbW9zdCBzcGVjaWZpYyBhcHBsaWNhYmxlIHJvdXRlCisgICAgaXMgcHJlZmVyZWQuCisK
KyAgICBFeGFtcGxlIHVzYWdlIG1vY2tpbmcgYSBzaW5nbGUgY29tbWFuZDoKKyAgICAgICAgd2l0
aCBtb2Nrcy5TdWJwcm9jZXNzKAorICAgICAgICAgICAgJ2xzJywgY29tcGxldGlvbj1tb2Nrcy5Q
cm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTAsIHN0ZG91dD0nZmlsZTEudHh0XG5maWxlMi50
eHRcbicpLAorICAgICAgICApOgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuKFsnbHMnXSwgY2Fw
dHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgIGFzc2VydCBy
ZXN1bHQucmV0dXJuY29kZSA9PSAwCisgICAgICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dCA9
PSAnZmlsZTEudHh0XG5maWxlMi50eHRcbicKKworICAgIEV4YW1wbGUgdXNhZ2UgbW9ja2luZyBh
IHNldCBvZiBjb21tYW5kczoKKyAgICAgICAgd2l0aCBtb2Nrcy5TdWJwcm9jZXNzKAorICAgICAg
ICAgICAgbW9ja3MuU3VicHJvY2Vzcy5Db21tYW5kUm91dGUoJ2NvbW1hbmQtYScsICdhcmd1bWVu
dCcsIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKSksCisg
ICAgICAgICAgICBtb2Nrcy5TdWJwcm9jZXNzLkNvbW1hbmRSb3V0ZSgnY29tbWFuZC1iJywgY29t
cGxldGlvbj1tb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPS0xKSksCisgICAgICAg
ICk6CisgICAgICAgICAgICByZXN1bHQgPSBydW4oWydjb21tYW5kLWEnLCAnYXJndW1lbnQnXSkK
KyAgICAgICAgICAgIGFzc2VydCByZXN1bHQucmV0dXJuY29kZSA9PSAwCisKKyAgICAgICAgICAg
IHJlc3VsdCA9IHJ1bihbJ2NvbW1hbmQtYiddKQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXR1cm5jb2RlID09IC0xCisgICAgIiIiCisgICAgdG9wID0gTm9uZQorCisgICAgY2xhc3MgQ29t
bWFuZFJvdXRlKG9iamVjdCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICAgICAgY29tcGxldGlvbiA9IGt3YXJncy5wb3AoJ2NvbXBsZXRpb24n
LCBQcm9jZXNzQ29tcGxldGlvbigpKQorICAgICAgICAgICAgY3dkID0ga3dhcmdzLnBvcCgnY3dk
JywgTm9uZSkKKyAgICAgICAgICAgIGlucHV0ID0ga3dhcmdzLnBvcCgnaW5wdXQnLCBOb25lKQor
ICAgICAgICAgICAgZ2VuZXJhdG9yID0ga3dhcmdzLnBvcCgnZ2VuZXJhdG9yJywgTm9uZSkKKyAg
ICAgICAgICAgIGlmIGt3YXJncy5rZXlzKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKCdfX2luaXRfXygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQge30nLmZv
cm1hdChrd2FyZ3Mua2V5cygpWzBdKSkKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdz
LCBzdHIpIG9yIGlzaW5zdGFuY2UoYXJncywgdW5pY29kZSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5hcmdzID0gW2FyZ3NdCisgICAgICAgICAgICBlbGlmIG5vdCBhcmdzOgorICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIHByb3ZpZGVkIHRvIGEgQ29t
bWFuZFJvdXRlJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hcmdz
ID0gYXJncworCisgICAgICAgICAgICBzZWxmLmdlbmVyYXRvciA9IGdlbmVyYXRvciBvciAobGFt
YmRhICphcmdzLCAqKmt3YXJnczogY29tcGxldGlvbikKKyAgICAgICAgICAgIHNlbGYuY3dkID0g
Y3dkCisgICAgICAgICAgICBzZWxmLmlucHV0ID0gc3RyaW5nX3V0aWxzLmVuY29kZShpbnB1dCkg
aWYgaW5wdXQgZWxzZSBOb25lCisKKyAgICAgICAgZGVmIG1hdGNoZXMoc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKToKKyAgICAgICAgICAgIGN3ZCA9IGt3YXJncy5wb3AoJ2N3ZCcsIE5vbmUpCisgICAg
ICAgICAgICBpbnB1dCA9IGt3YXJncy5wb3AoJ2lucHV0JywgTm9uZSkKKyAgICAgICAgICAgIGlm
IGt3YXJncy5rZXlzKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtYXRjaGVz
KCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCB7fScuZm9ybWF0KGt3YXJncy5r
ZXlzKClbMF0pKQorCisgICAgICAgICAgICBpZiBsZW4oc2VsZi5hcmdzKSA+IGxlbihhcmdzKToK
KyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgZm9yIGNvdW50IGlu
IHJhbmdlKGxlbihzZWxmLmFyZ3MpKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmFyZ3NbY291
bnRdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg
ICAgICAgICAgaWYgc2VsZi5hcmdzW2NvdW50XSA9PSBhcmdzW2NvdW50XToKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZi5hcmdz
W2NvdW50XSwgJ21hdGNoJykgYW5kIHNlbGYuYXJnc1tjb3VudF0ubWF0Y2goYXJnc1tjb3VudF0p
OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsaWYgcmUu
bWF0Y2goc2VsZi5hcmdzW2NvdW50XSwgYXJnc1tjb3VudF0pOgorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICAgICBp
ZiBzZWxmLmN3ZCBpcyBub3QgTm9uZSBhbmQgY3dkICE9IHNlbGYuY3dkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgaWYgc2VsZi5pbnB1dCBpcyBub3QgTm9uZSBh
bmQgaW5wdXQgIT0gc2VsZi5pbnB1dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdz
LCAqKmt3YXJncyk6CisgICAgICAgICAgICBjd2QgPSBrd2FyZ3MucG9wKCdjd2QnLCBOb25lKQor
ICAgICAgICAgICAgaW5wdXQgPSBrd2FyZ3MucG9wKCdpbnB1dCcsIE5vbmUpCisgICAgICAgICAg
ICBpZiBrd2FyZ3Mua2V5cygpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19j
YWxsX18oKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50IHt9Jy5mb3JtYXQoa3dh
cmdzLmtleXMoKVswXSkpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZW5lcmF0b3IoKmFyZ3Ms
IGN3ZD1jd2QsIGlucHV0PWlucHV0KQorCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBk
ZWYgY29tcGFyZShjbHMsIGEsIGIpOgorICAgICAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBbCisg
ICAgICAgICAgICAgICAgbGVuKGIuYXJncykgLSBsZW4oYS5hcmdzKSwKKyAgICAgICAgICAgICAg
ICAwIGlmIHR5cGUoYS5jd2QpID09IHR5cGUoYi5jd2QpIGVsc2UgLTEgaWYgYS5jd2QgZWxzZSAx
LAorICAgICAgICAgICAgICAgIDAgaWYgdHlwZShhLmlucHV0KSA9PSB0eXBlKGIuaW5wdXQpIGVs
c2UgLTEgaWYgYS5pbnB1dCBlbHNlIDEsCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgICAg
IGlmIGNhbmRpZGF0ZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZQorICAg
ICAgICAgICAgcmV0dXJuIDAKKworICAgIFJvdXRlID0gQ29tbWFuZFJvdXRlCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgY29tcGxldGlvbl9nZW5lcmF0b3JfZm9yKGNscywgcHJvZ3JhbSk6
CisgICAgICAgIGN1cnJlbnQgPSBjbHMudG9wCisgICAgICAgIGNhbmRpZGF0ZXMgPSBbXQorICAg
ICAgICB3aGlsZSBjdXJyZW50OgorICAgICAgICAgICAgZm9yIGNvbXBsZXRpb24gaW4gY3VycmVu
dC5jb21wbGV0aW9uczoKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0aW9uLmFyZ3NbMF0gPT0g
cHJvZ3JhbToKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoY29tcGxldGlv
bikKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Lm9yZGVyZWQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wcmV2aW91cworCisgICAg
ICAgIGlmIGNhbmRpZGF0ZXM6CisgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlcworCisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgICAgICAgICByYWlzZSBGaWxl
Tm90Rm91bmRFcnJvcigiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJ3twYXRofSc6ICd7cGF0
aH0nIi5mb3JtYXQocGF0aD1wcm9ncmFtKSkKKyAgICAgICAgcmFpc2UgT1NFcnJvcignW0Vycm5v
IDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGNvbXBsZXRpb25fZm9yKGNscywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgY2FuZGlk
YXRlcyA9IFsKKyAgICAgICAgICAgIGNhbmRpZGF0ZSBmb3IgY2FuZGlkYXRlIGluIGNscy5jb21w
bGV0aW9uX2dlbmVyYXRvcl9mb3IoYXJnc1swXSkgaWYgY2FuZGlkYXRlLm1hdGNoZXMoKmFyZ3Ms
ICoqa3dhcmdzKQorICAgICAgICBdCisgICAgICAgIGlmIG5vdCBjYW5kaWRhdGVzOgorICAgICAg
ICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ1Byb3ZpZGVkIGFyZ3VtZW50cyB0byB7fSBkbyBu
b3QgbWF0Y2ggYSBwcm92aWRlZCBjb21wbGV0aW9uJy5mb3JtYXQoYXJnc1swXSkpCisKKyAgICAg
ICAgY29tcGxldGlvbiA9IGNhbmRpZGF0ZXNbMF0KKyAgICAgICAgY3VycmVudCA9IGNscy50b3AK
KyAgICAgICAgd2hpbGUgY3VycmVudDoKKyAgICAgICAgICAgIGlmIGN1cnJlbnQub3JkZXJlZCBh
bmQgY29tcGxldGlvbiBpcyBjdXJyZW50LmNvbXBsZXRpb25zWzBdOgorICAgICAgICAgICAgICAg
IGN1cnJlbnQuY29tcGxldGlvbnMucG9wKDApCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnByZXZpb3VzCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICBpZiBhbGwoW2lzaW5zdGFuY2UoYXJnLCBzZWxmLkNvbW1hbmRSb3V0
ZSkgZm9yIGFyZyBpbiBhcmdzXSk6CisgICAgICAgICAgICBzZWxmLm9yZGVyZWQgPSBrd2FyZ3Mu
cG9wKCdvcmRlcmVkJywgRmFsc2UpCisgICAgICAgICAgICBpZiBrd2FyZ3Mua2V5cygpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19pbml0X18oKSBnb3QgYW4gdW5leHBlY3Rl
ZCBrZXl3b3JkIGFyZ3VtZW50IHt9Jy5mb3JtYXQoa3dhcmdzLmtleXMoKVswXSkpCisgICAgICAg
ICAgICBzZWxmLmNvbXBsZXRpb25zID0gbGlzdChhcmdzKSBpZiBzZWxmLm9yZGVyZWQgZWxzZSBz
b3J0ZWQoYXJncywga2V5PWNtcF90b19rZXkoc2VsZi5Db21tYW5kUm91dGUuY29tcGFyZSkpCisg
ICAgICAgIGVsaWYgYW55KFtpc2luc3RhbmNlKGFyZywgc2VsZi5Db21tYW5kUm91dGUpIGZvciBh
cmcgaW4gYXJnc10pOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtb2Nrcy5TdWJwcm9j
ZXNzIGFyZ3VtZW50cyBtdXN0IGJlIG9mIGEgY29uc2lzdGVudCB0eXBlJykKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYub3JkZXJlZCA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLmNv
bXBsZXRpb25zID0gW3NlbGYuQ29tbWFuZFJvdXRlKCphcmdzLCAqKmt3YXJncyldCisKKyAgICAg
ICAgc3VwZXIoU3VicHJvY2Vzcywgc2VsZikuX19pbml0X18oY2xzPVN1YnByb2Nlc3MpCisKKyAg
ICAgICAgIyBBbGxvdyBtb2NrIHRvIGJlIG1hbmFnZWQgdmlhIGF1dG9pbnN0YWxsCisgICAgICAg
IGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKKyAgICAgICAgZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Mu
cG9wZW4gaW1wb3J0IFBvcGVuCisgICAgICAgIHNlbGYucGF0Y2hlcy5hcHBlbmQocGF0Y2goJ3N1
YnByb2Nlc3MuUG9wZW4nLCBuZXc9UG9wZW4pKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzXy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L21vY2tzL3N1YnByb2Nlc3NfLnB5CShyZXZpc2lvbiAyNjkyMDYpCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3N1YnByb2Nlc3NfLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CiAjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKQEAg
LTE2Nyw2ICsxNjgsMTQgQEAgY2xhc3MgU3VicHJvY2VzcyhDb250ZXh0U3RhY2spOgogICAgICAg
ICAgICAgY3VycmVudCA9IGN1cnJlbnQucHJldmlvdXMKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b24oKmFyZ3MsICoqa3dhcmdzKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgQGNvbnRleHRsaWIu
Y29udGV4dG1hbmFnZXIKKyAgICBkZWYgZmFsbGJhY2soY2xzKToKKyAgICAgICAgZnJvbSBtb2Nr
IGltcG9ydCBwYXRjaAorICAgICAgICBmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy5wb3BlbiBpbXBv
cnQgUG9wZW4KKyAgICAgICAgd2l0aCBwYXRjaCgnc3VicHJvY2Vzcy5Qb3BlbicsIG5ldz1Qb3Bl
bi53aXRoX2ZhbGxiYWNrKToKKyAgICAgICAgICAgIHlpZWxkCisKICAgICBkZWYgX19pbml0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgaWYgYWxsKFtpc2luc3RhbmNlKGFyZywg
c2VsZi5Db21tYW5kUm91dGUpIGZvciBhcmcgaW4gYXJnc10pOgogICAgICAgICAgICAgc2VsZi5v
cmRlcmVkID0ga3dhcmdzLnBvcCgnb3JkZXJlZCcsIEZhbHNlKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkJKHJldmlzaW9u
IDI2OTIwNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNr
b3V0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgc3lzCiAKIGZy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQg
bG9jYWwKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCB1cmxzCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZywgcGFyc2Vf
YnVnX2lkX2Zyb21fY2hhbmdlbG9nCkBAIC0xMzEsMTMgKzEzMiwxOCBAQCBjbGFzcyBDaGVja291
dChvYmplY3QpOgogICAgIGRlZiBtb2RpZmllZF9ub25fY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29t
bWl0LCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgogICAgICAgICByZXR1cm4gc2VsZi5fbW9kaWZpZWRf
ZmlsZXNfbWF0Y2hpbmdfcHJlZGljYXRlKGdpdF9jb21taXQsIGxhbWJkYSBwYXRoOiBub3Qgc2Vs
Zi5pc19wYXRoX3RvX2NoYW5nZWxvZyhwYXRoKSwgY2hhbmdlZF9maWxlcz1jaGFuZ2VkX2ZpbGVz
KQogCi0gICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29t
bWl0LCBjaGFuZ2VkX2ZpbGVzPU5vbmUsIHJldHVybl9zdGRlcnI9RmFsc2UpOgorICAgIGRlZiBj
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9m
aWxlcz1Ob25lLCByZXR1cm5fc3RkZXJyPUZhbHNlLCBpbmNsdWRlX2lkZW50aWZpZXI9RmFsc2Up
OgogICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0
X2NvbW1pdCwgY2hhbmdlZF9maWxlcykKICAgICAgICAgaWYgbm90IGxlbihjaGFuZ2Vsb2dfcGF0
aHMpOgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRm91bmQgbm8gbW9k
aWZpZWQgQ2hhbmdlTG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsbCBjaGFuZ2VzIHJlcXVpcmUgYSBDaGFuZ2VM
b2cuICBTZWU6XG4gJXMiICUgdXJscy5jb250cmlidXRpb25fZ3VpZGVsaW5lcykKIAogICAgICAg
ICBtZXNzYWdlX3RleHQgPSBzZWxmLl9zY20ucnVuKFtzZWxmLnNjcmlwdF9wYXRoKCdjb21taXQt
bG9nLWVkaXRvcicpLCAnLS1wcmludC1sb2cnXSArIGNoYW5nZWxvZ19wYXRocywgcmV0dXJuX3N0
ZGVycj1yZXR1cm5fc3RkZXJyKQorICAgICAgICBoZWFkID0gbG9jYWwuU2NtLmZyb21fcGF0aChz
ZWxmLl9zY20uY2hlY2tvdXRfcm9vdCkuY29tbWl0KCkKKyAgICAgICAgaWYgaGVhZC5pZGVudGlm
aWVyOgorICAgICAgICAgICAgaGVhZC5pZGVudGlmaWVyICs9IDEKKyAgICAgICAgICAgIG1lc3Nh
Z2VfdGV4dCArPSAnXG5JZGVudGlmaWVyOiB7fVxuJy5mb3JtYXQoaGVhZCkKKwogICAgICAgICBy
ZXR1cm4gQ29tbWl0TWVzc2FnZShtZXNzYWdlX3RleHQuc3BsaXRsaW5lcygpKQogCiAgICAgZGVm
IHJlY2VudF9jb21taXRfaW5mb3NfZm9yX2ZpbGVzKHNlbGYsIHBhdGhzKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNr
b3V0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjkyMDYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsOCBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRl
c3QKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgbW9ja3MgYXMgY29yZW1vY2tzCitmcm9tIHdlYmtp
dHNjbXB5IGltcG9ydCBtb2NrcyBhcyBzY21tb2NrcwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dC5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKQEAgLTE5NSwxMyArMTk2LDE2
IEBAIExheW91dFRlc3RzOgogU2Vjb25kIHBhcnQgb2YgdGhpcyBjb21wbGljYXRlZCBjaGFuZ2Ug
YnkgbWUsIEZyXHUwMGU5ZFx1MDBlOXJpYyBXYW5nIQogCiAqIFBhdGgvVG8vQ29tcGxpY2F0ZWQv
RmlsZTogQWRkZWQuCisKK0lkZW50aWZpZXI6IDVAdHJ1bmsKICIiIgogCiAgICAgICAgIHNlbGYu
Y2hhbmdlbG9nX3BhdGhzID0gbGlzdChtYXAoc2VsZi5maWxlc3lzdGVtLmFic3BhdGgsIChzZWxm
LmZpbGVzeXN0ZW0uam9pbigiVG9vbHMiLCAiQ2hhbmdlTG9nIiksIHNlbGYuZmlsZXN5c3RlbS5q
b2luKCJMYXlvdXRUZXN0cyIsICJDaGFuZ2VMb2ciKSkpKQogCiAgICAgICAgIHNlbGYubW9ja19j
aGFuZ2Vsb2coKF9jaGFuZ2Vsb2cxLCBfY2hhbmdlbG9nMikpCiAgICAgICAgIGNoZWNrb3V0ID0g
c2VsZi5tb2NrX2NoZWNrb3V0X2Zvcl90ZXN0KCkKLSAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBj
aGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCBy
ZXR1cm5fc3RkZXJyPVRydWUpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpLCBzY21tb2Nr
cy5sb2NhbC5HaXQoKSwgc2NtbW9ja3MubG9jYWwuU3ZuKGNoZWNrb3V0Ll9zY20uY2hlY2tvdXRf
cm9vdCksIGNvcmVtb2Nrcy5TdWJwcm9jZXNzLmZhbGxiYWNrKCk6CisgICAgICAgICAgICBjb21t
aXRfbWVzc2FnZSA9IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRf
Y29tbWl0PU5vbmUsIHJldHVybl9zdGRlcnI9VHJ1ZSkKICAgICAgICAgIyBUaHJvdyBhd2F5IHRo
ZSBmaXJzdCBsaW5lIC0gYSB3YXJuaW5nIGFib3V0IHVua25vd24gVkNTIHJvb3QuCiAgICAgICAg
IGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2VfbGluZXMgPSBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xp
bmVzWzE6XQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1pdF9tZXNzYWdl
Lm1lc3NhZ2UoKSwgZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCkBAIC0yMTUsMTMgKzIxOSwxNiBA
QCBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KIAogKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdW51c2VkCiBXZWJLaXQueGNjb25maWcgZmls
ZS4KKworSWRlbnRpZmllcjogNUB0cnVuawogIiIiCiAKICAgICAgICAgc2VsZi5jaGFuZ2Vsb2df
cGF0aHMgPSBsaXN0KG1hcChzZWxmLmZpbGVzeXN0ZW0uYWJzcGF0aCwgW3NlbGYuZmlsZXN5c3Rl
bS5qb2luKCJTb3VyY2UvV2ViS2l0TGVnYWN5IiwgIkNoYW5nZUxvZyIpXSkpCiAKICAgICAgICAg
c2VsZi5tb2NrX2NoYW5nZWxvZyhbX2NoYW5nZWxvZzNdKQogICAgICAgICBjaGVja291dCA9IHNl
bGYubW9ja19jaGVja291dF9mb3JfdGVzdCgpCi0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY2hl
Y2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgcmV0
dXJuX3N0ZGVycj1UcnVlKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSwgc2NtbW9ja3Mu
bG9jYWwuR2l0KCksIHNjbW1vY2tzLmxvY2FsLlN2bihjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jv
b3QpLCBjb3JlbW9ja3MuU3VicHJvY2Vzcy5mYWxsYmFjaygpOgorICAgICAgICAgICAgY29tbWl0
X21lc3NhZ2UgPSBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2Nv
bW1pdD1Ob25lLCByZXR1cm5fc3RkZXJyPVRydWUpCiAgICAgICAgICMgVGhyb3cgYXdheSB0aGUg
Zmlyc3QgbGluZSAtIGEgd2FybmluZyBhYm91dCB1bmtub3duIFZDUyByb290LgogICAgICAgICBj
b21taXRfbWVzc2FnZS5tZXNzYWdlX2xpbmVzID0gY29tbWl0X21lc3NhZ2UubWVzc2FnZV9saW5l
c1sxOl0KICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21taXRfbWVzc2FnZS5t
ZXNzYWdlKCksIGV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQpAQCAtMjQxLDEzICsyNDgsMTYgQEAg
V2ViS2l0LnhjY29uZmlnIGZpbGUuCiBMYXlvdXRUZXN0czoKIAogKiBQYXRoL1RvL0NvbXBsaWNh
dGVkL0ZpbGU6IEFkZGVkLgorCitJZGVudGlmaWVyOiA1QHRydW5rCiAiIiIKIAogICAgICAgICBz
ZWxmLmNoYW5nZWxvZ19wYXRocyA9IGxpc3QobWFwKHNlbGYuZmlsZXN5c3RlbS5hYnNwYXRoLCAo
c2VsZi5maWxlc3lzdGVtLmpvaW4oIlNvdXJjZS9XZWJLaXRMZWdhY3kiLCAiQ2hhbmdlTG9nIiks
IHNlbGYuZmlsZXN5c3RlbS5qb2luKCJMYXlvdXRUZXN0cyIsICJDaGFuZ2VMb2ciKSkpKQogCiAg
ICAgICAgIHNlbGYubW9ja19jaGFuZ2Vsb2coKF9jaGFuZ2Vsb2czLCBfY2hhbmdlbG9nNCkpCiAg
ICAgICAgIGNoZWNrb3V0ID0gc2VsZi5tb2NrX2NoZWNrb3V0X2Zvcl90ZXN0KCkKLSAgICAgICAg
Y29tbWl0X21lc3NhZ2UgPSBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
Z2l0X2NvbW1pdD1Ob25lLCByZXR1cm5fc3RkZXJyPVRydWUpCisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpLCBzY21tb2Nrcy5sb2NhbC5HaXQoKSwgc2NtbW9ja3MubG9jYWwuU3ZuKGNoZWNr
b3V0Ll9zY20uY2hlY2tvdXRfcm9vdCksIGNvcmVtb2Nrcy5TdWJwcm9jZXNzLmZhbGxiYWNrKCk6
CisgICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zv
cl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHJldHVybl9zdGRlcnI9VHJ1ZSkKICAgICAg
ICAgIyBUaHJvdyBhd2F5IHRoZSBmaXJzdCBsaW5lIC0gYSB3YXJuaW5nIGFib3V0IHVua25vd24g
VkNTIHJvb3QuCiAgICAgICAgIGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2VfbGluZXMgPSBjb21taXRf
bWVzc2FnZS5tZXNzYWdlX2xpbmVzWzE6XQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVx
dWFsKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwgZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCkBA
IC0yNjksMTMgKzI3OSwxNiBAQCBMYXlvdXRUZXN0czoKIEZpbGxlciBjaGFuZ2UuCiAKICogUGF0
aC9Uby9Db21wbGljYXRlZC9GaWxlOiBBZGRlZC4KKworSWRlbnRpZmllcjogNUB0cnVuawogIiIi
CiAKICAgICAgICAgc2VsZi5jaGFuZ2Vsb2dfcGF0aHMgPSBsaXN0KG1hcChzZWxmLmZpbGVzeXN0
ZW0uYWJzcGF0aCwgKHNlbGYuZmlsZXN5c3RlbS5qb2luKCJTb3VyY2UvV2ViS2l0TGVnYWN5Iiwg
IkNoYW5nZUxvZyIpLCBzZWxmLmZpbGVzeXN0ZW0uam9pbigiTGF5b3V0VGVzdHMiLCAiQ2hhbmdl
TG9nIikpKSkKIAogICAgICAgICBzZWxmLm1vY2tfY2hhbmdlbG9nKChfY2hhbmdlbG9nMywgX2No
YW5nZWxvZzUpKQogICAgICAgICBjaGVja291dCA9IHNlbGYubW9ja19jaGVja291dF9mb3JfdGVz
dCgpCi0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgcmV0dXJuX3N0ZGVycj1UcnVlKQorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKSwgc2NtbW9ja3MubG9jYWwuR2l0KCksIHNjbW1vY2tzLmxv
Y2FsLlN2bihjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jvb3QpLCBjb3JlbW9ja3MuU3VicHJvY2Vz
cy5mYWxsYmFjaygpOgorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBjaGVja291dC5jb21t
aXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCByZXR1cm5fc3RkZXJy
PVRydWUpCiAgICAgICAgICMgVGhyb3cgYXdheSB0aGUgZmlyc3QgbGluZSAtIGEgd2FybmluZyBh
Ym91dCB1bmtub3duIFZDUyByb290LgogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xp
bmVzID0gY29tbWl0X21lc3NhZ2UubWVzc2FnZV9saW5lc1sxOl0KICAgICAgICAgc2VsZi5hc3Nl
cnRNdWx0aUxpbmVFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIGV4cGVjdGVkX2NvbW1p
dF9tZXNzYWdlKQpAQCAtMjk1LDEzICszMDgsMTYgQEAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPQogaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3MDMz
OQogCiBQYXRjaCBieSBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPiBvbiAyMDE0LTA2
LTIzCisKK0lkZW50aWZpZXI6IDVAdHJ1bmsKICIiIgogCiAgICAgICAgIHNlbGYuY2hhbmdlbG9n
X3BhdGhzID0gbGlzdChtYXAoc2VsZi5maWxlc3lzdGVtLmFic3BhdGgsIFtzZWxmLmZpbGVzeXN0
ZW0uam9pbigiVG9vbHMiLCAiQ2hhbmdlTG9nIildKSkKIAogICAgICAgICBzZWxmLm1vY2tfY2hh
bmdlbG9nKFtfY2hhbmdlbG9nNl0pCiAgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5tb2NrX2NoZWNr
b3V0X2Zvcl90ZXN0KCkKLSAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBjaGVja291dC5jb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCByZXR1cm5fc3RkZXJyPVRy
dWUpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpLCBzY21tb2Nrcy5sb2NhbC5HaXQoKSwg
c2NtbW9ja3MubG9jYWwuU3ZuKGNoZWNrb3V0Ll9zY20uY2hlY2tvdXRfcm9vdCksIGNvcmVtb2Nr
cy5TdWJwcm9jZXNzLmZhbGxiYWNrKCk6CisgICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IGNo
ZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHJl
dHVybl9zdGRlcnI9VHJ1ZSkKICAgICAgICAgIyBUaHJvdyBhd2F5IHRoZSBmaXJzdCBsaW5lIC0g
YSB3YXJuaW5nIGFib3V0IHVua25vd24gVkNTIHJvb3QuCiAgICAgICAgIGNvbW1pdF9tZXNzYWdl
Lm1lc3NhZ2VfbGluZXMgPSBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xpbmVzWzE6XQogICAgICAg
ICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwgZXhw
ZWN0ZWRfY29tbWl0X21lc3NhZ2UpCkBAIC0zMjEsMTMgKzMzNywxNSBAQCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9CiBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTcwMzM5CiAKIFBhdGNoIGJ5IERhbmllbCBCYXRlcyA8ZGFiYXRlc0BhcHBsZS5jb20+
IG9uIDIwMTQtMDYtMjMKK0lkZW50aWZpZXI6IDVAdHJ1bmsKICIiIgogCiAgICAgICAgIHNlbGYu
Y2hhbmdlbG9nX3BhdGhzID0gbGlzdChtYXAoc2VsZi5maWxlc3lzdGVtLmFic3BhdGgsIChzZWxm
LmZpbGVzeXN0ZW0uam9pbigiVG9vbHMiLCAiQ2hhbmdlTG9nIiksIHNlbGYuZmlsZXN5c3RlbS5q
b2luKCJTb3VyY2UvV2ViQ29yZSIsICJDaGFuZ2VMb2ciKSkpKQogCiAgICAgICAgIHNlbGYubW9j
a19jaGFuZ2Vsb2coKF9jaGFuZ2Vsb2c2LCBfY2hhbmdlbG9nNikpCiAgICAgICAgIGNoZWNrb3V0
ID0gc2VsZi5tb2NrX2NoZWNrb3V0X2Zvcl90ZXN0KCkKLSAgICAgICAgY29tbWl0X21lc3NhZ2Ug
PSBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25l
LCByZXR1cm5fc3RkZXJyPVRydWUpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpLCBzY21t
b2Nrcy5sb2NhbC5HaXQoKSwgc2NtbW9ja3MubG9jYWwuU3ZuKGNoZWNrb3V0Ll9zY20uY2hlY2tv
dXRfcm9vdCksIGNvcmVtb2Nrcy5TdWJwcm9jZXNzLmZhbGxiYWNrKCk6CisgICAgICAgICAgICBj
b21taXRfbWVzc2FnZSA9IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChn
aXRfY29tbWl0PU5vbmUsIHJldHVybl9zdGRlcnI9VHJ1ZSkKICAgICAgICAgIyBUaHJvdyBhd2F5
IHRoZSBmaXJzdCBsaW5lIC0gYSB3YXJuaW5nIGFib3V0IHVua25vd24gVkNTIHJvb3QuCiAgICAg
ICAgIGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2VfbGluZXMgPSBjb21taXRfbWVzc2FnZS5tZXNzYWdl
X2xpbmVzWzE6XQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1pdF9tZXNz
YWdlLm1lc3NhZ2UoKSwgZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412968</attachid>
            <date>2020-11-02 14:02:35 -0800</date>
            <delta_ts>2020-11-04 16:03:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218407-20201102140235.patch</filename>
            <type>text/plain</type>
            <size>30824</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTI3MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIwLTExLTAyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0LXBhdGNoXSBBcHBlbmQgaWRlbnRpZmllciB0byBjb21taXQg
bWVzc2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4NDA3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDkwMjIzMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6IEJ1bXAgdmVyc2lvbgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19p
bml0X18ucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9tb2Nrcy9wb3Blbi5weToKKyAgICAgICAgKFBvcGVuQmFzZSk6CisgICAgICAgIChQ
b3BlbkJhc2Uud2l0aF9mYWxsYmFjayk6IFVzZSBnZW51aW5lIFBvcGVuIGlmIG5vIHByb2dyYW0g
aXMgZm91bmQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzLnB5OiBNb3ZlIHRvIHN1YnByb2Nlc3NfLnB5LgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3Mv
c3VicHJvY2Vzc18ucHk6IE1vdmVkIGZyb20gc3VicHJvY2Vzcy5weS4KKyAgICAgICAgKFN1YnBy
b2Nlc3MuZmFsbGJhY2spOiBBbGxvdyBtb2NrIFBvcGVuIHRvIGZhbGwtYmFjayB0byB0aGUgZ2Vu
dWluZSBmdW5jdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGVja291dC5weToKKyAgICAgICAgKENoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdCk6IEFwcGVuZCBpZGVudGlmaWVyIHRvIGNvbW1pdCBtZXNzYWdlLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Ogor
CiAyMDIwLTExLTAyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgU29ydCBYY29kZSBwcm9qZWN0IGZpbGUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eQkocmV2aXNpb24gMjY5MjczKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQCBmcm9tIHdlYmtpdGNvcmVweS50aW1lb3V0IGltcG9ydCBUaW1lb3V0CiBmcm9tIHdlYmtp
dGNvcmVweS5zdWJwcm9jZXNzX3V0aWxzIGltcG9ydCBUaW1lb3V0RXhwaXJlZCwgQ29tcGxldGVk
UHJvY2VzcywgcnVuCiBmcm9tIHdlYmtpdGNvcmVweS5vdXRwdXRfY2FwdHVyZSBpbXBvcnQgTG9n
Z2VyQ2FwdHVyZSwgT3V0cHV0Q2FwdHVyZSwgT3V0cHV0RHVwbGljYXRlCiAKLXZlcnNpb24gPSBW
ZXJzaW9uKDAsIDQsIDIwKQordmVyc2lvbiA9IFZlcnNpb24oMCwgNSwgMCkKIAogZnJvbSB3ZWJr
aXRjb3JlcHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxsCiBpZiBzeXMu
dmVyc2lvbl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19f
aW5pdF9fLnB5CShyZXZpc2lvbiAyNjkyNzMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw2ICsyMiw2IEBACiAKIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLmNvbnRleHRfc3Rh
Y2sgaW1wb3J0IENvbnRleHRTdGFjawogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MudGltZV8gaW1w
b3J0IFRpbWUKLWZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLnN1YnByb2Nlc3MgaW1wb3J0IFByb2Nl
c3NDb21wbGV0aW9uLCBTdWJwcm9jZXNzCitmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy5zdWJwcm9j
ZXNzXyBpbXBvcnQgUHJvY2Vzc0NvbXBsZXRpb24sIFN1YnByb2Nlc3MKIAogZnJvbSB3ZWJraXRj
b3JlcHkubW9ja3MucmVxdWVzdHMgaW1wb3J0IFJlc3BvbnNlCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3BvcGVuLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvbW9ja3MvcG9wZW4ucHkJKHJldmlzaW9uIDI2OTI3MykKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvcG9wZW4ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDE0ICsyMiwxNSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBpbwotaW1wb3J0
IHN1YnByb2Nlc3MKIGltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lz
CiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbG9nLCBzdHJpbmdfdXRp
bHMsIFRpbWVvdXQsIFRpbWVvdXRFeHBpcmVkLCB1bmljb2RlCiBmcm9tIHdlYmtpdGNvcmVweS5t
b2NrcyBpbXBvcnQgU3VicHJvY2VzcwogCisKICMgVGhpcyBmaWxlIGlzIG1vY2tlZCB2ZXJzaW9u
IG9mIHRoZSBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdC4gVGhpcyBvYmplY3QgZGlmZmVycyBzbGln
aHRseSBiZXR3ZWVuIFB5dGhvbiAyIGFuZCAzLgogIyBUaGlzIG9iamVjdCBpcyBub3QgYSBjb21w
bGV0ZSBtb2NrIG9mIHN1YnByb2Nlc3MuUG9wZW4sIGJ1dCBpdCBkb2VzIGVuYWJsZSB0aG9yb3Vn
aCB0ZXN0aW5nIG9mIGNvZGUgd2hpY2ggdXNlcyBQb3BlbiwKICMgaW4gcGFydGljdWxhciwgdGhl
IHN1YnByb2Nlc3MuY2hlY2tfY2FsbCwgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQgYW5kIHN1YnBy
b2Nlc3MucnVuIGNvbW1hbmRzLgpAQCAtMzksOCArNDAsMTYgQEAgZnJvbSB3ZWJraXRjb3JlcHku
bW9ja3MgaW1wb3J0IFN1YnByb2NlcwogCiAKIGNsYXNzIFBvcGVuQmFzZShvYmplY3QpOgorICAg
IG9yaWdpbmFsID0gc3VicHJvY2Vzcy5Qb3BlbgogICAgIE5FWFRfUElEID0gb3MuZ2V0cGlkKCkg
KyAxCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgd2l0aF9mYWxsYmFjayhjbHMsICphcmdz
LCAqKmt3YXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBjbHMoKmFyZ3Ms
ICoqa3dhcmdzKQorICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgT1NFcnJvciwgQXNzZXJ0aW9u
RXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuIGNscy5vcmlnaW5hbCgqYXJncywgKiprd2FyZ3Mp
CisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYXJncywgYnVmc2l6ZT1Ob25lLCBjd2Q9Tm9uZSwg
c3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToKICAgICAgICAgc2VsZi5fY29t
cGxldGlvbiA9IE5vbmUKICAgICAgICAgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkID0gRmFs
c2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvbW9ja3Mvc3VicHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3N1YnByb2Nlc3MucHkJKHJldmlz
aW9uIDI2OTI3MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvbW9ja3Mvc3VicHJvY2Vzcy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE4NyArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSMgQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCByZQotaW1w
b3J0IHN5cwotCi1mcm9tIGZ1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQotZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgdW5pY29kZQotZnJvbSB3ZWJraXRjb3JlcHkubW9j
a3MgaW1wb3J0IENvbnRleHRTdGFjawotCi0KLWNsYXNzIFByb2Nlc3NDb21wbGV0aW9uKG9iamVj
dCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldHVybmNvZGU9Tm9uZSwgc3Rkb3V0PU5vbmUs
IHN0ZGVycj1Ob25lLCBlbGFwc2VkPTApOgotICAgICAgICBzZWxmLnJldHVybmNvZGUgPSAxIGlm
IHJldHVybmNvZGUgaXMgTm9uZSBlbHNlIHJldHVybmNvZGUKLSAgICAgICAgc2VsZi5zdGRvdXQg
PSBzdHJpbmdfdXRpbHMuZW5jb2RlKHN0ZG91dCkgaWYgc3Rkb3V0IGVsc2UgYicnCi0gICAgICAg
IHNlbGYuc3RkZXJyID0gc3RyaW5nX3V0aWxzLmVuY29kZShzdGRlcnIpIGlmIHN0ZGVyciBlbHNl
IGInJwotICAgICAgICBzZWxmLmVsYXBzZWQgPSBlbGFwc2VkCi0KLQotY2xhc3MgU3VicHJvY2Vz
cyhDb250ZXh0U3RhY2spOgotICAgICIiIgotICAgIE9yZ2FuaXplIFByb2Nlc3NDb21wbGV0aW9u
cyBzbyBjYWxscyB0byBzdWJwcm9jZXNzIGZ1bmN0aW9ucyB3aWxsIHJldHVybiBhIFByb2Nlc3ND
b21wbGV0aW9uIGZvcgotICAgIGEgc2V0IG9mIGFyZ3VtZW50cyBvciB0cmlnZ2VyIGEgUHJvY2Vz
c0NvbXBsZXRpb24gZ2VuZXJhdG9yLiBtb2Nrcy5TdWJwcm9jZXNzIG1ha2VzIGFuIGF0dGVtcHQg
dG8KLSAgICBwcmlvcml0aXplIENvbW1hbmRSb3V0ZSBvYmplY3RzIGZvciBhIGdpdmVuIHNldCBv
ZiBhcmd1bWVudHMgc3VjaCB0aGF0IHRoZSBtb3N0IHNwZWNpZmljIGFwcGxpY2FibGUgcm91dGUK
LSAgICBpcyBwcmVmZXJlZC4KLQotICAgIEV4YW1wbGUgdXNhZ2UgbW9ja2luZyBhIHNpbmdsZSBj
b21tYW5kOgotICAgICAgICB3aXRoIG1vY2tzLlN1YnByb2Nlc3MoCi0gICAgICAgICAgICAnbHMn
LCBjb21wbGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCwgc3Rkb3V0
PSdmaWxlMS50eHRcbmZpbGUyLnR4dFxuJyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICByZXN1
bHQgPSBydW4oWydscyddLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQot
ICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXR1cm5jb2RlID09IDAKLSAgICAgICAgICAgIGFz
c2VydCByZXN1bHQuc3Rkb3V0ID09ICdmaWxlMS50eHRcbmZpbGUyLnR4dFxuJwotCi0gICAgRXhh
bXBsZSB1c2FnZSBtb2NraW5nIGEgc2V0IG9mIGNvbW1hbmRzOgotICAgICAgICB3aXRoIG1vY2tz
LlN1YnByb2Nlc3MoCi0gICAgICAgICAgICBtb2Nrcy5TdWJwcm9jZXNzLkNvbW1hbmRSb3V0ZSgn
Y29tbWFuZC1hJywgJ2FyZ3VtZW50JywgY29tcGxldGlvbj1tb2Nrcy5Qcm9jZXNzQ29tcGxldGlv
bihyZXR1cm5jb2RlPTApKSwKLSAgICAgICAgICAgIG1vY2tzLlN1YnByb2Nlc3MuQ29tbWFuZFJv
dXRlKCdjb21tYW5kLWInLCBjb21wbGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVy
bmNvZGU9LTEpKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bihbJ2NvbW1h
bmQtYScsICdhcmd1bWVudCddKQotICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXR1cm5jb2Rl
ID09IDAKLQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuKFsnY29tbWFuZC1iJ10pCi0gICAgICAg
ICAgICBhc3NlcnQgcmVzdWx0LnJldHVybmNvZGUgPT0gLTEKLSAgICAiIiIKLSAgICB0b3AgPSBO
b25lCi0KLSAgICBjbGFzcyBDb21tYW5kUm91dGUob2JqZWN0KToKLSAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBjb21wbGV0aW9uID0ga3dh
cmdzLnBvcCgnY29tcGxldGlvbicsIFByb2Nlc3NDb21wbGV0aW9uKCkpCi0gICAgICAgICAgICBj
d2QgPSBrd2FyZ3MucG9wKCdjd2QnLCBOb25lKQotICAgICAgICAgICAgaW5wdXQgPSBrd2FyZ3Mu
cG9wKCdpbnB1dCcsIE5vbmUpCi0gICAgICAgICAgICBnZW5lcmF0b3IgPSBrd2FyZ3MucG9wKCdn
ZW5lcmF0b3InLCBOb25lKQotICAgICAgICAgICAgaWYga3dhcmdzLmtleXMoKToKLSAgICAgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19faW5pdF9fKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5
d29yZCBhcmd1bWVudCB7fScuZm9ybWF0KGt3YXJncy5rZXlzKClbMF0pKQotCi0gICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKGFyZ3MsIHN0cikgb3IgaXNpbnN0YW5jZShhcmdzLCB1bmljb2RlKToK
LSAgICAgICAgICAgICAgICBzZWxmLmFyZ3MgPSBbYXJnc10KLSAgICAgICAgICAgIGVsaWYgbm90
IGFyZ3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQXJndW1lbnRzIG11c3Qg
YmUgcHJvdmlkZWQgdG8gYSBDb21tYW5kUm91dGUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0KLSAgICAgICAgICAgIHNlbGYuZ2VuZXJhdG9y
ID0gZ2VuZXJhdG9yIG9yIChsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBjb21wbGV0aW9uKQotICAg
ICAgICAgICAgc2VsZi5jd2QgPSBjd2QKLSAgICAgICAgICAgIHNlbGYuaW5wdXQgPSBzdHJpbmdf
dXRpbHMuZW5jb2RlKGlucHV0KSBpZiBpbnB1dCBlbHNlIE5vbmUKLQotICAgICAgICBkZWYgbWF0
Y2hlcyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgY3dkID0ga3dhcmdzLnBv
cCgnY3dkJywgTm9uZSkKLSAgICAgICAgICAgIGlucHV0ID0ga3dhcmdzLnBvcCgnaW5wdXQnLCBO
b25lKQotICAgICAgICAgICAgaWYga3dhcmdzLmtleXMoKToKLSAgICAgICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IoJ21hdGNoZXMoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50
IHt9Jy5mb3JtYXQoa3dhcmdzLmtleXMoKVswXSkpCi0KLSAgICAgICAgICAgIGlmIGxlbihzZWxm
LmFyZ3MpID4gbGVuKGFyZ3MpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
ICAgICAgICBmb3IgY291bnQgaW4gcmFuZ2UobGVuKHNlbGYuYXJncykpOgotICAgICAgICAgICAg
ICAgIGlmIHNlbGYuYXJnc1tjb3VudF0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLSAgICAgICAgICAgICAgICBpZiBzZWxmLmFyZ3NbY291bnRdID09IGFyZ3Nb
Y291bnRdOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVs
aWYgaGFzYXR0cihzZWxmLmFyZ3NbY291bnRdLCAnbWF0Y2gnKSBhbmQgc2VsZi5hcmdzW2NvdW50
XS5tYXRjaChhcmdzW2NvdW50XSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICAgICAgZWxpZiByZS5tYXRjaChzZWxmLmFyZ3NbY291bnRdLCBhcmdzW2NvdW50XSk6
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0KLSAgICAgICAgICAgIGlmIHNlbGYuY3dkIGlzIG5vdCBOb25lIGFuZCBjd2QgIT0gc2Vs
Zi5jd2Q6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBzZWxm
LmlucHV0IGlzIG5vdCBOb25lIGFuZCBpbnB1dCAhPSBzZWxmLmlucHV0OgotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBkZWYg
X19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIGN3ZCA9IGt3YXJn
cy5wb3AoJ2N3ZCcsIE5vbmUpCi0gICAgICAgICAgICBpbnB1dCA9IGt3YXJncy5wb3AoJ2lucHV0
JywgTm9uZSkKLSAgICAgICAgICAgIGlmIGt3YXJncy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCdfX2NhbGxfXygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJn
dW1lbnQge30nLmZvcm1hdChrd2FyZ3Mua2V5cygpWzBdKSkKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLmdlbmVyYXRvcigqYXJncywgY3dkPWN3ZCwgaW5wdXQ9aW5wdXQpCi0KLSAgICAgICAgQGNs
YXNzbWV0aG9kCi0gICAgICAgIGRlZiBjb21wYXJlKGNscywgYSwgYik6Ci0gICAgICAgICAgICBm
b3IgY2FuZGlkYXRlIGluIFsKLSAgICAgICAgICAgICAgICBsZW4oYi5hcmdzKSAtIGxlbihhLmFy
Z3MpLAotICAgICAgICAgICAgICAgIDAgaWYgdHlwZShhLmN3ZCkgPT0gdHlwZShiLmN3ZCkgZWxz
ZSAtMSBpZiBhLmN3ZCBlbHNlIDEsCi0gICAgICAgICAgICAgICAgMCBpZiB0eXBlKGEuaW5wdXQp
ID09IHR5cGUoYi5pbnB1dCkgZWxzZSAtMSBpZiBhLmlucHV0IGVsc2UgMSwKLSAgICAgICAgICAg
IF06Ci0gICAgICAgICAgICAgICAgaWYgY2FuZGlkYXRlOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FuZGlkYXRlCi0gICAgICAgICAgICByZXR1cm4gMAotCi0gICAgUm91dGUgPSBDb21t
YW5kUm91dGUKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb21wbGV0aW9uX2dlbmVyYXRv
cl9mb3IoY2xzLCBwcm9ncmFtKToKLSAgICAgICAgY3VycmVudCA9IGNscy50b3AKLSAgICAgICAg
Y2FuZGlkYXRlcyA9IFtdCi0gICAgICAgIHdoaWxlIGN1cnJlbnQ6Ci0gICAgICAgICAgICBmb3Ig
Y29tcGxldGlvbiBpbiBjdXJyZW50LmNvbXBsZXRpb25zOgotICAgICAgICAgICAgICAgIGlmIGNv
bXBsZXRpb24uYXJnc1swXSA9PSBwcm9ncmFtOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRh
dGVzLmFwcGVuZChjb21wbGV0aW9uKQotICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQub3JkZXJl
ZDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50LnByZXZpb3VzCi0KLSAgICAgICAgaWYgY2FuZGlkYXRlczoKLSAgICAgICAgICAgIHJldHVy
biBjYW5kaWRhdGVzCi0KLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAg
ICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKCJObyBzdWNoIGZpbGUgb3IgZGlyZWN0
b3J5OiAne3BhdGh9JzogJ3twYXRofSciLmZvcm1hdChwYXRoPXByb2dyYW0pKQotICAgICAgICBy
YWlzZSBPU0Vycm9yKCdbRXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScpCi0KLSAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tcGxldGlvbl9mb3IoY2xzLCAqYXJncywgKiprd2Fy
Z3MpOgotICAgICAgICBjYW5kaWRhdGVzID0gWwotICAgICAgICAgICAgY2FuZGlkYXRlIGZvciBj
YW5kaWRhdGUgaW4gY2xzLmNvbXBsZXRpb25fZ2VuZXJhdG9yX2ZvcihhcmdzWzBdKSBpZiBjYW5k
aWRhdGUubWF0Y2hlcygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIF0KLSAgICAgICAgaWYgbm90
IGNhbmRpZGF0ZXM6Ci0gICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignUHJvdmlkZWQg
YXJndW1lbnRzIHRvIHt9IGRvIG5vdCBtYXRjaCBhIHByb3ZpZGVkIGNvbXBsZXRpb24nLmZvcm1h
dChhcmdzWzBdKSkKLQotICAgICAgICBjb21wbGV0aW9uID0gY2FuZGlkYXRlc1swXQotICAgICAg
ICBjdXJyZW50ID0gY2xzLnRvcAotICAgICAgICB3aGlsZSBjdXJyZW50OgotICAgICAgICAgICAg
aWYgY3VycmVudC5vcmRlcmVkIGFuZCBjb21wbGV0aW9uIGlzIGN1cnJlbnQuY29tcGxldGlvbnNb
MF06Ci0gICAgICAgICAgICAgICAgY3VycmVudC5jb21wbGV0aW9ucy5wb3AoMCkKLSAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucHJldmlvdXMKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb24oKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIGFsbChbaXNpbnN0YW5jZShh
cmcsIHNlbGYuQ29tbWFuZFJvdXRlKSBmb3IgYXJnIGluIGFyZ3NdKToKLSAgICAgICAgICAgIHNl
bGYub3JkZXJlZCA9IGt3YXJncy5wb3AoJ29yZGVyZWQnLCBGYWxzZSkKLSAgICAgICAgICAgIGlm
IGt3YXJncy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdfX2luaXRf
XygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQge30nLmZvcm1hdChrd2FyZ3Mu
a2V5cygpWzBdKSkKLSAgICAgICAgICAgIHNlbGYuY29tcGxldGlvbnMgPSBsaXN0KGFyZ3MpIGlm
IHNlbGYub3JkZXJlZCBlbHNlIHNvcnRlZChhcmdzLCBrZXk9Y21wX3RvX2tleShzZWxmLkNvbW1h
bmRSb3V0ZS5jb21wYXJlKSkKLSAgICAgICAgZWxpZiBhbnkoW2lzaW5zdGFuY2UoYXJnLCBzZWxm
LkNvbW1hbmRSb3V0ZSkgZm9yIGFyZyBpbiBhcmdzXSk6Ci0gICAgICAgICAgICByYWlzZSBUeXBl
RXJyb3IoJ21vY2tzLlN1YnByb2Nlc3MgYXJndW1lbnRzIG11c3QgYmUgb2YgYSBjb25zaXN0ZW50
IHR5cGUnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5vcmRlcmVkID0gRmFsc2UK
LSAgICAgICAgICAgIHNlbGYuY29tcGxldGlvbnMgPSBbc2VsZi5Db21tYW5kUm91dGUoKmFyZ3Ms
ICoqa3dhcmdzKV0KLQotICAgICAgICBzdXBlcihTdWJwcm9jZXNzLCBzZWxmKS5fX2luaXRfXyhj
bHM9U3VicHJvY2VzcykKLQotICAgICAgICAjIEFsbG93IG1vY2sgdG8gYmUgbWFuYWdlZCB2aWEg
YXV0b2luc3RhbGwKLSAgICAgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAotICAgICAgICBmcm9t
IHdlYmtpdGNvcmVweS5tb2Nrcy5wb3BlbiBpbXBvcnQgUG9wZW4KLSAgICAgICAgc2VsZi5wYXRj
aGVzLmFwcGVuZChwYXRjaCgnc3VicHJvY2Vzcy5Qb3BlbicsIG5ldz1Qb3BlbikpCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3N1
YnByb2Nlc3NfLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3Mvc3VicHJvY2Vzc18ucHkJKHJldmlzaW9uIDI2OTI3
MykJKGZyb20gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS9tb2Nrcy9zdWJwcm9jZXNzLnB5OjI2OTI3MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3Mvc3VicHJvY2Vzc18ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxODcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
IyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBjbXBf
dG9fa2V5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzLCB1bmljb2RlCitm
cm9tIHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgQ29udGV4dFN0YWNrCisKKworY2xhc3MgUHJv
Y2Vzc0NvbXBsZXRpb24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29k
ZT1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIGVsYXBzZWQ9MCk6CisgICAgICAgIHNl
bGYucmV0dXJuY29kZSA9IDEgaWYgcmV0dXJuY29kZSBpcyBOb25lIGVsc2UgcmV0dXJuY29kZQor
ICAgICAgICBzZWxmLnN0ZG91dCA9IHN0cmluZ191dGlscy5lbmNvZGUoc3Rkb3V0KSBpZiBzdGRv
dXQgZWxzZSBiJycKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKHN0
ZGVycikgaWYgc3RkZXJyIGVsc2UgYicnCisgICAgICAgIHNlbGYuZWxhcHNlZCA9IGVsYXBzZWQK
KworCitjbGFzcyBTdWJwcm9jZXNzKENvbnRleHRTdGFjayk6CisgICAgIiIiCisgICAgT3JnYW5p
emUgUHJvY2Vzc0NvbXBsZXRpb25zIHNvIGNhbGxzIHRvIHN1YnByb2Nlc3MgZnVuY3Rpb25zIHdp
bGwgcmV0dXJuIGEgUHJvY2Vzc0NvbXBsZXRpb24gZm9yCisgICAgYSBzZXQgb2YgYXJndW1lbnRz
IG9yIHRyaWdnZXIgYSBQcm9jZXNzQ29tcGxldGlvbiBnZW5lcmF0b3IuIG1vY2tzLlN1YnByb2Nl
c3MgbWFrZXMgYW4gYXR0ZW1wdCB0bworICAgIHByaW9yaXRpemUgQ29tbWFuZFJvdXRlIG9iamVj
dHMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGFyZ3VtZW50cyBzdWNoIHRoYXQgdGhlIG1vc3Qgc3BlY2lm
aWMgYXBwbGljYWJsZSByb3V0ZQorICAgIGlzIHByZWZlcmVkLgorCisgICAgRXhhbXBsZSB1c2Fn
ZSBtb2NraW5nIGEgc2luZ2xlIGNvbW1hbmQ6CisgICAgICAgIHdpdGggbW9ja3MuU3VicHJvY2Vz
cygKKyAgICAgICAgICAgICdscycsIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24o
cmV0dXJuY29kZT0wLCBzdGRvdXQ9J2ZpbGUxLnR4dFxuZmlsZTIudHh0XG4nKSwKKyAgICAgICAg
KToKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bihbJ2xzJ10sIGNhcHR1cmVfb3V0cHV0PVRydWUs
IGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgICAgICBhc3NlcnQgcmVzdWx0LnJldHVybmNvZGUg
PT0gMAorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5zdGRvdXQgPT0gJ2ZpbGUxLnR4dFxuZmls
ZTIudHh0XG4nCisKKyAgICBFeGFtcGxlIHVzYWdlIG1vY2tpbmcgYSBzZXQgb2YgY29tbWFuZHM6
CisgICAgICAgIHdpdGggbW9ja3MuU3VicHJvY2VzcygKKyAgICAgICAgICAgIG1vY2tzLlN1YnBy
b2Nlc3MuQ29tbWFuZFJvdXRlKCdjb21tYW5kLWEnLCAnYXJndW1lbnQnLCBjb21wbGV0aW9uPW1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCkpLAorICAgICAgICAgICAgbW9ja3Mu
U3VicHJvY2Vzcy5Db21tYW5kUm91dGUoJ2NvbW1hbmQtYicsIGNvbXBsZXRpb249bW9ja3MuUHJv
Y2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0tMSkpLAorICAgICAgICApOgorICAgICAgICAgICAg
cmVzdWx0ID0gcnVuKFsnY29tbWFuZC1hJywgJ2FyZ3VtZW50J10pCisgICAgICAgICAgICBhc3Nl
cnQgcmVzdWx0LnJldHVybmNvZGUgPT0gMAorCisgICAgICAgICAgICByZXN1bHQgPSBydW4oWydj
b21tYW5kLWInXSkKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQucmV0dXJuY29kZSA9PSAtMQor
ICAgICIiIgorICAgIHRvcCA9IE5vbmUKKworICAgIGNsYXNzIENvbW1hbmRSb3V0ZShvYmplY3Qp
OgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg
ICAgIGNvbXBsZXRpb24gPSBrd2FyZ3MucG9wKCdjb21wbGV0aW9uJywgUHJvY2Vzc0NvbXBsZXRp
b24oKSkKKyAgICAgICAgICAgIGN3ZCA9IGt3YXJncy5wb3AoJ2N3ZCcsIE5vbmUpCisgICAgICAg
ICAgICBpbnB1dCA9IGt3YXJncy5wb3AoJ2lucHV0JywgTm9uZSkKKyAgICAgICAgICAgIGdlbmVy
YXRvciA9IGt3YXJncy5wb3AoJ2dlbmVyYXRvcicsIE5vbmUpCisgICAgICAgICAgICBpZiBrd2Fy
Z3Mua2V5cygpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19pbml0X18oKSBn
b3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50IHt9Jy5mb3JtYXQoa3dhcmdzLmtleXMo
KVswXSkpCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgc3RyKSBvciBpc2luc3Rh
bmNlKGFyZ3MsIHVuaWNvZGUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXJncyA9IFthcmdzXQor
ICAgICAgICAgICAgZWxpZiBub3QgYXJnczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdBcmd1bWVudHMgbXVzdCBiZSBwcm92aWRlZCB0byBhIENvbW1hbmRSb3V0ZScpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKworICAgICAg
ICAgICAgc2VsZi5nZW5lcmF0b3IgPSBnZW5lcmF0b3Igb3IgKGxhbWJkYSAqYXJncywgKiprd2Fy
Z3M6IGNvbXBsZXRpb24pCisgICAgICAgICAgICBzZWxmLmN3ZCA9IGN3ZAorICAgICAgICAgICAg
c2VsZi5pbnB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUoaW5wdXQpIGlmIGlucHV0IGVsc2UgTm9u
ZQorCisgICAgICAgIGRlZiBtYXRjaGVzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAg
ICAgICBjd2QgPSBrd2FyZ3MucG9wKCdjd2QnLCBOb25lKQorICAgICAgICAgICAgaW5wdXQgPSBr
d2FyZ3MucG9wKCdpbnB1dCcsIE5vbmUpCisgICAgICAgICAgICBpZiBrd2FyZ3Mua2V5cygpOgor
ICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWF0Y2hlcygpIGdvdCBhbiB1bmV4cGVj
dGVkIGtleXdvcmQgYXJndW1lbnQge30nLmZvcm1hdChrd2FyZ3Mua2V5cygpWzBdKSkKKworICAg
ICAgICAgICAgaWYgbGVuKHNlbGYuYXJncykgPiBsZW4oYXJncyk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZvciBjb3VudCBpbiByYW5nZShsZW4oc2VsZi5h
cmdzKSk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5hcmdzW2NvdW50XSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgICAgIGlmIHNlbGYu
YXJnc1tjb3VudF0gPT0gYXJnc1tjb3VudF06CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGYuYXJnc1tjb3VudF0sICdtYXRjaCcp
IGFuZCBzZWxmLmFyZ3NbY291bnRdLm1hdGNoKGFyZ3NbY291bnRdKToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbGlmIHJlLm1hdGNoKHNlbGYuYXJnc1tj
b3VudF0sIGFyZ3NbY291bnRdKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgaWYgc2VsZi5jd2QgaXMgbm90
IE5vbmUgYW5kIGN3ZCAhPSBzZWxmLmN3ZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgICAgIGlmIHNlbGYuaW5wdXQgaXMgbm90IE5vbmUgYW5kIGlucHV0ICE9IHNlbGYu
aW5wdXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAg
ICAgICAgICAgY3dkID0ga3dhcmdzLnBvcCgnY3dkJywgTm9uZSkKKyAgICAgICAgICAgIGlucHV0
ID0ga3dhcmdzLnBvcCgnaW5wdXQnLCBOb25lKQorICAgICAgICAgICAgaWYga3dhcmdzLmtleXMo
KToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19fY2FsbF9fKCkgZ290IGFuIHVu
ZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCB7fScuZm9ybWF0KGt3YXJncy5rZXlzKClbMF0pKQor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2VuZXJhdG9yKCphcmdzLCBjd2Q9Y3dkLCBpbnB1dD1p
bnB1dCkKKworICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGNvbXBhcmUoY2xzLCBh
LCBiKToKKyAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gWworICAgICAgICAgICAgICAgIGxl
bihiLmFyZ3MpIC0gbGVuKGEuYXJncyksCisgICAgICAgICAgICAgICAgMCBpZiB0eXBlKGEuY3dk
KSA9PSB0eXBlKGIuY3dkKSBlbHNlIC0xIGlmIGEuY3dkIGVsc2UgMSwKKyAgICAgICAgICAgICAg
ICAwIGlmIHR5cGUoYS5pbnB1dCkgPT0gdHlwZShiLmlucHV0KSBlbHNlIC0xIGlmIGEuaW5wdXQg
ZWxzZSAxLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBpZiBjYW5kaWRhdGU6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUKKyAgICAgICAgICAgIHJldHVybiAw
CisKKyAgICBSb3V0ZSA9IENvbW1hbmRSb3V0ZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGNvbXBsZXRpb25fZ2VuZXJhdG9yX2ZvcihjbHMsIHByb2dyYW0pOgorICAgICAgICBjdXJyZW50
ID0gY2xzLnRvcAorICAgICAgICBjYW5kaWRhdGVzID0gW10KKyAgICAgICAgd2hpbGUgY3VycmVu
dDoKKyAgICAgICAgICAgIGZvciBjb21wbGV0aW9uIGluIGN1cnJlbnQuY29tcGxldGlvbnM6Cisg
ICAgICAgICAgICAgICAgaWYgY29tcGxldGlvbi5hcmdzWzBdID09IHByb2dyYW06CisgICAgICAg
ICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGNvbXBsZXRpb24pCisgICAgICAgICAgICAg
ICAgaWYgY3VycmVudC5vcmRlcmVkOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICAgICAgY3VycmVudCA9IGN1cnJlbnQucHJldmlvdXMKKworICAgICAgICBpZiBjYW5kaWRhdGVz
OgorICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMKKworICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvID4gKDMsIDApOgorICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoIk5v
IHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICd7cGF0aH0nOiAne3BhdGh9JyIuZm9ybWF0KHBhdGg9
cHJvZ3JhbSkpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoJ1tFcnJubyAyXSBObyBzdWNoIGZpbGUg
b3IgZGlyZWN0b3J5JykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjb21wbGV0aW9uX2Zv
cihjbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGNhbmRpZGF0ZXMgPSBbCisgICAgICAg
ICAgICBjYW5kaWRhdGUgZm9yIGNhbmRpZGF0ZSBpbiBjbHMuY29tcGxldGlvbl9nZW5lcmF0b3Jf
Zm9yKGFyZ3NbMF0pIGlmIGNhbmRpZGF0ZS5tYXRjaGVzKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgXQorICAgICAgICBpZiBub3QgY2FuZGlkYXRlczoKKyAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdQcm92aWRlZCBhcmd1bWVudHMgdG8ge30gZG8gbm90IG1hdGNoIGEgcHJvdmlk
ZWQgY29tcGxldGlvbicuZm9ybWF0KGFyZ3NbMF0pKQorCisgICAgICAgIGNvbXBsZXRpb24gPSBj
YW5kaWRhdGVzWzBdCisgICAgICAgIGN1cnJlbnQgPSBjbHMudG9wCisgICAgICAgIHdoaWxlIGN1
cnJlbnQ6CisgICAgICAgICAgICBpZiBjdXJyZW50Lm9yZGVyZWQgYW5kIGNvbXBsZXRpb24gaXMg
Y3VycmVudC5jb21wbGV0aW9uc1swXToKKyAgICAgICAgICAgICAgICBjdXJyZW50LmNvbXBsZXRp
b25zLnBvcCgwKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBjdXJyZW50ID0g
Y3VycmVudC5wcmV2aW91cworICAgICAgICByZXR1cm4gY29tcGxldGlvbigqYXJncywgKiprd2Fy
Z3MpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg
aWYgYWxsKFtpc2luc3RhbmNlKGFyZywgc2VsZi5Db21tYW5kUm91dGUpIGZvciBhcmcgaW4gYXJn
c10pOgorICAgICAgICAgICAgc2VsZi5vcmRlcmVkID0ga3dhcmdzLnBvcCgnb3JkZXJlZCcsIEZh
bHNlKQorICAgICAgICAgICAgaWYga3dhcmdzLmtleXMoKToKKyAgICAgICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IoJ19faW5pdF9fKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVu
dCB7fScuZm9ybWF0KGt3YXJncy5rZXlzKClbMF0pKQorICAgICAgICAgICAgc2VsZi5jb21wbGV0
aW9ucyA9IGxpc3QoYXJncykgaWYgc2VsZi5vcmRlcmVkIGVsc2Ugc29ydGVkKGFyZ3MsIGtleT1j
bXBfdG9fa2V5KHNlbGYuQ29tbWFuZFJvdXRlLmNvbXBhcmUpKQorICAgICAgICBlbGlmIGFueShb
aXNpbnN0YW5jZShhcmcsIHNlbGYuQ29tbWFuZFJvdXRlKSBmb3IgYXJnIGluIGFyZ3NdKToKKyAg
ICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbW9ja3MuU3VicHJvY2VzcyBhcmd1bWVudHMgbXVz
dCBiZSBvZiBhIGNvbnNpc3RlbnQgdHlwZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZWxmLm9yZGVyZWQgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9ucyA9IFtzZWxm
LkNvbW1hbmRSb3V0ZSgqYXJncywgKiprd2FyZ3MpXQorCisgICAgICAgIHN1cGVyKFN1YnByb2Nl
c3MsIHNlbGYpLl9faW5pdF9fKGNscz1TdWJwcm9jZXNzKQorCisgICAgICAgICMgQWxsb3cgbW9j
ayB0byBiZSBtYW5hZ2VkIHZpYSBhdXRvaW5zdGFsbAorICAgICAgICBmcm9tIG1vY2sgaW1wb3J0
IHBhdGNoCisgICAgICAgIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLnBvcGVuIGltcG9ydCBQb3Bl
bgorICAgICAgICBzZWxmLnBhdGNoZXMuYXBwZW5kKHBhdGNoKCdzdWJwcm9jZXNzLlBvcGVuJywg
bmV3PVBvcGVuKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvbW9ja3Mvc3VicHJvY2Vzc18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNz
Xy5weQkocmV2aXNpb24gMjY5MjczKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9zdWJwcm9jZXNzXy5weQkod29ya2luZyBjb3B5KQpA
QCAtMjAsNiArMjAsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwogIyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0
IGNvbnRleHRsaWIKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCkBAIC0xNjcsNiArMTY4LDE0IEBA
IGNsYXNzIFN1YnByb2Nlc3MoQ29udGV4dFN0YWNrKToKICAgICAgICAgICAgIGN1cnJlbnQgPSBj
dXJyZW50LnByZXZpb3VzCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uKCphcmdzLCAqKmt3YXJn
cykKIAorICAgIEBjbGFzc21ldGhvZAorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisg
ICAgZGVmIGZhbGxiYWNrKGNscyk6CisgICAgICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKKyAg
ICAgICAgZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MucG9wZW4gaW1wb3J0IFBvcGVuCisgICAgICAg
IHdpdGggcGF0Y2goJ3N1YnByb2Nlc3MuUG9wZW4nLCBuZXc9UG9wZW4ud2l0aF9mYWxsYmFjayk6
CisgICAgICAgICAgICB5aWVsZAorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3
YXJncyk6CiAgICAgICAgIGlmIGFsbChbaXNpbnN0YW5jZShhcmcsIHNlbGYuQ29tbWFuZFJvdXRl
KSBmb3IgYXJnIGluIGFyZ3NdKToKICAgICAgICAgICAgIHNlbGYub3JkZXJlZCA9IGt3YXJncy5w
b3AoJ29yZGVyZWQnLCBGYWxzZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoZWNrb3V0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5CShyZXZpc2lvbiAyNjkyNzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogaW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2csIHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5n
ZWxvZwpAQCAtMTMxLDEzICsxMzIsMjIgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICBk
ZWYgbW9kaWZpZWRfbm9uX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxl
cz1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYuX21vZGlmaWVkX2ZpbGVzX21hdGNoaW5nX3By
ZWRpY2F0ZShnaXRfY29tbWl0LCBsYW1iZGEgcGF0aDogbm90IHNlbGYuaXNfcGF0aF90b19jaGFu
Z2Vsb2cocGF0aCksIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKIAotICAgIGRlZiBjb21t
aXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxl
cz1Ob25lLCByZXR1cm5fc3RkZXJyPUZhbHNlKToKKyAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZSwgcmV0dXJu
X3N0ZGVycj1GYWxzZSwgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlKToKICAgICAgICAgY2hhbmdl
bG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQsIGNoYW5nZWRf
ZmlsZXMpCiAgICAgICAgIGlmIG5vdCBsZW4oY2hhbmdlbG9nX3BhdGhzKToKICAgICAgICAgICAg
IHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkZvdW5kIG5vIG1vZGlmaWVkIENoYW5nZUxvZ3Ms
IGNhbm5vdCBjcmVhdGUgYSBjb21taXQgbWVzc2FnZS5cbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJBbGwgY2hhbmdlcyByZXF1aXJlIGEgQ2hhbmdlTG9nLiAgU2VlOlxuICVzIiAl
IHVybHMuY29udHJpYnV0aW9uX2d1aWRlbGluZXMpCiAKICAgICAgICAgbWVzc2FnZV90ZXh0ID0g
c2VsZi5fc2NtLnJ1bihbc2VsZi5zY3JpcHRfcGF0aCgnY29tbWl0LWxvZy1lZGl0b3InKSwgJy0t
cHJpbnQtbG9nJ10gKyBjaGFuZ2Vsb2dfcGF0aHMsIHJldHVybl9zdGRlcnI9cmV0dXJuX3N0ZGVy
cikKKyAgICAgICAgaGVhZCA9IGxvY2FsLlNjbS5mcm9tX3BhdGgoc2VsZi5fc2NtLmNoZWNrb3V0
X3Jvb3QpLmNvbW1pdCgpCisgICAgICAgIGlmIGhlYWQuaWRlbnRpZmllcjoKKyAgICAgICAgICAg
ICMgU3BlY2lhbCBjYXNlIHRvIHN0YW5kYXJkaXplICdtYXN0ZXInIGFuZCAndHJ1bmsnIHRvIHRo
ZSBmdXR1cmUgZGVmYXVsdCBicmFuY2ggbmFtZSwgJ21haW4nCisgICAgICAgICAgICBpZiBoZWFk
LmJyYW5jaCBpbiBbJ21hc3RlcicsICd0cnVuayddOgorICAgICAgICAgICAgICAgIGhlYWQuYnJh
bmNoID0gJ21haW4nCisKKyAgICAgICAgICAgIGhlYWQuaWRlbnRpZmllciArPSAxCisgICAgICAg
ICAgICBtZXNzYWdlX3RleHQgKz0gJ1xuSWRlbnRpZmllcjoge31cbicuZm9ybWF0KGhlYWQpCisK
ICAgICAgICAgcmV0dXJuIENvbW1pdE1lc3NhZ2UobWVzc2FnZV90ZXh0LnNwbGl0bGluZXMoKSkK
IAogICAgIGRlZiByZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9maWxlcyhzZWxmLCBwYXRocyk6Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9jaGVja291dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY5MjczKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDggQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1w
b3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIG1vY2tzIGFzIGNvcmVtb2Nrcwor
ZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbW9ja3MgYXMgc2NtbW9ja3MKIAogZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5CkBAIC0xOTUs
MTMgKzE5NiwxNiBAQCBMYXlvdXRUZXN0czoKIFNlY29uZCBwYXJ0IG9mIHRoaXMgY29tcGxpY2F0
ZWQgY2hhbmdlIGJ5IG1lLCBGclx1MDBlOWRcdTAwZTlyaWMgV2FuZyEKIAogKiBQYXRoL1RvL0Nv
bXBsaWNhdGVkL0ZpbGU6IEFkZGVkLgorCitJZGVudGlmaWVyOiA1QG1haW4KICIiIgogCiAgICAg
ICAgIHNlbGYuY2hhbmdlbG9nX3BhdGhzID0gbGlzdChtYXAoc2VsZi5maWxlc3lzdGVtLmFic3Bh
dGgsIChzZWxmLmZpbGVzeXN0ZW0uam9pbigiVG9vbHMiLCAiQ2hhbmdlTG9nIiksIHNlbGYuZmls
ZXN5c3RlbS5qb2luKCJMYXlvdXRUZXN0cyIsICJDaGFuZ2VMb2ciKSkpKQogCiAgICAgICAgIHNl
bGYubW9ja19jaGFuZ2Vsb2coKF9jaGFuZ2Vsb2cxLCBfY2hhbmdlbG9nMikpCiAgICAgICAgIGNo
ZWNrb3V0ID0gc2VsZi5tb2NrX2NoZWNrb3V0X2Zvcl90ZXN0KCkKLSAgICAgICAgY29tbWl0X21l
c3NhZ2UgPSBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1p
dD1Ob25lLCByZXR1cm5fc3RkZXJyPVRydWUpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgp
LCBzY21tb2Nrcy5sb2NhbC5HaXQoKSwgc2NtbW9ja3MubG9jYWwuU3ZuKGNoZWNrb3V0Ll9zY20u
Y2hlY2tvdXRfcm9vdCksIGNvcmVtb2Nrcy5TdWJwcm9jZXNzLmZhbGxiYWNrKCk6CisgICAgICAg
ICAgICBjb21taXRfbWVzc2FnZSA9IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChnaXRfY29tbWl0PU5vbmUsIHJldHVybl9zdGRlcnI9VHJ1ZSkKICAgICAgICAgIyBUaHJv
dyBhd2F5IHRoZSBmaXJzdCBsaW5lIC0gYSB3YXJuaW5nIGFib3V0IHVua25vd24gVkNTIHJvb3Qu
CiAgICAgICAgIGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2VfbGluZXMgPSBjb21taXRfbWVzc2FnZS5t
ZXNzYWdlX2xpbmVzWzE6XQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1p
dF9tZXNzYWdlLm1lc3NhZ2UoKSwgZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCkBAIC0yMTUsMTMg
KzIxOSwxNiBAQCBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KIAogKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdW51c2VkCiBXZWJLaXQueGNj
b25maWcgZmlsZS4KKworSWRlbnRpZmllcjogNUBtYWluCiAiIiIKIAogICAgICAgICBzZWxmLmNo
YW5nZWxvZ19wYXRocyA9IGxpc3QobWFwKHNlbGYuZmlsZXN5c3RlbS5hYnNwYXRoLCBbc2VsZi5m
aWxlc3lzdGVtLmpvaW4oIlNvdXJjZS9XZWJLaXRMZWdhY3kiLCAiQ2hhbmdlTG9nIildKSkKIAog
ICAgICAgICBzZWxmLm1vY2tfY2hhbmdlbG9nKFtfY2hhbmdlbG9nM10pCiAgICAgICAgIGNoZWNr
b3V0ID0gc2VsZi5tb2NrX2NoZWNrb3V0X2Zvcl90ZXN0KCkKLSAgICAgICAgY29tbWl0X21lc3Nh
Z2UgPSBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1O
b25lLCByZXR1cm5fc3RkZXJyPVRydWUpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpLCBz
Y21tb2Nrcy5sb2NhbC5HaXQoKSwgc2NtbW9ja3MubG9jYWwuU3ZuKGNoZWNrb3V0Ll9zY20uY2hl
Y2tvdXRfcm9vdCksIGNvcmVtb2Nrcy5TdWJwcm9jZXNzLmZhbGxiYWNrKCk6CisgICAgICAgICAg
ICBjb21taXRfbWVzc2FnZSA9IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1p
dChnaXRfY29tbWl0PU5vbmUsIHJldHVybl9zdGRlcnI9VHJ1ZSkKICAgICAgICAgIyBUaHJvdyBh
d2F5IHRoZSBmaXJzdCBsaW5lIC0gYSB3YXJuaW5nIGFib3V0IHVua25vd24gVkNTIHJvb3QuCiAg
ICAgICAgIGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2VfbGluZXMgPSBjb21taXRfbWVzc2FnZS5tZXNz
YWdlX2xpbmVzWzE6XQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNvbW1pdF9t
ZXNzYWdlLm1lc3NhZ2UoKSwgZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCkBAIC0yNDEsMTMgKzI0
OCwxNiBAQCBXZWJLaXQueGNjb25maWcgZmlsZS4KIExheW91dFRlc3RzOgogCiAqIFBhdGgvVG8v
Q29tcGxpY2F0ZWQvRmlsZTogQWRkZWQuCisKK0lkZW50aWZpZXI6IDVAbWFpbgogIiIiCiAKICAg
ICAgICAgc2VsZi5jaGFuZ2Vsb2dfcGF0aHMgPSBsaXN0KG1hcChzZWxmLmZpbGVzeXN0ZW0uYWJz
cGF0aCwgKHNlbGYuZmlsZXN5c3RlbS5qb2luKCJTb3VyY2UvV2ViS2l0TGVnYWN5IiwgIkNoYW5n
ZUxvZyIpLCBzZWxmLmZpbGVzeXN0ZW0uam9pbigiTGF5b3V0VGVzdHMiLCAiQ2hhbmdlTG9nIikp
KSkKIAogICAgICAgICBzZWxmLm1vY2tfY2hhbmdlbG9nKChfY2hhbmdlbG9nMywgX2NoYW5nZWxv
ZzQpKQogICAgICAgICBjaGVja291dCA9IHNlbGYubW9ja19jaGVja291dF9mb3JfdGVzdCgpCi0g
ICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNf
Y29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgcmV0dXJuX3N0ZGVycj1UcnVlKQorICAgICAgICB3aXRo
IE91dHB1dENhcHR1cmUoKSwgc2NtbW9ja3MubG9jYWwuR2l0KCksIHNjbW1vY2tzLmxvY2FsLlN2
bihjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jvb3QpLCBjb3JlbW9ja3MuU3VicHJvY2Vzcy5mYWxs
YmFjaygpOgorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBjaGVja291dC5jb21taXRfbWVz
c2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCByZXR1cm5fc3RkZXJyPVRydWUp
CiAgICAgICAgICMgVGhyb3cgYXdheSB0aGUgZmlyc3QgbGluZSAtIGEgd2FybmluZyBhYm91dCB1
bmtub3duIFZDUyByb290LgogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xpbmVzID0g
Y29tbWl0X21lc3NhZ2UubWVzc2FnZV9saW5lc1sxOl0KICAgICAgICAgc2VsZi5hc3NlcnRNdWx0
aUxpbmVFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIGV4cGVjdGVkX2NvbW1pdF9tZXNz
YWdlKQpAQCAtMjY5LDEzICsyNzksMTYgQEAgTGF5b3V0VGVzdHM6CiBGaWxsZXIgY2hhbmdlLgog
CiAqIFBhdGgvVG8vQ29tcGxpY2F0ZWQvRmlsZTogQWRkZWQuCisKK0lkZW50aWZpZXI6IDVAbWFp
bgogIiIiCiAKICAgICAgICAgc2VsZi5jaGFuZ2Vsb2dfcGF0aHMgPSBsaXN0KG1hcChzZWxmLmZp
bGVzeXN0ZW0uYWJzcGF0aCwgKHNlbGYuZmlsZXN5c3RlbS5qb2luKCJTb3VyY2UvV2ViS2l0TGVn
YWN5IiwgIkNoYW5nZUxvZyIpLCBzZWxmLmZpbGVzeXN0ZW0uam9pbigiTGF5b3V0VGVzdHMiLCAi
Q2hhbmdlTG9nIikpKSkKIAogICAgICAgICBzZWxmLm1vY2tfY2hhbmdlbG9nKChfY2hhbmdlbG9n
MywgX2NoYW5nZWxvZzUpKQogICAgICAgICBjaGVja291dCA9IHNlbGYubW9ja19jaGVja291dF9m
b3JfdGVzdCgpCi0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY2hlY2tvdXQuY29tbWl0X21lc3Nh
Z2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgcmV0dXJuX3N0ZGVycj1UcnVlKQor
ICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSwgc2NtbW9ja3MubG9jYWwuR2l0KCksIHNjbW1v
Y2tzLmxvY2FsLlN2bihjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jvb3QpLCBjb3JlbW9ja3MuU3Vi
cHJvY2Vzcy5mYWxsYmFjaygpOgorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBjaGVja291
dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCByZXR1cm5f
c3RkZXJyPVRydWUpCiAgICAgICAgICMgVGhyb3cgYXdheSB0aGUgZmlyc3QgbGluZSAtIGEgd2Fy
bmluZyBhYm91dCB1bmtub3duIFZDUyByb290LgogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNz
YWdlX2xpbmVzID0gY29tbWl0X21lc3NhZ2UubWVzc2FnZV9saW5lc1sxOl0KICAgICAgICAgc2Vs
Zi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIGV4cGVjdGVk
X2NvbW1pdF9tZXNzYWdlKQpAQCAtMjk1LDEzICszMDgsMTYgQEAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPQogaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzE3MDMzOQogCiBQYXRjaCBieSBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPiBvbiAy
MDE0LTA2LTIzCisKK0lkZW50aWZpZXI6IDVAbWFpbgogIiIiCiAKICAgICAgICAgc2VsZi5jaGFu
Z2Vsb2dfcGF0aHMgPSBsaXN0KG1hcChzZWxmLmZpbGVzeXN0ZW0uYWJzcGF0aCwgW3NlbGYuZmls
ZXN5c3RlbS5qb2luKCJUb29scyIsICJDaGFuZ2VMb2ciKV0pKQogCiAgICAgICAgIHNlbGYubW9j
a19jaGFuZ2Vsb2coW19jaGFuZ2Vsb2c2XSkKICAgICAgICAgY2hlY2tvdXQgPSBzZWxmLm1vY2tf
Y2hlY2tvdXRfZm9yX3Rlc3QoKQotICAgICAgICBjb21taXRfbWVzc2FnZSA9IGNoZWNrb3V0LmNv
bW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHJldHVybl9zdGRl
cnI9VHJ1ZSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCksIHNjbW1vY2tzLmxvY2FsLkdp
dCgpLCBzY21tb2Nrcy5sb2NhbC5Tdm4oY2hlY2tvdXQuX3NjbS5jaGVja291dF9yb290KSwgY29y
ZW1vY2tzLlN1YnByb2Nlc3MuZmFsbGJhY2soKToKKyAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdl
ID0gY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9u
ZSwgcmV0dXJuX3N0ZGVycj1UcnVlKQogICAgICAgICAjIFRocm93IGF3YXkgdGhlIGZpcnN0IGxp
bmUgLSBhIHdhcm5pbmcgYWJvdXQgdW5rbm93biBWQ1Mgcm9vdC4KICAgICAgICAgY29tbWl0X21l
c3NhZ2UubWVzc2FnZV9saW5lcyA9IGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2VfbGluZXNbMTpdCiAg
ICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgp
LCBleHBlY3RlZF9jb21taXRfbWVzc2FnZSkKQEAgLTMyMSwxMyArMzM3LDE1IEBAIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0KIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xNzAzMzkKIAogUGF0Y2ggYnkgRGFuaWVsIEJhdGVzIDxkYWJhdGVzQGFwcGxl
LmNvbT4gb24gMjAxNC0wNi0yMworSWRlbnRpZmllcjogNUBtYWluCiAiIiIKIAogICAgICAgICBz
ZWxmLmNoYW5nZWxvZ19wYXRocyA9IGxpc3QobWFwKHNlbGYuZmlsZXN5c3RlbS5hYnNwYXRoLCAo
c2VsZi5maWxlc3lzdGVtLmpvaW4oIlRvb2xzIiwgIkNoYW5nZUxvZyIpLCBzZWxmLmZpbGVzeXN0
ZW0uam9pbigiU291cmNlL1dlYkNvcmUiLCAiQ2hhbmdlTG9nIikpKSkKIAogICAgICAgICBzZWxm
Lm1vY2tfY2hhbmdlbG9nKChfY2hhbmdlbG9nNiwgX2NoYW5nZWxvZzYpKQogICAgICAgICBjaGVj
a291dCA9IHNlbGYubW9ja19jaGVja291dF9mb3JfdGVzdCgpCi0gICAgICAgIGNvbW1pdF9tZXNz
YWdlID0gY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9
Tm9uZSwgcmV0dXJuX3N0ZGVycj1UcnVlKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSwg
c2NtbW9ja3MubG9jYWwuR2l0KCksIHNjbW1vY2tzLmxvY2FsLlN2bihjaGVja291dC5fc2NtLmNo
ZWNrb3V0X3Jvb3QpLCBjb3JlbW9ja3MuU3VicHJvY2Vzcy5mYWxsYmFjaygpOgorICAgICAgICAg
ICAgY29tbWl0X21lc3NhZ2UgPSBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21t
aXQoZ2l0X2NvbW1pdD1Ob25lLCByZXR1cm5fc3RkZXJyPVRydWUpCiAgICAgICAgICMgVGhyb3cg
YXdheSB0aGUgZmlyc3QgbGluZSAtIGEgd2FybmluZyBhYm91dCB1bmtub3duIFZDUyByb290Lgog
ICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xpbmVzID0gY29tbWl0X21lc3NhZ2UubWVz
c2FnZV9saW5lc1sxOl0KICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21taXRf
bWVzc2FnZS5tZXNzYWdlKCksIGV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQo=
</data>
<flag name="review"
          id="429497"
          type_id="1"
          status="-"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>