<?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>78187</bug_id>
          
          <creation_ts>2012-02-08 17:40:22 -0800</creation_ts>
          <short_desc>merge message_broker.py into manager_worker_broker.py</short_desc>
          <delta_ts>2012-02-24 20:11:36 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78181</dependson>
    
    <dependson>78997</dependson>
    
    <dependson>78999</dependson>
    
    <dependson>79000</dependson>
          <blocked>78185</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>552686</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-08 17:40:22 -0800</bug_when>
    <thetext>merge message_broker.py into manager_worker_broker.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552690</commentid>
    <comment_count>1</comment_count>
      <attachid>126205</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-08 17:42:12 -0800</bug_when>
    <thetext>Created attachment 126205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557931</commentid>
    <comment_count>2</comment_count>
      <attachid>127316</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-15 23:15:42 -0800</bug_when>
    <thetext>Created attachment 127316
merge to r107844 + patch in bug 78181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557938</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-15 23:25:09 -0800</bug_when>
    <thetext>Tony, can you take a look at this, too? (hopefully the last one for a little while)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558595</commentid>
    <comment_count>4</comment_count>
      <attachid>127316</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-16 15:32:10 -0800</bug_when>
    <thetext>Comment on attachment 127316
merge to r107844 + patch in bug 78181

Can you rebase to ToT and upload? I want to see the side by side diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558606</commentid>
    <comment_count>5</comment_count>
      <attachid>127458</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-16 15:39:58 -0800</bug_when>
    <thetext>Created attachment 127458
diff from r107844 w/o 78181&apos;s change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558608</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-16 15:41:06 -0800</bug_when>
    <thetext>I&apos;ve updated the description of the second attachment, and added a third. I&apos;m not sure what definition of ToT you&apos;re looking for, but it should be (more or less) one of those two?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558611</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-16 15:49:23 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;ve updated the description of the second attachment, and added a third. I&apos;m not sure what definition of ToT you&apos;re looking for, but it should be (more or less) one of those two?

Can you land the patch in bug 78181 then upload a clean diff against ToT?  I want to use the side-by-side feature of the patch review tool because it&apos;s hard to tell what&apos;s an indention change vs a move.  I guess you could also split that into two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558672</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-16 16:47:23 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Can you land the patch in bug 78181 then upload a clean diff against ToT? 

Ah, sure ... will post shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558722</commentid>
    <comment_count>9</comment_count>
      <attachid>127476</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-16 17:15:29 -0800</bug_when>
    <thetext>Created attachment 127476
merge to r108005 (after fix to bug 78181)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558725</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-16 17:16:43 -0800</bug_when>
    <thetext>Please take another look when you get a chance? (no hurry).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559840</commentid>
    <comment_count>11</comment_count>
      <attachid>127721</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-18 16:59:57 -0800</bug_when>
    <thetext>Created attachment 127721
merge to r108177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559946</commentid>
    <comment_count>12</comment_count>
      <attachid>127721</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-19 13:53:23 -0800</bug_when>
    <thetext>Comment on attachment 127721
merge to r108177

cancelling review - I&apos;ve broken this patch up into three separate patches so hopefully it&apos;ll be easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564840</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-24 20:11:36 -0800</bug_when>
    <thetext>closing - the sub-bugs are closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126205</attachid>
            <date>2012-02-08 17:42:12 -0800</date>
            <delta_ts>2012-02-15 23:15:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78187-20120208174211.patch</filename>
            <type>text/plain</type>
            <size>29224</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjhmYWEyZmRiMDI2OWYzMDliYjM0ZTFkM2Y5YjJjOTgx
NDllYjc2NS4uMzQ4OGZhZmVjYzI2OTZkN2YyNWU4YzA5YTEwZGI0NzVhMWEyNDEzOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYx
IEBACiAyMDEyLTAyLTA4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG1lcmdlIG1lc3NhZ2VfYnJva2VyLnB5IGludG8gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1lcmdlcyBtZXNzYWdlX2Jyb2tlci5weSBpbnRvCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5weTsgaXQgdHVybnMgb3V0IGl0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8KKyAg
ICAgICAgYmUgYSBzZXBhcmF0ZSBtb2R1bGUgYXMgbm8gb25lIGVsc2Ugd2FzIGNhbGxpbmcgaXQu
IFRoaXMgY2hhbmdlCisgICAgICAgIG9ubHkgbWVyZ2VzIHRoZSB0d28gZmlsZXMgYW5kIGFkanVz
dHMgc29tZSBvZiB0aGUgbmFtZXMgZm9yCisgICAgICAgIHZpc2liaWxpdHk7IGEgc3Vic2VxdWVu
dCBjaGFuZ2Ugd2lsbCBkbyBtb3JlIHJlZmFjdG9yaW5nIGFuZAorICAgICAgICBzaW1wbGlmaWNh
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgKGNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKGdldCk6CisgICAgICAgIChCcm9rZXJDbGllbnQpOgorICAgICAgICAoQnJva2VyQ2xp
ZW50LmlzX2RvbmUpOgorICAgICAgICAoQnJva2VyQ2xpZW50Lm5hbWUpOgorICAgICAgICAoX0Jy
b2tlcik6CisgICAgICAgIChfQnJva2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9Ccm9rZXIuYWRk
X3RvcGljKToKKyAgICAgICAgKF9Ccm9rZXIuX2dldF9xdWV1ZV9mb3JfdG9waWMpOgorICAgICAg
ICAoX0Jyb2tlci5wb3N0X21lc3NhZ2UpOgorICAgICAgICAoX0Jyb2tlci5ydW5fbWVzc2FnZV9s
b29wKToKKyAgICAgICAgKF9Ccm9rZXIucnVuX2FsbF9wZW5kaW5nKToKKyAgICAgICAgKF9Ccm9r
ZXIuX3J1bl9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIuX2Rpc3BhdGNoX21lc3NhZ2UpOgorICAg
ICAgICAoX01lc3NhZ2UpOgorICAgICAgICAoX01lc3NhZ2UubG9hZHMpOgorICAgICAgICAoX01l
c3NhZ2UuX19pbml0X18pOgorICAgICAgICAoX01lc3NhZ2UuZHVtcHMpOgorICAgICAgICAoX01l
c3NhZ2UuX19yZXByX18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24pOgorICAgICAgICAo
X0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24u
cnVuX21lc3NhZ2VfbG9vcCk6CisgICAgICAgIChfQnJva2VyQ29ubmVjdGlvbi5wb3N0X21lc3Nh
Z2UpOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24ucmFpc2VfZXhjZXB0aW9uKToKKyAgICAg
ICAgKEFic3RyYWN0V29ya2VyKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9fKToK
KyAgICAgICAgKF9NYW5hZ2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfTWFuYWdlckNvbm5lY3Rp
b24uX19pbml0X18pOgorICAgICAgICAoX0lubGluZU1hbmFnZXIucnVuX21lc3NhZ2VfbG9vcCk6
CisgICAgICAgIChfV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfV29ya2VyQ29ubmVjdGlv
bi5fX2luaXRfXyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi55aWVsZF90b19i
cm9rZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKEludGVyZmFj
ZVRlc3QudGVzdF9icm9rZXJjbGllbnRfaXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJmYWNl
VGVzdC50ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdC5tZXRob2RzKToKKyAgICAgICAgKE1l
c3NhZ2VUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VUZXN0LnRlc3RfX25vX2JvZHkpOgorICAgICAg
ICAoTWVzc2FnZVRlc3QudGVzdF9fYm9keSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHk6IFJlbW92ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9i
cm9rZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKKzIwMTItMDItMDggIERpcmsgUHJhbmtlICA8
ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgbnJ3dDogc2ltcGxpZnkgd29ya2VyIGlu
dGVyZmFjZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzgxODEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5Cmlu
ZGV4IDg4NWI0NjgyOGVlZmM3YjM3MjNkYmZiOWRkOTQwZGFjZWJmNmQ0ZWEuLjUyOTExMzM4NzYz
ZjE1OGNlMjhjM2U1YzkwMTAxZTA3YzdlMDVmYjggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTI2LDI2ICsyNiwzOSBAQAogIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAotIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBhbmQg
Y29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCisiIiJNb2R1bGUgZm9yIGhhbmRsaW5n
IG1lc3NhZ2VzIGFuZCBjb25jdXJyZW5jeSBmb3IgdGVzdHMuCiAKLVRoaXMgbW9kdWxlIGltcGxl
bWVudHMgYSBtZXNzYWdlIGJyb2tlciB0aGF0IGNvbm5lY3RzIHRoZSBtYW5hZ2VyIHRvIHRoZQot
d29ya2VyczogaXQgcHJvdmlkZXMgYSBtZXNzYWdpbmcgYWJzdHJhY3Rpb24gYW5kIG1lc3NhZ2Ug
bG9vcHMgKGJ1aWxkaW5nIG9uCi10b3Agb2YgbWVzc2FnZV9icm9rZXIpLCBhbmQgaGFuZGxlcyBz
dGFydGluZyB3b3JrZXJzIGJ5IGxhdW5jaGluZyBwcm9jZXNzZXMuCitUaGlzIG1vZHVsZSBpbXBs
ZW1lbnRzIGEgc2ltcGxlIG1lc3NhZ2UgYnJva2VyIGFic3RyYWN0aW9uIHRoYXQgd2lsbCBiZQor
dXNlZCB0byBjb29yZGluYXRlIG1lc3NhZ2VzIGJldHdlZW4gYSAibWFuYWdlciIgYW5kIHRoZSBp
bmRpdmlkdWFsIHdvcmtlcnMuCisKK05vdGUgdGhhdCB0aGUgbWFuYWdlciBhbmQgd29ya2VycyB3
aWxsIHVzdWFsbHkgYmUgaW4gZGlmZmVyZW50IHByb2Nlc3Nlcywgc28KK3RoZSBNYW5hZ2VyIGFu
ZCB3b3JrZXJzIG11c3QgYXNzdW1lIHRoYXQgdGhleSBoYXZlIG5vIHNoYXJlZCBtZW1vcnkgYXZh
aWxhYmxlLAorYW5kIG1lc3NhZ2VzIG11c3QgYmUgcGlja2xlYWJsZS4KKworVGhlIG1vZHVsZSBl
eHBvcnRzIG9uZSBmYWN0b3J5IGZ1bmN0aW9uIChnZXQoKSkgYW5kIHR3byBpbnRlcmZhY2UgY2xh
c3NlcyAtCitCcm9rZXJDbGllbnQgYW5kIEFic3RyYWN0V29ya2VyICh3aGljaCBpbXBsZW1lbnRz
IEJyb2tlckNsaWVudCBhbmQgcHJvdmlkZXMgc29tZQorZGVmYXVsdCBsb2dpYykuIENhbGxlcnMg
b2YgdGhpcyBwYWNrYWdlIG11c3QgcHJvdmlkZSBhIGNhbGxiYWNrCitvYmplY3QgKHRoZSBtYW5h
Z2VyKSB0aGF0IGltcGxlbWVudHMgdGhlIEJyb2tlckNsaWVudCBpbnRlcmZhY2UsIGFuZAorbXVz
dCBwcm92aWRlIGEgY2xhc3MgY29uc3RydWN0b3IgKHdoaWNoIG5vcm1hbGx5IHN1YmNsYXNzZXMg
QWJzdHJhY3RXb3JrZXIpIGZvcgordGhlIHdvcmtlcnMuCiAKIFRoZXJlIGFyZSBhIGxvdCBvZiBj
bGFzc2VzIGFuZCBvYmplY3RzIGludm9sdmVkIGluIGEgZnVsbHkgY29ubmVjdGVkIHN5c3RlbS4K
IFRoZXkgaW50ZXJhY3QgbW9yZSBvciBsZXNzIGxpa2U6CiAKLSAgTWFuYWdlciAgLS0+ICBfSW5s
aW5lTWFuYWdlciAtLS0+IF9JbmxpbmVXb3JrZXIgPC0+IFdvcmtlcgorICBNYW5hZ2VyICAtLT4g
IF9NYW5hZ2VyQ29ubmVjdGlvbiAtLS0+IF9Xb3JrZXJDb25uZWN0aW9uIDwtPiBXb3JrZXIKICAg
ICAgXiAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgIF4K
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgdiAgICAgICAgICAgICAg
IHwKLSAgICAgXC0tLS0tLS0tLS0tLS0tLS0tLS0tICBNZXNzYWdlQnJva2VyICAgLS0tLS0tLS0t
LS0tLS8KKyAgICAgXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgQnJva2VyICAgLS0tLS0tLS0t
LS0tLS0tLS8KICIiIgogCitpbXBvcnQgY1BpY2tsZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBv
cHRwYXJzZQogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc3lzCitpbXBvcnQgdHJhY2ViYWNrCiAKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgc3RhY2tfdXRpbHMKIAogIyBIYW5kbGUg
UHl0aG9uIDwgMi42IHdoZXJlIG11bHRpcHJvY2Vzc2luZyBpc24ndCBhdmFpbGFibGUuCiB0cnk6
CkBAIC01MywxNiArNjYsMTUgQEAgdHJ5OgogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG11bHRp
cHJvY2Vzc2luZyA9IE5vbmUKIAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxl
cnMgaW1wb3J0IG1lc3NhZ2VfYnJva2VyCi0KIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQogCisKICMKICMgVG9waWMgbmFtZXMgZm9yIE1hbmFnZXIgPC0+IFdvcmtlciBtZXNz
YWdpbmcKICMKLU1BTkFHRVJfVE9QSUMgPSAnbWFuYWdlcnMnCi1BTllfV09SS0VSX1RPUElDID0g
J3dvcmtlcnMnCitfTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2VycycKK19BTllfV09SS0VSX1RPUElD
ID0gJ3dvcmtlcnMnCiAKIAogZGVmIGdldCh3b3JrZXJfbW9kZWwsIGNsaWVudCwgd29ya2VyX2Ns
YXNzKToKQEAgLTg3LDExICs5OSwxNDIgQEAgZGVmIGdldCh3b3JrZXJfbW9kZWwsIGNsaWVudCwg
d29ya2VyX2NsYXNzKToKICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1
cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkKIAot
ICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlcihxdWV1ZV9jbGFzcykKKyAgICBicm9r
ZXIgPSBfQnJva2VyKHF1ZXVlX2NsYXNzKQogICAgIHJldHVybiBtYW5hZ2VyX2NsYXNzKGJyb2tl
ciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCiAKIAotY2xhc3MgQWJzdHJhY3RXb3JrZXIobWVzc2Fn
ZV9icm9rZXIuQnJva2VyQ2xpZW50KToKK2NsYXNzIEJyb2tlckNsaWVudChvYmplY3QpOgorICAg
ICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgLyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9r
ZXIgY2xpZW50cyBtdXN0CisgICAgaW1wbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9k
cyBiZWxvdywgYnkgY29udmVudGlvbiBjbGllbnRzCisgICAgaW1wbGVtZW50IHJvdXRpbmVzIG9m
IHRoZSBzaWduYXR1cmUgdHlwZQorCisgICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwg
c3JjLCAuLi4pOgorCisgICAgd2hlcmUgTUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBw
YXNzZWQgdG8gcG9zdF9tZXNzYWdlKCksIGFuZAorICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUg
b2YgdGhlIHNlbmRlci4gSWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCisgICAgdGhl
IG1lc3NhZ2UgYm9keSwgdGhvc2Ugd2lsbCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCisK
KyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1
bl9tZXNzYWdlX2xvb3AoKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCisgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAg
ICAiIiJSZXR1cm4gYSBuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworY2xhc3MgX0Jyb2tlcihvYmplY3QpOgor
ICAgICIiIkJyb2tlcnMgcHJvdmlkZSB0aGUgYmFzaWMgbW9kZWwgb2YgYSBzZXQgb2YgdG9waWNz
LiBDbGllbnRzIGNhbiBwb3N0IGEKKyAgICBtZXNzYWdlIHRvIGFueSB0b3BpYyB1c2luZyBwb3N0
X21lc3NhZ2UoKSwgYW5kIGNhbiBwcm9jZXNzIG1lc3NhZ2VzIG9uIG9uZQorICAgIHRvcGljIGF0
IGEgdGltZSB1c2luZyBydW5fbWVzc2FnZV9sb29wKCkuIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcXVldWVfbWFrZXIpOgorICAgICAgICAiIiJBcmdzOgorICAgICAgICAgICAgcXVldWVf
bWFrZXI6IGEgZmFjdG9yeSBtZXRob2QgdGhhdCByZXR1cm5zIG9iamVjdHMgaW1wbGVtZW50aW5n
IGEKKyAgICAgICAgICAgICAgICBRdWV1ZSBpbnRlcmZhY2UgKHB1dCgpL2dldCgpKS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHNlbGYuX3F1ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKKyAgICAgICAg
c2VsZi5fdG9waWNzID0ge30KKworICAgIGRlZiBhZGRfdG9waWMoc2VsZiwgdG9waWNfbmFtZSk6
CisgICAgICAgIGlmIHRvcGljX25hbWUgbm90IGluIHNlbGYuX3RvcGljczoKKyAgICAgICAgICAg
IHNlbGYuX3RvcGljc1t0b3BpY19uYW1lXSA9IHNlbGYuX3F1ZXVlX21ha2VyKCkKKworICAgIGRl
ZiBfZ2V0X3F1ZXVlX2Zvcl90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3RvcGljc1t0b3BpY19uYW1lXQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBj
bGllbnQsIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAg
ICIiIlBvc3QgYSBtZXNzYWdlIHRvIHRoZSBhcHByb3ByaWF0ZSB0b3BpYyBuYW1lLgorCisgICAg
ICAgIE1lc3NhZ2VzIGhhdmUgYSBuYW1lIGFuZCBhIHR1cGxlIG9mIG9wdGlvbmFsIGFyZ3VtZW50
cy4gQm90aCBtdXN0IGJlIHBpY2tsYWJsZS4iIiIKKyAgICAgICAgbWVzc2FnZSA9IF9NZXNzYWdl
KGNsaWVudC5uYW1lKCksIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdzKQor
ICAgICAgICBxdWV1ZSA9IHNlbGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkKKyAg
ICAgICAgcXVldWUucHV0KF9NZXNzYWdlLmR1bXBzKG1lc3NhZ2UpKQorCisgICAgZGVmIHJ1bl9t
ZXNzYWdlX2xvb3Aoc2VsZiwgdG9waWNfbmFtZSwgY2xpZW50LCBkZWxheV9zZWNzPU5vbmUpOgor
ICAgICAgICAiIiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgY2xpZW50LmlzX2RvbmUo
KSBvciBkZWxheSBwYXNzZXMuCisKKyAgICAgICAgVG8gcnVuIGluZGVmaW5pdGVseSwgc2V0IGRl
bGF5X3NlY3MgdG8gTm9uZS4iIiIKKyAgICAgICAgYXNzZXJ0IGRlbGF5X3NlY3MgaXMgTm9uZSBv
ciBkZWxheV9zZWNzID4gMAorICAgICAgICBzZWxmLl9ydW5fbG9vcCh0b3BpY19uYW1lLCBjbGll
bnQsIGJsb2NrPVRydWUsIGRlbGF5X3NlY3M9ZGVsYXlfc2VjcykKKworICAgIGRlZiBydW5fYWxs
X3BlbmRpbmcoc2VsZiwgdG9waWNfbmFtZSwgY2xpZW50KToKKyAgICAgICAgIiIiUHJvY2VzcyBt
ZXNzYWdlcyB1bnRpbCBjbGllbnQuaXNfZG9uZSgpIG9yIGNhbGxlciB3b3VsZCBibG9jay4iIiIK
KyAgICAgICAgc2VsZi5fcnVuX2xvb3AodG9waWNfbmFtZSwgY2xpZW50LCBibG9jaz1GYWxzZSwg
ZGVsYXlfc2Vjcz1Ob25lKQorCisgICAgZGVmIF9ydW5fbG9vcChzZWxmLCB0b3BpY19uYW1lLCBj
bGllbnQsIGJsb2NrLCBkZWxheV9zZWNzKToKKyAgICAgICAgcXVldWUgPSBzZWxmLl9nZXRfcXVl
dWVfZm9yX3RvcGljKHRvcGljX25hbWUpCisgICAgICAgIHdoaWxlIG5vdCBjbGllbnQuaXNfZG9u
ZSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHMgPSBxdWV1ZS5nZXQoYmxv
Y2ssIGRlbGF5X3NlY3MpCisgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CisgICAgICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBtc2cgPSBfTWVzc2FnZS5sb2FkcyhzKQorICAg
ICAgICAgICAgc2VsZi5fZGlzcGF0Y2hfbWVzc2FnZShtc2csIGNsaWVudCkKKworICAgIGRlZiBf
ZGlzcGF0Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBjbGllbnQpOgorICAgICAgICBpZiBub3Qg
aGFzYXR0cihjbGllbnQsICdoYW5kbGVfJyArIG1lc3NhZ2UubmFtZSk6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgIiVzOiByZWNlaXZlZCBtZXNzYWdlICcl
cycgaXQgY291bGRuJ3QgaGFuZGxlIiAlCisgICAgICAgICAgICAgICAoY2xpZW50Lm5hbWUoKSwg
bWVzc2FnZS5uYW1lKSkKKyAgICAgICAgb3B0YXJncyA9IG1lc3NhZ2UuYXJncworICAgICAgICBt
ZXNzYWdlX2hhbmRsZXIgPSBnZXRhdHRyKGNsaWVudCwgJ2hhbmRsZV8nICsgbWVzc2FnZS5uYW1l
KQorICAgICAgICBtZXNzYWdlX2hhbmRsZXIobWVzc2FnZS5zcmMsICpvcHRhcmdzKQorCisKK2Ns
YXNzIF9NZXNzYWdlKG9iamVjdCk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBsb2Fkcyhz
dHJpbmdfdmFsdWUpOgorICAgICAgICBvYmogPSBjUGlja2xlLmxvYWRzKHN0cmluZ192YWx1ZSkK
KyAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uob2JqLCBfTWVzc2FnZSkpCisgICAgICAgIHJldHVy
biBvYmoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcmMsIHRvcGljX25hbWUsIG1lc3NhZ2Vf
bmFtZSwgbWVzc2FnZV9hcmdzKToKKyAgICAgICAgc2VsZi5zcmMgPSBzcmMKKyAgICAgICAgc2Vs
Zi50b3BpY19uYW1lID0gdG9waWNfbmFtZQorICAgICAgICBzZWxmLm5hbWUgPSBtZXNzYWdlX25h
bWUKKyAgICAgICAgc2VsZi5hcmdzID0gbWVzc2FnZV9hcmdzCisKKyAgICBkZWYgZHVtcHMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBjUGlja2xlLmR1bXBzKHNlbGYpCisKKyAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgIHJldHVybiAoIl9NZXNzYWdlKGZyb209JyVzJywgdG9waWNfbmFt
ZT0nJXMnLCBtZXNzYWdlX25hbWU9JyVzJykiICUKKyAgICAgICAgICAgICAgICAoc2VsZi5zcmMs
IHNlbGYudG9waWNfbmFtZSwgc2VsZi5uYW1lKSkKKworCitjbGFzcyBfQnJva2VyQ29ubmVjdGlv
bihvYmplY3QpOgorICAgICIiIkJyb2tlckNvbm5lY3Rpb24gcHJvdmlkZXMgYSBjb25uZWN0aW9u
LW9yaWVudGVkIGZhY2FkZSBvbiB0b3Agb2YgYQorICAgIEJyb2tlciwgc28gdGhhdCBjYWxsZXJz
IGRvbid0IGhhdmUgdG8gcmVwZWF0ZWRseSBwYXNzIHRoZSBzYW1lIHRvcGljCisgICAgbmFtZXMg
b3ZlciBhbmQgb3Zlci4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVu
dCwgcnVuX3RvcGljLCBwb3N0X3RvcGljKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgX0Jyb2tlckNv
bm5lY3Rpb24gb24gdG9wIG9mIGEgQnJva2VyLiBOb3RlIHRoYXQgdGhlIF9Ccm9rZXIKKyAgICAg
ICAgaXMgcGFzc2VkIGluIHJhdGhlciB0aGFuIGNyZWF0ZWQgc28gdGhhdCBhIHNpbmdsZSBfQnJv
a2VyIGNhbiBiZSB1c2VkCisgICAgICAgIGJ5IG11bHRpcGxlIF9Ccm9rZXJDb25uZWN0aW9ucy4i
IiIKKyAgICAgICAgc2VsZi5fYnJva2VyID0gYnJva2VyCisgICAgICAgIHNlbGYuX2NsaWVudCA9
IGNsaWVudAorICAgICAgICBzZWxmLl9wb3N0X3RvcGljID0gcG9zdF90b3BpYworICAgICAgICBz
ZWxmLl9ydW5fdG9waWMgPSBydW5fdG9waWMKKyAgICAgICAgYnJva2VyLmFkZF90b3BpYyhydW5f
dG9waWMpCisgICAgICAgIGJyb2tlci5hZGRfdG9waWMocG9zdF90b3BpYykKKworICAgIGRlZiBy
dW5fbWVzc2FnZV9sb29wKHNlbGYsIGRlbGF5X3NlY3M9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Jy
b2tlci5ydW5fbWVzc2FnZV9sb29wKHNlbGYuX3J1bl90b3BpYywgc2VsZi5fY2xpZW50LCBkZWxh
eV9zZWNzKQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNz
YWdlX2FyZ3MpOgorICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKHNlbGYuX2NsaWVu
dCwgc2VsZi5fcG9zdF90b3BpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpCisKKyAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNl
bGYsIGV4Y19pbmZvKToKKyAgICAgICAgIyBTaW5jZSB0cmFjZWJhY2tzIGFyZW4ndCBwaWNrbGFi
bGUsIHNlbmQgdGhlIGV4dHJhY3RlZCBzdGFjayBpbnN0ZWFkLgorICAgICAgICBleGNlcHRpb25f
dHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25fdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZv
KCkKKyAgICAgICAgc3RhY2tfdXRpbHMubG9nX3RyYWNlYmFjayhfbG9nLmRlYnVnLCBleGNlcHRp
b25fdHJhY2ViYWNrKQorICAgICAgICBzdGFjayA9IHRyYWNlYmFjay5leHRyYWN0X3RiKGV4Y2Vw
dGlvbl90cmFjZWJhY2spCisgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5f
Y2xpZW50LCBzZWxmLl9wb3N0X3RvcGljLCAnZXhjZXB0aW9uJywgZXhjZXB0aW9uX3R5cGUsIGV4
Y2VwdGlvbl92YWx1ZSwgc3RhY2spCisKKworY2xhc3MgQWJzdHJhY3RXb3JrZXIoQnJva2VyQ2xp
ZW50KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9u
dW1iZXIpOgogICAgICAgICAiIiJUaGUgY29uc3RydWN0b3Igc2hvdWxkIGJlIHVzZWQgdG8gZG8g
YW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgogICAgICAgICBuZWNlc3NhcnksIGJ1dCBzaG91bGQg
bm90IGRvIGFueXRoaW5nIHRoYXQgY3JlYXRlcyBkYXRhIHN0cnVjdHVyZXMKQEAgLTEwMyw3ICsy
NDYsNyBAQCBjbGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQp
OgogICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gLSBoYW5kbGUgdG8gdGhlIEJyb2tlckNv
bm5lY3Rpb24gb2JqZWN0IGNyZWF0aW5nCiAgICAgICAgICAgICAgICAgdGhlIHdvcmtlciBhbmQg
dGhhdCBjYW4gYmUgdXNlZCBmb3IgbWVzc2FnaW5nLgogICAgICAgICAgICAgd29ya2VyX251bWJl
ciAtIGlkZW50aWZpZXIgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrZXIiIiIKLSAgICAgICAgbWVz
c2FnZV9icm9rZXIuQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIEJyb2tlckNs
aWVudC5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbiA9IHdv
cmtlcl9jb25uZWN0aW9uCiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVt
YmVyCiAgICAgICAgIHNlbGYuX25hbWUgPSAnd29ya2VyLyVkJyAlIHdvcmtlcl9udW1iZXIKQEAg
LTE0NCw3ICsyODcsNyBAQCBjbGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlci5Ccm9r
ZXJDbGllbnQpOgogICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IFRydWUKIAogCi1jbGFzcyBfTWFu
YWdlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbik6CitjbGFzcyBf
TWFuYWdlckNvbm5lY3Rpb24oX0Jyb2tlckNvbm5lY3Rpb24pOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKICAgICAgICAgIiIiQmFzZSBpbml0
aWFsaXphdGlvbiBmb3IgYWxsIE1hbmFnZXIgb2JqZWN0cy4KIApAQCAtMTUzLDggKzI5Niw3IEBA
IGNsYXNzIF9NYW5hZ2VyQ29ubmVjdGlvbihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9u
KToKICAgICAgICAgICAgIGNsaWVudDogY2FsbGJhY2sgb2JqZWN0ICh0aGUgY2FsbGVyKQogICAg
ICAgICAgICAgd29ya2VyX2NsYXNzOiBjbGFzcyBvYmplY3QgdG8gdXNlIHRvIGNyZWF0ZSB3b3Jr
ZXJzLgogICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlv
bi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwKLSAgICAgICAgICAgIE1BTkFHRVJfVE9Q
SUMsIEFOWV9XT1JLRVJfVE9QSUMpCisgICAgICAgIF9Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGJyb2tlciwgY2xpZW50LCBfTUFOQUdFUl9UT1BJQywgX0FOWV9XT1JLRVJfVE9QSUMp
CiAgICAgICAgIHNlbGYuX3dvcmtlcl9jbGFzcyA9IHdvcmtlcl9jbGFzcwogCiAgICAgZGVmIHN0
YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9hcmdzKToKQEAgLTE3OSw3
ICszMjEsNyBAQCBjbGFzcyBfSW5saW5lTWFuYWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgogICAg
ICAgICAjIE5vdGUgdGhhdCBkZWxheV9zZWNzIGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlIHNpbmNl
IHdlIGNhbid0IGVhc2lseQogICAgICAgICAjIGltcGxlbWVudCBpdC4KICAgICAgICAgc2VsZi5f
aW5saW5lX3dvcmtlci5ydW4oKQotICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5n
KE1BTkFHRVJfVE9QSUMsIHNlbGYuX2NsaWVudCkKKyAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9h
bGxfcGVuZGluZyhfTUFOQUdFUl9UT1BJQywgc2VsZi5fY2xpZW50KQogCiAKIGNsYXNzIF9NdWx0
aVByb2Nlc3NNYW5hZ2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6CkBAIC0xOTUsMTIgKzMzNywxMSBA
QCBjbGFzcyBfTXVsdGlQcm9jZXNzTWFuYWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgogICAgICAg
ICByZXR1cm4gd29ya2VyX2Nvbm5lY3Rpb24KIAogCi1jbGFzcyBfV29ya2VyQ29ubmVjdGlvbiht
ZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uKToKK2NsYXNzIF9Xb3JrZXJDb25uZWN0aW9u
KF9Ccm9rZXJDb25uZWN0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3Jr
ZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpOgogICAgICAgICBzZWxmLl9j
bGllbnQgPSB3b3JrZXJfY2xhc3Moc2VsZiwgd29ya2VyX251bWJlciwgKip3b3JrZXJfYXJncykK
ICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5fY2xpZW50Lm5hbWUoKQotICAgICAgICBtZXNzYWdl
X2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xp
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
WV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9QSUMpCisgICAgICAgIF9Ccm9rZXJDb25uZWN0aW9u
Ll9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xpZW50LCBfQU5ZX1dPUktFUl9UT1BJQywg
X01BTkFHRVJfVE9QSUMpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yCkBAIC0yMzksNyArMzgwLDcgQEAgY2xhc3MgX0lubGluZVdvcmtl
ckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgogICAgICAgICBzZWxmLl9hbGl2ZSA9IEZh
bHNlCiAKICAgICBkZWYgeWllbGRfdG9fYnJva2VyKHNlbGYpOgotICAgICAgICBzZWxmLl9icm9r
ZXIucnVuX2FsbF9wZW5kaW5nKE1BTkFHRVJfVE9QSUMsIHNlbGYuX21hbmFnZXJfY2xpZW50KQor
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKF9NQU5BR0VSX1RPUElDLCBzZWxm
Ll9tYW5hZ2VyX2NsaWVudCkKIAogICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgZXhjX2lu
Zm8pOgogICAgICAgICAjIFNpbmNlIHRoZSB3b3JrZXIgaXMgaW4gdGhlIHNhbWUgcHJvY2VzcyBh
cyB0aGUgbWFuYWdlciwgd2UgY2FuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggMGIyMThkYjBhYTQ0M2QxMDQzZjIw
OThlODRlOTg1NWY5NjM3ZmFlZS4uMjI4NjA0NTQyZGM0MWMzODkwZDBlNTk1NTIyMGMxYmEzYjI2
NWFjOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jy
b2tlcl91bml0dGVzdC5weQpAQCAtNDAsNyArNDAsNiBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIAogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jy
b2tlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1lc3Nh
Z2VfYnJva2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRp
bmcKIAogCkBAIC0yMDQsNiArMjAzLDEzIEBAIGNsYXNzIEludGVyZmFjZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8g
ZG8gdGhpcyBhbmQgYWxzbyB2ZXJpZnkKICAgICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQg
ZXZlcnkgYWJzdHJhY3QgbWV0aG9kIGluIGFuIGludGVyZmFjZS4KKyAgICBkZWYgdGVzdF9icm9r
ZXJjbGllbnRfaXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUg
YmFzZSBjbGFzcyBtZXRob2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKKyAgICAgICAgIyBz
aWduYXR1cmUgd2UgZXhwZWN0LgorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
QnJva2VyQ2xpZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRF
cnJvciwgb2JqLmlzX2RvbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVu
dGVkRXJyb3IsIG9iai5uYW1lKQorCiAgICAgZGVmIHRlc3RfbWFuYWdlcmNvbm5lY3Rpb25faXNf
YWJzdHJhY3Qoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUgYmFzZSBjbGFzcyBt
ZXRob2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKICAgICAgICAgIyBzaWduYXR1cmUgd2Ug
ZXhwZWN0LgpAQCAtMjIxLDUgKzIyNywyOCBAQCBjbGFzcyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJv
ciwgb2JqLmpvaW4sIE5vbmUpCiAKIAorY2xhc3MgTWVzc2FnZVRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X19ub19ib2R5KHNlbGYpOgorICAgICAgICBtc2cgPSBtYW5hZ2Vy
X3dvcmtlcl9icm9rZXIuX01lc3NhZ2UoJ3NyYycsICd0b3BpY19uYW1lJywgJ21lc3NhZ2VfbmFt
ZScsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKG1zZykpCisgICAgICAgIHMg
PSBtc2cuZHVtcHMoKQorICAgICAgICBuZXdfbXNnID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9N
ZXNzYWdlLmxvYWRzKHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5uYW1lLCAn
bWVzc2FnZV9uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLmFyZ3MsIE5v
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy50b3BpY19uYW1lLCAndG9waWNf
bmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5zcmMsICdzcmMnKQorCisg
ICAgZGVmIHRlc3RfX2JvZHkoc2VsZik6CisgICAgICAgIG1zZyA9IG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5fTWVzc2FnZSgnc3JjJywgJ3RvcGljX25hbWUnLCAnbWVzc2FnZV9uYW1lJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdib2R5JywgMCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZXByKG1zZykpCisgICAgICAgIHMgPSBtc2cuZHVtcHMoKQorICAgICAg
ICBuZXdfbXNnID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9NZXNzYWdlLmxvYWRzKHMpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5uYW1lLCAnbWVzc2FnZV9uYW1lJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLmFyZ3MsICgnYm9keScsIDApKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19tc2cudG9waWNfbmFtZSwgJ3RvcGljX25hbWUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuc3JjLCAnc3JjJykKKworCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tZXNzYWdl
X2Jyb2tlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY0ZDM2ZDRiNDVlNDVm
ZmVhZWUzYTE4Yzg5NzVlODdkM2JhNTZmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9u
LgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNzYWdpbmcgZm9y
IHJ1bi13ZWJraXQtdGVzdHMuCi0KLVRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBzaW1wbGUgbWVz
c2FnZSBicm9rZXIgYWJzdHJhY3Rpb24gdGhhdCB3aWxsIGJlCi11c2VkIHRvIGNvb3JkaW5hdGUg
bWVzc2FnZXMgYmV0d2VlbiB0aGUgbWFpbiBydW4td2Via2l0LXRlc3RzIHRocmVhZAotKGFrYSBU
ZXN0UnVubmVyKSBhbmQgdGhlIGluZGl2aWR1YWwgd29ya2VyIHRocmVhZHMgKHByZXZpb3VzbHkg
a25vd24gYXMKLWR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkcykuCi0KLVRoZSBicm9rZXIgc2ltcGx5
IGRpc3RyaWJ1dGVzIG1lc3NhZ2VzIG9udG8gdG9waWNzIChuYW1lZCBxdWV1ZXMpOyB0aGUgYWN0
dWFsCi1xdWV1ZXMgdGhlbXNlbHZlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciwgYXMgdGhl
IHF1ZXVlJ3MgaW1wbGVtZW50YXRpb24KLXJlcXVpcmVtZW50cyB2YXJpZXMgdmFyeSBkZXBlbmRp
bmcgb24gdGhlIGRlc2lyZWQgY29uY3VycmVuY3kgbW9kZWwKLShub25lL3RocmVhZHMvcHJvY2Vz
c2VzKS4KLQotSW4gb3JkZXIgZm9yIHNoYXJlZC1ub3RoaW5nIG1lc3NhZ2luZyBiZXR3ZWVuIHBy
b2Nlc3NpbmcgdG8gYmUgcG9zc2libGUsCi1NZXNzYWdlcyBtdXN0IGJlIHBpY2tsYWJsZS4KLQot
VGhlIG1vZHVsZSBkZWZpbmVzIG9uZSBpbnRlcmZhY2UgYW5kIHR3byBjbGFzc2VzLiBDYWxsZXJz
IG9mIHRoaXMgcGFja2FnZQotbXVzdCBpbXBsZW1lbnQgdGhlIEJyb2tlckNsaWVudCBpbnRlcmZh
Y2UsIGFuZCBtb3N0IGNhbGxlcnMgd2lsbCBjcmVhdGUKLUJyb2tlckNvbm5lY3Rpb25zIGFzIHdl
bGwgYXMgQnJva2Vycy4KLQotVGhlIGNsYXNzZXMgcmVsYXRlIHRvIGVhY2ggb3RoZXIgYXM6Ci0K
LSAgICBCcm9rZXJDbGllbnQgICAtLS0tLS0+ICAgIEJyb2tlckNvbm5lY3Rpb24KLSAgICAgICAg
IF4gICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICB2Ci0gICAgICAgICBcLS0tLS0tLS0tLS0tLS0tLSAgICAgIEJyb2tlcgotCi0oVGhl
IEJyb2tlckNsaWVudCBuZXZlciBjYWxscyBicm9rZXIgZGlyZWN0bHkgYWZ0ZXIgaXQgaXMgY3Jl
YXRlZCwgb25seQotQnJva2VyQ29ubmVjdGlvbi4gIEJyb2tlckNvbm5lY3Rpb24gcGFzc2VzIGEg
cmVmZXJlbmNlIHRvIEJyb2tlckNsaWVudCB0bwotQnJva2VyLCBhbmQgQnJva2VyIG9ubHkgaW52
b2tlcyB0aGF0IHJlZmVyZW5jZSwgbmV2ZXIgdGFsa2luZyBkaXJlY3RseSB0bwotQnJva2VyQ29u
bmVjdGlvbikuCi0iIiIKLWltcG9ydCBzeXMKLWltcG9ydCB0cmFjZWJhY2sKLQotaW1wb3J0IGNQ
aWNrbGUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgUXVldWUKLQotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBzdGFja191dGlscwotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCi0KLQotY2xhc3MgQnJva2VyQ2xpZW50KG9iamVjdCk6Ci0gICAgIiIiQWJzdHJh
Y3QgYmFzZSBjbGFzcyAvIGludGVyZmFjZSB0aGF0IGFsbCBtZXNzYWdlIGJyb2tlciBjbGllbnRz
IG11c3QKLSAgICBpbXBsZW1lbnQuIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIGJlbG93LCBi
eSBjb252ZW50aW9uIGNsaWVudHMKLSAgICBpbXBsZW1lbnQgcm91dGluZXMgb2YgdGhlIHNpZ25h
dHVyZSB0eXBlCi0KLSAgICAgICAgaGFuZGxlX01FU1NBR0VfTkFNRShzZWxmLCBzcmMsIC4uLik6
Ci0KLSAgICB3aGVyZSBNRVNTQUdFX05BTUUgbWF0Y2hlcyB0aGUgc3RyaW5nIHBhc3NlZCB0byBw
b3N0X21lc3NhZ2UoKSwgYW5kCi0gICAgc3JjIGluZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgc2Vu
ZGVyLiBJZiB0aGUgbWVzc2FnZSBjb250YWlucyB2YWx1ZXMgaW4KLSAgICB0aGUgbWVzc2FnZSBi
b2R5LCB0aG9zZSB3aWxsIGJlIHByb3ZpZGVkIGFzIG9wdHBhcmFtcy4iIiIKLQotICAgIGRlZiBp
c19kb25lKHNlbGYpOgotICAgICAgICAiIiJDYWxsZWQgZnJvbSBpbnNpZGUgcnVuX21lc3NhZ2Vf
bG9vcCgpIHRvIGluZGljYXRlIHdoZXRoZXIgdG8gZXhpdC4iIiIKLSAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgICIiIlJldHVy
biBhIG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSBjbGllbnQuIiIiCi0gICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IKLQotCi1jbGFzcyBCcm9rZXIob2JqZWN0KToKLSAgICAiIiJCcm9r
ZXJzIHByb3ZpZGUgdGhlIGJhc2ljIG1vZGVsIG9mIGEgc2V0IG9mIHRvcGljcy4gQ2xpZW50cyBj
YW4gcG9zdCBhCi0gICAgbWVzc2FnZSB0byBhbnkgdG9waWMgdXNpbmcgcG9zdF9tZXNzYWdlKCks
IGFuZCBjYW4gcHJvY2VzcyBtZXNzYWdlcyBvbiBvbmUKLSAgICB0b3BpYyBhdCBhIHRpbWUgdXNp
bmcgcnVuX21lc3NhZ2VfbG9vcCgpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVl
X21ha2VyKToKLSAgICAgICAgIiIiQXJnczoKLSAgICAgICAgICAgIHF1ZXVlX21ha2VyOiBhIGZh
Y3RvcnkgbWV0aG9kIHRoYXQgcmV0dXJucyBvYmplY3RzIGltcGxlbWVudGluZyBhCi0gICAgICAg
ICAgICAgICAgUXVldWUgaW50ZXJmYWNlIChwdXQoKS9nZXQoKSkuCi0gICAgICAgICIiIgotICAg
ICAgICBzZWxmLl9xdWV1ZV9tYWtlciA9IHF1ZXVlX21ha2VyCi0gICAgICAgIHNlbGYuX3RvcGlj
cyA9IHt9Ci0KLSAgICBkZWYgYWRkX3RvcGljKHNlbGYsIHRvcGljX25hbWUpOgotICAgICAgICBp
ZiB0b3BpY19uYW1lIG5vdCBpbiBzZWxmLl90b3BpY3M6Ci0gICAgICAgICAgICBzZWxmLl90b3Bp
Y3NbdG9waWNfbmFtZV0gPSBzZWxmLl9xdWV1ZV9tYWtlcigpCi0KLSAgICBkZWYgX2dldF9xdWV1
ZV9mb3JfdG9waWMoc2VsZiwgdG9waWNfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl90b3Bp
Y3NbdG9waWNfbmFtZV0KLQotICAgIGRlZiBwb3N0X21lc3NhZ2Uoc2VsZiwgY2xpZW50LCB0b3Bp
Y19uYW1lLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpOgotICAgICAgICAiIiJQb3N0IGEg
bWVzc2FnZSB0byB0aGUgYXBwcm9wcmlhdGUgdG9waWMgbmFtZS4KLQotICAgICAgICBNZXNzYWdl
cyBoYXZlIGEgbmFtZSBhbmQgYSB0dXBsZSBvZiBvcHRpb25hbCBhcmd1bWVudHMuIEJvdGggbXVz
dCBiZSBwaWNrbGFibGUuIiIiCi0gICAgICAgIG1lc3NhZ2UgPSBfTWVzc2FnZShjbGllbnQubmFt
ZSgpLCB0b3BpY19uYW1lLCBtZXNzYWdlX25hbWUsIG1lc3NhZ2VfYXJncykKLSAgICAgICAgcXVl
dWUgPSBzZWxmLl9nZXRfcXVldWVfZm9yX3RvcGljKHRvcGljX25hbWUpCi0gICAgICAgIHF1ZXVl
LnB1dChfTWVzc2FnZS5kdW1wcyhtZXNzYWdlKSkKLQotICAgIGRlZiBydW5fbWVzc2FnZV9sb29w
KHNlbGYsIHRvcGljX25hbWUsIGNsaWVudCwgZGVsYXlfc2Vjcz1Ob25lKToKLSAgICAgICAgIiIi
TG9vcCBwcm9jZXNzaW5nIG1lc3NhZ2VzIHVudGlsIGNsaWVudC5pc19kb25lKCkgb3IgZGVsYXkg
cGFzc2VzLgotCi0gICAgICAgIFRvIHJ1biBpbmRlZmluaXRlbHksIHNldCBkZWxheV9zZWNzIHRv
IE5vbmUuIiIiCi0gICAgICAgIGFzc2VydCBkZWxheV9zZWNzIGlzIE5vbmUgb3IgZGVsYXlfc2Vj
cyA+IDAKLSAgICAgICAgc2VsZi5fcnVuX2xvb3AodG9waWNfbmFtZSwgY2xpZW50LCBibG9jaz1U
cnVlLCBkZWxheV9zZWNzPWRlbGF5X3NlY3MpCi0KLSAgICBkZWYgcnVuX2FsbF9wZW5kaW5nKHNl
bGYsIHRvcGljX25hbWUsIGNsaWVudCk6Ci0gICAgICAgICIiIlByb2Nlc3MgbWVzc2FnZXMgdW50
aWwgY2xpZW50LmlzX2RvbmUoKSBvciBjYWxsZXIgd291bGQgYmxvY2suIiIiCi0gICAgICAgIHNl
bGYuX3J1bl9sb29wKHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2s9RmFsc2UsIGRlbGF5X3NlY3M9
Tm9uZSkKLQotICAgIGRlZiBfcnVuX2xvb3Aoc2VsZiwgdG9waWNfbmFtZSwgY2xpZW50LCBibG9j
aywgZGVsYXlfc2Vjcyk6Ci0gICAgICAgIHF1ZXVlID0gc2VsZi5fZ2V0X3F1ZXVlX2Zvcl90b3Bp
Yyh0b3BpY19uYW1lKQotICAgICAgICB3aGlsZSBub3QgY2xpZW50LmlzX2RvbmUoKToKLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzID0gcXVldWUuZ2V0KGJsb2NrLCBkZWxheV9z
ZWNzKQotICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgICAgIHJl
dHVybgotICAgICAgICAgICAgbXNnID0gX01lc3NhZ2UubG9hZHMocykKLSAgICAgICAgICAgIHNl
bGYuX2Rpc3BhdGNoX21lc3NhZ2UobXNnLCBjbGllbnQpCi0KLSAgICBkZWYgX2Rpc3BhdGNoX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSwgY2xpZW50KToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoY2xp
ZW50LCAnaGFuZGxlXycgKyBtZXNzYWdlLm5hbWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigKLSAgICAgICAgICAgICAgICIlczogcmVjZWl2ZWQgbWVzc2FnZSAnJXMnIGl0IGNvdWxk
bid0IGhhbmRsZSIgJQotICAgICAgICAgICAgICAgKGNsaWVudC5uYW1lKCksIG1lc3NhZ2UubmFt
ZSkpCi0gICAgICAgIG9wdGFyZ3MgPSBtZXNzYWdlLmFyZ3MKLSAgICAgICAgbWVzc2FnZV9oYW5k
bGVyID0gZ2V0YXR0cihjbGllbnQsICdoYW5kbGVfJyArIG1lc3NhZ2UubmFtZSkKLSAgICAgICAg
bWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2Uuc3JjLCAqb3B0YXJncykKLQotCi1jbGFzcyBfTWVzc2Fn
ZShvYmplY3QpOgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbG9hZHMoc3RyaW5nX3ZhbHVl
KToKLSAgICAgICAgb2JqID0gY1BpY2tsZS5sb2FkcyhzdHJpbmdfdmFsdWUpCi0gICAgICAgIGFz
c2VydChpc2luc3RhbmNlKG9iaiwgX01lc3NhZ2UpKQotICAgICAgICByZXR1cm4gb2JqCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgc3JjLCB0b3BpY19uYW1lLCBtZXNzYWdlX25hbWUsIG1lc3Nh
Z2VfYXJncyk6Ci0gICAgICAgIHNlbGYuc3JjID0gc3JjCi0gICAgICAgIHNlbGYudG9waWNfbmFt
ZSA9IHRvcGljX25hbWUKLSAgICAgICAgc2VsZi5uYW1lID0gbWVzc2FnZV9uYW1lCi0gICAgICAg
IHNlbGYuYXJncyA9IG1lc3NhZ2VfYXJncwotCi0gICAgZGVmIGR1bXBzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gY1BpY2tsZS5kdW1wcyhzZWxmKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgot
ICAgICAgICByZXR1cm4gKCJfTWVzc2FnZShmcm9tPSclcycsIHRvcGljX25hbWU9JyVzJywgbWVz
c2FnZV9uYW1lPSclcycpIiAlCi0gICAgICAgICAgICAgICAgKHNlbGYuc3JjLCBzZWxmLnRvcGlj
X25hbWUsIHNlbGYubmFtZSkpCi0KLQotY2xhc3MgQnJva2VyQ29ubmVjdGlvbihvYmplY3QpOgot
ICAgICIiIkJyb2tlckNvbm5lY3Rpb24gcHJvdmlkZXMgYSBjb25uZWN0aW9uLW9yaWVudGVkIGZh
Y2FkZSBvbiB0b3Agb2YgYQotICAgIEJyb2tlciwgc28gdGhhdCBjYWxsZXJzIGRvbid0IGhhdmUg
dG8gcmVwZWF0ZWRseSBwYXNzIHRoZSBzYW1lIHRvcGljCi0gICAgbmFtZXMgb3ZlciBhbmQgb3Zl
ci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgcnVuX3RvcGlj
LCBwb3N0X3RvcGljKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgQnJva2VyQ29ubmVjdGlvbiBvbiB0
b3Agb2YgYSBCcm9rZXIuIE5vdGUgdGhhdCB0aGUgQnJva2VyCi0gICAgICAgIGlzIHBhc3NlZCBp
biByYXRoZXIgdGhhbiBjcmVhdGVkIHNvIHRoYXQgYSBzaW5nbGUgQnJva2VyIGNhbiBiZSB1c2Vk
Ci0gICAgICAgIGJ5IG11bHRpcGxlIEJyb2tlckNvbm5lY3Rpb25zLiIiIgotICAgICAgICBzZWxm
Ll9icm9rZXIgPSBicm9rZXIKLSAgICAgICAgc2VsZi5fY2xpZW50ID0gY2xpZW50Ci0gICAgICAg
IHNlbGYuX3Bvc3RfdG9waWMgPSBwb3N0X3RvcGljCi0gICAgICAgIHNlbGYuX3J1bl90b3BpYyA9
IHJ1bl90b3BpYwotICAgICAgICBicm9rZXIuYWRkX3RvcGljKHJ1bl90b3BpYykKLSAgICAgICAg
YnJva2VyLmFkZF90b3BpYyhwb3N0X3RvcGljKQotCi0gICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Ao
c2VsZiwgZGVsYXlfc2Vjcz1Ob25lKToKLSAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdl
X2xvb3Aoc2VsZi5fcnVuX3RvcGljLCBzZWxmLl9jbGllbnQsIGRlbGF5X3NlY3MpCi0KLSAgICBk
ZWYgcG9zdF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6Ci0gICAg
ICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0X3Rv
cGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfbmFtZSwgKm1l
c3NhZ2VfYXJncykKLQotICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgZXhjX2luZm8pOgot
ICAgICAgICAjIFNpbmNlIHRyYWNlYmFja3MgYXJlbid0IHBpY2tsYWJsZSwgc2VuZCB0aGUgZXh0
cmFjdGVkIHN0YWNrIGluc3RlYWQuCi0gICAgICAgIGV4Y2VwdGlvbl90eXBlLCBleGNlcHRpb25f
dmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICBzdGFj
a191dGlscy5sb2dfdHJhY2ViYWNrKF9sb2cuZGVidWcsIGV4Y2VwdGlvbl90cmFjZWJhY2spCi0g
ICAgICAgIHN0YWNrID0gdHJhY2ViYWNrLmV4dHJhY3RfdGIoZXhjZXB0aW9uX3RyYWNlYmFjaykK
LSAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZShzZWxmLl9jbGllbnQsIHNlbGYuX3Bv
c3RfdG9waWMsICdleGNlcHRpb24nLCBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBz
dGFjaykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXJfdW5pdHRlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOGQ4ZTZmOTdhNmUxM2IxN2UxYmRhMTg2
YjdjZDgwYjdjMjQ1NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVz
c2FnZV9icm9rZXJfdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtZXNzYWdlX2Jyb2tlcgotCi0jIFRoaXMgZmlsZSBl
eGlzdHMgdG8gdGVzdCByb3V0aW5lcyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBjb3ZlcmVkIGVs
c2V3aGVyZTsKLSMgbW9zdCBvZiB0aGUgdGVzdGluZyBvZiBtZXNzYWdlX2Jyb2tlciB3aWxsIGJl
IGNvdmVyZWQgdW5kZXIgdGhlIHRlc3RzIGluCi0jIHRoZSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIg
bW9kdWxlLgotCi0KLWNsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgdGVzdF9fbm9fYm9keShzZWxmKToKLSAgICAgICAgbXNnID0gbWVzc2FnZV9icm9rZXIuX01l
c3NhZ2UoJ3NyYycsICd0b3BpY19uYW1lJywgJ21lc3NhZ2VfbmFtZScsIE5vbmUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShyZXByKG1zZykpCi0gICAgICAgIHMgPSBtc2cuZHVtcHMoKQotICAg
ICAgICBuZXdfbXNnID0gbWVzc2FnZV9icm9rZXIuX01lc3NhZ2UubG9hZHMocykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLm5hbWUsICdtZXNzYWdlX25hbWUnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuYXJncywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCi0KLSAgICBkZWYgdGVzdF9fYm9keShzZWxmKToK
LSAgICAgICAgbXNnID0gbWVzc2FnZV9icm9rZXIuX01lc3NhZ2UoJ3NyYycsICd0b3BpY19uYW1l
JywgJ21lc3NhZ2VfbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgnYm9keScsIDApKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQotICAgICAg
ICBzID0gbXNnLmR1bXBzKCkKLSAgICAgICAgbmV3X21zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNz
YWdlLmxvYWRzKHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5uYW1lLCAnbWVz
c2FnZV9uYW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLmFyZ3MsICgnYm9k
eScsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cudG9waWNfbmFtZSwgJ3Rv
cGljX25hbWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuc3JjLCAnc3JjJykK
LQotCi1jbGFzcyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRoZXNl
IHRlc3RzIG1vc3RseSBleGlzdCB0byBwYWNpZnkgY292ZXJhZ2UuCi0KLSAgICAjIEZJWE1FOiBU
aGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIGFuZCBhbHNvIHZlcmlmeQotICAg
ICMgdGhhdCBjbGFzc2VzIGRvIGltcGxlbWVudCBldmVyeSBhYnN0cmFjdCBtZXRob2QgaW4gYW4g
aW50ZXJmYWNlLgotCi0gICAgZGVmIHRlc3RfYnJva2VyY2xpZW50X2lzX2Fic3RyYWN0KHNlbGYp
OgotICAgICAgICAjIFRlc3QgdGhhdCBhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kcyBhcmUgYWJz
dHJhY3QgYW5kIGhhdmUgdGhlCi0gICAgICAgICMgc2lnbmF0dXJlIHdlIGV4cGVjdC4KLSAgICAg
ICAgb2JqID0gbWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50KCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmlzX2RvbmUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5uYW1lKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127316</attachid>
            <date>2012-02-15 23:15:42 -0800</date>
            <delta_ts>2012-02-16 15:40:29 -0800</delta_ts>
            <desc>merge to r107844 + patch in bug 78181</desc>
            <filename>bug-78187-20120215231541.patch</filename>
            <type>text/plain</type>
            <size>30578</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmUzODZiZDhhOGE5Yzc3YTJkNWM4ZTQzZmE0OGU0NWU1
ZDY1M2VmYS4uN2ZjY2Y4MjA4YjA4YjE0YTlmZjRiYTAzNWIwYzY2NWE2ZGEzNjVmMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYx
IEBACiAyMDEyLTAyLTE1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG1lcmdlIG1lc3NhZ2VfYnJva2VyLnB5IGludG8gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1lcmdlcyBtZXNzYWdlX2Jyb2tlci5weSBpbnRvCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5weTsgaXQgdHVybnMgb3V0IGl0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8KKyAg
ICAgICAgYmUgYSBzZXBhcmF0ZSBtb2R1bGUgYXMgbm8gb25lIGVsc2Ugd2FzIGNhbGxpbmcgaXQu
IFRoaXMgY2hhbmdlCisgICAgICAgIG9ubHkgbWVyZ2VzIHRoZSB0d28gZmlsZXMgYW5kIGFkanVz
dHMgc29tZSBvZiB0aGUgbmFtZXMgZm9yCisgICAgICAgIHZpc2liaWxpdHk7IGEgc3Vic2VxdWVu
dCBjaGFuZ2Ugd2lsbCBkbyBtb3JlIHJlZmFjdG9yaW5nIGFuZAorICAgICAgICBzaW1wbGlmaWNh
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgKGNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKGdldCk6CisgICAgICAgIChfQnJva2VyQ2xpZW50KToKKyAgICAgICAgKF9Ccm9rZXJD
bGllbnQuaXNfZG9uZSk6CisgICAgICAgIChfQnJva2VyQ2xpZW50Lm5hbWUpOgorICAgICAgICAo
X0Jyb2tlcik6CisgICAgICAgIChfQnJva2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9Ccm9rZXIu
YWRkX3RvcGljKToKKyAgICAgICAgKF9Ccm9rZXIuX2dldF9xdWV1ZV9mb3JfdG9waWMpOgorICAg
ICAgICAoX0Jyb2tlci5wb3N0X21lc3NhZ2UpOgorICAgICAgICAoX0Jyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIucnVuX2FsbF9wZW5kaW5nKToKKyAgICAgICAgKF9C
cm9rZXIuX3J1bl9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIuX2Rpc3BhdGNoX21lc3NhZ2UpOgor
ICAgICAgICAoX01lc3NhZ2UpOgorICAgICAgICAoX01lc3NhZ2UubG9hZHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19pbml0X18pOgorICAgICAgICAoX01lc3NhZ2UuZHVtcHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19yZXByX18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rp
b24ucnVuX21lc3NhZ2VfbG9vcCk6CisgICAgICAgIChfQnJva2VyQ29ubmVjdGlvbi5wb3N0X21l
c3NhZ2UpOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24ucmFpc2VfZXhjZXB0aW9uKToKKyAg
ICAgICAgKEFic3RyYWN0V29ya2VyKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9f
KToKKyAgICAgICAgKF9NYW5hZ2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfTWFuYWdlckNvbm5l
Y3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0lubGluZU1hbmFnZXIucnVuX21lc3NhZ2VfbG9v
cCk6CisgICAgICAgIChfV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfV29ya2VyQ29ubmVj
dGlvbi5fX2luaXRfXyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi55aWVsZF90
b19icm9rZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKEludGVy
ZmFjZVRlc3QudGVzdF9icm9rZXJjbGllbnRfaXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJm
YWNlVGVzdC50ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdC5tZXRob2RzKToKKyAgICAgICAg
KE1lc3NhZ2VUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VUZXN0LnRlc3RfX25vX2JvZHkpOgorICAg
ICAgICAoTWVzc2FnZVRlc3QudGVzdF9fYm9keSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2Fn
ZV9icm9rZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKKzIwMTItMDItMTUgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgbnJ3dDogc2ltcGxpZnkgd29ya2Vy
IGludGVyZmFjZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzgxODEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
CmluZGV4IDFhYTk1ZWZhNzlmMTNjYzM1MjI1MTRkNGI5NjQ4YjM5Mjc2ODUzZTYuLjUyNzNlMjMz
Zjk2ODVlMWJkNWQzNjk3OWM1ZTMyMTdjOGIyOWMzMzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTI5LDggKzI5LDggQEAKICIiIk1vZHVsZSBm
b3IgaGFuZGxpbmcgbWVzc2FnZXMgYW5kIGNvbmN1cnJlbmN5IGZvciBydW4td2Via2l0LXRlc3Rz
LgogCiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbWVzc2FnZSBicm9rZXIgdGhhdCBjb25uZWN0
cyB0aGUgbWFuYWdlciB0byB0aGUKLXdvcmtlcnM6IGl0IHByb3ZpZGVzIGEgbWVzc2FnaW5nIGFi
c3RyYWN0aW9uIGFuZCBtZXNzYWdlIGxvb3BzIChidWlsZGluZyBvbgotdG9wIG9mIG1lc3NhZ2Vf
YnJva2VyKSwgYW5kIGhhbmRsZXMgc3RhcnRpbmcgd29ya2VycyBieSBsYXVuY2hpbmcgcHJvY2Vz
c2VzLgord29ya2VyczogaXQgcHJvdmlkZXMgYSBtZXNzYWdpbmcgYWJzdHJhY3Rpb24gYW5kIG1l
c3NhZ2UgbG9vcHMsIGFuZAoraGFuZGxlcyBzdGFydGluZyB3b3JrZXJzIGJ5IGxhdW5jaGluZyBw
cm9jZXNzZXMuCiAKIFRoZXJlIGFyZSBhIGxvdCBvZiBjbGFzc2VzIGFuZCBvYmplY3RzIGludm9s
dmVkIGluIGEgZnVsbHkgY29ubmVjdGVkIHN5c3RlbS4KIFRoZXkgaW50ZXJhY3QgbW9yZSBvciBs
ZXNzIGxpa2U6CkBAIC0zOSwyNCArMzksNDggQEAgVGhleSBpbnRlcmFjdCBtb3JlIG9yIGxlc3Mg
bGlrZToKICAgICAgXiAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgIC8gICAgICAg
ICAgICAgIF4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgdiAgICAg
ICAgICAgICAgIHwKICAgICAgXC0tLS0tLS0tLS0tLS0tLS0tLS0tICBNZXNzYWdlQnJva2VyICAg
LS0tLS0tLS0tLS0tLS8KKworVGhlIGJyb2tlciBzaW1wbHkgZGlzdHJpYnV0ZXMgbWVzc2FnZXMg
b250byB0b3BpY3MgKG5hbWVkIHF1ZXVlcyk7IHRoZSBhY3R1YWwKK3F1ZXVlcyB0aGVtc2VsdmVz
IGFyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLCBhcyB0aGUgcXVldWUncyBpbXBsZW1lbnRhdGlv
bgorcmVxdWlyZW1lbnRzIHZhcmllcyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgZGVzaXJlZCBjb25j
dXJyZW5jeSBtb2RlbAorKG5vbmUvdGhyZWFkcy9wcm9jZXNzZXMpLgorCitJbiBvcmRlciBmb3Ig
c2hhcmVkLW5vdGhpbmcgbWVzc2FnaW5nIGJldHdlZW4gcHJvY2Vzc2luZyB0byBiZSBwb3NzaWJs
ZSwKK01lc3NhZ2VzIG11c3QgYmUgcGlja2xhYmxlLgorCitUaGUgYnJva2VyIGNsYXNzZXMgcmVs
YXRlIHRvIGVhY2ggb3RoZXIgYXM6CisKKyAgICBfQnJva2VyQ2xpZW50ICAgLS0tLS0tPiAgICBf
QnJva2VyQ29ubmVjdGlvbgorICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgIFwtLS0tLS0tLS0t
LS0tLS0tICAgICAgX0Jyb2tlcgorCisoVGhlIF9Ccm9rZXJDbGllbnQgbmV2ZXIgY2FsbHMgYnJv
a2VyIGRpcmVjdGx5IGFmdGVyIGl0IGlzIGNyZWF0ZWQsIG9ubHkKK19Ccm9rZXJDb25uZWN0aW9u
LiAgX0Jyb2tlckNvbm5lY3Rpb24gcGFzc2VzIGEgcmVmZXJlbmNlIHRvIF9Ccm9rZXJDbGllbnQg
dG8KK19Ccm9rZXIsIGFuZCBfQnJva2VyIG9ubHkgaW52b2tlcyB0aGF0IHJlZmVyZW5jZSwgbmV2
ZXIgdGFsa2luZyBkaXJlY3RseSB0bworX0Jyb2tlckNvbm5lY3Rpb24pLgogIiIiCiAKK2ltcG9y
dCBjUGlja2xlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0
IG9wdHBhcnNlCiBpbXBvcnQgUXVldWUKIGltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKKwog
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9i
cm9rZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgc3RhY2tfdXRpbHMKIAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogIwogIyBUb3BpYyBuYW1l
cyBmb3IgTWFuYWdlciA8LT4gV29ya2VyIG1lc3NhZ2luZwogIwotTUFOQUdFUl9UT1BJQyA9ICdt
YW5hZ2VycycKLUFOWV9XT1JLRVJfVE9QSUMgPSAnd29ya2VycycKK19NQU5BR0VSX1RPUElDID0g
J21hbmFnZXJzJworX0FOWV9XT1JLRVJfVE9QSUMgPSAnd29ya2VycycKIAogCiBkZWYgZ2V0KHdv
cmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgpAQCAtNjQsMzAgKzg4LDE2MCBAQCBk
ZWYgZ2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogCiAgICAgQXJnczoK
ICAgICAgICAgd29ya2VyX21vZGVsIC0gY29uY3VycmVuY3kgbW9kZWwgdG8gdXNlIChpbmxpbmUv
cHJvY2Vzc2VzKQotICAgICAgICBjbGllbnQgLSBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQg
aW1wbGVtZW50YXRpb24gdG8gZGlzcGF0Y2gKKyAgICAgICAgY2xpZW50IC0gX0Jyb2tlckNsaWVu
dCBpbXBsZW1lbnRhdGlvbiB0byBkaXNwYXRjaAogICAgICAgICAgICAgcmVwbGllcyB0by4KICAg
ICAgICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJzIHRvIGNyZWF0ZS4gVGhpcyBjbGFz
cyBzaG91bGQgb3ZlcnJpZGUKICAgICAgICAgICAgIHRoZSBtZXRob2RzIGluIEFic3RyYWN0V29y
a2VyLgogICAgIFJldHVybnM6Ci0gICAgICAgICAgICBBIGhhbmRsZSB0byBhbiBvYmplY3QgdGhh
dCB3aWxsIHRhbGsgdG8gYSBtZXNzYWdlIGJyb2tlciBjb25maWd1cmVkCi0gICAgICAgICAgICBm
b3IgdGhlIG5vcm1hbCBtYW5hZ2VyL3dvcmtlciBjb21tdW5pY2F0aW9uLgorICAgICAgICBBIGhh
bmRsZSB0byBhbiBvYmplY3QgdGhhdCB3aWxsIHRhbGsgdG8gYSBtZXNzYWdlIGJyb2tlciBjb25m
aWd1cmVkCisgICAgICAgIGZvciB0aGUgbm9ybWFsIG1hbmFnZXIvd29ya2VyIGNvbW11bmljYXRp
b24uIiIiCisgICAgaWYgd29ya2VyX21vZGVsID09ICdpbmxpbmUnOgorICAgICAgICBxdWV1ZV9j
bGFzcyA9IFF1ZXVlLlF1ZXVlCisgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfSW5saW5lTWFuYWdl
cgorICAgIGVsaWYgd29ya2VyX21vZGVsID09ICdwcm9jZXNzZXMnOgorICAgICAgICBxdWV1ZV9j
bGFzcyA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZQorICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX011
bHRpUHJvY2Vzc01hbmFnZXIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1
bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkK
KworICAgIGJyb2tlciA9IF9Ccm9rZXIocXVldWVfY2xhc3MpCisgICAgcmV0dXJuIG1hbmFnZXJf
Y2xhc3MoYnJva2VyLCBjbGllbnQsIHdvcmtlcl9jbGFzcykKKworCitjbGFzcyBfQnJva2VyQ2xp
ZW50KG9iamVjdCk6CisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyAvIGludGVyZmFjZSB0aGF0
IGFsbCBtZXNzYWdlIGJyb2tlciBjbGllbnRzIG11c3QKKyAgICBpbXBsZW1lbnQuIEluIGFkZGl0
aW9uIHRvIHRoZSBtZXRob2RzIGJlbG93LCBieSBjb252ZW50aW9uIGNsaWVudHMKKyAgICBpbXBs
ZW1lbnQgcm91dGluZXMgb2YgdGhlIHNpZ25hdHVyZSB0eXBlCisKKyAgICAgICAgaGFuZGxlX01F
U1NBR0VfTkFNRShzZWxmLCBzcmMsIC4uLik6CisKKyAgICB3aGVyZSBNRVNTQUdFX05BTUUgbWF0
Y2hlcyB0aGUgc3RyaW5nIHBhc3NlZCB0byBwb3N0X21lc3NhZ2UoKSwgYW5kCisgICAgc3JjIGlu
ZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgc2VuZGVyLiBJZiB0aGUgbWVzc2FnZSBjb250YWlucyB2
YWx1ZXMgaW4KKyAgICB0aGUgbWVzc2FnZSBib2R5LCB0aG9zZSB3aWxsIGJlIHByb3ZpZGVkIGFz
IG9wdHBhcmFtcy4iIiIKKworICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICAiIiJDYWxs
ZWQgZnJvbSBpbnNpZGUgcnVuX21lc3NhZ2VfbG9vcCgpIHRvIGluZGljYXRlIHdoZXRoZXIgdG8g
ZXhpdC4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIG5h
bWUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhIG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSBj
bGllbnQuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBf
QnJva2VyKG9iamVjdCk6CisgICAgIiIiQnJva2VycyBwcm92aWRlIHRoZSBiYXNpYyBtb2RlbCBv
ZiBhIHNldCBvZiB0b3BpY3MuIENsaWVudHMgY2FuIHBvc3QgYQorICAgIG1lc3NhZ2UgdG8gYW55
IHRvcGljIHVzaW5nIHBvc3RfbWVzc2FnZSgpLCBhbmQgY2FuIHByb2Nlc3MgbWVzc2FnZXMgb24g
b25lCisgICAgdG9waWMgYXQgYSB0aW1lIHVzaW5nIHJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZV9tYWtlcik6CisgICAgICAgICIiIkFyZ3M6Cisg
ICAgICAgICAgICBxdWV1ZV9tYWtlcjogYSBmYWN0b3J5IG1ldGhvZCB0aGF0IHJldHVybnMgb2Jq
ZWN0cyBpbXBsZW1lbnRpbmcgYQorICAgICAgICAgICAgICAgIFF1ZXVlIGludGVyZmFjZSAocHV0
KCkvZ2V0KCkpLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgd29ya2VyX21vZGVsID09ICdpbmxp
bmUnOgotICAgICAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1ZS5RdWV1ZQotICAgICAgICAgICAg
bWFuYWdlcl9jbGFzcyA9IF9JbmxpbmVNYW5hZ2VyCi0gICAgICAgIGVsaWYgd29ya2VyX21vZGVs
ID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgcXVldWVfY2xhc3MgPSBtdWx0aXByb2Nlc3Np
bmcuUXVldWUKLSAgICAgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfTXVsdGlQcm9jZXNzTWFuYWdl
cgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0
ZWQgdmFsdWUgZm9yIC0td29ya2VyLW1vZGVsOiAlcyIgJSB3b3JrZXJfbW9kZWwpCi0KLSAgICAg
ICAgYnJva2VyID0gbWVzc2FnZV9icm9rZXIuQnJva2VyKHF1ZXVlX2NsYXNzKQotICAgICAgICBy
ZXR1cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKQotCi0KLSAg
ICBjbGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQpOgotICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9hcmd1bWVu
dHM9Tm9uZSk6Ci0gICAgICAgICAgICAiIiJUaGUgY29uc3RydWN0b3Igc2hvdWxkIGJlIHVzZWQg
dG8gZG8gYW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgorICAgICAgICBzZWxmLl9xdWV1ZV9tYWtl
ciA9IHF1ZXVlX21ha2VyCisgICAgICAgIHNlbGYuX3RvcGljcyA9IHt9CisKKyAgICBkZWYgYWRk
X3RvcGljKHNlbGYsIHRvcGljX25hbWUpOgorICAgICAgICBpZiB0b3BpY19uYW1lIG5vdCBpbiBz
ZWxmLl90b3BpY3M6CisgICAgICAgICAgICBzZWxmLl90b3BpY3NbdG9waWNfbmFtZV0gPSBzZWxm
Ll9xdWV1ZV9tYWtlcigpCisKKyAgICBkZWYgX2dldF9xdWV1ZV9mb3JfdG9waWMoc2VsZiwgdG9w
aWNfbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLl90b3BpY3NbdG9waWNfbmFtZV0KKworICAg
IGRlZiBwb3N0X21lc3NhZ2Uoc2VsZiwgY2xpZW50LCB0b3BpY19uYW1lLCBtZXNzYWdlX25hbWUs
ICptZXNzYWdlX2FyZ3MpOgorICAgICAgICAiIiJQb3N0IGEgbWVzc2FnZSB0byB0aGUgYXBwcm9w
cmlhdGUgdG9waWMgbmFtZS4KKworICAgICAgICBNZXNzYWdlcyBoYXZlIGEgbmFtZSBhbmQgYSB0
dXBsZSBvZiBvcHRpb25hbCBhcmd1bWVudHMuIEJvdGggbXVzdCBiZSBwaWNrbGFibGUuIiIiCisg
ICAgICAgIG1lc3NhZ2UgPSBfTWVzc2FnZShjbGllbnQubmFtZSgpLCB0b3BpY19uYW1lLCBtZXNz
YWdlX25hbWUsIG1lc3NhZ2VfYXJncykKKyAgICAgICAgcXVldWUgPSBzZWxmLl9nZXRfcXVldWVf
Zm9yX3RvcGljKHRvcGljX25hbWUpCisgICAgICAgIHF1ZXVlLnB1dChfTWVzc2FnZS5kdW1wcyht
ZXNzYWdlKSkKKworICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIHRvcGljX25hbWUsIGNs
aWVudCwgZGVsYXlfc2Vjcz1Ob25lKToKKyAgICAgICAgIiIiTG9vcCBwcm9jZXNzaW5nIG1lc3Nh
Z2VzIHVudGlsIGNsaWVudC5pc19kb25lKCkgb3IgZGVsYXkgcGFzc2VzLgorCisgICAgICAgIFRv
IHJ1biBpbmRlZmluaXRlbHksIHNldCBkZWxheV9zZWNzIHRvIE5vbmUuIiIiCisgICAgICAgIGFz
c2VydCBkZWxheV9zZWNzIGlzIE5vbmUgb3IgZGVsYXlfc2VjcyA+IDAKKyAgICAgICAgc2VsZi5f
cnVuX2xvb3AodG9waWNfbmFtZSwgY2xpZW50LCBibG9jaz1UcnVlLCBkZWxheV9zZWNzPWRlbGF5
X3NlY3MpCisKKyAgICBkZWYgcnVuX2FsbF9wZW5kaW5nKHNlbGYsIHRvcGljX25hbWUsIGNsaWVu
dCk6CisgICAgICAgICIiIlByb2Nlc3MgbWVzc2FnZXMgdW50aWwgY2xpZW50LmlzX2RvbmUoKSBv
ciBjYWxsZXIgd291bGQgYmxvY2suIiIiCisgICAgICAgIHNlbGYuX3J1bl9sb29wKHRvcGljX25h
bWUsIGNsaWVudCwgYmxvY2s9RmFsc2UsIGRlbGF5X3NlY3M9Tm9uZSkKKworICAgIGRlZiBfcnVu
X2xvb3Aoc2VsZiwgdG9waWNfbmFtZSwgY2xpZW50LCBibG9jaywgZGVsYXlfc2Vjcyk6CisgICAg
ICAgIHF1ZXVlID0gc2VsZi5fZ2V0X3F1ZXVlX2Zvcl90b3BpYyh0b3BpY19uYW1lKQorICAgICAg
ICB3aGlsZSBub3QgY2xpZW50LmlzX2RvbmUoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBzID0gcXVldWUuZ2V0KGJsb2NrLCBkZWxheV9zZWNzKQorICAgICAgICAgICAgZXhj
ZXB0IFF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgbXNn
ID0gX01lc3NhZ2UubG9hZHMocykKKyAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNoX21lc3NhZ2Uo
bXNnLCBjbGllbnQpCisKKyAgICBkZWYgX2Rpc3BhdGNoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwg
Y2xpZW50KToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoY2xpZW50LCAnaGFuZGxlXycgKyBtZXNz
YWdlLm5hbWUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAg
ICIlczogcmVjZWl2ZWQgbWVzc2FnZSAnJXMnIGl0IGNvdWxkbid0IGhhbmRsZSIgJQorICAgICAg
ICAgICAgICAgKGNsaWVudC5uYW1lKCksIG1lc3NhZ2UubmFtZSkpCisgICAgICAgIG9wdGFyZ3Mg
PSBtZXNzYWdlLmFyZ3MKKyAgICAgICAgbWVzc2FnZV9oYW5kbGVyID0gZ2V0YXR0cihjbGllbnQs
ICdoYW5kbGVfJyArIG1lc3NhZ2UubmFtZSkKKyAgICAgICAgbWVzc2FnZV9oYW5kbGVyKG1lc3Nh
Z2Uuc3JjLCAqb3B0YXJncykKKworCitjbGFzcyBfTWVzc2FnZShvYmplY3QpOgorICAgIEBzdGF0
aWNtZXRob2QKKyAgICBkZWYgbG9hZHMoc3RyaW5nX3ZhbHVlKToKKyAgICAgICAgb2JqID0gY1Bp
Y2tsZS5sb2FkcyhzdHJpbmdfdmFsdWUpCisgICAgICAgIGFzc2VydChpc2luc3RhbmNlKG9iaiwg
X01lc3NhZ2UpKQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
c3JjLCB0b3BpY19uYW1lLCBtZXNzYWdlX25hbWUsIG1lc3NhZ2VfYXJncyk6CisgICAgICAgIHNl
bGYuc3JjID0gc3JjCisgICAgICAgIHNlbGYudG9waWNfbmFtZSA9IHRvcGljX25hbWUKKyAgICAg
ICAgc2VsZi5uYW1lID0gbWVzc2FnZV9uYW1lCisgICAgICAgIHNlbGYuYXJncyA9IG1lc3NhZ2Vf
YXJncworCisgICAgZGVmIGR1bXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gY1BpY2tsZS5kdW1w
cyhzZWxmKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCJfTWVz
c2FnZShmcm9tPSclcycsIHRvcGljX25hbWU9JyVzJywgbWVzc2FnZV9uYW1lPSclcycpIiAlCisg
ICAgICAgICAgICAgICAgKHNlbGYuc3JjLCBzZWxmLnRvcGljX25hbWUsIHNlbGYubmFtZSkpCisK
KworY2xhc3MgX0Jyb2tlckNvbm5lY3Rpb24ob2JqZWN0KToKKyAgICAiIiJCcm9rZXJDb25uZWN0
aW9uIHByb3ZpZGVzIGEgY29ubmVjdGlvbi1vcmllbnRlZCBmYWNhZGUgb24gdG9wIG9mIGEKKyAg
ICBCcm9rZXIsIHNvIHRoYXQgY2FsbGVycyBkb24ndCBoYXZlIHRvIHJlcGVhdGVkbHkgcGFzcyB0
aGUgc2FtZSB0b3BpYworICAgIG5hbWVzIG92ZXIgYW5kIG92ZXIuIiIiCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHJ1bl90b3BpYywgcG9zdF90b3BpYyk6CisgICAg
ICAgICIiIkNyZWF0ZSBhIEJyb2tlckNvbm5lY3Rpb24gb24gdG9wIG9mIGEgQnJva2VyLiBOb3Rl
IHRoYXQgdGhlIEJyb2tlcgorICAgICAgICBpcyBwYXNzZWQgaW4gcmF0aGVyIHRoYW4gY3JlYXRl
ZCBzbyB0aGF0IGEgc2luZ2xlIEJyb2tlciBjYW4gYmUgdXNlZAorICAgICAgICBieSBtdWx0aXBs
ZSBCcm9rZXJDb25uZWN0aW9ucy4iIiIKKyAgICAgICAgc2VsZi5fYnJva2VyID0gYnJva2VyCisg
ICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAorICAgICAgICBzZWxmLl9wb3N0X3RvcGljID0g
cG9zdF90b3BpYworICAgICAgICBzZWxmLl9ydW5fdG9waWMgPSBydW5fdG9waWMKKyAgICAgICAg
YnJva2VyLmFkZF90b3BpYyhydW5fdG9waWMpCisgICAgICAgIGJyb2tlci5hZGRfdG9waWMocG9z
dF90b3BpYykKKworICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIGRlbGF5X3NlY3M9Tm9u
ZSk6CisgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKHNlbGYuX3J1bl90b3Bp
Yywgc2VsZi5fY2xpZW50LCBkZWxheV9zZWNzKQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxm
LCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpOgorICAgICAgICBzZWxmLl9icm9rZXIucG9z
dF9tZXNzYWdlKHNlbGYuX2NsaWVudCwgc2VsZi5fcG9zdF90b3BpYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpCisKKyAgICBk
ZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIGV4Y19pbmZvKToKKyAgICAgICAgIyBTaW5jZSB0cmFj
ZWJhY2tzIGFyZW4ndCBwaWNrbGFibGUsIHNlbmQgdGhlIGV4dHJhY3RlZCBzdGFjayBpbnN0ZWFk
LgorICAgICAgICBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25fdHJh
Y2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgc3RhY2tfdXRpbHMubG9nX3RyYWNlYmFj
ayhfbG9nLmRlYnVnLCBleGNlcHRpb25fdHJhY2ViYWNrKQorICAgICAgICBzdGFjayA9IHRyYWNl
YmFjay5leHRyYWN0X3RiKGV4Y2VwdGlvbl90cmFjZWJhY2spCisgICAgICAgIHNlbGYuX2Jyb2tl
ci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0X3RvcGljLCAnZXhjZXB0aW9u
JywgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgc3RhY2spCisKKworY2xhc3MgQWJz
dHJhY3RXb3JrZXIoX0Jyb2tlckNsaWVudCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtl
cl9jb25uZWN0aW9uLCB3b3JrZXJfYXJndW1lbnRzPU5vbmUpOgorICAgICAgICAiIiJUaGUgY29u
c3RydWN0b3Igc2hvdWxkIGJlIHVzZWQgdG8gZG8gYW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgog
ICAgICAgICBuZWNlc3NhcnksIGJ1dCBzaG91bGQgbm90IGRvIGFueXRoaW5nIHRoYXQgY3JlYXRl
cyBkYXRhIHN0cnVjdHVyZXMKICAgICAgICAgdGhhdCBjYW5ub3QgYmUgUGlja2xlZCBvciBzZW50
IGFjcm9zcyBwcm9jZXNzZXMgKGxpa2Ugb3BlbmluZwogICAgICAgICBmaWxlcyBvciBzb2NrZXRz
KS4gQ29tcGxleCBpbml0aWFsaXphdGlvbiBzaG91bGQgYmUgZG9uZSBhdCB0aGUKQEAgLTk3LDcg
KzI1MSw3IEBAIGRlZiBnZXQod29ya2VyX21vZGVsLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAg
ICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2VyQ29ubmVj
dGlvbiBvYmplY3QgY3JlYXRpbmcKICAgICAgICAgICAgICAgICB0aGUgd29ya2VyIGFuZCB0aGF0
IGNhbiBiZSB1c2VkIGZvciBtZXNzYWdpbmcuCiAgICAgICAgICAgICB3b3JrZXJfYXJndW1lbnRz
IC0gKG9wdGlvbmFsLCBQaWNrbGFibGUpIG9iamVjdCBwYXNzZWQgdG8gdGhlIHdvcmtlciBmcm9t
IHRoZSBtYW5hZ2VyIiIiCi0gICAgICAgIG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudC5fX2lu
aXRfXyhzZWxmKQorICAgICAgICBfQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCiAgICAgICAg
IHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KICAgICAgICAgc2Vs
Zi5fbmFtZSA9ICd3b3JrZXInCiAgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQpAQCAtMTM5LDcg
KzI5Myw3IEBAIGRlZiBnZXQod29ya2VyX21vZGVsLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAg
ICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQogCiAKLWNsYXNzIF9NYW5hZ2VyQ29ubmVjdGlv
bihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uKToKK2NsYXNzIF9NYW5hZ2VyQ29ubmVj
dGlvbihfQnJva2VyQ29ubmVjdGlvbik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwg
Y2xpZW50LCB3b3JrZXJfY2xhc3MpOgogICAgICAgICAiIiJCYXNlIGluaXRpYWxpemF0aW9uIGZv
ciBhbGwgTWFuYWdlciBvYmplY3RzLgogCkBAIC0xNDgsOCArMzAyLDcgQEAgY2xhc3MgX01hbmFn
ZXJDb25uZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgogICAgICAgICAg
ICAgY2xpZW50OiBjYWxsYmFjayBvYmplY3QgKHRoZSBjYWxsZXIpCiAgICAgICAgICAgICB3b3Jr
ZXJfY2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMuCiAgICAgICAg
ICIiIgotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNl
bGYsIGJyb2tlciwgY2xpZW50LAotICAgICAgICAgICAgTUFOQUdFUl9UT1BJQywgQU5ZX1dPUktF
Ul9UT1BJQykKKyAgICAgICAgX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2Vy
LCBjbGllbnQsIF9NQU5BR0VSX1RPUElDLCBfQU5ZX1dPUktFUl9UT1BJQykKICAgICAgICAgc2Vs
Zi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCiAKICAgICBkZWYgc3RhcnRfd29ya2VyKHNl
bGYsIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6CkBAIC0xODEsNyArMzM0LDcgQEAgY2xhc3MgX0lu
bGluZU1hbmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKICAgICAgICAgIyBOb3RlIHRoYXQgZGVs
YXlfc2VjcyBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZSBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkKICAg
ICAgICAgIyBpbXBsZW1lbnQgaXQuCiAgICAgICAgIHNlbGYuX2lubGluZV93b3JrZXIucnVuKCkK
LSAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VSX1RPUElDLCBzZWxm
Ll9jbGllbnQpCisgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fYWxsX3BlbmRpbmcoX01BTkFHRVJf
VE9QSUMsIHNlbGYuX2NsaWVudCkKIAogCiBjbGFzcyBfTXVsdGlQcm9jZXNzTWFuYWdlcihfTWFu
YWdlckNvbm5lY3Rpb24pOgpAQCAtMTkyLDEyICszNDUsMTEgQEAgY2xhc3MgX011bHRpUHJvY2Vz
c01hbmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKICAgICAgICAgcmV0dXJuIHdvcmtlcl9jb25u
ZWN0aW9uCiAKIAotY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2Vy
Q29ubmVjdGlvbik6CitjbGFzcyBfV29ya2VyQ29ubmVjdGlvbihfQnJva2VyQ29ubmVjdGlvbik6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfYXJn
dW1lbnRzPU5vbmUpOgogICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJfY2xhc3Moc2VsZiwg
d29ya2VyX2FyZ3VtZW50cykKICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5fY2xpZW50Lm5hbWUo
KQotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYs
IGJyb2tlciwgc2VsZi5fY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOWV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9QSUMpCisgICAgICAg
IF9Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xpZW50LCBf
QU5ZX1dPUktFUl9UT1BJQywgX01BTkFHRVJfVE9QSUMpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCkBAIC0yMzYsNyArMzg4LDcgQEAg
Y2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgogICAgICAg
ICBzZWxmLl9hbGl2ZSA9IEZhbHNlCiAKICAgICBkZWYgeWllbGRfdG9fYnJva2VyKHNlbGYpOgot
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKE1BTkFHRVJfVE9QSUMsIHNlbGYu
X21hbmFnZXJfY2xpZW50KQorICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKF9N
QU5BR0VSX1RPUElDLCBzZWxmLl9tYW5hZ2VyX2NsaWVudCkKIAogICAgIGRlZiByYWlzZV9leGNl
cHRpb24oc2VsZiwgZXhjX2luZm8pOgogICAgICAgICAjIFNpbmNlIHRoZSB3b3JrZXIgaXMgaW4g
dGhlIHNhbWUgcHJvY2VzcyBhcyB0aGUgbWFuYWdlciwgd2UgY2FuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtl
cl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggMjRh
NzNjMGUyZjZhMGQ5MDQ4YWIyOTA5OGUxNzIwZjBhMGIwNDRhYi4uMmZhYjFjNTUxYTQ5OWY3Y2Fm
MzkxOGYyOTAxNWI3OWVmZTc0YzU1YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtMzMsNyArMzMsNiBAQCBpbXBv
cnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRj
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFu
YWdlcl93b3JrZXJfYnJva2VyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVy
cyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKIAogCiAjIEluIG9yZGVyIHRvIHJlbGlhYmx5IGNvbnRy
b2wgd2hlbiBjaGlsZCB3b3JrZXJzIGFyZSBzdGFydGluZyBhbmQgc3RvcHBpbmcsCkBAIC0yMDcs
NiArMjA2LDEzIEBAIGNsYXNzIEludGVyZmFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAg
ICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxz
byB2ZXJpZnkKICAgICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3Qg
bWV0aG9kIGluIGFuIGludGVyZmFjZS4KKyAgICBkZWYgdGVzdF9icm9rZXJjbGllbnRfaXNfYWJz
dHJhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUgYmFzZSBjbGFzcyBtZXRo
b2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKKyAgICAgICAgIyBzaWduYXR1cmUgd2UgZXhw
ZWN0LgorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX0Jyb2tlckNsaWVudCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19k
b25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmou
bmFtZSkKKwogICAgIGRlZiB0ZXN0X21hbmFnZXJjb25uZWN0aW9uX2lzX2Fic3RyYWN0KHNlbGYp
OgogICAgICAgICAjIFRlc3QgdGhhdCBhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kcyBhcmUgYWJz
dHJhY3QgYW5kIGhhdmUgdGhlCiAgICAgICAgICMgc2lnbmF0dXJlIHdlIGV4cGVjdC4KQEAgLTIy
NCw1ICsyMzAsMjggQEAgY2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5qb2luLCBO
b25lKQogCiAKK2NsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYg
dGVzdF9fbm9fYm9keShzZWxmKToKKyAgICAgICAgbXNnID0gbWFuYWdlcl93b3JrZXJfYnJva2Vy
Ll9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkK
KyAgICAgICAgbmV3X21zZyA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fTWVzc2FnZS5sb2Fkcyhz
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCBOb25lKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19tc2cudG9waWNfbmFtZSwgJ3RvcGljX25hbWUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuc3JjLCAnc3JjJykKKworICAgIGRlZiB0ZXN0X19i
b2R5KHNlbGYpOgorICAgICAgICBtc2cgPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01lc3NhZ2Uo
J3NyYycsICd0b3BpY19uYW1lJywgJ21lc3NhZ2VfbmFtZScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgnYm9keScsIDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkKKyAgICAgICAgbmV3X21zZyA9IG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5fTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHknLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
ICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGQzNmQ0YjQ1ZTQ1ZmZlYWVlM2ExOGM4OTc1
ZTg3ZDNiYTU2ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2Fn
ZV9icm9rZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnaW5nIGZvciBydW4td2Via2l0LXRl
c3RzLgotCi1UaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIG1lc3NhZ2UgYnJva2VyIGFi
c3RyYWN0aW9uIHRoYXQgd2lsbCBiZQotdXNlZCB0byBjb29yZGluYXRlIG1lc3NhZ2VzIGJldHdl
ZW4gdGhlIG1haW4gcnVuLXdlYmtpdC10ZXN0cyB0aHJlYWQKLShha2EgVGVzdFJ1bm5lcikgYW5k
IHRoZSBpbmRpdmlkdWFsIHdvcmtlciB0aHJlYWRzIChwcmV2aW91c2x5IGtub3duIGFzCi1kdW1w
X3JlbmRlcl90cmVlX3RocmVhZHMpLgotCi1UaGUgYnJva2VyIHNpbXBseSBkaXN0cmlidXRlcyBt
ZXNzYWdlcyBvbnRvIHRvcGljcyAobmFtZWQgcXVldWVzKTsgdGhlIGFjdHVhbAotcXVldWVzIHRo
ZW1zZWx2ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIsIGFzIHRoZSBxdWV1ZSdzIGltcGxl
bWVudGF0aW9uCi1yZXF1aXJlbWVudHMgdmFyaWVzIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBkZXNp
cmVkIGNvbmN1cnJlbmN5IG1vZGVsCi0obm9uZS90aHJlYWRzL3Byb2Nlc3NlcykuCi0KLUluIG9y
ZGVyIGZvciBzaGFyZWQtbm90aGluZyBtZXNzYWdpbmcgYmV0d2VlbiBwcm9jZXNzaW5nIHRvIGJl
IHBvc3NpYmxlLAotTWVzc2FnZXMgbXVzdCBiZSBwaWNrbGFibGUuCi0KLVRoZSBtb2R1bGUgZGVm
aW5lcyBvbmUgaW50ZXJmYWNlIGFuZCB0d28gY2xhc3Nlcy4gQ2FsbGVycyBvZiB0aGlzIHBhY2th
Z2UKLW11c3QgaW1wbGVtZW50IHRoZSBCcm9rZXJDbGllbnQgaW50ZXJmYWNlLCBhbmQgbW9zdCBj
YWxsZXJzIHdpbGwgY3JlYXRlCi1Ccm9rZXJDb25uZWN0aW9ucyBhcyB3ZWxsIGFzIEJyb2tlcnMu
Ci0KLVRoZSBjbGFzc2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGFzOgotCi0gICAgQnJva2VyQ2xp
ZW50ICAgLS0tLS0tPiAgICBCcm9rZXJDb25uZWN0aW9uCi0gICAgICAgICBeICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgdgotICAg
ICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBCcm9rZXIKLQotKFRoZSBCcm9rZXJDbGllbnQg
bmV2ZXIgY2FsbHMgYnJva2VyIGRpcmVjdGx5IGFmdGVyIGl0IGlzIGNyZWF0ZWQsIG9ubHkKLUJy
b2tlckNvbm5lY3Rpb24uICBCcm9rZXJDb25uZWN0aW9uIHBhc3NlcyBhIHJlZmVyZW5jZSB0byBC
cm9rZXJDbGllbnQgdG8KLUJyb2tlciwgYW5kIEJyb2tlciBvbmx5IGludm9rZXMgdGhhdCByZWZl
cmVuY2UsIG5ldmVyIHRhbGtpbmcgZGlyZWN0bHkgdG8KLUJyb2tlckNvbm5lY3Rpb24pLgotIiIi
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWltcG9ydCBjUGlja2xlCi1pbXBvcnQg
bG9nZ2luZwotaW1wb3J0IFF1ZXVlCi0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgc3RhY2tfdXRpbHMKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0K
LWNsYXNzIEJyb2tlckNsaWVudChvYmplY3QpOgotICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3Mg
LyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9rZXIgY2xpZW50cyBtdXN0Ci0gICAgaW1w
bGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBiZWxvdywgYnkgY29udmVudGlvbiBj
bGllbnRzCi0gICAgaW1wbGVtZW50IHJvdXRpbmVzIG9mIHRoZSBzaWduYXR1cmUgdHlwZQotCi0g
ICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwgc3JjLCAuLi4pOgotCi0gICAgd2hlcmUg
TUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBwYXNzZWQgdG8gcG9zdF9tZXNzYWdlKCks
IGFuZAotICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUgb2YgdGhlIHNlbmRlci4gSWYgdGhlIG1l
c3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCi0gICAgdGhlIG1lc3NhZ2UgYm9keSwgdGhvc2Ugd2ls
bCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCi0KLSAgICBkZWYgaXNfZG9uZShzZWxmKToK
LSAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1bl9tZXNzYWdlX2xvb3AoKSB0byBpbmRp
Y2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBuYW1lIHRoYXQg
aWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCi0KLQotY2xhc3MgQnJva2VyKG9iamVjdCk6Ci0gICAgIiIiQnJva2VycyBwcm92aWRlIHRo
ZSBiYXNpYyBtb2RlbCBvZiBhIHNldCBvZiB0b3BpY3MuIENsaWVudHMgY2FuIHBvc3QgYQotICAg
IG1lc3NhZ2UgdG8gYW55IHRvcGljIHVzaW5nIHBvc3RfbWVzc2FnZSgpLCBhbmQgY2FuIHByb2Nl
c3MgbWVzc2FnZXMgb24gb25lCi0gICAgdG9waWMgYXQgYSB0aW1lIHVzaW5nIHJ1bl9tZXNzYWdl
X2xvb3AoKS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZV9tYWtlcik6Ci0gICAg
ICAgICIiIkFyZ3M6Ci0gICAgICAgICAgICBxdWV1ZV9tYWtlcjogYSBmYWN0b3J5IG1ldGhvZCB0
aGF0IHJldHVybnMgb2JqZWN0cyBpbXBsZW1lbnRpbmcgYQotICAgICAgICAgICAgICAgIFF1ZXVl
IGludGVyZmFjZSAocHV0KCkvZ2V0KCkpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcXVl
dWVfbWFrZXIgPSBxdWV1ZV9tYWtlcgotICAgICAgICBzZWxmLl90b3BpY3MgPSB7fQotCi0gICAg
ZGVmIGFkZF90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKLSAgICAgICAgaWYgdG9waWNfbmFtZSBu
b3QgaW4gc2VsZi5fdG9waWNzOgotICAgICAgICAgICAgc2VsZi5fdG9waWNzW3RvcGljX25hbWVd
ID0gc2VsZi5fcXVldWVfbWFrZXIoKQotCi0gICAgZGVmIF9nZXRfcXVldWVfZm9yX3RvcGljKHNl
bGYsIHRvcGljX25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fdG9waWNzW3RvcGljX25hbWVd
Ci0KLSAgICBkZWYgcG9zdF9tZXNzYWdlKHNlbGYsIGNsaWVudCwgdG9waWNfbmFtZSwgbWVzc2Fn
ZV9uYW1lLCAqbWVzc2FnZV9hcmdzKToKLSAgICAgICAgIiIiUG9zdCBhIG1lc3NhZ2UgdG8gdGhl
IGFwcHJvcHJpYXRlIHRvcGljIG5hbWUuCi0KLSAgICAgICAgTWVzc2FnZXMgaGF2ZSBhIG5hbWUg
YW5kIGEgdHVwbGUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzLiBCb3RoIG11c3QgYmUgcGlja2xhYmxl
LiIiIgotICAgICAgICBtZXNzYWdlID0gX01lc3NhZ2UoY2xpZW50Lm5hbWUoKSwgdG9waWNfbmFt
ZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpCi0gICAgICAgIHF1ZXVlID0gc2VsZi5fZ2V0
X3F1ZXVlX2Zvcl90b3BpYyh0b3BpY19uYW1lKQotICAgICAgICBxdWV1ZS5wdXQoX01lc3NhZ2Uu
ZHVtcHMobWVzc2FnZSkpCi0KLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmLCB0b3BpY19u
YW1lLCBjbGllbnQsIGRlbGF5X3NlY3M9Tm9uZSk6Ci0gICAgICAgICIiIkxvb3AgcHJvY2Vzc2lu
ZyBtZXNzYWdlcyB1bnRpbCBjbGllbnQuaXNfZG9uZSgpIG9yIGRlbGF5IHBhc3Nlcy4KLQotICAg
ICAgICBUbyBydW4gaW5kZWZpbml0ZWx5LCBzZXQgZGVsYXlfc2VjcyB0byBOb25lLiIiIgotICAg
ICAgICBhc3NlcnQgZGVsYXlfc2VjcyBpcyBOb25lIG9yIGRlbGF5X3NlY3MgPiAwCi0gICAgICAg
IHNlbGYuX3J1bl9sb29wKHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2s9VHJ1ZSwgZGVsYXlfc2Vj
cz1kZWxheV9zZWNzKQotCi0gICAgZGVmIHJ1bl9hbGxfcGVuZGluZyhzZWxmLCB0b3BpY19uYW1l
LCBjbGllbnQpOgotICAgICAgICAiIiJQcm9jZXNzIG1lc3NhZ2VzIHVudGlsIGNsaWVudC5pc19k
b25lKCkgb3IgY2FsbGVyIHdvdWxkIGJsb2NrLiIiIgotICAgICAgICBzZWxmLl9ydW5fbG9vcCh0
b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrPUZhbHNlLCBkZWxheV9zZWNzPU5vbmUpCi0KLSAgICBk
ZWYgX3J1bl9sb29wKHNlbGYsIHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2ssIGRlbGF5X3NlY3Mp
OgotICAgICAgICBxdWV1ZSA9IHNlbGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkK
LSAgICAgICAgd2hpbGUgbm90IGNsaWVudC5pc19kb25lKCk6Ci0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgcyA9IHF1ZXVlLmdldChibG9jaywgZGVsYXlfc2VjcykKLSAgICAgICAg
ICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgIG1zZyA9IF9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAgICAgICBzZWxmLl9kaXNwYXRjaF9t
ZXNzYWdlKG1zZywgY2xpZW50KQotCi0gICAgZGVmIF9kaXNwYXRjaF9tZXNzYWdlKHNlbGYsIG1l
c3NhZ2UsIGNsaWVudCk6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKGNsaWVudCwgJ2hhbmRsZV8n
ICsgbWVzc2FnZS5uYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAg
ICAgICAgICAiJXM6IHJlY2VpdmVkIG1lc3NhZ2UgJyVzJyBpdCBjb3VsZG4ndCBoYW5kbGUiICUK
LSAgICAgICAgICAgICAgIChjbGllbnQubmFtZSgpLCBtZXNzYWdlLm5hbWUpKQotICAgICAgICBv
cHRhcmdzID0gbWVzc2FnZS5hcmdzCi0gICAgICAgIG1lc3NhZ2VfaGFuZGxlciA9IGdldGF0dHIo
Y2xpZW50LCAnaGFuZGxlXycgKyBtZXNzYWdlLm5hbWUpCi0gICAgICAgIG1lc3NhZ2VfaGFuZGxl
cihtZXNzYWdlLnNyYywgKm9wdGFyZ3MpCi0KLQotY2xhc3MgX01lc3NhZ2Uob2JqZWN0KToKLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGxvYWRzKHN0cmluZ192YWx1ZSk6Ci0gICAgICAgIG9i
aiA9IGNQaWNrbGUubG9hZHMoc3RyaW5nX3ZhbHVlKQotICAgICAgICBhc3NlcnQoaXNpbnN0YW5j
ZShvYmosIF9NZXNzYWdlKSkKLSAgICAgICAgcmV0dXJuIG9iagotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHNyYywgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpOgotICAg
ICAgICBzZWxmLnNyYyA9IHNyYwotICAgICAgICBzZWxmLnRvcGljX25hbWUgPSB0b3BpY19uYW1l
Ci0gICAgICAgIHNlbGYubmFtZSA9IG1lc3NhZ2VfbmFtZQotICAgICAgICBzZWxmLmFyZ3MgPSBt
ZXNzYWdlX2FyZ3MKLQotICAgIGRlZiBkdW1wcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGNQaWNr
bGUuZHVtcHMoc2VsZikKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICgiX01lc3NhZ2UoZnJvbT0nJXMnLCB0b3BpY19uYW1lPSclcycsIG1lc3NhZ2VfbmFtZT0nJXMn
KSIgJQotICAgICAgICAgICAgICAgIChzZWxmLnNyYywgc2VsZi50b3BpY19uYW1lLCBzZWxmLm5h
bWUpKQotCi0KLWNsYXNzIEJyb2tlckNvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJCcm9rZXJD
b25uZWN0aW9uIHByb3ZpZGVzIGEgY29ubmVjdGlvbi1vcmllbnRlZCBmYWNhZGUgb24gdG9wIG9m
IGEKLSAgICBCcm9rZXIsIHNvIHRoYXQgY2FsbGVycyBkb24ndCBoYXZlIHRvIHJlcGVhdGVkbHkg
cGFzcyB0aGUgc2FtZSB0b3BpYwotICAgIG5hbWVzIG92ZXIgYW5kIG92ZXIuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHJ1bl90b3BpYywgcG9zdF90b3BpYyk6
Ci0gICAgICAgICIiIkNyZWF0ZSBhIEJyb2tlckNvbm5lY3Rpb24gb24gdG9wIG9mIGEgQnJva2Vy
LiBOb3RlIHRoYXQgdGhlIEJyb2tlcgotICAgICAgICBpcyBwYXNzZWQgaW4gcmF0aGVyIHRoYW4g
Y3JlYXRlZCBzbyB0aGF0IGEgc2luZ2xlIEJyb2tlciBjYW4gYmUgdXNlZAotICAgICAgICBieSBt
dWx0aXBsZSBCcm9rZXJDb25uZWN0aW9ucy4iIiIKLSAgICAgICAgc2VsZi5fYnJva2VyID0gYnJv
a2VyCi0gICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAotICAgICAgICBzZWxmLl9wb3N0X3Rv
cGljID0gcG9zdF90b3BpYwotICAgICAgICBzZWxmLl9ydW5fdG9waWMgPSBydW5fdG9waWMKLSAg
ICAgICAgYnJva2VyLmFkZF90b3BpYyhydW5fdG9waWMpCi0gICAgICAgIGJyb2tlci5hZGRfdG9w
aWMocG9zdF90b3BpYykKLQotICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIGRlbGF5X3Nl
Y3M9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKHNlbGYuX3J1
bl90b3BpYywgc2VsZi5fY2xpZW50LCBkZWxheV9zZWNzKQotCi0gICAgZGVmIHBvc3RfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpOgotICAgICAgICBzZWxmLl9icm9r
ZXIucG9zdF9tZXNzYWdlKHNlbGYuX2NsaWVudCwgc2VsZi5fcG9zdF90b3BpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpCi0K
LSAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIGV4Y19pbmZvKToKLSAgICAgICAgIyBTaW5j
ZSB0cmFjZWJhY2tzIGFyZW4ndCBwaWNrbGFibGUsIHNlbmQgdGhlIGV4dHJhY3RlZCBzdGFjayBp
bnN0ZWFkLgotICAgICAgICBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRp
b25fdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgc3RhY2tfdXRpbHMubG9nX3Ry
YWNlYmFjayhfbG9nLmRlYnVnLCBleGNlcHRpb25fdHJhY2ViYWNrKQotICAgICAgICBzdGFjayA9
IHRyYWNlYmFjay5leHRyYWN0X3RiKGV4Y2VwdGlvbl90cmFjZWJhY2spCi0gICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0X3RvcGljLCAnZXhj
ZXB0aW9uJywgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgc3RhY2spCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tZXNz
YWdlX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYjhkOGU2Zjk3YTZlMTNiMTdlMWJkYTE4NmI3Y2Q4MGI3YzI0NTY3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3Vu
aXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9s
bGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKLQotIyBUaGlzIGZpbGUgZXhpc3RzIHRvIHRlc3Qg
cm91dGluZXMgdGhhdCBhcmVuJ3QgbmVjZXNzYXJpbHkgY292ZXJlZCBlbHNld2hlcmU7Ci0jIG1v
c3Qgb2YgdGhlIHRlc3Rpbmcgb2YgbWVzc2FnZV9icm9rZXIgd2lsbCBiZSBjb3ZlcmVkIHVuZGVy
IHRoZSB0ZXN0cyBpbgotIyB0aGUgbWFuYWdlcl93b3JrZXJfYnJva2VyIG1vZHVsZS4KLQotCi1j
bGFzcyBNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfX25vX2Jv
ZHkoc2VsZik6Ci0gICAgICAgIG1zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAn
dG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmVwcihtc2cpKQotICAgICAgICBzID0gbXNnLmR1bXBzKCkKLSAgICAgICAgbmV3X21zZyA9
IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobmV3X21zZy5uYW1lLCAnbWVzc2FnZV9uYW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZXdfbXNnLmFyZ3MsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy50
b3BpY19uYW1lLCAndG9waWNfbmFtZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21z
Zy5zcmMsICdzcmMnKQotCi0gICAgZGVmIHRlc3RfX2JvZHkoc2VsZik6Ci0gICAgICAgIG1zZyA9
IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25h
bWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JvZHknLCAwKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobXNnKSkKLSAgICAgICAgcyA9IG1zZy5kdW1w
cygpCi0gICAgICAgIG5ld19tc2cgPSBtZXNzYWdlX2Jyb2tlci5fTWVzc2FnZS5sb2FkcyhzKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHknLCAwKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCi0KLQotY2xhc3MgSW50
ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUaGVzZSB0ZXN0cyBtb3N0bHkg
ZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgotCi0gICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxzbyB2ZXJpZnkKLSAgICAjIHRoYXQgY2xhc3Nl
cyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3QgbWV0aG9kIGluIGFuIGludGVyZmFjZS4KLQot
ICAgIGRlZiB0ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdChzZWxmKToKLSAgICAgICAgIyBU
ZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZl
IHRoZQotICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCi0gICAgICAgIG9iaiA9IG1lc3Nh
Z2VfYnJva2VyLkJyb2tlckNsaWVudCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdElt
cGxlbWVudGVkRXJyb3IsIG9iai5pc19kb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhO
b3RJbXBsZW1lbnRlZEVycm9yLCBvYmoubmFtZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127458</attachid>
            <date>2012-02-16 15:39:58 -0800</date>
            <delta_ts>2012-02-16 17:15:25 -0800</delta_ts>
            <desc>diff from r107844 w/o 78181&apos;s change</desc>
            <filename>bug-78187-20120216153956.patch</filename>
            <type>text/plain</type>
            <size>34754</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2M3ZTkxZDczOGZhNmU2NDlmZTgxYjBmYzQxZTQyYjU1
YTY5MDZhYi4uN2ZjY2Y4MjA4YjA4YjE0YTlmZjRiYTAzNWIwYzY2NWE2ZGEzNjVmMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0
IEBACisyMDEyLTAyLTE1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG1lcmdlIG1lc3NhZ2VfYnJva2VyLnB5IGludG8gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1lcmdlcyBtZXNzYWdlX2Jyb2tlci5weSBpbnRvCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5weTsgaXQgdHVybnMgb3V0IGl0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8KKyAg
ICAgICAgYmUgYSBzZXBhcmF0ZSBtb2R1bGUgYXMgbm8gb25lIGVsc2Ugd2FzIGNhbGxpbmcgaXQu
IFRoaXMgY2hhbmdlCisgICAgICAgIG9ubHkgbWVyZ2VzIHRoZSB0d28gZmlsZXMgYW5kIGFkanVz
dHMgc29tZSBvZiB0aGUgbmFtZXMgZm9yCisgICAgICAgIHZpc2liaWxpdHk7IGEgc3Vic2VxdWVu
dCBjaGFuZ2Ugd2lsbCBkbyBtb3JlIHJlZmFjdG9yaW5nIGFuZAorICAgICAgICBzaW1wbGlmaWNh
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgKGNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKGdldCk6CisgICAgICAgIChfQnJva2VyQ2xpZW50KToKKyAgICAgICAgKF9Ccm9rZXJD
bGllbnQuaXNfZG9uZSk6CisgICAgICAgIChfQnJva2VyQ2xpZW50Lm5hbWUpOgorICAgICAgICAo
X0Jyb2tlcik6CisgICAgICAgIChfQnJva2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9Ccm9rZXIu
YWRkX3RvcGljKToKKyAgICAgICAgKF9Ccm9rZXIuX2dldF9xdWV1ZV9mb3JfdG9waWMpOgorICAg
ICAgICAoX0Jyb2tlci5wb3N0X21lc3NhZ2UpOgorICAgICAgICAoX0Jyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIucnVuX2FsbF9wZW5kaW5nKToKKyAgICAgICAgKF9C
cm9rZXIuX3J1bl9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIuX2Rpc3BhdGNoX21lc3NhZ2UpOgor
ICAgICAgICAoX01lc3NhZ2UpOgorICAgICAgICAoX01lc3NhZ2UubG9hZHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19pbml0X18pOgorICAgICAgICAoX01lc3NhZ2UuZHVtcHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19yZXByX18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rp
b24ucnVuX21lc3NhZ2VfbG9vcCk6CisgICAgICAgIChfQnJva2VyQ29ubmVjdGlvbi5wb3N0X21l
c3NhZ2UpOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24ucmFpc2VfZXhjZXB0aW9uKToKKyAg
ICAgICAgKEFic3RyYWN0V29ya2VyKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9f
KToKKyAgICAgICAgKF9NYW5hZ2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfTWFuYWdlckNvbm5l
Y3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0lubGluZU1hbmFnZXIucnVuX21lc3NhZ2VfbG9v
cCk6CisgICAgICAgIChfV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfV29ya2VyQ29ubmVj
dGlvbi5fX2luaXRfXyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi55aWVsZF90
b19icm9rZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKEludGVy
ZmFjZVRlc3QudGVzdF9icm9rZXJjbGllbnRfaXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJm
YWNlVGVzdC50ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdC5tZXRob2RzKToKKyAgICAgICAg
KE1lc3NhZ2VUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VUZXN0LnRlc3RfX25vX2JvZHkpOgorICAg
ICAgICAoTWVzc2FnZVRlc3QudGVzdF9fYm9keSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2Fn
ZV9icm9rZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKKzIwMTItMDItMTUgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgbnJ3dDogc2ltcGxpZnkgd29ya2Vy
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzgxODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBtb3ZlcyBjb2RlIGluIG5hbWUoKSwgaXNfZG9uZSgpLCBydW4oKSwgYW5k
IGNhbmNlbCgpCisgICAgICAgIGZyb20gV29ya2VyIHRvIEFic3RyYWN0V29ya2VyLCBzaW5jZSB0
aGUgbG9naWMgaXMgcHJldHR5IG11Y2gKKyAgICAgICAgYm9pbGVycGxhdGUgY29kZSB0aGF0IGFu
eSBpbXBsZW1lbnRhdGlvbiB3b3VsZCB3YW50IHRvIHVzZS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5w
eToKKyAgICAgICAgKGdldC5zaG91bGQpOgorICAgICAgICAoQWJzdHJhY3RXb3JrZXIuX19pbml0
X18pOgorICAgICAgICAoQWJzdHJhY3RXb3JrZXIpOgorICAgICAgICAoQWJzdHJhY3RXb3JrZXIu
bmFtZSk6CisgICAgICAgIChBYnN0cmFjdFdvcmtlci5zdG9wX2hhbmRsaW5nX21lc3NhZ2VzKToK
KyAgICAgICAgKEFic3RyYWN0V29ya2VyLnJ1bik6CisgICAgICAgIChBYnN0cmFjdFdvcmtlci5p
c19kb25lKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLmNhbmNlbCk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAgICAg
ICAoV29ya2VyLl9faW5pdF9fKToKKyAgICAgICAgKFdvcmtlci5ydW4pOgorICAgICAgICAoV29y
a2VyLmhhbmRsZV9zdG9wKToKKwogMjAxMi0wMi0xNSAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3Jj
aG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIHIxMDc4NjMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKaW5kZXggYTY4MmNmNDU1
OGJmYjFkOTUwZTE5Yzk1OGIzODMyMTgzOWQxNzRkMS4uNTI3M2UyMzNmOTY4NWUxYmQ1ZDM2OTc5
YzVlMzIxN2M4YjI5YzMzNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2Vy
X2Jyb2tlci5weQpAQCAtMjksOCArMjksOCBAQAogIiIiTW9kdWxlIGZvciBoYW5kbGluZyBtZXNz
YWdlcyBhbmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCiAKIFRoaXMgbW9kdWxl
IGltcGxlbWVudHMgYSBtZXNzYWdlIGJyb2tlciB0aGF0IGNvbm5lY3RzIHRoZSBtYW5hZ2VyIHRv
IHRoZQotd29ya2VyczogaXQgcHJvdmlkZXMgYSBtZXNzYWdpbmcgYWJzdHJhY3Rpb24gYW5kIG1l
c3NhZ2UgbG9vcHMgKGJ1aWxkaW5nIG9uCi10b3Agb2YgbWVzc2FnZV9icm9rZXIpLCBhbmQgaGFu
ZGxlcyBzdGFydGluZyB3b3JrZXJzIGJ5IGxhdW5jaGluZyBwcm9jZXNzZXMuCit3b3JrZXJzOiBp
dCBwcm92aWRlcyBhIG1lc3NhZ2luZyBhYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcywgYW5k
CitoYW5kbGVzIHN0YXJ0aW5nIHdvcmtlcnMgYnkgbGF1bmNoaW5nIHByb2Nlc3Nlcy4KIAogVGhl
cmUgYXJlIGEgbG90IG9mIGNsYXNzZXMgYW5kIG9iamVjdHMgaW52b2x2ZWQgaW4gYSBmdWxseSBj
b25uZWN0ZWQgc3lzdGVtLgogVGhleSBpbnRlcmFjdCBtb3JlIG9yIGxlc3MgbGlrZToKQEAgLTM5
LDI0ICszOSw0OCBAQCBUaGV5IGludGVyYWN0IG1vcmUgb3IgbGVzcyBsaWtlOgogICAgICBeICAg
ICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgXgogICAgICB8
ICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgfAogICAg
ICBcLS0tLS0tLS0tLS0tLS0tLS0tLS0gIE1lc3NhZ2VCcm9rZXIgICAtLS0tLS0tLS0tLS0tLwor
CitUaGUgYnJva2VyIHNpbXBseSBkaXN0cmlidXRlcyBtZXNzYWdlcyBvbnRvIHRvcGljcyAobmFt
ZWQgcXVldWVzKTsgdGhlIGFjdHVhbAorcXVldWVzIHRoZW1zZWx2ZXMgYXJlIHByb3ZpZGVkIGJ5
IHRoZSBjYWxsZXIsIGFzIHRoZSBxdWV1ZSdzIGltcGxlbWVudGF0aW9uCityZXF1aXJlbWVudHMg
dmFyaWVzIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIGNvbmN1cnJlbmN5IG1vZGVsCiso
bm9uZS90aHJlYWRzL3Byb2Nlc3NlcykuCisKK0luIG9yZGVyIGZvciBzaGFyZWQtbm90aGluZyBt
ZXNzYWdpbmcgYmV0d2VlbiBwcm9jZXNzaW5nIHRvIGJlIHBvc3NpYmxlLAorTWVzc2FnZXMgbXVz
dCBiZSBwaWNrbGFibGUuCisKK1RoZSBicm9rZXIgY2xhc3NlcyByZWxhdGUgdG8gZWFjaCBvdGhl
ciBhczoKKworICAgIF9Ccm9rZXJDbGllbnQgICAtLS0tLS0+ICAgIF9Ccm9rZXJDb25uZWN0aW9u
CisgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBfQnJv
a2VyCisKKyhUaGUgX0Jyb2tlckNsaWVudCBuZXZlciBjYWxscyBicm9rZXIgZGlyZWN0bHkgYWZ0
ZXIgaXQgaXMgY3JlYXRlZCwgb25seQorX0Jyb2tlckNvbm5lY3Rpb24uICBfQnJva2VyQ29ubmVj
dGlvbiBwYXNzZXMgYSByZWZlcmVuY2UgdG8gX0Jyb2tlckNsaWVudCB0bworX0Jyb2tlciwgYW5k
IF9Ccm9rZXIgb25seSBpbnZva2VzIHRoYXQgcmVmZXJlbmNlLCBuZXZlciB0YWxraW5nIGRpcmVj
dGx5IHRvCitfQnJva2VyQ29ubmVjdGlvbikuCiAiIiIKIAoraW1wb3J0IGNQaWNrbGUKIGltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9y
dCBRdWV1ZQogaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCiAKLWZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtZXNzYWdlX2Jyb2tlcgorZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBzdGFja191dGlscwogCiAKIF9sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcihfX25hbWVfXykKIAorCiAjCiAjIFRvcGljIG5hbWVzIGZvciBNYW5hZ2VyIDwt
PiBXb3JrZXIgbWVzc2FnaW5nCiAjCi1NQU5BR0VSX1RPUElDID0gJ21hbmFnZXJzJwotQU5ZX1dP
UktFUl9UT1BJQyA9ICd3b3JrZXJzJworX01BTkFHRVJfVE9QSUMgPSAnbWFuYWdlcnMnCitfQU5Z
X1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJwogCiAKIGRlZiBnZXQod29ya2VyX21vZGVsLCBjbGll
bnQsIHdvcmtlcl9jbGFzcyk6CkBAIC02NCwxNCArODgsMTMgQEAgZGVmIGdldCh3b3JrZXJfbW9k
ZWwsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKIAogICAgIEFyZ3M6CiAgICAgICAgIHdvcmtlcl9t
b2RlbCAtIGNvbmN1cnJlbmN5IG1vZGVsIHRvIHVzZSAoaW5saW5lL3Byb2Nlc3NlcykKLSAgICAg
ICAgY2xpZW50IC0gbWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50IGltcGxlbWVudGF0aW9uIHRv
IGRpc3BhdGNoCisgICAgICAgIGNsaWVudCAtIF9Ccm9rZXJDbGllbnQgaW1wbGVtZW50YXRpb24g
dG8gZGlzcGF0Y2gKICAgICAgICAgICAgIHJlcGxpZXMgdG8uCi0gICAgICAgIHdvcmtlcl9jbGFz
cyAtIHR5cGUgb2Ygd29ya2VycyB0byBjcmVhdGUuIFRoaXMgY2xhc3MgbXVzdCBpbXBsZW1lbnQK
KyAgICAgICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJzIHRvIGNyZWF0ZS4gVGhpcyBj
bGFzcyBzaG91bGQgb3ZlcnJpZGUKICAgICAgICAgICAgIHRoZSBtZXRob2RzIGluIEFic3RyYWN0
V29ya2VyLgogICAgIFJldHVybnM6CiAgICAgICAgIEEgaGFuZGxlIHRvIGFuIG9iamVjdCB0aGF0
IHdpbGwgdGFsayB0byBhIG1lc3NhZ2UgYnJva2VyIGNvbmZpZ3VyZWQKLSAgICAgICAgZm9yIHRo
ZSBub3JtYWwgbWFuYWdlci93b3JrZXIgY29tbXVuaWNhdGlvbi4KLSAgICAiIiIKKyAgICAgICAg
Zm9yIHRoZSBub3JtYWwgbWFuYWdlci93b3JrZXIgY29tbXVuaWNhdGlvbi4iIiIKICAgICBpZiB3
b3JrZXJfbW9kZWwgPT0gJ2lubGluZSc6CiAgICAgICAgIHF1ZXVlX2NsYXNzID0gUXVldWUuUXVl
dWUKICAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9JbmxpbmVNYW5hZ2VyCkBAIC04MSwxMSArMTA0
LDE0MiBAQCBkZWYgZ2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogICAg
IGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGZvciAt
LXdvcmtlci1tb2RlbDogJXMiICUgd29ya2VyX21vZGVsKQogCi0gICAgYnJva2VyID0gbWVzc2Fn
ZV9icm9rZXIuQnJva2VyKHF1ZXVlX2NsYXNzKQorICAgIGJyb2tlciA9IF9Ccm9rZXIocXVldWVf
Y2xhc3MpCiAgICAgcmV0dXJuIG1hbmFnZXJfY2xhc3MoYnJva2VyLCBjbGllbnQsIHdvcmtlcl9j
bGFzcykKIAogCi1jbGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGll
bnQpOgorY2xhc3MgX0Jyb2tlckNsaWVudChvYmplY3QpOgorICAgICIiIkFic3RyYWN0IGJhc2Ug
Y2xhc3MgLyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9rZXIgY2xpZW50cyBtdXN0Cisg
ICAgaW1wbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBiZWxvdywgYnkgY29udmVu
dGlvbiBjbGllbnRzCisgICAgaW1wbGVtZW50IHJvdXRpbmVzIG9mIHRoZSBzaWduYXR1cmUgdHlw
ZQorCisgICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwgc3JjLCAuLi4pOgorCisgICAg
d2hlcmUgTUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBwYXNzZWQgdG8gcG9zdF9tZXNz
YWdlKCksIGFuZAorICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUgb2YgdGhlIHNlbmRlci4gSWYg
dGhlIG1lc3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCisgICAgdGhlIG1lc3NhZ2UgYm9keSwgdGhv
c2Ugd2lsbCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCisKKyAgICBkZWYgaXNfZG9uZShz
ZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1bl9tZXNzYWdlX2xvb3AoKSB0
byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBuYW1l
IHRoYXQgaWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yCisKKworY2xhc3MgX0Jyb2tlcihvYmplY3QpOgorICAgICIiIkJyb2tlcnMgcHJv
dmlkZSB0aGUgYmFzaWMgbW9kZWwgb2YgYSBzZXQgb2YgdG9waWNzLiBDbGllbnRzIGNhbiBwb3N0
IGEKKyAgICBtZXNzYWdlIHRvIGFueSB0b3BpYyB1c2luZyBwb3N0X21lc3NhZ2UoKSwgYW5kIGNh
biBwcm9jZXNzIG1lc3NhZ2VzIG9uIG9uZQorICAgIHRvcGljIGF0IGEgdGltZSB1c2luZyBydW5f
bWVzc2FnZV9sb29wKCkuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWVfbWFrZXIp
OgorICAgICAgICAiIiJBcmdzOgorICAgICAgICAgICAgcXVldWVfbWFrZXI6IGEgZmFjdG9yeSBt
ZXRob2QgdGhhdCByZXR1cm5zIG9iamVjdHMgaW1wbGVtZW50aW5nIGEKKyAgICAgICAgICAgICAg
ICBRdWV1ZSBpbnRlcmZhY2UgKHB1dCgpL2dldCgpKS4KKyAgICAgICAgIiIiCisgICAgICAgIHNl
bGYuX3F1ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKKyAgICAgICAgc2VsZi5fdG9waWNzID0ge30K
KworICAgIGRlZiBhZGRfdG9waWMoc2VsZiwgdG9waWNfbmFtZSk6CisgICAgICAgIGlmIHRvcGlj
X25hbWUgbm90IGluIHNlbGYuX3RvcGljczoKKyAgICAgICAgICAgIHNlbGYuX3RvcGljc1t0b3Bp
Y19uYW1lXSA9IHNlbGYuX3F1ZXVlX21ha2VyKCkKKworICAgIGRlZiBfZ2V0X3F1ZXVlX2Zvcl90
b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RvcGljc1t0b3Bp
Y19uYW1lXQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBjbGllbnQsIHRvcGljX25hbWUs
IG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAgICIiIlBvc3QgYSBtZXNzYWdl
IHRvIHRoZSBhcHByb3ByaWF0ZSB0b3BpYyBuYW1lLgorCisgICAgICAgIE1lc3NhZ2VzIGhhdmUg
YSBuYW1lIGFuZCBhIHR1cGxlIG9mIG9wdGlvbmFsIGFyZ3VtZW50cy4gQm90aCBtdXN0IGJlIHBp
Y2tsYWJsZS4iIiIKKyAgICAgICAgbWVzc2FnZSA9IF9NZXNzYWdlKGNsaWVudC5uYW1lKCksIHRv
cGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdzKQorICAgICAgICBxdWV1ZSA9IHNl
bGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkKKyAgICAgICAgcXVldWUucHV0KF9N
ZXNzYWdlLmR1bXBzKG1lc3NhZ2UpKQorCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwg
dG9waWNfbmFtZSwgY2xpZW50LCBkZWxheV9zZWNzPU5vbmUpOgorICAgICAgICAiIiJMb29wIHBy
b2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgY2xpZW50LmlzX2RvbmUoKSBvciBkZWxheSBwYXNzZXMu
CisKKyAgICAgICAgVG8gcnVuIGluZGVmaW5pdGVseSwgc2V0IGRlbGF5X3NlY3MgdG8gTm9uZS4i
IiIKKyAgICAgICAgYXNzZXJ0IGRlbGF5X3NlY3MgaXMgTm9uZSBvciBkZWxheV9zZWNzID4gMAor
ICAgICAgICBzZWxmLl9ydW5fbG9vcCh0b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrPVRydWUsIGRl
bGF5X3NlY3M9ZGVsYXlfc2VjcykKKworICAgIGRlZiBydW5fYWxsX3BlbmRpbmcoc2VsZiwgdG9w
aWNfbmFtZSwgY2xpZW50KToKKyAgICAgICAgIiIiUHJvY2VzcyBtZXNzYWdlcyB1bnRpbCBjbGll
bnQuaXNfZG9uZSgpIG9yIGNhbGxlciB3b3VsZCBibG9jay4iIiIKKyAgICAgICAgc2VsZi5fcnVu
X2xvb3AodG9waWNfbmFtZSwgY2xpZW50LCBibG9jaz1GYWxzZSwgZGVsYXlfc2Vjcz1Ob25lKQor
CisgICAgZGVmIF9ydW5fbG9vcChzZWxmLCB0b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrLCBkZWxh
eV9zZWNzKToKKyAgICAgICAgcXVldWUgPSBzZWxmLl9nZXRfcXVldWVfZm9yX3RvcGljKHRvcGlj
X25hbWUpCisgICAgICAgIHdoaWxlIG5vdCBjbGllbnQuaXNfZG9uZSgpOgorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHMgPSBxdWV1ZS5nZXQoYmxvY2ssIGRlbGF5X3NlY3MpCisg
ICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICBtc2cgPSBfTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5fZGlz
cGF0Y2hfbWVzc2FnZShtc2csIGNsaWVudCkKKworICAgIGRlZiBfZGlzcGF0Y2hfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlLCBjbGllbnQpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihjbGllbnQsICdo
YW5kbGVfJyArIG1lc3NhZ2UubmFtZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAor
ICAgICAgICAgICAgICAgIiVzOiByZWNlaXZlZCBtZXNzYWdlICclcycgaXQgY291bGRuJ3QgaGFu
ZGxlIiAlCisgICAgICAgICAgICAgICAoY2xpZW50Lm5hbWUoKSwgbWVzc2FnZS5uYW1lKSkKKyAg
ICAgICAgb3B0YXJncyA9IG1lc3NhZ2UuYXJncworICAgICAgICBtZXNzYWdlX2hhbmRsZXIgPSBn
ZXRhdHRyKGNsaWVudCwgJ2hhbmRsZV8nICsgbWVzc2FnZS5uYW1lKQorICAgICAgICBtZXNzYWdl
X2hhbmRsZXIobWVzc2FnZS5zcmMsICpvcHRhcmdzKQorCisKK2NsYXNzIF9NZXNzYWdlKG9iamVj
dCk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBsb2FkcyhzdHJpbmdfdmFsdWUpOgorICAg
ICAgICBvYmogPSBjUGlja2xlLmxvYWRzKHN0cmluZ192YWx1ZSkKKyAgICAgICAgYXNzZXJ0KGlz
aW5zdGFuY2Uob2JqLCBfTWVzc2FnZSkpCisgICAgICAgIHJldHVybiBvYmoKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBzcmMsIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdz
KToKKyAgICAgICAgc2VsZi5zcmMgPSBzcmMKKyAgICAgICAgc2VsZi50b3BpY19uYW1lID0gdG9w
aWNfbmFtZQorICAgICAgICBzZWxmLm5hbWUgPSBtZXNzYWdlX25hbWUKKyAgICAgICAgc2VsZi5h
cmdzID0gbWVzc2FnZV9hcmdzCisKKyAgICBkZWYgZHVtcHMoc2VsZik6CisgICAgICAgIHJldHVy
biBjUGlja2xlLmR1bXBzKHNlbGYpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAg
IHJldHVybiAoIl9NZXNzYWdlKGZyb209JyVzJywgdG9waWNfbmFtZT0nJXMnLCBtZXNzYWdlX25h
bWU9JyVzJykiICUKKyAgICAgICAgICAgICAgICAoc2VsZi5zcmMsIHNlbGYudG9waWNfbmFtZSwg
c2VsZi5uYW1lKSkKKworCitjbGFzcyBfQnJva2VyQ29ubmVjdGlvbihvYmplY3QpOgorICAgICIi
IkJyb2tlckNvbm5lY3Rpb24gcHJvdmlkZXMgYSBjb25uZWN0aW9uLW9yaWVudGVkIGZhY2FkZSBv
biB0b3Agb2YgYQorICAgIEJyb2tlciwgc28gdGhhdCBjYWxsZXJzIGRvbid0IGhhdmUgdG8gcmVw
ZWF0ZWRseSBwYXNzIHRoZSBzYW1lIHRvcGljCisgICAgbmFtZXMgb3ZlciBhbmQgb3Zlci4iIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgcnVuX3RvcGljLCBwb3N0
X3RvcGljKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgQnJva2VyQ29ubmVjdGlvbiBvbiB0b3Agb2Yg
YSBCcm9rZXIuIE5vdGUgdGhhdCB0aGUgQnJva2VyCisgICAgICAgIGlzIHBhc3NlZCBpbiByYXRo
ZXIgdGhhbiBjcmVhdGVkIHNvIHRoYXQgYSBzaW5nbGUgQnJva2VyIGNhbiBiZSB1c2VkCisgICAg
ICAgIGJ5IG11bHRpcGxlIEJyb2tlckNvbm5lY3Rpb25zLiIiIgorICAgICAgICBzZWxmLl9icm9r
ZXIgPSBicm9rZXIKKyAgICAgICAgc2VsZi5fY2xpZW50ID0gY2xpZW50CisgICAgICAgIHNlbGYu
X3Bvc3RfdG9waWMgPSBwb3N0X3RvcGljCisgICAgICAgIHNlbGYuX3J1bl90b3BpYyA9IHJ1bl90
b3BpYworICAgICAgICBicm9rZXIuYWRkX3RvcGljKHJ1bl90b3BpYykKKyAgICAgICAgYnJva2Vy
LmFkZF90b3BpYyhwb3N0X3RvcGljKQorCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwg
ZGVsYXlfc2Vjcz1Ob25lKToKKyAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3Ao
c2VsZi5fcnVuX3RvcGljLCBzZWxmLl9jbGllbnQsIGRlbGF5X3NlY3MpCisKKyAgICBkZWYgcG9z
dF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAgIHNl
bGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0X3RvcGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2Vf
YXJncykKKworICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgZXhjX2luZm8pOgorICAgICAg
ICAjIFNpbmNlIHRyYWNlYmFja3MgYXJlbid0IHBpY2tsYWJsZSwgc2VuZCB0aGUgZXh0cmFjdGVk
IHN0YWNrIGluc3RlYWQuCisgICAgICAgIGV4Y2VwdGlvbl90eXBlLCBleGNlcHRpb25fdmFsdWUs
IGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBzdGFja191dGls
cy5sb2dfdHJhY2ViYWNrKF9sb2cuZGVidWcsIGV4Y2VwdGlvbl90cmFjZWJhY2spCisgICAgICAg
IHN0YWNrID0gdHJhY2ViYWNrLmV4dHJhY3RfdGIoZXhjZXB0aW9uX3RyYWNlYmFjaykKKyAgICAg
ICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZShzZWxmLl9jbGllbnQsIHNlbGYuX3Bvc3RfdG9w
aWMsICdleGNlcHRpb24nLCBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBzdGFjaykK
KworCitjbGFzcyBBYnN0cmFjdFdvcmtlcihfQnJva2VyQ2xpZW50KToKICAgICBkZWYgX19pbml0
X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6CiAgICAg
ICAgICIiIlRoZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgdXNlZCB0byBkbyBhbnkgc2ltcGxlIGlu
aXRpYWxpemF0aW9uCiAgICAgICAgIG5lY2Vzc2FyeSwgYnV0IHNob3VsZCBub3QgZG8gYW55dGhp
bmcgdGhhdCBjcmVhdGVzIGRhdGEgc3RydWN0dXJlcwpAQCAtOTcsMjIgKzI1MSw0OSBAQCBjbGFz
cyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQpOgogICAgICAgICAg
ICAgd29ya2VyX2Nvbm5lY3Rpb24gLSBoYW5kbGUgdG8gdGhlIEJyb2tlckNvbm5lY3Rpb24gb2Jq
ZWN0IGNyZWF0aW5nCiAgICAgICAgICAgICAgICAgdGhlIHdvcmtlciBhbmQgdGhhdCBjYW4gYmUg
dXNlZCBmb3IgbWVzc2FnaW5nLgogICAgICAgICAgICAgd29ya2VyX2FyZ3VtZW50cyAtIChvcHRp
b25hbCwgUGlja2xhYmxlKSBvYmplY3QgcGFzc2VkIHRvIHRoZSB3b3JrZXIgZnJvbSB0aGUgbWFu
YWdlciIiIgotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQuX19pbml0X18oc2Vs
ZikKKyAgICAgICAgX0Jyb2tlckNsaWVudC5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLl93
b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCisgICAgICAgIHNlbGYuX25hbWUg
PSAnd29ya2VyJworICAgICAgICBzZWxmLl9kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5fY2Fu
Y2VsZWQgPSBGYWxzZQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
Ll9uYW1lCisKKyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rv
bmUgb3Igc2VsZi5fY2FuY2VsZWQKKworICAgIGRlZiBzdG9wX2hhbmRsaW5nX21lc3NhZ2VzKHNl
bGYpOgorICAgICAgICBzZWxmLl9kb25lID0gVHJ1ZQogCiAgICAgZGVmIHJ1bihzZWxmKToKICAg
ICAgICAgIiIiQ2FsbGJhY2sgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgZXhlY3V0aW5nLiBUeXBp
Y2FsbHkgZG9lcyBhbnkKICAgICAgICAgcmVtYWluaW5nIGluaXRpYWxpemF0aW9uIGFuZCB0aGVu
IGNhbGxzIGJyb2tlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKLSAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBleGNlcHRpb25fbXNnID0gIiIKKyAg
ICAgICAgX2xvZy5kZWJ1ZygiJXMgc3RhcnRpbmciICUgc2VsZi5fbmFtZSkKKworICAgICAgICB0
cnk6CisgICAgICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29w
KCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2RvbmUoKToKKyAgICAgICAgICAgICAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcigiJXM6IHJhbiBvdXQgb2YgbWVzc2FnZXMgaW4gd29ya2VyIHF1
ZXVlLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYuX25hbWUp
CisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIGV4Y2VwdGlv
bl9tc2cgPSAiLCBpbnRlcnJ1cHRlZCIKKyAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0
aW9uLnJhaXNlX2V4Y2VwdGlvbihzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgZXhjZXB0OgorICAg
ICAgICAgICAgZXhjZXB0aW9uX21zZyA9ICIsIGV4Y2VwdGlvbiByYWlzZWQiCisgICAgICAgICAg
ICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5yYWlzZV9leGNlcHRpb24oc3lzLmV4Y19pbmZvKCkp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyBkb25lIHdpdGgg
bWVzc2FnZSBsb29wJXMiICUgKHNlbGYuX25hbWUsIGV4Y2VwdGlvbl9tc2cpKQogCiAgICAgZGVm
IGNhbmNlbChzZWxmKToKICAgICAgICAgIiIiQ2FsbGVkIHdoZW4gcG9zc2libGUgdG8gaW5kaWNh
dGUgdG8gdGhlIHdvcmtlciB0byBzdG9wIHByb2Nlc3NpbmcKICAgICAgICAgbWVzc2FnZXMgYW5k
IHNodXQgZG93bi4gTm90ZSB0aGF0IHdvcmtlcnMgbWF5IGJlIHN0b3BwZWQgd2l0aG91dCB0aGlz
CiAgICAgICAgIG1ldGhvZCBiZWluZyBjYWxsZWQsIHNvIGNsaWVudHMgc2hvdWxkIG5vdCByZWx5
IHNvbGVseSBvbiB0aGlzLiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisg
ICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQogCiAKLWNsYXNzIF9NYW5hZ2VyQ29ubmVjdGlv
bihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uKToKK2NsYXNzIF9NYW5hZ2VyQ29ubmVj
dGlvbihfQnJva2VyQ29ubmVjdGlvbik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwg
Y2xpZW50LCB3b3JrZXJfY2xhc3MpOgogICAgICAgICAiIiJCYXNlIGluaXRpYWxpemF0aW9uIGZv
ciBhbGwgTWFuYWdlciBvYmplY3RzLgogCkBAIC0xMjEsOCArMzAyLDcgQEAgY2xhc3MgX01hbmFn
ZXJDb25uZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgogICAgICAgICAg
ICAgY2xpZW50OiBjYWxsYmFjayBvYmplY3QgKHRoZSBjYWxsZXIpCiAgICAgICAgICAgICB3b3Jr
ZXJfY2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMuCiAgICAgICAg
ICIiIgotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNl
bGYsIGJyb2tlciwgY2xpZW50LAotICAgICAgICAgICAgTUFOQUdFUl9UT1BJQywgQU5ZX1dPUktF
Ul9UT1BJQykKKyAgICAgICAgX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2Vy
LCBjbGllbnQsIF9NQU5BR0VSX1RPUElDLCBfQU5ZX1dPUktFUl9UT1BJQykKICAgICAgICAgc2Vs
Zi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCiAKICAgICBkZWYgc3RhcnRfd29ya2VyKHNl
bGYsIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6CkBAIC0xNTQsNyArMzM0LDcgQEAgY2xhc3MgX0lu
bGluZU1hbmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKICAgICAgICAgIyBOb3RlIHRoYXQgZGVs
YXlfc2VjcyBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZSBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkKICAg
ICAgICAgIyBpbXBsZW1lbnQgaXQuCiAgICAgICAgIHNlbGYuX2lubGluZV93b3JrZXIucnVuKCkK
LSAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VSX1RPUElDLCBzZWxm
Ll9jbGllbnQpCisgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fYWxsX3BlbmRpbmcoX01BTkFHRVJf
VE9QSUMsIHNlbGYuX2NsaWVudCkKIAogCiBjbGFzcyBfTXVsdGlQcm9jZXNzTWFuYWdlcihfTWFu
YWdlckNvbm5lY3Rpb24pOgpAQCAtMTY1LDEyICszNDUsMTEgQEAgY2xhc3MgX011bHRpUHJvY2Vz
c01hbmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKICAgICAgICAgcmV0dXJuIHdvcmtlcl9jb25u
ZWN0aW9uCiAKIAotY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2Vy
Q29ubmVjdGlvbik6CitjbGFzcyBfV29ya2VyQ29ubmVjdGlvbihfQnJva2VyQ29ubmVjdGlvbik6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfYXJn
dW1lbnRzPU5vbmUpOgogICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJfY2xhc3Moc2VsZiwg
d29ya2VyX2FyZ3VtZW50cykKICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5fY2xpZW50Lm5hbWUo
KQotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYs
IGJyb2tlciwgc2VsZi5fY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOWV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9QSUMpCisgICAgICAg
IF9Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xpZW50LCBf
QU5ZX1dPUktFUl9UT1BJQywgX01BTkFHRVJfVE9QSUMpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCkBAIC0yMDksNyArMzg4LDcgQEAg
Y2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgogICAgICAg
ICBzZWxmLl9hbGl2ZSA9IEZhbHNlCiAKICAgICBkZWYgeWllbGRfdG9fYnJva2VyKHNlbGYpOgot
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKE1BTkFHRVJfVE9QSUMsIHNlbGYu
X21hbmFnZXJfY2xpZW50KQorICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKF9N
QU5BR0VSX1RPUElDLCBzZWxmLl9tYW5hZ2VyX2NsaWVudCkKIAogICAgIGRlZiByYWlzZV9leGNl
cHRpb24oc2VsZiwgZXhjX2luZm8pOgogICAgICAgICAjIFNpbmNlIHRoZSB3b3JrZXIgaXMgaW4g
dGhlIHNhbWUgcHJvY2VzcyBhcyB0aGUgbWFuYWdlciwgd2UgY2FuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtl
cl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggMjRh
NzNjMGUyZjZhMGQ5MDQ4YWIyOTA5OGUxNzIwZjBhMGIwNDRhYi4uMmZhYjFjNTUxYTQ5OWY3Y2Fm
MzkxOGYyOTAxNWI3OWVmZTc0YzU1YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtMzMsNyArMzMsNiBAQCBpbXBv
cnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRj
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFu
YWdlcl93b3JrZXJfYnJva2VyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVy
cyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKIAogCiAjIEluIG9yZGVyIHRvIHJlbGlhYmx5IGNvbnRy
b2wgd2hlbiBjaGlsZCB3b3JrZXJzIGFyZSBzdGFydGluZyBhbmQgc3RvcHBpbmcsCkBAIC0yMDcs
NiArMjA2LDEzIEBAIGNsYXNzIEludGVyZmFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAg
ICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxz
byB2ZXJpZnkKICAgICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3Qg
bWV0aG9kIGluIGFuIGludGVyZmFjZS4KKyAgICBkZWYgdGVzdF9icm9rZXJjbGllbnRfaXNfYWJz
dHJhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUgYmFzZSBjbGFzcyBtZXRo
b2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKKyAgICAgICAgIyBzaWduYXR1cmUgd2UgZXhw
ZWN0LgorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX0Jyb2tlckNsaWVudCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19k
b25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmou
bmFtZSkKKwogICAgIGRlZiB0ZXN0X21hbmFnZXJjb25uZWN0aW9uX2lzX2Fic3RyYWN0KHNlbGYp
OgogICAgICAgICAjIFRlc3QgdGhhdCBhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kcyBhcmUgYWJz
dHJhY3QgYW5kIGhhdmUgdGhlCiAgICAgICAgICMgc2lnbmF0dXJlIHdlIGV4cGVjdC4KQEAgLTIy
NCw1ICsyMzAsMjggQEAgY2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5qb2luLCBO
b25lKQogCiAKK2NsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYg
dGVzdF9fbm9fYm9keShzZWxmKToKKyAgICAgICAgbXNnID0gbWFuYWdlcl93b3JrZXJfYnJva2Vy
Ll9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkK
KyAgICAgICAgbmV3X21zZyA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fTWVzc2FnZS5sb2Fkcyhz
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCBOb25lKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19tc2cudG9waWNfbmFtZSwgJ3RvcGljX25hbWUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuc3JjLCAnc3JjJykKKworICAgIGRlZiB0ZXN0X19i
b2R5KHNlbGYpOgorICAgICAgICBtc2cgPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01lc3NhZ2Uo
J3NyYycsICd0b3BpY19uYW1lJywgJ21lc3NhZ2VfbmFtZScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgnYm9keScsIDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkKKyAgICAgICAgbmV3X21zZyA9IG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5fTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHknLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
ICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGQzNmQ0YjQ1ZTQ1ZmZlYWVlM2ExOGM4OTc1
ZTg3ZDNiYTU2ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2Fn
ZV9icm9rZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnaW5nIGZvciBydW4td2Via2l0LXRl
c3RzLgotCi1UaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIG1lc3NhZ2UgYnJva2VyIGFi
c3RyYWN0aW9uIHRoYXQgd2lsbCBiZQotdXNlZCB0byBjb29yZGluYXRlIG1lc3NhZ2VzIGJldHdl
ZW4gdGhlIG1haW4gcnVuLXdlYmtpdC10ZXN0cyB0aHJlYWQKLShha2EgVGVzdFJ1bm5lcikgYW5k
IHRoZSBpbmRpdmlkdWFsIHdvcmtlciB0aHJlYWRzIChwcmV2aW91c2x5IGtub3duIGFzCi1kdW1w
X3JlbmRlcl90cmVlX3RocmVhZHMpLgotCi1UaGUgYnJva2VyIHNpbXBseSBkaXN0cmlidXRlcyBt
ZXNzYWdlcyBvbnRvIHRvcGljcyAobmFtZWQgcXVldWVzKTsgdGhlIGFjdHVhbAotcXVldWVzIHRo
ZW1zZWx2ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIsIGFzIHRoZSBxdWV1ZSdzIGltcGxl
bWVudGF0aW9uCi1yZXF1aXJlbWVudHMgdmFyaWVzIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBkZXNp
cmVkIGNvbmN1cnJlbmN5IG1vZGVsCi0obm9uZS90aHJlYWRzL3Byb2Nlc3NlcykuCi0KLUluIG9y
ZGVyIGZvciBzaGFyZWQtbm90aGluZyBtZXNzYWdpbmcgYmV0d2VlbiBwcm9jZXNzaW5nIHRvIGJl
IHBvc3NpYmxlLAotTWVzc2FnZXMgbXVzdCBiZSBwaWNrbGFibGUuCi0KLVRoZSBtb2R1bGUgZGVm
aW5lcyBvbmUgaW50ZXJmYWNlIGFuZCB0d28gY2xhc3Nlcy4gQ2FsbGVycyBvZiB0aGlzIHBhY2th
Z2UKLW11c3QgaW1wbGVtZW50IHRoZSBCcm9rZXJDbGllbnQgaW50ZXJmYWNlLCBhbmQgbW9zdCBj
YWxsZXJzIHdpbGwgY3JlYXRlCi1Ccm9rZXJDb25uZWN0aW9ucyBhcyB3ZWxsIGFzIEJyb2tlcnMu
Ci0KLVRoZSBjbGFzc2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGFzOgotCi0gICAgQnJva2VyQ2xp
ZW50ICAgLS0tLS0tPiAgICBCcm9rZXJDb25uZWN0aW9uCi0gICAgICAgICBeICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgdgotICAg
ICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBCcm9rZXIKLQotKFRoZSBCcm9rZXJDbGllbnQg
bmV2ZXIgY2FsbHMgYnJva2VyIGRpcmVjdGx5IGFmdGVyIGl0IGlzIGNyZWF0ZWQsIG9ubHkKLUJy
b2tlckNvbm5lY3Rpb24uICBCcm9rZXJDb25uZWN0aW9uIHBhc3NlcyBhIHJlZmVyZW5jZSB0byBC
cm9rZXJDbGllbnQgdG8KLUJyb2tlciwgYW5kIEJyb2tlciBvbmx5IGludm9rZXMgdGhhdCByZWZl
cmVuY2UsIG5ldmVyIHRhbGtpbmcgZGlyZWN0bHkgdG8KLUJyb2tlckNvbm5lY3Rpb24pLgotIiIi
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWltcG9ydCBjUGlja2xlCi1pbXBvcnQg
bG9nZ2luZwotaW1wb3J0IFF1ZXVlCi0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgc3RhY2tfdXRpbHMKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0K
LWNsYXNzIEJyb2tlckNsaWVudChvYmplY3QpOgotICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3Mg
LyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9rZXIgY2xpZW50cyBtdXN0Ci0gICAgaW1w
bGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBiZWxvdywgYnkgY29udmVudGlvbiBj
bGllbnRzCi0gICAgaW1wbGVtZW50IHJvdXRpbmVzIG9mIHRoZSBzaWduYXR1cmUgdHlwZQotCi0g
ICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwgc3JjLCAuLi4pOgotCi0gICAgd2hlcmUg
TUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBwYXNzZWQgdG8gcG9zdF9tZXNzYWdlKCks
IGFuZAotICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUgb2YgdGhlIHNlbmRlci4gSWYgdGhlIG1l
c3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCi0gICAgdGhlIG1lc3NhZ2UgYm9keSwgdGhvc2Ugd2ls
bCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCi0KLSAgICBkZWYgaXNfZG9uZShzZWxmKToK
LSAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1bl9tZXNzYWdlX2xvb3AoKSB0byBpbmRp
Y2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBuYW1lIHRoYXQg
aWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCi0KLQotY2xhc3MgQnJva2VyKG9iamVjdCk6Ci0gICAgIiIiQnJva2VycyBwcm92aWRlIHRo
ZSBiYXNpYyBtb2RlbCBvZiBhIHNldCBvZiB0b3BpY3MuIENsaWVudHMgY2FuIHBvc3QgYQotICAg
IG1lc3NhZ2UgdG8gYW55IHRvcGljIHVzaW5nIHBvc3RfbWVzc2FnZSgpLCBhbmQgY2FuIHByb2Nl
c3MgbWVzc2FnZXMgb24gb25lCi0gICAgdG9waWMgYXQgYSB0aW1lIHVzaW5nIHJ1bl9tZXNzYWdl
X2xvb3AoKS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZV9tYWtlcik6Ci0gICAg
ICAgICIiIkFyZ3M6Ci0gICAgICAgICAgICBxdWV1ZV9tYWtlcjogYSBmYWN0b3J5IG1ldGhvZCB0
aGF0IHJldHVybnMgb2JqZWN0cyBpbXBsZW1lbnRpbmcgYQotICAgICAgICAgICAgICAgIFF1ZXVl
IGludGVyZmFjZSAocHV0KCkvZ2V0KCkpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcXVl
dWVfbWFrZXIgPSBxdWV1ZV9tYWtlcgotICAgICAgICBzZWxmLl90b3BpY3MgPSB7fQotCi0gICAg
ZGVmIGFkZF90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKLSAgICAgICAgaWYgdG9waWNfbmFtZSBu
b3QgaW4gc2VsZi5fdG9waWNzOgotICAgICAgICAgICAgc2VsZi5fdG9waWNzW3RvcGljX25hbWVd
ID0gc2VsZi5fcXVldWVfbWFrZXIoKQotCi0gICAgZGVmIF9nZXRfcXVldWVfZm9yX3RvcGljKHNl
bGYsIHRvcGljX25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fdG9waWNzW3RvcGljX25hbWVd
Ci0KLSAgICBkZWYgcG9zdF9tZXNzYWdlKHNlbGYsIGNsaWVudCwgdG9waWNfbmFtZSwgbWVzc2Fn
ZV9uYW1lLCAqbWVzc2FnZV9hcmdzKToKLSAgICAgICAgIiIiUG9zdCBhIG1lc3NhZ2UgdG8gdGhl
IGFwcHJvcHJpYXRlIHRvcGljIG5hbWUuCi0KLSAgICAgICAgTWVzc2FnZXMgaGF2ZSBhIG5hbWUg
YW5kIGEgdHVwbGUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzLiBCb3RoIG11c3QgYmUgcGlja2xhYmxl
LiIiIgotICAgICAgICBtZXNzYWdlID0gX01lc3NhZ2UoY2xpZW50Lm5hbWUoKSwgdG9waWNfbmFt
ZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpCi0gICAgICAgIHF1ZXVlID0gc2VsZi5fZ2V0
X3F1ZXVlX2Zvcl90b3BpYyh0b3BpY19uYW1lKQotICAgICAgICBxdWV1ZS5wdXQoX01lc3NhZ2Uu
ZHVtcHMobWVzc2FnZSkpCi0KLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmLCB0b3BpY19u
YW1lLCBjbGllbnQsIGRlbGF5X3NlY3M9Tm9uZSk6Ci0gICAgICAgICIiIkxvb3AgcHJvY2Vzc2lu
ZyBtZXNzYWdlcyB1bnRpbCBjbGllbnQuaXNfZG9uZSgpIG9yIGRlbGF5IHBhc3Nlcy4KLQotICAg
ICAgICBUbyBydW4gaW5kZWZpbml0ZWx5LCBzZXQgZGVsYXlfc2VjcyB0byBOb25lLiIiIgotICAg
ICAgICBhc3NlcnQgZGVsYXlfc2VjcyBpcyBOb25lIG9yIGRlbGF5X3NlY3MgPiAwCi0gICAgICAg
IHNlbGYuX3J1bl9sb29wKHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2s9VHJ1ZSwgZGVsYXlfc2Vj
cz1kZWxheV9zZWNzKQotCi0gICAgZGVmIHJ1bl9hbGxfcGVuZGluZyhzZWxmLCB0b3BpY19uYW1l
LCBjbGllbnQpOgotICAgICAgICAiIiJQcm9jZXNzIG1lc3NhZ2VzIHVudGlsIGNsaWVudC5pc19k
b25lKCkgb3IgY2FsbGVyIHdvdWxkIGJsb2NrLiIiIgotICAgICAgICBzZWxmLl9ydW5fbG9vcCh0
b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrPUZhbHNlLCBkZWxheV9zZWNzPU5vbmUpCi0KLSAgICBk
ZWYgX3J1bl9sb29wKHNlbGYsIHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2ssIGRlbGF5X3NlY3Mp
OgotICAgICAgICBxdWV1ZSA9IHNlbGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkK
LSAgICAgICAgd2hpbGUgbm90IGNsaWVudC5pc19kb25lKCk6Ci0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgcyA9IHF1ZXVlLmdldChibG9jaywgZGVsYXlfc2VjcykKLSAgICAgICAg
ICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgIG1zZyA9IF9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAgICAgICBzZWxmLl9kaXNwYXRjaF9t
ZXNzYWdlKG1zZywgY2xpZW50KQotCi0gICAgZGVmIF9kaXNwYXRjaF9tZXNzYWdlKHNlbGYsIG1l
c3NhZ2UsIGNsaWVudCk6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKGNsaWVudCwgJ2hhbmRsZV8n
ICsgbWVzc2FnZS5uYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAg
ICAgICAgICAiJXM6IHJlY2VpdmVkIG1lc3NhZ2UgJyVzJyBpdCBjb3VsZG4ndCBoYW5kbGUiICUK
LSAgICAgICAgICAgICAgIChjbGllbnQubmFtZSgpLCBtZXNzYWdlLm5hbWUpKQotICAgICAgICBv
cHRhcmdzID0gbWVzc2FnZS5hcmdzCi0gICAgICAgIG1lc3NhZ2VfaGFuZGxlciA9IGdldGF0dHIo
Y2xpZW50LCAnaGFuZGxlXycgKyBtZXNzYWdlLm5hbWUpCi0gICAgICAgIG1lc3NhZ2VfaGFuZGxl
cihtZXNzYWdlLnNyYywgKm9wdGFyZ3MpCi0KLQotY2xhc3MgX01lc3NhZ2Uob2JqZWN0KToKLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGxvYWRzKHN0cmluZ192YWx1ZSk6Ci0gICAgICAgIG9i
aiA9IGNQaWNrbGUubG9hZHMoc3RyaW5nX3ZhbHVlKQotICAgICAgICBhc3NlcnQoaXNpbnN0YW5j
ZShvYmosIF9NZXNzYWdlKSkKLSAgICAgICAgcmV0dXJuIG9iagotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHNyYywgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpOgotICAg
ICAgICBzZWxmLnNyYyA9IHNyYwotICAgICAgICBzZWxmLnRvcGljX25hbWUgPSB0b3BpY19uYW1l
Ci0gICAgICAgIHNlbGYubmFtZSA9IG1lc3NhZ2VfbmFtZQotICAgICAgICBzZWxmLmFyZ3MgPSBt
ZXNzYWdlX2FyZ3MKLQotICAgIGRlZiBkdW1wcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGNQaWNr
bGUuZHVtcHMoc2VsZikKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICgiX01lc3NhZ2UoZnJvbT0nJXMnLCB0b3BpY19uYW1lPSclcycsIG1lc3NhZ2VfbmFtZT0nJXMn
KSIgJQotICAgICAgICAgICAgICAgIChzZWxmLnNyYywgc2VsZi50b3BpY19uYW1lLCBzZWxmLm5h
bWUpKQotCi0KLWNsYXNzIEJyb2tlckNvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJCcm9rZXJD
b25uZWN0aW9uIHByb3ZpZGVzIGEgY29ubmVjdGlvbi1vcmllbnRlZCBmYWNhZGUgb24gdG9wIG9m
IGEKLSAgICBCcm9rZXIsIHNvIHRoYXQgY2FsbGVycyBkb24ndCBoYXZlIHRvIHJlcGVhdGVkbHkg
cGFzcyB0aGUgc2FtZSB0b3BpYwotICAgIG5hbWVzIG92ZXIgYW5kIG92ZXIuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHJ1bl90b3BpYywgcG9zdF90b3BpYyk6
Ci0gICAgICAgICIiIkNyZWF0ZSBhIEJyb2tlckNvbm5lY3Rpb24gb24gdG9wIG9mIGEgQnJva2Vy
LiBOb3RlIHRoYXQgdGhlIEJyb2tlcgotICAgICAgICBpcyBwYXNzZWQgaW4gcmF0aGVyIHRoYW4g
Y3JlYXRlZCBzbyB0aGF0IGEgc2luZ2xlIEJyb2tlciBjYW4gYmUgdXNlZAotICAgICAgICBieSBt
dWx0aXBsZSBCcm9rZXJDb25uZWN0aW9ucy4iIiIKLSAgICAgICAgc2VsZi5fYnJva2VyID0gYnJv
a2VyCi0gICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAotICAgICAgICBzZWxmLl9wb3N0X3Rv
cGljID0gcG9zdF90b3BpYwotICAgICAgICBzZWxmLl9ydW5fdG9waWMgPSBydW5fdG9waWMKLSAg
ICAgICAgYnJva2VyLmFkZF90b3BpYyhydW5fdG9waWMpCi0gICAgICAgIGJyb2tlci5hZGRfdG9w
aWMocG9zdF90b3BpYykKLQotICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIGRlbGF5X3Nl
Y3M9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKHNlbGYuX3J1
bl90b3BpYywgc2VsZi5fY2xpZW50LCBkZWxheV9zZWNzKQotCi0gICAgZGVmIHBvc3RfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpOgotICAgICAgICBzZWxmLl9icm9r
ZXIucG9zdF9tZXNzYWdlKHNlbGYuX2NsaWVudCwgc2VsZi5fcG9zdF90b3BpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpCi0K
LSAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIGV4Y19pbmZvKToKLSAgICAgICAgIyBTaW5j
ZSB0cmFjZWJhY2tzIGFyZW4ndCBwaWNrbGFibGUsIHNlbmQgdGhlIGV4dHJhY3RlZCBzdGFjayBp
bnN0ZWFkLgotICAgICAgICBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRp
b25fdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgc3RhY2tfdXRpbHMubG9nX3Ry
YWNlYmFjayhfbG9nLmRlYnVnLCBleGNlcHRpb25fdHJhY2ViYWNrKQotICAgICAgICBzdGFjayA9
IHRyYWNlYmFjay5leHRyYWN0X3RiKGV4Y2VwdGlvbl90cmFjZWJhY2spCi0gICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0X3RvcGljLCAnZXhj
ZXB0aW9uJywgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgc3RhY2spCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tZXNz
YWdlX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYjhkOGU2Zjk3YTZlMTNiMTdlMWJkYTE4NmI3Y2Q4MGI3YzI0NTY3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3Vu
aXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9s
bGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKLQotIyBUaGlzIGZpbGUgZXhpc3RzIHRvIHRlc3Qg
cm91dGluZXMgdGhhdCBhcmVuJ3QgbmVjZXNzYXJpbHkgY292ZXJlZCBlbHNld2hlcmU7Ci0jIG1v
c3Qgb2YgdGhlIHRlc3Rpbmcgb2YgbWVzc2FnZV9icm9rZXIgd2lsbCBiZSBjb3ZlcmVkIHVuZGVy
IHRoZSB0ZXN0cyBpbgotIyB0aGUgbWFuYWdlcl93b3JrZXJfYnJva2VyIG1vZHVsZS4KLQotCi1j
bGFzcyBNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfX25vX2Jv
ZHkoc2VsZik6Ci0gICAgICAgIG1zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAn
dG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmVwcihtc2cpKQotICAgICAgICBzID0gbXNnLmR1bXBzKCkKLSAgICAgICAgbmV3X21zZyA9
IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobmV3X21zZy5uYW1lLCAnbWVzc2FnZV9uYW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZXdfbXNnLmFyZ3MsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy50
b3BpY19uYW1lLCAndG9waWNfbmFtZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21z
Zy5zcmMsICdzcmMnKQotCi0gICAgZGVmIHRlc3RfX2JvZHkoc2VsZik6Ci0gICAgICAgIG1zZyA9
IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25h
bWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JvZHknLCAwKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobXNnKSkKLSAgICAgICAgcyA9IG1zZy5kdW1w
cygpCi0gICAgICAgIG5ld19tc2cgPSBtZXNzYWdlX2Jyb2tlci5fTWVzc2FnZS5sb2FkcyhzKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHknLCAwKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCi0KLQotY2xhc3MgSW50
ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUaGVzZSB0ZXN0cyBtb3N0bHkg
ZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgotCi0gICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxzbyB2ZXJpZnkKLSAgICAjIHRoYXQgY2xhc3Nl
cyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3QgbWV0aG9kIGluIGFuIGludGVyZmFjZS4KLQot
ICAgIGRlZiB0ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdChzZWxmKToKLSAgICAgICAgIyBU
ZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZl
IHRoZQotICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCi0gICAgICAgIG9iaiA9IG1lc3Nh
Z2VfYnJva2VyLkJyb2tlckNsaWVudCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdElt
cGxlbWVudGVkRXJyb3IsIG9iai5pc19kb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhO
b3RJbXBsZW1lbnRlZEVycm9yLCBvYmoubmFtZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CmluZGV4IDk4MWI1YjZl
MWE1YTA1YzNlZDcxZmVmMDUzMjI3ZjdmZWVjN2I0ZjAuLjIyYzBhNWYwNDIzMTA1ZTMwOTM4Yjhl
ZjM1MjdkYzY3ZTIwMjlhYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKQEAgLTU4LDggKzU4LDYgQEAg
Y2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAg
ICAgIHNlbGYuX25hbWUgPSAnd29ya2VyLyVkJyAlIHNlbGYuX3dvcmtlcl9udW1iZXIKICAgICAg
ICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkgPSB3b3JrZXJfYXJndW1lbnRzLnJlc3VsdHNfZGly
ZWN0b3J5CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSB3b3JrZXJfYXJndW1lbnRzLm9wdGlvbnMK
LSAgICAgICAgc2VsZi5fZG9uZSA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFs
c2UKICAgICAgICAgc2VsZi5fcG9ydCA9IE5vbmUKICAgICAgICAgc2VsZi5fYmF0Y2hfc2l6ZSA9
IE5vbmUKICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSBOb25lCkBAIC04NCwxNiArODIsNiBA
QCBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAg
ICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jl
c3VsdHNfZGlyZWN0b3J5LCAidGVzdHNfcnVuJWQudHh0IiAlIHNlbGYuX3dvcmtlcl9udW1iZXIp
CiAgICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX3Rl
eHRfZmlsZV9mb3Jfd3JpdGluZyh0ZXN0c19ydW5fZmlsZW5hbWUpCiAKLSAgICBkZWYgY2FuY2Vs
KHNlbGYpOgotICAgICAgICAiIiJBdHRlbXB0IHRvIGFib3J0IHByb2Nlc3NpbmcgKGJlc3QgZWZm
b3J0KS4iIiIKLSAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBUcnVlCi0KLSAgICBkZWYgaXNfZG9u
ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2RvbmUgb3Igc2VsZi5fY2FuY2VsZWQKLQot
ICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQotCiAgICAgZGVm
IHNldF9pbmxpbmVfYXJndW1lbnRzKHNlbGYsIHBvcnQpOgogICAgICAgICBzZWxmLl9wb3J0ID0g
cG9ydAogCkBAIC0xMjIsMjIgKzExMCwxMCBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3JrZXJf
YnJva2VyLkFic3RyYWN0V29ya2VyKToKIAogICAgICAgICBzZWxmLnNhZmVfaW5pdCgpCiAKLSAg
ICAgICAgZXhjZXB0aW9uX21zZyA9ICIiCi0gICAgICAgIF9sb2cuZGVidWcoIiVzIHN0YXJ0aW5n
IiAlIHNlbGYuX25hbWUpCi0KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fd29ya2Vy
X2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcCgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5p
c19kb25lKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVzOiByYW4g
b3V0IG9mIG1lc3NhZ2VzIGluIHdvcmtlciBxdWV1ZS4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSBzZWxmLl9uYW1lKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRl
cnJ1cHQ6Ci0gICAgICAgICAgICBleGNlcHRpb25fbXNnID0gIiwgaW50ZXJydXB0ZWQiCi0gICAg
ICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5yYWlzZV9leGNlcHRpb24oc3lzLmV4Y19p
bmZvKCkpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBl
eGNlcHRpb24gcmFpc2VkIgotICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucmFp
c2VfZXhjZXB0aW9uKHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMg
c3RhcnRpbmciICUgc2VsZi5fbmFtZSkKKyAgICAgICAgICAgIHN1cGVyKFdvcmtlciwgc2VsZiku
cnVuKCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGRvbmUg
d2l0aCBtZXNzYWdlIGxvb3AlcyIgJSAoc2VsZi5fbmFtZSwgZXhjZXB0aW9uX21zZykpCiAgICAg
ICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2RvbmUnKQogICAg
ICAgICAgICAgc2VsZi5jbGVhbnVwKCkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGV4aXRp
bmciICUgc2VsZi5fbmFtZSkKQEAgLTE1Nyw3ICsxMzMsNyBAQCBjbGFzcyBXb3JrZXIobWFuYWdl
cl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fd29ya2VyX2Nv
bm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdmaW5pc2hlZF9saXN0JywgbGlzdF9uYW1lLCBudW1fdGVz
dHMsIGVsYXBzZWRfdGltZSkKIAogICAgIGRlZiBoYW5kbGVfc3RvcChzZWxmLCBzcmMpOgotICAg
ICAgICBzZWxmLl9kb25lID0gVHJ1ZQorICAgICAgICBzZWxmLnN0b3BfaGFuZGxpbmdfbWVzc2Fn
ZXMoKQogCiAgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgdGVz
dF90aW1lb3V0X3NlYyA9IHNlbGYudGltZW91dCh0ZXN0X2lucHV0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127476</attachid>
            <date>2012-02-16 17:15:29 -0800</date>
            <delta_ts>2012-02-18 16:59:49 -0800</delta_ts>
            <desc>merge to r108005 (after fix to bug 78181)</desc>
            <filename>bug-78187-20120216171528.patch</filename>
            <type>text/plain</type>
            <size>29393</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDA1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTYzNzM5MDk2NjU0NGNhMzIxYjJiOGZiZjE0NGMyNTk2
YmM5MzVjYS4uNDRiOWYzZDJjYWNkMjhkZDNiNTAyYTJiZDkwNTNlMTkwMTkwNWJhMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYx
IEBACiAyMDEyLTAyLTE2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG1lcmdlIG1lc3NhZ2VfYnJva2VyLnB5IGludG8gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1lcmdlcyBtZXNzYWdlX2Jyb2tlci5weSBpbnRvCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5weTsgaXQgdHVybnMgb3V0IGl0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8KKyAg
ICAgICAgYmUgYSBzZXBhcmF0ZSBtb2R1bGUgYXMgbm8gb25lIGVsc2Ugd2FzIGNhbGxpbmcgaXQu
IFRoaXMgY2hhbmdlCisgICAgICAgIG9ubHkgbWVyZ2VzIHRoZSB0d28gZmlsZXMgYW5kIGFkanVz
dHMgc29tZSBvZiB0aGUgbmFtZXMgZm9yCisgICAgICAgIHZpc2liaWxpdHk7IGEgc3Vic2VxdWVu
dCBjaGFuZ2Ugd2lsbCBkbyBtb3JlIHJlZmFjdG9yaW5nIGFuZAorICAgICAgICBzaW1wbGlmaWNh
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgKGNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKGdldCk6CisgICAgICAgIChfQnJva2VyQ2xpZW50KToKKyAgICAgICAgKF9Ccm9rZXJD
bGllbnQuaXNfZG9uZSk6CisgICAgICAgIChfQnJva2VyQ2xpZW50Lm5hbWUpOgorICAgICAgICAo
X0Jyb2tlcik6CisgICAgICAgIChfQnJva2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9Ccm9rZXIu
YWRkX3RvcGljKToKKyAgICAgICAgKF9Ccm9rZXIuX2dldF9xdWV1ZV9mb3JfdG9waWMpOgorICAg
ICAgICAoX0Jyb2tlci5wb3N0X21lc3NhZ2UpOgorICAgICAgICAoX0Jyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIucnVuX2FsbF9wZW5kaW5nKToKKyAgICAgICAgKF9C
cm9rZXIuX3J1bl9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIuX2Rpc3BhdGNoX21lc3NhZ2UpOgor
ICAgICAgICAoX01lc3NhZ2UpOgorICAgICAgICAoX01lc3NhZ2UubG9hZHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19pbml0X18pOgorICAgICAgICAoX01lc3NhZ2UuZHVtcHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19yZXByX18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rp
b24ucnVuX21lc3NhZ2VfbG9vcCk6CisgICAgICAgIChfQnJva2VyQ29ubmVjdGlvbi5wb3N0X21l
c3NhZ2UpOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24ucmFpc2VfZXhjZXB0aW9uKToKKyAg
ICAgICAgKEFic3RyYWN0V29ya2VyKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9f
KToKKyAgICAgICAgKF9NYW5hZ2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfTWFuYWdlckNvbm5l
Y3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0lubGluZU1hbmFnZXIucnVuX21lc3NhZ2VfbG9v
cCk6CisgICAgICAgIChfV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfV29ya2VyQ29ubmVj
dGlvbi5fX2luaXRfXyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi55aWVsZF90
b19icm9rZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKEludGVy
ZmFjZVRlc3QudGVzdF9icm9rZXJjbGllbnRfaXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJm
YWNlVGVzdC50ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdC5tZXRob2RzKToKKyAgICAgICAg
KE1lc3NhZ2VUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VUZXN0LnRlc3RfX25vX2JvZHkpOgorICAg
ICAgICAoTWVzc2FnZVRlc3QudGVzdF9fYm9keSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2Fn
ZV9icm9rZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKKzIwMTItMDItMTYgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgbnJ3dDogc2ltcGxpZnkgd29ya2Vy
IGludGVyZmFjZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzgxODEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
CmluZGV4IDUzNWJkMzBiNjc2ZGRhMmI5YWY5ODJkMzgyOGNkMzJkNTRlNWJjM2YuLjUyNzNlMjMz
Zjk2ODVlMWJkNWQzNjk3OWM1ZTMyMTdjOGIyOWMzMzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTI5LDggKzI5LDggQEAKICIiIk1vZHVsZSBm
b3IgaGFuZGxpbmcgbWVzc2FnZXMgYW5kIGNvbmN1cnJlbmN5IGZvciBydW4td2Via2l0LXRlc3Rz
LgogCiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbWVzc2FnZSBicm9rZXIgdGhhdCBjb25uZWN0
cyB0aGUgbWFuYWdlciB0byB0aGUKLXdvcmtlcnM6IGl0IHByb3ZpZGVzIGEgbWVzc2FnaW5nIGFi
c3RyYWN0aW9uIGFuZCBtZXNzYWdlIGxvb3BzIChidWlsZGluZyBvbgotdG9wIG9mIG1lc3NhZ2Vf
YnJva2VyKSwgYW5kIGhhbmRsZXMgc3RhcnRpbmcgd29ya2VycyBieSBsYXVuY2hpbmcgcHJvY2Vz
c2VzLgord29ya2VyczogaXQgcHJvdmlkZXMgYSBtZXNzYWdpbmcgYWJzdHJhY3Rpb24gYW5kIG1l
c3NhZ2UgbG9vcHMsIGFuZAoraGFuZGxlcyBzdGFydGluZyB3b3JrZXJzIGJ5IGxhdW5jaGluZyBw
cm9jZXNzZXMuCiAKIFRoZXJlIGFyZSBhIGxvdCBvZiBjbGFzc2VzIGFuZCBvYmplY3RzIGludm9s
dmVkIGluIGEgZnVsbHkgY29ubmVjdGVkIHN5c3RlbS4KIFRoZXkgaW50ZXJhY3QgbW9yZSBvciBs
ZXNzIGxpa2U6CkBAIC0zOSwyNCArMzksNDggQEAgVGhleSBpbnRlcmFjdCBtb3JlIG9yIGxlc3Mg
bGlrZToKICAgICAgXiAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgIC8gICAgICAg
ICAgICAgIF4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgdiAgICAg
ICAgICAgICAgIHwKICAgICAgXC0tLS0tLS0tLS0tLS0tLS0tLS0tICBNZXNzYWdlQnJva2VyICAg
LS0tLS0tLS0tLS0tLS8KKworVGhlIGJyb2tlciBzaW1wbHkgZGlzdHJpYnV0ZXMgbWVzc2FnZXMg
b250byB0b3BpY3MgKG5hbWVkIHF1ZXVlcyk7IHRoZSBhY3R1YWwKK3F1ZXVlcyB0aGVtc2VsdmVz
IGFyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLCBhcyB0aGUgcXVldWUncyBpbXBsZW1lbnRhdGlv
bgorcmVxdWlyZW1lbnRzIHZhcmllcyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgZGVzaXJlZCBjb25j
dXJyZW5jeSBtb2RlbAorKG5vbmUvdGhyZWFkcy9wcm9jZXNzZXMpLgorCitJbiBvcmRlciBmb3Ig
c2hhcmVkLW5vdGhpbmcgbWVzc2FnaW5nIGJldHdlZW4gcHJvY2Vzc2luZyB0byBiZSBwb3NzaWJs
ZSwKK01lc3NhZ2VzIG11c3QgYmUgcGlja2xhYmxlLgorCitUaGUgYnJva2VyIGNsYXNzZXMgcmVs
YXRlIHRvIGVhY2ggb3RoZXIgYXM6CisKKyAgICBfQnJva2VyQ2xpZW50ICAgLS0tLS0tPiAgICBf
QnJva2VyQ29ubmVjdGlvbgorICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgIFwtLS0tLS0tLS0t
LS0tLS0tICAgICAgX0Jyb2tlcgorCisoVGhlIF9Ccm9rZXJDbGllbnQgbmV2ZXIgY2FsbHMgYnJv
a2VyIGRpcmVjdGx5IGFmdGVyIGl0IGlzIGNyZWF0ZWQsIG9ubHkKK19Ccm9rZXJDb25uZWN0aW9u
LiAgX0Jyb2tlckNvbm5lY3Rpb24gcGFzc2VzIGEgcmVmZXJlbmNlIHRvIF9Ccm9rZXJDbGllbnQg
dG8KK19Ccm9rZXIsIGFuZCBfQnJva2VyIG9ubHkgaW52b2tlcyB0aGF0IHJlZmVyZW5jZSwgbmV2
ZXIgdGFsa2luZyBkaXJlY3RseSB0bworX0Jyb2tlckNvbm5lY3Rpb24pLgogIiIiCiAKK2ltcG9y
dCBjUGlja2xlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0
IG9wdHBhcnNlCiBpbXBvcnQgUXVldWUKIGltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKKwog
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9i
cm9rZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgc3RhY2tfdXRpbHMKIAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogIwogIyBUb3BpYyBuYW1l
cyBmb3IgTWFuYWdlciA8LT4gV29ya2VyIG1lc3NhZ2luZwogIwotTUFOQUdFUl9UT1BJQyA9ICdt
YW5hZ2VycycKLUFOWV9XT1JLRVJfVE9QSUMgPSAnd29ya2VycycKK19NQU5BR0VSX1RPUElDID0g
J21hbmFnZXJzJworX0FOWV9XT1JLRVJfVE9QSUMgPSAnd29ya2VycycKIAogCiBkZWYgZ2V0KHdv
cmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgpAQCAtNjQsNyArODgsNyBAQCBkZWYg
Z2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogCiAgICAgQXJnczoKICAg
ICAgICAgd29ya2VyX21vZGVsIC0gY29uY3VycmVuY3kgbW9kZWwgdG8gdXNlIChpbmxpbmUvcHJv
Y2Vzc2VzKQotICAgICAgICBjbGllbnQgLSBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQgaW1w
bGVtZW50YXRpb24gdG8gZGlzcGF0Y2gKKyAgICAgICAgY2xpZW50IC0gX0Jyb2tlckNsaWVudCBp
bXBsZW1lbnRhdGlvbiB0byBkaXNwYXRjaAogICAgICAgICAgICAgcmVwbGllcyB0by4KICAgICAg
ICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJzIHRvIGNyZWF0ZS4gVGhpcyBjbGFzcyBz
aG91bGQgb3ZlcnJpZGUKICAgICAgICAgICAgIHRoZSBtZXRob2RzIGluIEFic3RyYWN0V29ya2Vy
LgpAQCAtODAsMTEgKzEwNCwxNDIgQEAgZGVmIGdldCh3b3JrZXJfbW9kZWwsIGNsaWVudCwgd29y
a2VyX2NsYXNzKToKICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBv
cnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkKIAotICAg
IGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlcihxdWV1ZV9jbGFzcykKKyAgICBicm9rZXIg
PSBfQnJva2VyKHF1ZXVlX2NsYXNzKQogICAgIHJldHVybiBtYW5hZ2VyX2NsYXNzKGJyb2tlciwg
Y2xpZW50LCB3b3JrZXJfY2xhc3MpCiAKIAotY2xhc3MgQWJzdHJhY3RXb3JrZXIobWVzc2FnZV9i
cm9rZXIuQnJva2VyQ2xpZW50KToKK2NsYXNzIF9Ccm9rZXJDbGllbnQob2JqZWN0KToKKyAgICAi
IiJBYnN0cmFjdCBiYXNlIGNsYXNzIC8gaW50ZXJmYWNlIHRoYXQgYWxsIG1lc3NhZ2UgYnJva2Vy
IGNsaWVudHMgbXVzdAorICAgIGltcGxlbWVudC4gSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMg
YmVsb3csIGJ5IGNvbnZlbnRpb24gY2xpZW50cworICAgIGltcGxlbWVudCByb3V0aW5lcyBvZiB0
aGUgc2lnbmF0dXJlIHR5cGUKKworICAgICAgICBoYW5kbGVfTUVTU0FHRV9OQU1FKHNlbGYsIHNy
YywgLi4uKToKKworICAgIHdoZXJlIE1FU1NBR0VfTkFNRSBtYXRjaGVzIHRoZSBzdHJpbmcgcGFz
c2VkIHRvIHBvc3RfbWVzc2FnZSgpLCBhbmQKKyAgICBzcmMgaW5kaWNhdGVzIHRoZSBuYW1lIG9m
IHRoZSBzZW5kZXIuIElmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIHZhbHVlcyBpbgorICAgIHRoZSBt
ZXNzYWdlIGJvZHksIHRob3NlIHdpbGwgYmUgcHJvdmlkZWQgYXMgb3B0cGFyYW1zLiIiIgorCisg
ICAgZGVmIGlzX2RvbmUoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCBmcm9tIGluc2lkZSBydW5f
bWVzc2FnZV9sb29wKCkgdG8gaW5kaWNhdGUgd2hldGhlciB0byBleGl0LiIiIgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAg
IiIiUmV0dXJuIGEgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNsaWVudC4iIiIKKyAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIF9Ccm9rZXIob2JqZWN0KToKKyAg
ICAiIiJCcm9rZXJzIHByb3ZpZGUgdGhlIGJhc2ljIG1vZGVsIG9mIGEgc2V0IG9mIHRvcGljcy4g
Q2xpZW50cyBjYW4gcG9zdCBhCisgICAgbWVzc2FnZSB0byBhbnkgdG9waWMgdXNpbmcgcG9zdF9t
ZXNzYWdlKCksIGFuZCBjYW4gcHJvY2VzcyBtZXNzYWdlcyBvbiBvbmUKKyAgICB0b3BpYyBhdCBh
IHRpbWUgdXNpbmcgcnVuX21lc3NhZ2VfbG9vcCgpLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHF1ZXVlX21ha2VyKToKKyAgICAgICAgIiIiQXJnczoKKyAgICAgICAgICAgIHF1ZXVlX21h
a2VyOiBhIGZhY3RvcnkgbWV0aG9kIHRoYXQgcmV0dXJucyBvYmplY3RzIGltcGxlbWVudGluZyBh
CisgICAgICAgICAgICAgICAgUXVldWUgaW50ZXJmYWNlIChwdXQoKS9nZXQoKSkuCisgICAgICAg
ICIiIgorICAgICAgICBzZWxmLl9xdWV1ZV9tYWtlciA9IHF1ZXVlX21ha2VyCisgICAgICAgIHNl
bGYuX3RvcGljcyA9IHt9CisKKyAgICBkZWYgYWRkX3RvcGljKHNlbGYsIHRvcGljX25hbWUpOgor
ICAgICAgICBpZiB0b3BpY19uYW1lIG5vdCBpbiBzZWxmLl90b3BpY3M6CisgICAgICAgICAgICBz
ZWxmLl90b3BpY3NbdG9waWNfbmFtZV0gPSBzZWxmLl9xdWV1ZV9tYWtlcigpCisKKyAgICBkZWYg
X2dldF9xdWV1ZV9mb3JfdG9waWMoc2VsZiwgdG9waWNfbmFtZSk6CisgICAgICAgIHJldHVybiBz
ZWxmLl90b3BpY3NbdG9waWNfbmFtZV0KKworICAgIGRlZiBwb3N0X21lc3NhZ2Uoc2VsZiwgY2xp
ZW50LCB0b3BpY19uYW1lLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpOgorICAgICAgICAi
IiJQb3N0IGEgbWVzc2FnZSB0byB0aGUgYXBwcm9wcmlhdGUgdG9waWMgbmFtZS4KKworICAgICAg
ICBNZXNzYWdlcyBoYXZlIGEgbmFtZSBhbmQgYSB0dXBsZSBvZiBvcHRpb25hbCBhcmd1bWVudHMu
IEJvdGggbXVzdCBiZSBwaWNrbGFibGUuIiIiCisgICAgICAgIG1lc3NhZ2UgPSBfTWVzc2FnZShj
bGllbnQubmFtZSgpLCB0b3BpY19uYW1lLCBtZXNzYWdlX25hbWUsIG1lc3NhZ2VfYXJncykKKyAg
ICAgICAgcXVldWUgPSBzZWxmLl9nZXRfcXVldWVfZm9yX3RvcGljKHRvcGljX25hbWUpCisgICAg
ICAgIHF1ZXVlLnB1dChfTWVzc2FnZS5kdW1wcyhtZXNzYWdlKSkKKworICAgIGRlZiBydW5fbWVz
c2FnZV9sb29wKHNlbGYsIHRvcGljX25hbWUsIGNsaWVudCwgZGVsYXlfc2Vjcz1Ob25lKToKKyAg
ICAgICAgIiIiTG9vcCBwcm9jZXNzaW5nIG1lc3NhZ2VzIHVudGlsIGNsaWVudC5pc19kb25lKCkg
b3IgZGVsYXkgcGFzc2VzLgorCisgICAgICAgIFRvIHJ1biBpbmRlZmluaXRlbHksIHNldCBkZWxh
eV9zZWNzIHRvIE5vbmUuIiIiCisgICAgICAgIGFzc2VydCBkZWxheV9zZWNzIGlzIE5vbmUgb3Ig
ZGVsYXlfc2VjcyA+IDAKKyAgICAgICAgc2VsZi5fcnVuX2xvb3AodG9waWNfbmFtZSwgY2xpZW50
LCBibG9jaz1UcnVlLCBkZWxheV9zZWNzPWRlbGF5X3NlY3MpCisKKyAgICBkZWYgcnVuX2FsbF9w
ZW5kaW5nKHNlbGYsIHRvcGljX25hbWUsIGNsaWVudCk6CisgICAgICAgICIiIlByb2Nlc3MgbWVz
c2FnZXMgdW50aWwgY2xpZW50LmlzX2RvbmUoKSBvciBjYWxsZXIgd291bGQgYmxvY2suIiIiCisg
ICAgICAgIHNlbGYuX3J1bl9sb29wKHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2s9RmFsc2UsIGRl
bGF5X3NlY3M9Tm9uZSkKKworICAgIGRlZiBfcnVuX2xvb3Aoc2VsZiwgdG9waWNfbmFtZSwgY2xp
ZW50LCBibG9jaywgZGVsYXlfc2Vjcyk6CisgICAgICAgIHF1ZXVlID0gc2VsZi5fZ2V0X3F1ZXVl
X2Zvcl90b3BpYyh0b3BpY19uYW1lKQorICAgICAgICB3aGlsZSBub3QgY2xpZW50LmlzX2RvbmUo
KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzID0gcXVldWUuZ2V0KGJsb2Nr
LCBkZWxheV9zZWNzKQorICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgorICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgbXNnID0gX01lc3NhZ2UubG9hZHMocykKKyAgICAg
ICAgICAgIHNlbGYuX2Rpc3BhdGNoX21lc3NhZ2UobXNnLCBjbGllbnQpCisKKyAgICBkZWYgX2Rp
c3BhdGNoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgY2xpZW50KToKKyAgICAgICAgaWYgbm90IGhh
c2F0dHIoY2xpZW50LCAnaGFuZGxlXycgKyBtZXNzYWdlLm5hbWUpOgorICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICIlczogcmVjZWl2ZWQgbWVzc2FnZSAnJXMn
IGl0IGNvdWxkbid0IGhhbmRsZSIgJQorICAgICAgICAgICAgICAgKGNsaWVudC5uYW1lKCksIG1l
c3NhZ2UubmFtZSkpCisgICAgICAgIG9wdGFyZ3MgPSBtZXNzYWdlLmFyZ3MKKyAgICAgICAgbWVz
c2FnZV9oYW5kbGVyID0gZ2V0YXR0cihjbGllbnQsICdoYW5kbGVfJyArIG1lc3NhZ2UubmFtZSkK
KyAgICAgICAgbWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2Uuc3JjLCAqb3B0YXJncykKKworCitjbGFz
cyBfTWVzc2FnZShvYmplY3QpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbG9hZHMoc3Ry
aW5nX3ZhbHVlKToKKyAgICAgICAgb2JqID0gY1BpY2tsZS5sb2FkcyhzdHJpbmdfdmFsdWUpCisg
ICAgICAgIGFzc2VydChpc2luc3RhbmNlKG9iaiwgX01lc3NhZ2UpKQorICAgICAgICByZXR1cm4g
b2JqCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3JjLCB0b3BpY19uYW1lLCBtZXNzYWdlX25h
bWUsIG1lc3NhZ2VfYXJncyk6CisgICAgICAgIHNlbGYuc3JjID0gc3JjCisgICAgICAgIHNlbGYu
dG9waWNfbmFtZSA9IHRvcGljX25hbWUKKyAgICAgICAgc2VsZi5uYW1lID0gbWVzc2FnZV9uYW1l
CisgICAgICAgIHNlbGYuYXJncyA9IG1lc3NhZ2VfYXJncworCisgICAgZGVmIGR1bXBzKHNlbGYp
OgorICAgICAgICByZXR1cm4gY1BpY2tsZS5kdW1wcyhzZWxmKQorCisgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gKCJfTWVzc2FnZShmcm9tPSclcycsIHRvcGljX25hbWU9
JyVzJywgbWVzc2FnZV9uYW1lPSclcycpIiAlCisgICAgICAgICAgICAgICAgKHNlbGYuc3JjLCBz
ZWxmLnRvcGljX25hbWUsIHNlbGYubmFtZSkpCisKKworY2xhc3MgX0Jyb2tlckNvbm5lY3Rpb24o
b2JqZWN0KToKKyAgICAiIiJCcm9rZXJDb25uZWN0aW9uIHByb3ZpZGVzIGEgY29ubmVjdGlvbi1v
cmllbnRlZCBmYWNhZGUgb24gdG9wIG9mIGEKKyAgICBCcm9rZXIsIHNvIHRoYXQgY2FsbGVycyBk
b24ndCBoYXZlIHRvIHJlcGVhdGVkbHkgcGFzcyB0aGUgc2FtZSB0b3BpYworICAgIG5hbWVzIG92
ZXIgYW5kIG92ZXIuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQs
IHJ1bl90b3BpYywgcG9zdF90b3BpYyk6CisgICAgICAgICIiIkNyZWF0ZSBhIEJyb2tlckNvbm5l
Y3Rpb24gb24gdG9wIG9mIGEgQnJva2VyLiBOb3RlIHRoYXQgdGhlIEJyb2tlcgorICAgICAgICBp
cyBwYXNzZWQgaW4gcmF0aGVyIHRoYW4gY3JlYXRlZCBzbyB0aGF0IGEgc2luZ2xlIEJyb2tlciBj
YW4gYmUgdXNlZAorICAgICAgICBieSBtdWx0aXBsZSBCcm9rZXJDb25uZWN0aW9ucy4iIiIKKyAg
ICAgICAgc2VsZi5fYnJva2VyID0gYnJva2VyCisgICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVu
dAorICAgICAgICBzZWxmLl9wb3N0X3RvcGljID0gcG9zdF90b3BpYworICAgICAgICBzZWxmLl9y
dW5fdG9waWMgPSBydW5fdG9waWMKKyAgICAgICAgYnJva2VyLmFkZF90b3BpYyhydW5fdG9waWMp
CisgICAgICAgIGJyb2tlci5hZGRfdG9waWMocG9zdF90b3BpYykKKworICAgIGRlZiBydW5fbWVz
c2FnZV9sb29wKHNlbGYsIGRlbGF5X3NlY3M9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Jyb2tlci5y
dW5fbWVzc2FnZV9sb29wKHNlbGYuX3J1bl90b3BpYywgc2VsZi5fY2xpZW50LCBkZWxheV9zZWNz
KQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2Fy
Z3MpOgorICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKHNlbGYuX2NsaWVudCwgc2Vs
Zi5fcG9zdF90b3BpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
X25hbWUsICptZXNzYWdlX2FyZ3MpCisKKyAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIGV4
Y19pbmZvKToKKyAgICAgICAgIyBTaW5jZSB0cmFjZWJhY2tzIGFyZW4ndCBwaWNrbGFibGUsIHNl
bmQgdGhlIGV4dHJhY3RlZCBzdGFjayBpbnN0ZWFkLgorICAgICAgICBleGNlcHRpb25fdHlwZSwg
ZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25fdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAg
ICAgICAgc3RhY2tfdXRpbHMubG9nX3RyYWNlYmFjayhfbG9nLmRlYnVnLCBleGNlcHRpb25fdHJh
Y2ViYWNrKQorICAgICAgICBzdGFjayA9IHRyYWNlYmFjay5leHRyYWN0X3RiKGV4Y2VwdGlvbl90
cmFjZWJhY2spCisgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50
LCBzZWxmLl9wb3N0X3RvcGljLCAnZXhjZXB0aW9uJywgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlv
bl92YWx1ZSwgc3RhY2spCisKKworY2xhc3MgQWJzdHJhY3RXb3JrZXIoX0Jyb2tlckNsaWVudCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfYXJndW1l
bnRzPU5vbmUpOgogICAgICAgICAiIiJUaGUgY29uc3RydWN0b3Igc2hvdWxkIGJlIHVzZWQgdG8g
ZG8gYW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgogICAgICAgICBuZWNlc3NhcnksIGJ1dCBzaG91
bGQgbm90IGRvIGFueXRoaW5nIHRoYXQgY3JlYXRlcyBkYXRhIHN0cnVjdHVyZXMKQEAgLTk2LDcg
KzI1MSw3IEBAIGNsYXNzIEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVu
dCk6CiAgICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2Vy
Q29ubmVjdGlvbiBvYmplY3QgY3JlYXRpbmcKICAgICAgICAgICAgICAgICB0aGUgd29ya2VyIGFu
ZCB0aGF0IGNhbiBiZSB1c2VkIGZvciBtZXNzYWdpbmcuCiAgICAgICAgICAgICB3b3JrZXJfYXJn
dW1lbnRzIC0gKG9wdGlvbmFsLCBQaWNrbGFibGUpIG9iamVjdCBwYXNzZWQgdG8gdGhlIHdvcmtl
ciBmcm9tIHRoZSBtYW5hZ2VyIiIiCi0gICAgICAgIG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVu
dC5fX2luaXRfXyhzZWxmKQorICAgICAgICBfQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCiAg
ICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KICAgICAg
ICAgc2VsZi5fbmFtZSA9ICd3b3JrZXInCiAgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQpAQCAt
MTM4LDcgKzI5Myw3IEBAIGNsYXNzIEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tl
ckNsaWVudCk6CiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQogCiAKLWNsYXNzIF9NYW5h
Z2VyQ29ubmVjdGlvbihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uKToKK2NsYXNzIF9N
YW5hZ2VyQ29ubmVjdGlvbihfQnJva2VyQ29ubmVjdGlvbik6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogICAgICAgICAiIiJCYXNlIGluaXRp
YWxpemF0aW9uIGZvciBhbGwgTWFuYWdlciBvYmplY3RzLgogCkBAIC0xNDcsOCArMzAyLDcgQEAg
Y2xhc3MgX01hbmFnZXJDb25uZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24p
OgogICAgICAgICAgICAgY2xpZW50OiBjYWxsYmFjayBvYmplY3QgKHRoZSBjYWxsZXIpCiAgICAg
ICAgICAgICB3b3JrZXJfY2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHdvcmtl
cnMuCiAgICAgICAgICIiIgotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9u
Ll9faW5pdF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LAotICAgICAgICAgICAgTUFOQUdFUl9UT1BJ
QywgQU5ZX1dPUktFUl9UT1BJQykKKyAgICAgICAgX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18o
c2VsZiwgYnJva2VyLCBjbGllbnQsIF9NQU5BR0VSX1RPUElDLCBfQU5ZX1dPUktFUl9UT1BJQykK
ICAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCiAKICAgICBkZWYgc3Rh
cnRfd29ya2VyKHNlbGYsIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6CkBAIC0xODAsNyArMzM0LDcg
QEAgY2xhc3MgX0lubGluZU1hbmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKICAgICAgICAgIyBO
b3RlIHRoYXQgZGVsYXlfc2VjcyBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZSBzaW5jZSB3ZSBjYW4n
dCBlYXNpbHkKICAgICAgICAgIyBpbXBsZW1lbnQgaXQuCiAgICAgICAgIHNlbGYuX2lubGluZV93
b3JrZXIucnVuKCkKLSAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VS
X1RPUElDLCBzZWxmLl9jbGllbnQpCisgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fYWxsX3BlbmRp
bmcoX01BTkFHRVJfVE9QSUMsIHNlbGYuX2NsaWVudCkKIAogCiBjbGFzcyBfTXVsdGlQcm9jZXNz
TWFuYWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgpAQCAtMTkxLDEyICszNDUsMTEgQEAgY2xhc3Mg
X011bHRpUHJvY2Vzc01hbmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKICAgICAgICAgcmV0dXJu
IHdvcmtlcl9jb25uZWN0aW9uCiAKIAotY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9i
cm9rZXIuQnJva2VyQ29ubmVjdGlvbik6CitjbGFzcyBfV29ya2VyQ29ubmVjdGlvbihfQnJva2Vy
Q29ubmVjdGlvbik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNz
LCB3b3JrZXJfYXJndW1lbnRzPU5vbmUpOgogICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJf
Y2xhc3Moc2VsZiwgd29ya2VyX2FyZ3VtZW50cykKICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5f
Y2xpZW50Lm5hbWUoKQotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9f
aW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9Q
SUMpCisgICAgICAgIF9Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2Vs
Zi5fY2xpZW50LCBfQU5ZX1dPUktFUl9UT1BJQywgX01BTkFHRVJfVE9QSUMpCiAKICAgICBkZWYg
Y2FuY2VsKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCkBAIC0yMzUs
NyArMzg4LDcgQEAgY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rp
b24pOgogICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCiAKICAgICBkZWYgeWllbGRfdG9fYnJv
a2VyKHNlbGYpOgotICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKE1BTkFHRVJf
VE9QSUMsIHNlbGYuX21hbmFnZXJfY2xpZW50KQorICAgICAgICBzZWxmLl9icm9rZXIucnVuX2Fs
bF9wZW5kaW5nKF9NQU5BR0VSX1RPUElDLCBzZWxmLl9tYW5hZ2VyX2NsaWVudCkKIAogICAgIGRl
ZiByYWlzZV9leGNlcHRpb24oc2VsZiwgZXhjX2luZm8pOgogICAgICAgICAjIFNpbmNlIHRoZSB3
b3JrZXIgaXMgaW4gdGhlIHNhbWUgcHJvY2VzcyBhcyB0aGUgbWFuYWdlciwgd2UgY2FuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3Qu
cHkKaW5kZXggMjRhNzNjMGUyZjZhMGQ5MDQ4YWIyOTA5OGUxNzIwZjBhMGIwNDRhYi4uMmZhYjFj
NTUxYTQ5OWY3Y2FmMzkxOGYyOTAxNWI3OWVmZTc0YzU1YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJv
a2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtMzMsNyAr
MzMsNiBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVy
cyBpbXBvcnQgbWFuYWdlcl93b3JrZXJfYnJva2VyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKIAogCiAjIEluIG9yZGVyIHRvIHJl
bGlhYmx5IGNvbnRyb2wgd2hlbiBjaGlsZCB3b3JrZXJzIGFyZSBzdGFydGluZyBhbmQgc3RvcHBp
bmcsCkBAIC0yMDcsNiArMjA2LDEzIEBAIGNsYXNzIEludGVyZmFjZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8g
dGhpcyBhbmQgYWxzbyB2ZXJpZnkKICAgICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQgZXZl
cnkgYWJzdHJhY3QgbWV0aG9kIGluIGFuIGludGVyZmFjZS4KKyAgICBkZWYgdGVzdF9icm9rZXJj
bGllbnRfaXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUgYmFz
ZSBjbGFzcyBtZXRob2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKKyAgICAgICAgIyBzaWdu
YXR1cmUgd2UgZXhwZWN0LgorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX0Jy
b2tlckNsaWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJy
b3IsIG9iai5pc19kb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRl
ZEVycm9yLCBvYmoubmFtZSkKKwogICAgIGRlZiB0ZXN0X21hbmFnZXJjb25uZWN0aW9uX2lzX2Fi
c3RyYWN0KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBhbGwgdGhlIGJhc2UgY2xhc3MgbWV0
aG9kcyBhcmUgYWJzdHJhY3QgYW5kIGhhdmUgdGhlCiAgICAgICAgICMgc2lnbmF0dXJlIHdlIGV4
cGVjdC4KQEAgLTIyNCw1ICsyMzAsMjggQEAgY2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3Is
IG9iai5qb2luLCBOb25lKQogCiAKK2NsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICBkZWYgdGVzdF9fbm9fYm9keShzZWxmKToKKyAgICAgICAgbXNnID0gbWFuYWdlcl93
b3JrZXJfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUn
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAgICBzID0g
bXNnLmR1bXBzKCkKKyAgICAgICAgbmV3X21zZyA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fTWVz
c2FnZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21l
c3NhZ2VfbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCBOb25l
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cudG9waWNfbmFtZSwgJ3RvcGljX25h
bWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuc3JjLCAnc3JjJykKKworICAg
IGRlZiB0ZXN0X19ib2R5KHNlbGYpOgorICAgICAgICBtc2cgPSBtYW5hZ2VyX3dvcmtlcl9icm9r
ZXIuX01lc3NhZ2UoJ3NyYycsICd0b3BpY19uYW1lJywgJ21lc3NhZ2VfbmFtZScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYm9keScsIDApKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkKKyAgICAgICAg
bmV3X21zZyA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fTWVzc2FnZS5sb2FkcyhzKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHknLCAwKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCisKKwogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9i
cm9rZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGQzNmQ0YjQ1ZTQ1ZmZl
YWVlM2ExOGM4OTc1ZTg3ZDNiYTU2ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvbWVzc2FnZV9icm9rZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLSIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnaW5nIGZvciBy
dW4td2Via2l0LXRlc3RzLgotCi1UaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIG1lc3Nh
Z2UgYnJva2VyIGFic3RyYWN0aW9uIHRoYXQgd2lsbCBiZQotdXNlZCB0byBjb29yZGluYXRlIG1l
c3NhZ2VzIGJldHdlZW4gdGhlIG1haW4gcnVuLXdlYmtpdC10ZXN0cyB0aHJlYWQKLShha2EgVGVz
dFJ1bm5lcikgYW5kIHRoZSBpbmRpdmlkdWFsIHdvcmtlciB0aHJlYWRzIChwcmV2aW91c2x5IGtu
b3duIGFzCi1kdW1wX3JlbmRlcl90cmVlX3RocmVhZHMpLgotCi1UaGUgYnJva2VyIHNpbXBseSBk
aXN0cmlidXRlcyBtZXNzYWdlcyBvbnRvIHRvcGljcyAobmFtZWQgcXVldWVzKTsgdGhlIGFjdHVh
bAotcXVldWVzIHRoZW1zZWx2ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIsIGFzIHRoZSBx
dWV1ZSdzIGltcGxlbWVudGF0aW9uCi1yZXF1aXJlbWVudHMgdmFyaWVzIHZhcnkgZGVwZW5kaW5n
IG9uIHRoZSBkZXNpcmVkIGNvbmN1cnJlbmN5IG1vZGVsCi0obm9uZS90aHJlYWRzL3Byb2Nlc3Nl
cykuCi0KLUluIG9yZGVyIGZvciBzaGFyZWQtbm90aGluZyBtZXNzYWdpbmcgYmV0d2VlbiBwcm9j
ZXNzaW5nIHRvIGJlIHBvc3NpYmxlLAotTWVzc2FnZXMgbXVzdCBiZSBwaWNrbGFibGUuCi0KLVRo
ZSBtb2R1bGUgZGVmaW5lcyBvbmUgaW50ZXJmYWNlIGFuZCB0d28gY2xhc3Nlcy4gQ2FsbGVycyBv
ZiB0aGlzIHBhY2thZ2UKLW11c3QgaW1wbGVtZW50IHRoZSBCcm9rZXJDbGllbnQgaW50ZXJmYWNl
LCBhbmQgbW9zdCBjYWxsZXJzIHdpbGwgY3JlYXRlCi1Ccm9rZXJDb25uZWN0aW9ucyBhcyB3ZWxs
IGFzIEJyb2tlcnMuCi0KLVRoZSBjbGFzc2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGFzOgotCi0g
ICAgQnJva2VyQ2xpZW50ICAgLS0tLS0tPiAgICBCcm9rZXJDb25uZWN0aW9uCi0gICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgdgotICAgICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBCcm9rZXIKLQotKFRoZSBC
cm9rZXJDbGllbnQgbmV2ZXIgY2FsbHMgYnJva2VyIGRpcmVjdGx5IGFmdGVyIGl0IGlzIGNyZWF0
ZWQsIG9ubHkKLUJyb2tlckNvbm5lY3Rpb24uICBCcm9rZXJDb25uZWN0aW9uIHBhc3NlcyBhIHJl
ZmVyZW5jZSB0byBCcm9rZXJDbGllbnQgdG8KLUJyb2tlciwgYW5kIEJyb2tlciBvbmx5IGludm9r
ZXMgdGhhdCByZWZlcmVuY2UsIG5ldmVyIHRhbGtpbmcgZGlyZWN0bHkgdG8KLUJyb2tlckNvbm5l
Y3Rpb24pLgotIiIiCi1pbXBvcnQgc3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWltcG9ydCBjUGlj
a2xlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IFF1ZXVlCi0KLWZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgc3RhY2tfdXRpbHMKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQotCi0KLWNsYXNzIEJyb2tlckNsaWVudChvYmplY3QpOgotICAgICIiIkFic3RyYWN0
IGJhc2UgY2xhc3MgLyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9rZXIgY2xpZW50cyBt
dXN0Ci0gICAgaW1wbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBiZWxvdywgYnkg
Y29udmVudGlvbiBjbGllbnRzCi0gICAgaW1wbGVtZW50IHJvdXRpbmVzIG9mIHRoZSBzaWduYXR1
cmUgdHlwZQotCi0gICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwgc3JjLCAuLi4pOgot
Ci0gICAgd2hlcmUgTUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBwYXNzZWQgdG8gcG9z
dF9tZXNzYWdlKCksIGFuZAotICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUgb2YgdGhlIHNlbmRl
ci4gSWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCi0gICAgdGhlIG1lc3NhZ2UgYm9k
eSwgdGhvc2Ugd2lsbCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCi0KLSAgICBkZWYgaXNf
ZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1bl9tZXNzYWdlX2xv
b3AoKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCi0gICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4g
YSBuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgotICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yCi0KLQotY2xhc3MgQnJva2VyKG9iamVjdCk6Ci0gICAgIiIiQnJva2Vy
cyBwcm92aWRlIHRoZSBiYXNpYyBtb2RlbCBvZiBhIHNldCBvZiB0b3BpY3MuIENsaWVudHMgY2Fu
IHBvc3QgYQotICAgIG1lc3NhZ2UgdG8gYW55IHRvcGljIHVzaW5nIHBvc3RfbWVzc2FnZSgpLCBh
bmQgY2FuIHByb2Nlc3MgbWVzc2FnZXMgb24gb25lCi0gICAgdG9waWMgYXQgYSB0aW1lIHVzaW5n
IHJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZV9t
YWtlcik6Ci0gICAgICAgICIiIkFyZ3M6Ci0gICAgICAgICAgICBxdWV1ZV9tYWtlcjogYSBmYWN0
b3J5IG1ldGhvZCB0aGF0IHJldHVybnMgb2JqZWN0cyBpbXBsZW1lbnRpbmcgYQotICAgICAgICAg
ICAgICAgIFF1ZXVlIGludGVyZmFjZSAocHV0KCkvZ2V0KCkpLgotICAgICAgICAiIiIKLSAgICAg
ICAgc2VsZi5fcXVldWVfbWFrZXIgPSBxdWV1ZV9tYWtlcgotICAgICAgICBzZWxmLl90b3BpY3Mg
PSB7fQotCi0gICAgZGVmIGFkZF90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKLSAgICAgICAgaWYg
dG9waWNfbmFtZSBub3QgaW4gc2VsZi5fdG9waWNzOgotICAgICAgICAgICAgc2VsZi5fdG9waWNz
W3RvcGljX25hbWVdID0gc2VsZi5fcXVldWVfbWFrZXIoKQotCi0gICAgZGVmIF9nZXRfcXVldWVf
Zm9yX3RvcGljKHNlbGYsIHRvcGljX25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fdG9waWNz
W3RvcGljX25hbWVdCi0KLSAgICBkZWYgcG9zdF9tZXNzYWdlKHNlbGYsIGNsaWVudCwgdG9waWNf
bmFtZSwgbWVzc2FnZV9uYW1lLCAqbWVzc2FnZV9hcmdzKToKLSAgICAgICAgIiIiUG9zdCBhIG1l
c3NhZ2UgdG8gdGhlIGFwcHJvcHJpYXRlIHRvcGljIG5hbWUuCi0KLSAgICAgICAgTWVzc2FnZXMg
aGF2ZSBhIG5hbWUgYW5kIGEgdHVwbGUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzLiBCb3RoIG11c3Qg
YmUgcGlja2xhYmxlLiIiIgotICAgICAgICBtZXNzYWdlID0gX01lc3NhZ2UoY2xpZW50Lm5hbWUo
KSwgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpCi0gICAgICAgIHF1ZXVl
ID0gc2VsZi5fZ2V0X3F1ZXVlX2Zvcl90b3BpYyh0b3BpY19uYW1lKQotICAgICAgICBxdWV1ZS5w
dXQoX01lc3NhZ2UuZHVtcHMobWVzc2FnZSkpCi0KLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChz
ZWxmLCB0b3BpY19uYW1lLCBjbGllbnQsIGRlbGF5X3NlY3M9Tm9uZSk6Ci0gICAgICAgICIiIkxv
b3AgcHJvY2Vzc2luZyBtZXNzYWdlcyB1bnRpbCBjbGllbnQuaXNfZG9uZSgpIG9yIGRlbGF5IHBh
c3Nlcy4KLQotICAgICAgICBUbyBydW4gaW5kZWZpbml0ZWx5LCBzZXQgZGVsYXlfc2VjcyB0byBO
b25lLiIiIgotICAgICAgICBhc3NlcnQgZGVsYXlfc2VjcyBpcyBOb25lIG9yIGRlbGF5X3NlY3Mg
PiAwCi0gICAgICAgIHNlbGYuX3J1bl9sb29wKHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2s9VHJ1
ZSwgZGVsYXlfc2Vjcz1kZWxheV9zZWNzKQotCi0gICAgZGVmIHJ1bl9hbGxfcGVuZGluZyhzZWxm
LCB0b3BpY19uYW1lLCBjbGllbnQpOgotICAgICAgICAiIiJQcm9jZXNzIG1lc3NhZ2VzIHVudGls
IGNsaWVudC5pc19kb25lKCkgb3IgY2FsbGVyIHdvdWxkIGJsb2NrLiIiIgotICAgICAgICBzZWxm
Ll9ydW5fbG9vcCh0b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrPUZhbHNlLCBkZWxheV9zZWNzPU5v
bmUpCi0KLSAgICBkZWYgX3J1bl9sb29wKHNlbGYsIHRvcGljX25hbWUsIGNsaWVudCwgYmxvY2ss
IGRlbGF5X3NlY3MpOgotICAgICAgICBxdWV1ZSA9IHNlbGYuX2dldF9xdWV1ZV9mb3JfdG9waWMo
dG9waWNfbmFtZSkKLSAgICAgICAgd2hpbGUgbm90IGNsaWVudC5pc19kb25lKCk6Ci0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcyA9IHF1ZXVlLmdldChibG9jaywgZGVsYXlfc2Vj
cykKLSAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICByZXR1
cm4KLSAgICAgICAgICAgIG1zZyA9IF9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAgICAgICBzZWxm
Ll9kaXNwYXRjaF9tZXNzYWdlKG1zZywgY2xpZW50KQotCi0gICAgZGVmIF9kaXNwYXRjaF9tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UsIGNsaWVudCk6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKGNsaWVu
dCwgJ2hhbmRsZV8nICsgbWVzc2FnZS5uYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoCi0gICAgICAgICAgICAgICAiJXM6IHJlY2VpdmVkIG1lc3NhZ2UgJyVzJyBpdCBjb3VsZG4n
dCBoYW5kbGUiICUKLSAgICAgICAgICAgICAgIChjbGllbnQubmFtZSgpLCBtZXNzYWdlLm5hbWUp
KQotICAgICAgICBvcHRhcmdzID0gbWVzc2FnZS5hcmdzCi0gICAgICAgIG1lc3NhZ2VfaGFuZGxl
ciA9IGdldGF0dHIoY2xpZW50LCAnaGFuZGxlXycgKyBtZXNzYWdlLm5hbWUpCi0gICAgICAgIG1l
c3NhZ2VfaGFuZGxlcihtZXNzYWdlLnNyYywgKm9wdGFyZ3MpCi0KLQotY2xhc3MgX01lc3NhZ2Uo
b2JqZWN0KToKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGxvYWRzKHN0cmluZ192YWx1ZSk6
Ci0gICAgICAgIG9iaiA9IGNQaWNrbGUubG9hZHMoc3RyaW5nX3ZhbHVlKQotICAgICAgICBhc3Nl
cnQoaXNpbnN0YW5jZShvYmosIF9NZXNzYWdlKSkKLSAgICAgICAgcmV0dXJuIG9iagotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHNyYywgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdl
X2FyZ3MpOgotICAgICAgICBzZWxmLnNyYyA9IHNyYwotICAgICAgICBzZWxmLnRvcGljX25hbWUg
PSB0b3BpY19uYW1lCi0gICAgICAgIHNlbGYubmFtZSA9IG1lc3NhZ2VfbmFtZQotICAgICAgICBz
ZWxmLmFyZ3MgPSBtZXNzYWdlX2FyZ3MKLQotICAgIGRlZiBkdW1wcyhzZWxmKToKLSAgICAgICAg
cmV0dXJuIGNQaWNrbGUuZHVtcHMoc2VsZikKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuICgiX01lc3NhZ2UoZnJvbT0nJXMnLCB0b3BpY19uYW1lPSclcycsIG1lc3Nh
Z2VfbmFtZT0nJXMnKSIgJQotICAgICAgICAgICAgICAgIChzZWxmLnNyYywgc2VsZi50b3BpY19u
YW1lLCBzZWxmLm5hbWUpKQotCi0KLWNsYXNzIEJyb2tlckNvbm5lY3Rpb24ob2JqZWN0KToKLSAg
ICAiIiJCcm9rZXJDb25uZWN0aW9uIHByb3ZpZGVzIGEgY29ubmVjdGlvbi1vcmllbnRlZCBmYWNh
ZGUgb24gdG9wIG9mIGEKLSAgICBCcm9rZXIsIHNvIHRoYXQgY2FsbGVycyBkb24ndCBoYXZlIHRv
IHJlcGVhdGVkbHkgcGFzcyB0aGUgc2FtZSB0b3BpYwotICAgIG5hbWVzIG92ZXIgYW5kIG92ZXIu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHJ1bl90b3BpYywg
cG9zdF90b3BpYyk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIEJyb2tlckNvbm5lY3Rpb24gb24gdG9w
IG9mIGEgQnJva2VyLiBOb3RlIHRoYXQgdGhlIEJyb2tlcgotICAgICAgICBpcyBwYXNzZWQgaW4g
cmF0aGVyIHRoYW4gY3JlYXRlZCBzbyB0aGF0IGEgc2luZ2xlIEJyb2tlciBjYW4gYmUgdXNlZAot
ICAgICAgICBieSBtdWx0aXBsZSBCcm9rZXJDb25uZWN0aW9ucy4iIiIKLSAgICAgICAgc2VsZi5f
YnJva2VyID0gYnJva2VyCi0gICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAotICAgICAgICBz
ZWxmLl9wb3N0X3RvcGljID0gcG9zdF90b3BpYwotICAgICAgICBzZWxmLl9ydW5fdG9waWMgPSBy
dW5fdG9waWMKLSAgICAgICAgYnJva2VyLmFkZF90b3BpYyhydW5fdG9waWMpCi0gICAgICAgIGJy
b2tlci5hZGRfdG9waWMocG9zdF90b3BpYykKLQotICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNl
bGYsIGRlbGF5X3NlY3M9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9s
b29wKHNlbGYuX3J1bl90b3BpYywgc2VsZi5fY2xpZW50LCBkZWxheV9zZWNzKQotCi0gICAgZGVm
IHBvc3RfbWVzc2FnZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3MpOgotICAgICAg
ICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKHNlbGYuX2NsaWVudCwgc2VsZi5fcG9zdF90b3Bp
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX25hbWUsICptZXNz
YWdlX2FyZ3MpCi0KLSAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIGV4Y19pbmZvKToKLSAg
ICAgICAgIyBTaW5jZSB0cmFjZWJhY2tzIGFyZW4ndCBwaWNrbGFibGUsIHNlbmQgdGhlIGV4dHJh
Y3RlZCBzdGFjayBpbnN0ZWFkLgotICAgICAgICBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3Zh
bHVlLCBleGNlcHRpb25fdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgc3RhY2tf
dXRpbHMubG9nX3RyYWNlYmFjayhfbG9nLmRlYnVnLCBleGNlcHRpb25fdHJhY2ViYWNrKQotICAg
ICAgICBzdGFjayA9IHRyYWNlYmFjay5leHRyYWN0X3RiKGV4Y2VwdGlvbl90cmFjZWJhY2spCi0g
ICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0
X3RvcGljLCAnZXhjZXB0aW9uJywgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgc3Rh
Y2spCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjhkOGU2Zjk3YTZlMTNiMTdlMWJkYTE4NmI3
Y2Q4MGI3YzI0NTY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3Nh
Z2VfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKLQotIyBUaGlzIGZpbGUgZXhp
c3RzIHRvIHRlc3Qgcm91dGluZXMgdGhhdCBhcmVuJ3QgbmVjZXNzYXJpbHkgY292ZXJlZCBlbHNl
d2hlcmU7Ci0jIG1vc3Qgb2YgdGhlIHRlc3Rpbmcgb2YgbWVzc2FnZV9icm9rZXIgd2lsbCBiZSBj
b3ZlcmVkIHVuZGVyIHRoZSB0ZXN0cyBpbgotIyB0aGUgbWFuYWdlcl93b3JrZXJfYnJva2VyIG1v
ZHVsZS4KLQotCi1jbGFzcyBNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IHRlc3RfX25vX2JvZHkoc2VsZik6Ci0gICAgICAgIG1zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNz
YWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQotICAgICAgICBzID0gbXNnLmR1bXBzKCkKLSAgICAg
ICAgbmV3X21zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobmV3X21zZy5uYW1lLCAnbWVzc2FnZV9uYW1lJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXdfbXNnLmFyZ3MsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobmV3X21zZy50b3BpY19uYW1lLCAndG9waWNfbmFtZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobmV3X21zZy5zcmMsICdzcmMnKQotCi0gICAgZGVmIHRlc3RfX2JvZHkoc2VsZik6Ci0g
ICAgICAgIG1zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScs
ICdtZXNzYWdlX25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
J2JvZHknLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobXNnKSkKLSAgICAgICAg
cyA9IG1zZy5kdW1wcygpCi0gICAgICAgIG5ld19tc2cgPSBtZXNzYWdlX2Jyb2tlci5fTWVzc2Fn
ZS5sb2FkcyhzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3Nh
Z2VfbmFtZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHkn
LCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0b3Bp
Y19uYW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCi0K
LQotY2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUaGVzZSB0
ZXN0cyBtb3N0bHkgZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgotCi0gICAgIyBGSVhNRTogVGhl
cmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxzbyB2ZXJpZnkKLSAgICAj
IHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3QgbWV0aG9kIGluIGFuIGlu
dGVyZmFjZS4KLQotICAgIGRlZiB0ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdChzZWxmKToK
LSAgICAgICAgIyBUZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3Ry
YWN0IGFuZCBoYXZlIHRoZQotICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCi0gICAgICAg
IG9iaiA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19kb25lKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmoubmFtZSkKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127721</attachid>
            <date>2012-02-18 16:59:57 -0800</date>
            <delta_ts>2012-02-19 13:53:22 -0800</delta_ts>
            <desc>merge to r108177</desc>
            <filename>bug-78187-20120218165959.patch</filename>
            <type>text/plain</type>
            <size>29345</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MTc3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjg4NTdlMTQ0YjM5NTg4OGEzMTFkNzZiODQyMmEyZDM4
ZThhNmEyYi4uOWIwMWE3YzM0ZDQyNGE2OWQ4YWNjMjQwNzMyOWFkYjcyMDQ2OTU0ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYx
IEBACiAyMDEyLTAyLTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG1lcmdlIG1lc3NhZ2VfYnJva2VyLnB5IGludG8gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1lcmdlcyBtZXNzYWdlX2Jyb2tlci5weSBpbnRvCisgICAgICAgIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5weTsgaXQgdHVybnMgb3V0IGl0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8KKyAg
ICAgICAgYmUgYSBzZXBhcmF0ZSBtb2R1bGUgYXMgbm8gb25lIGVsc2Ugd2FzIGNhbGxpbmcgaXQu
IFRoaXMgY2hhbmdlCisgICAgICAgIG9ubHkgbWVyZ2VzIHRoZSB0d28gZmlsZXMgYW5kIGFkanVz
dHMgc29tZSBvZiB0aGUgbmFtZXMgZm9yCisgICAgICAgIHZpc2liaWxpdHk7IGEgc3Vic2VxdWVu
dCBjaGFuZ2Ugd2lsbCBkbyBtb3JlIHJlZmFjdG9yaW5nIGFuZAorICAgICAgICBzaW1wbGlmaWNh
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgKGNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKGdldCk6CisgICAgICAgIChfQnJva2VyQ2xpZW50KToKKyAgICAgICAgKF9Ccm9rZXJD
bGllbnQuaXNfZG9uZSk6CisgICAgICAgIChfQnJva2VyQ2xpZW50Lm5hbWUpOgorICAgICAgICAo
X0Jyb2tlcik6CisgICAgICAgIChfQnJva2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9Ccm9rZXIu
YWRkX3RvcGljKToKKyAgICAgICAgKF9Ccm9rZXIuX2dldF9xdWV1ZV9mb3JfdG9waWMpOgorICAg
ICAgICAoX0Jyb2tlci5wb3N0X21lc3NhZ2UpOgorICAgICAgICAoX0Jyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIucnVuX2FsbF9wZW5kaW5nKToKKyAgICAgICAgKF9C
cm9rZXIuX3J1bl9sb29wKToKKyAgICAgICAgKF9Ccm9rZXIuX2Rpc3BhdGNoX21lc3NhZ2UpOgor
ICAgICAgICAoX01lc3NhZ2UpOgorICAgICAgICAoX01lc3NhZ2UubG9hZHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19pbml0X18pOgorICAgICAgICAoX01lc3NhZ2UuZHVtcHMpOgorICAgICAgICAo
X01lc3NhZ2UuX19yZXByX18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoX0Jyb2tlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rp
b24ucnVuX21lc3NhZ2VfbG9vcCk6CisgICAgICAgIChfQnJva2VyQ29ubmVjdGlvbi5wb3N0X21l
c3NhZ2UpOgorICAgICAgICAoX0Jyb2tlckNvbm5lY3Rpb24ucmFpc2VfZXhjZXB0aW9uKToKKyAg
ICAgICAgKEFic3RyYWN0V29ya2VyKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9f
KToKKyAgICAgICAgKF9NYW5hZ2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfTWFuYWdlckNvbm5l
Y3Rpb24uX19pbml0X18pOgorICAgICAgICAoX0lubGluZU1hbmFnZXIucnVuX21lc3NhZ2VfbG9v
cCk6CisgICAgICAgIChfV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChfV29ya2VyQ29ubmVj
dGlvbi5fX2luaXRfXyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi55aWVsZF90
b19icm9rZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKEludGVy
ZmFjZVRlc3QudGVzdF9icm9rZXJjbGllbnRfaXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJm
YWNlVGVzdC50ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdC5tZXRob2RzKToKKyAgICAgICAg
KE1lc3NhZ2VUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VUZXN0LnRlc3RfX25vX2JvZHkpOgorICAg
ICAgICAoTWVzc2FnZVRlc3QudGVzdF9fYm9keSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2Fn
ZV9icm9rZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKKzIwMTItMDItMTggIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgQWRkIGEgY2hhbmdlIHRoYXQgc2hv
dWxkJ3ZlIGJlZW4gaW4gcjEwODAwNS4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXgu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKaW5kZXggNTIz
NjMwNzUxYjlhZWI3NGQyZTJhYThkMjIwZGZiYmY3YjliOWFhOC4uNGExMzcwYzNlMzY3MGM2MzAw
NGVjY2Y0Zjc3ZmYzZjczODBlNzBiNSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJf
d29ya2VyX2Jyb2tlci5weQpAQCAtMjksOCArMjksOCBAQAogIiIiTW9kdWxlIGZvciBoYW5kbGlu
ZyBtZXNzYWdlcyBhbmQgY29uY3VycmVuY3kgZm9yIHJ1bi13ZWJraXQtdGVzdHMuCiAKIFRoaXMg
bW9kdWxlIGltcGxlbWVudHMgYSBtZXNzYWdlIGJyb2tlciB0aGF0IGNvbm5lY3RzIHRoZSBtYW5h
Z2VyIHRvIHRoZQotd29ya2VyczogaXQgcHJvdmlkZXMgYSBtZXNzYWdpbmcgYWJzdHJhY3Rpb24g
YW5kIG1lc3NhZ2UgbG9vcHMgKGJ1aWxkaW5nIG9uCi10b3Agb2YgbWVzc2FnZV9icm9rZXIpLCBh
bmQgaGFuZGxlcyBzdGFydGluZyB3b3JrZXJzIGJ5IGxhdW5jaGluZyBwcm9jZXNzZXMuCit3b3Jr
ZXJzOiBpdCBwcm92aWRlcyBhIG1lc3NhZ2luZyBhYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29w
cywgYW5kCitoYW5kbGVzIHN0YXJ0aW5nIHdvcmtlcnMgYnkgbGF1bmNoaW5nIHByb2Nlc3Nlcy4K
IAogVGhlcmUgYXJlIGEgbG90IG9mIGNsYXNzZXMgYW5kIG9iamVjdHMgaW52b2x2ZWQgaW4gYSBm
dWxseSBjb25uZWN0ZWQgc3lzdGVtLgogVGhleSBpbnRlcmFjdCBtb3JlIG9yIGxlc3MgbGlrZToK
QEAgLTM5LDI0ICszOSw0OCBAQCBUaGV5IGludGVyYWN0IG1vcmUgb3IgbGVzcyBsaWtlOgogICAg
ICBeICAgICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgXgog
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICB2ICAgICAgICAgICAgICAg
fAogICAgICBcLS0tLS0tLS0tLS0tLS0tLS0tLS0gIE1lc3NhZ2VCcm9rZXIgICAtLS0tLS0tLS0t
LS0tLworCitUaGUgYnJva2VyIHNpbXBseSBkaXN0cmlidXRlcyBtZXNzYWdlcyBvbnRvIHRvcGlj
cyAobmFtZWQgcXVldWVzKTsgdGhlIGFjdHVhbAorcXVldWVzIHRoZW1zZWx2ZXMgYXJlIHByb3Zp
ZGVkIGJ5IHRoZSBjYWxsZXIsIGFzIHRoZSBxdWV1ZSdzIGltcGxlbWVudGF0aW9uCityZXF1aXJl
bWVudHMgdmFyaWVzIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIGNvbmN1cnJlbmN5IG1v
ZGVsCisobm9uZS90aHJlYWRzL3Byb2Nlc3NlcykuCisKK0luIG9yZGVyIGZvciBzaGFyZWQtbm90
aGluZyBtZXNzYWdpbmcgYmV0d2VlbiBwcm9jZXNzaW5nIHRvIGJlIHBvc3NpYmxlLAorTWVzc2Fn
ZXMgbXVzdCBiZSBwaWNrbGFibGUuCisKK1RoZSBicm9rZXIgY2xhc3NlcyByZWxhdGUgdG8gZWFj
aCBvdGhlciBhczoKKworICAgIF9Ccm9rZXJDbGllbnQgICAtLS0tLS0+ICAgIF9Ccm9rZXJDb25u
ZWN0aW9uCisgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAg
ICBfQnJva2VyCisKKyhUaGUgX0Jyb2tlckNsaWVudCBuZXZlciBjYWxscyBicm9rZXIgZGlyZWN0
bHkgYWZ0ZXIgaXQgaXMgY3JlYXRlZCwgb25seQorX0Jyb2tlckNvbm5lY3Rpb24uICBfQnJva2Vy
Q29ubmVjdGlvbiBwYXNzZXMgYSByZWZlcmVuY2UgdG8gX0Jyb2tlckNsaWVudCB0bworX0Jyb2tl
ciwgYW5kIF9Ccm9rZXIgb25seSBpbnZva2VzIHRoYXQgcmVmZXJlbmNlLCBuZXZlciB0YWxraW5n
IGRpcmVjdGx5IHRvCitfQnJva2VyQ29ubmVjdGlvbikuCiAiIiIKIAoraW1wb3J0IGNQaWNrbGUK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgb3B0cGFyc2UK
IGltcG9ydCBRdWV1ZQogaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCiAKLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtZXNzYWdlX2Jyb2tlcgorZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBzdGFja191dGlscwogCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAorCiAjCiAjIFRvcGljIG5hbWVzIGZvciBNYW5h
Z2VyIDwtPiBXb3JrZXIgbWVzc2FnaW5nCiAjCi1NQU5BR0VSX1RPUElDID0gJ21hbmFnZXJzJwot
QU5ZX1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJworX01BTkFHRVJfVE9QSUMgPSAnbWFuYWdlcnMn
CitfQU5ZX1dPUktFUl9UT1BJQyA9ICd3b3JrZXJzJwogCiAKIGRlZiBnZXQod29ya2VyX21vZGVs
LCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CkBAIC02NCw3ICs4OCw3IEBAIGRlZiBnZXQod29ya2Vy
X21vZGVsLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAKICAgICBBcmdzOgogICAgICAgICB3b3Jr
ZXJfbW9kZWwgLSBjb25jdXJyZW5jeSBtb2RlbCB0byB1c2UgKGlubGluZS9wcm9jZXNzZXMpCi0g
ICAgICAgIGNsaWVudCAtIG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCBpbXBsZW1lbnRhdGlv
biB0byBkaXNwYXRjaAorICAgICAgICBjbGllbnQgLSBfQnJva2VyQ2xpZW50IGltcGxlbWVudGF0
aW9uIHRvIGRpc3BhdGNoCiAgICAgICAgICAgICByZXBsaWVzIHRvLgogICAgICAgICB3b3JrZXJf
Y2xhc3MgLSB0eXBlIG9mIHdvcmtlcnMgdG8gY3JlYXRlLiBUaGlzIGNsYXNzIHNob3VsZCBvdmVy
cmlkZQogICAgICAgICAgICAgdGhlIG1ldGhvZHMgaW4gQWJzdHJhY3RXb3JrZXIuCkBAIC04MCwx
MSArMTA0LDE0MiBAQCBkZWYgZ2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3Mp
OgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVl
IGZvciAtLXdvcmtlci1tb2RlbDogJXMiICUgd29ya2VyX21vZGVsKQogCi0gICAgYnJva2VyID0g
bWVzc2FnZV9icm9rZXIuQnJva2VyKHF1ZXVlX2NsYXNzKQorICAgIGJyb2tlciA9IF9Ccm9rZXIo
cXVldWVfY2xhc3MpCiAgICAgcmV0dXJuIG1hbmFnZXJfY2xhc3MoYnJva2VyLCBjbGllbnQsIHdv
cmtlcl9jbGFzcykKIAogCi1jbGFzcyBBYnN0cmFjdFdvcmtlcihtZXNzYWdlX2Jyb2tlci5Ccm9r
ZXJDbGllbnQpOgorY2xhc3MgX0Jyb2tlckNsaWVudChvYmplY3QpOgorICAgICIiIkFic3RyYWN0
IGJhc2UgY2xhc3MgLyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9rZXIgY2xpZW50cyBt
dXN0CisgICAgaW1wbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBiZWxvdywgYnkg
Y29udmVudGlvbiBjbGllbnRzCisgICAgaW1wbGVtZW50IHJvdXRpbmVzIG9mIHRoZSBzaWduYXR1
cmUgdHlwZQorCisgICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwgc3JjLCAuLi4pOgor
CisgICAgd2hlcmUgTUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBwYXNzZWQgdG8gcG9z
dF9tZXNzYWdlKCksIGFuZAorICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUgb2YgdGhlIHNlbmRl
ci4gSWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCisgICAgdGhlIG1lc3NhZ2UgYm9k
eSwgdGhvc2Ugd2lsbCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCisKKyAgICBkZWYgaXNf
ZG9uZShzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1bl9tZXNzYWdlX2xv
b3AoKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCisgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4g
YSBuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgorICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yCisKKworY2xhc3MgX0Jyb2tlcihvYmplY3QpOgorICAgICIiIkJyb2tl
cnMgcHJvdmlkZSB0aGUgYmFzaWMgbW9kZWwgb2YgYSBzZXQgb2YgdG9waWNzLiBDbGllbnRzIGNh
biBwb3N0IGEKKyAgICBtZXNzYWdlIHRvIGFueSB0b3BpYyB1c2luZyBwb3N0X21lc3NhZ2UoKSwg
YW5kIGNhbiBwcm9jZXNzIG1lc3NhZ2VzIG9uIG9uZQorICAgIHRvcGljIGF0IGEgdGltZSB1c2lu
ZyBydW5fbWVzc2FnZV9sb29wKCkuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWVf
bWFrZXIpOgorICAgICAgICAiIiJBcmdzOgorICAgICAgICAgICAgcXVldWVfbWFrZXI6IGEgZmFj
dG9yeSBtZXRob2QgdGhhdCByZXR1cm5zIG9iamVjdHMgaW1wbGVtZW50aW5nIGEKKyAgICAgICAg
ICAgICAgICBRdWV1ZSBpbnRlcmZhY2UgKHB1dCgpL2dldCgpKS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuX3F1ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKKyAgICAgICAgc2VsZi5fdG9waWNz
ID0ge30KKworICAgIGRlZiBhZGRfdG9waWMoc2VsZiwgdG9waWNfbmFtZSk6CisgICAgICAgIGlm
IHRvcGljX25hbWUgbm90IGluIHNlbGYuX3RvcGljczoKKyAgICAgICAgICAgIHNlbGYuX3RvcGlj
c1t0b3BpY19uYW1lXSA9IHNlbGYuX3F1ZXVlX21ha2VyKCkKKworICAgIGRlZiBfZ2V0X3F1ZXVl
X2Zvcl90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RvcGlj
c1t0b3BpY19uYW1lXQorCisgICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBjbGllbnQsIHRvcGlj
X25hbWUsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAgICIiIlBvc3QgYSBt
ZXNzYWdlIHRvIHRoZSBhcHByb3ByaWF0ZSB0b3BpYyBuYW1lLgorCisgICAgICAgIE1lc3NhZ2Vz
IGhhdmUgYSBuYW1lIGFuZCBhIHR1cGxlIG9mIG9wdGlvbmFsIGFyZ3VtZW50cy4gQm90aCBtdXN0
IGJlIHBpY2tsYWJsZS4iIiIKKyAgICAgICAgbWVzc2FnZSA9IF9NZXNzYWdlKGNsaWVudC5uYW1l
KCksIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2FnZV9hcmdzKQorICAgICAgICBxdWV1
ZSA9IHNlbGYuX2dldF9xdWV1ZV9mb3JfdG9waWModG9waWNfbmFtZSkKKyAgICAgICAgcXVldWUu
cHV0KF9NZXNzYWdlLmR1bXBzKG1lc3NhZ2UpKQorCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Ao
c2VsZiwgdG9waWNfbmFtZSwgY2xpZW50LCBkZWxheV9zZWNzPU5vbmUpOgorICAgICAgICAiIiJM
b29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgY2xpZW50LmlzX2RvbmUoKSBvciBkZWxheSBw
YXNzZXMuCisKKyAgICAgICAgVG8gcnVuIGluZGVmaW5pdGVseSwgc2V0IGRlbGF5X3NlY3MgdG8g
Tm9uZS4iIiIKKyAgICAgICAgYXNzZXJ0IGRlbGF5X3NlY3MgaXMgTm9uZSBvciBkZWxheV9zZWNz
ID4gMAorICAgICAgICBzZWxmLl9ydW5fbG9vcCh0b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrPVRy
dWUsIGRlbGF5X3NlY3M9ZGVsYXlfc2VjcykKKworICAgIGRlZiBydW5fYWxsX3BlbmRpbmcoc2Vs
ZiwgdG9waWNfbmFtZSwgY2xpZW50KToKKyAgICAgICAgIiIiUHJvY2VzcyBtZXNzYWdlcyB1bnRp
bCBjbGllbnQuaXNfZG9uZSgpIG9yIGNhbGxlciB3b3VsZCBibG9jay4iIiIKKyAgICAgICAgc2Vs
Zi5fcnVuX2xvb3AodG9waWNfbmFtZSwgY2xpZW50LCBibG9jaz1GYWxzZSwgZGVsYXlfc2Vjcz1O
b25lKQorCisgICAgZGVmIF9ydW5fbG9vcChzZWxmLCB0b3BpY19uYW1lLCBjbGllbnQsIGJsb2Nr
LCBkZWxheV9zZWNzKToKKyAgICAgICAgcXVldWUgPSBzZWxmLl9nZXRfcXVldWVfZm9yX3RvcGlj
KHRvcGljX25hbWUpCisgICAgICAgIHdoaWxlIG5vdCBjbGllbnQuaXNfZG9uZSgpOgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHMgPSBxdWV1ZS5nZXQoYmxvY2ssIGRlbGF5X3Nl
Y3MpCisgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgICAgICBtc2cgPSBfTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICAgICAgc2Vs
Zi5fZGlzcGF0Y2hfbWVzc2FnZShtc2csIGNsaWVudCkKKworICAgIGRlZiBfZGlzcGF0Y2hfbWVz
c2FnZShzZWxmLCBtZXNzYWdlLCBjbGllbnQpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihjbGll
bnQsICdoYW5kbGVfJyArIG1lc3NhZ2UubmFtZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKAorICAgICAgICAgICAgICAgIiVzOiByZWNlaXZlZCBtZXNzYWdlICclcycgaXQgY291bGRu
J3QgaGFuZGxlIiAlCisgICAgICAgICAgICAgICAoY2xpZW50Lm5hbWUoKSwgbWVzc2FnZS5uYW1l
KSkKKyAgICAgICAgb3B0YXJncyA9IG1lc3NhZ2UuYXJncworICAgICAgICBtZXNzYWdlX2hhbmRs
ZXIgPSBnZXRhdHRyKGNsaWVudCwgJ2hhbmRsZV8nICsgbWVzc2FnZS5uYW1lKQorICAgICAgICBt
ZXNzYWdlX2hhbmRsZXIobWVzc2FnZS5zcmMsICpvcHRhcmdzKQorCisKK2NsYXNzIF9NZXNzYWdl
KG9iamVjdCk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBsb2FkcyhzdHJpbmdfdmFsdWUp
OgorICAgICAgICBvYmogPSBjUGlja2xlLmxvYWRzKHN0cmluZ192YWx1ZSkKKyAgICAgICAgYXNz
ZXJ0KGlzaW5zdGFuY2Uob2JqLCBfTWVzc2FnZSkpCisgICAgICAgIHJldHVybiBvYmoKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzcmMsIHRvcGljX25hbWUsIG1lc3NhZ2VfbmFtZSwgbWVzc2Fn
ZV9hcmdzKToKKyAgICAgICAgc2VsZi5zcmMgPSBzcmMKKyAgICAgICAgc2VsZi50b3BpY19uYW1l
ID0gdG9waWNfbmFtZQorICAgICAgICBzZWxmLm5hbWUgPSBtZXNzYWdlX25hbWUKKyAgICAgICAg
c2VsZi5hcmdzID0gbWVzc2FnZV9hcmdzCisKKyAgICBkZWYgZHVtcHMoc2VsZik6CisgICAgICAg
IHJldHVybiBjUGlja2xlLmR1bXBzKHNlbGYpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiAoIl9NZXNzYWdlKGZyb209JyVzJywgdG9waWNfbmFtZT0nJXMnLCBtZXNz
YWdlX25hbWU9JyVzJykiICUKKyAgICAgICAgICAgICAgICAoc2VsZi5zcmMsIHNlbGYudG9waWNf
bmFtZSwgc2VsZi5uYW1lKSkKKworCitjbGFzcyBfQnJva2VyQ29ubmVjdGlvbihvYmplY3QpOgor
ICAgICIiIkJyb2tlckNvbm5lY3Rpb24gcHJvdmlkZXMgYSBjb25uZWN0aW9uLW9yaWVudGVkIGZh
Y2FkZSBvbiB0b3Agb2YgYQorICAgIEJyb2tlciwgc28gdGhhdCBjYWxsZXJzIGRvbid0IGhhdmUg
dG8gcmVwZWF0ZWRseSBwYXNzIHRoZSBzYW1lIHRvcGljCisgICAgbmFtZXMgb3ZlciBhbmQgb3Zl
ci4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgcnVuX3RvcGlj
LCBwb3N0X3RvcGljKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgQnJva2VyQ29ubmVjdGlvbiBvbiB0
b3Agb2YgYSBCcm9rZXIuIE5vdGUgdGhhdCB0aGUgQnJva2VyCisgICAgICAgIGlzIHBhc3NlZCBp
biByYXRoZXIgdGhhbiBjcmVhdGVkIHNvIHRoYXQgYSBzaW5nbGUgQnJva2VyIGNhbiBiZSB1c2Vk
CisgICAgICAgIGJ5IG11bHRpcGxlIEJyb2tlckNvbm5lY3Rpb25zLiIiIgorICAgICAgICBzZWxm
Ll9icm9rZXIgPSBicm9rZXIKKyAgICAgICAgc2VsZi5fY2xpZW50ID0gY2xpZW50CisgICAgICAg
IHNlbGYuX3Bvc3RfdG9waWMgPSBwb3N0X3RvcGljCisgICAgICAgIHNlbGYuX3J1bl90b3BpYyA9
IHJ1bl90b3BpYworICAgICAgICBicm9rZXIuYWRkX3RvcGljKHJ1bl90b3BpYykKKyAgICAgICAg
YnJva2VyLmFkZF90b3BpYyhwb3N0X3RvcGljKQorCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Ao
c2VsZiwgZGVsYXlfc2Vjcz1Ob25lKToKKyAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdl
X2xvb3Aoc2VsZi5fcnVuX3RvcGljLCBzZWxmLl9jbGllbnQsIGRlbGF5X3NlY3MpCisKKyAgICBk
ZWYgcG9zdF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAg
ICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBzZWxmLl9wb3N0X3Rv
cGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfbmFtZSwgKm1l
c3NhZ2VfYXJncykKKworICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgZXhjX2luZm8pOgor
ICAgICAgICAjIFNpbmNlIHRyYWNlYmFja3MgYXJlbid0IHBpY2tsYWJsZSwgc2VuZCB0aGUgZXh0
cmFjdGVkIHN0YWNrIGluc3RlYWQuCisgICAgICAgIGV4Y2VwdGlvbl90eXBlLCBleGNlcHRpb25f
dmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBzdGFj
a191dGlscy5sb2dfdHJhY2ViYWNrKF9sb2cuZGVidWcsIGV4Y2VwdGlvbl90cmFjZWJhY2spCisg
ICAgICAgIHN0YWNrID0gdHJhY2ViYWNrLmV4dHJhY3RfdGIoZXhjZXB0aW9uX3RyYWNlYmFjaykK
KyAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZShzZWxmLl9jbGllbnQsIHNlbGYuX3Bv
c3RfdG9waWMsICdleGNlcHRpb24nLCBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBz
dGFjaykKKworCitjbGFzcyBBYnN0cmFjdFdvcmtlcihfQnJva2VyQ2xpZW50KToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6
CiAgICAgICAgICIiIlRoZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgdXNlZCB0byBkbyBhbnkgc2lt
cGxlIGluaXRpYWxpemF0aW9uCiAgICAgICAgIG5lY2Vzc2FyeSwgYnV0IHNob3VsZCBub3QgZG8g
YW55dGhpbmcgdGhhdCBjcmVhdGVzIGRhdGEgc3RydWN0dXJlcwpAQCAtOTYsNyArMjUxLDcgQEAg
Y2xhc3MgQWJzdHJhY3RXb3JrZXIobWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50KToKICAgICAg
ICAgICAgIHdvcmtlcl9jb25uZWN0aW9uIC0gaGFuZGxlIHRvIHRoZSBCcm9rZXJDb25uZWN0aW9u
IG9iamVjdCBjcmVhdGluZwogICAgICAgICAgICAgICAgIHRoZSB3b3JrZXIgYW5kIHRoYXQgY2Fu
IGJlIHVzZWQgZm9yIG1lc3NhZ2luZy4KICAgICAgICAgICAgIHdvcmtlcl9hcmd1bWVudHMgLSAo
b3B0aW9uYWwsIFBpY2tsYWJsZSkgb2JqZWN0IHBhc3NlZCB0byB0aGUgd29ya2VyIGZyb20gdGhl
IG1hbmFnZXIiIiIKLSAgICAgICAgbWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50Ll9faW5pdF9f
KHNlbGYpCisgICAgICAgIF9Ccm9rZXJDbGllbnQuX19pbml0X18oc2VsZikKICAgICAgICAgc2Vs
Zi5fd29ya2VyX2Nvbm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgogICAgICAgICBzZWxmLl9u
YW1lID0gJ3dvcmtlcicKICAgICAgICAgc2VsZi5fZG9uZSA9IEZhbHNlCkBAIC0xMzgsNyArMjkz
LDcgQEAgY2xhc3MgQWJzdHJhY3RXb3JrZXIobWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50KToK
ICAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBUcnVlCiAKIAotY2xhc3MgX01hbmFnZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgorY2xhc3MgX01hbmFnZXJDb25u
ZWN0aW9uKF9Ccm9rZXJDb25uZWN0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2Vy
LCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAgICAgICAgICIiIkJhc2UgaW5pdGlhbGl6YXRpb24g
Zm9yIGFsbCBNYW5hZ2VyIG9iamVjdHMuCiAKQEAgLTE0Nyw4ICszMDIsNyBAQCBjbGFzcyBfTWFu
YWdlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbik6CiAgICAgICAg
ICAgICBjbGllbnQ6IGNhbGxiYWNrIG9iamVjdCAodGhlIGNhbGxlcikKICAgICAgICAgICAgIHdv
cmtlcl9jbGFzczogY2xhc3Mgb2JqZWN0IHRvIHVzZSB0byBjcmVhdGUgd29ya2Vycy4KICAgICAg
ICAgIiIiCi0gICAgICAgIG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24uX19pbml0X18o
c2VsZiwgYnJva2VyLCBjbGllbnQsCi0gICAgICAgICAgICBNQU5BR0VSX1RPUElDLCBBTllfV09S
S0VSX1RPUElDKQorICAgICAgICBfQnJva2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9r
ZXIsIGNsaWVudCwgX01BTkFHRVJfVE9QSUMsIF9BTllfV09SS0VSX1RPUElDKQogICAgICAgICBz
ZWxmLl93b3JrZXJfY2xhc3MgPSB3b3JrZXJfY2xhc3MKIAogICAgIGRlZiBzdGFydF93b3JrZXIo
c2VsZiwgd29ya2VyX2FyZ3VtZW50cz1Ob25lKToKQEAgLTE4MCw3ICszMzQsNyBAQCBjbGFzcyBf
SW5saW5lTWFuYWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgogICAgICAgICAjIE5vdGUgdGhhdCBk
ZWxheV9zZWNzIGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlIHNpbmNlIHdlIGNhbid0IGVhc2lseQog
ICAgICAgICAjIGltcGxlbWVudCBpdC4KICAgICAgICAgc2VsZi5faW5saW5lX3dvcmtlci5ydW4o
KQotICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKE1BTkFHRVJfVE9QSUMsIHNl
bGYuX2NsaWVudCkKKyAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9hbGxfcGVuZGluZyhfTUFOQUdF
Ul9UT1BJQywgc2VsZi5fY2xpZW50KQogCiAKIGNsYXNzIF9NdWx0aVByb2Nlc3NNYW5hZ2VyKF9N
YW5hZ2VyQ29ubmVjdGlvbik6CkBAIC0xOTEsMTEgKzM0NSwxMCBAQCBjbGFzcyBfTXVsdGlQcm9j
ZXNzTWFuYWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgogICAgICAgICByZXR1cm4gd29ya2VyX2Nv
bm5lY3Rpb24KIAogCi1jbGFzcyBfV29ya2VyQ29ubmVjdGlvbihtZXNzYWdlX2Jyb2tlci5Ccm9r
ZXJDb25uZWN0aW9uKToKK2NsYXNzIF9Xb3JrZXJDb25uZWN0aW9uKF9Ccm9rZXJDb25uZWN0aW9u
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9h
cmd1bWVudHM9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2NsaWVudCA9IHdvcmtlcl9jbGFzcyhzZWxm
LCB3b3JrZXJfYXJndW1lbnRzKQotICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0
aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xpZW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWV9XT1JLRVJfVE9QSUMsIE1BTkFH
RVJfVE9QSUMpCisgICAgICAgIF9Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tl
ciwgc2VsZi5fY2xpZW50LCBfQU5ZX1dPUktFUl9UT1BJQywgX01BTkFHRVJfVE9QSUMpCiAKICAg
ICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NsaWVudC5uYW1lKCkKQEAg
LTIzOSw3ICszOTIsNyBAQCBjbGFzcyBfSW5saW5lV29ya2VyQ29ubmVjdGlvbihfV29ya2VyQ29u
bmVjdGlvbik6CiAgICAgICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCiAKICAgICBkZWYgeWll
bGRfdG9fYnJva2VyKHNlbGYpOgotICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5n
KE1BTkFHRVJfVE9QSUMsIHNlbGYuX21hbmFnZXJfY2xpZW50KQorICAgICAgICBzZWxmLl9icm9r
ZXIucnVuX2FsbF9wZW5kaW5nKF9NQU5BR0VSX1RPUElDLCBzZWxmLl9tYW5hZ2VyX2NsaWVudCkK
IAogICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgZXhjX2luZm8pOgogICAgICAgICAjIFNp
bmNlIHRoZSB3b3JrZXIgaXMgaW4gdGhlIHNhbWUgcHJvY2VzcyBhcyB0aGUgbWFuYWdlciwgd2Ug
Y2FuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJf
dW5pdHRlc3QucHkKaW5kZXggMDJkMzRmYjQ1NWZjY2QxMmQ4OGU4MmU0ZDUyYTVhZTczMGIwN2Y3
YS4uNGNiMTRkMDNjNGFhMjQzN2YyZWU0ZTM4ZWU5M2VlNzljOTVhNjNlZiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93
b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpA
QCAtMzMsNyArMzMsNiBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5j
b250cm9sbGVycyBpbXBvcnQgbWFuYWdlcl93b3JrZXJfYnJva2VyCi1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKIAogCiAjIEluIG9y
ZGVyIHRvIHJlbGlhYmx5IGNvbnRyb2wgd2hlbiBjaGlsZCB3b3JrZXJzIGFyZSBzdGFydGluZyBh
bmQgc3RvcHBpbmcsCkBAIC0yMDQsNiArMjAzLDEzIEBAIGNsYXNzIEludGVyZmFjZVRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3
YXkgdG8gZG8gdGhpcyBhbmQgYWxzbyB2ZXJpZnkKICAgICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBs
ZW1lbnQgZXZlcnkgYWJzdHJhY3QgbWV0aG9kIGluIGFuIGludGVyZmFjZS4KKyAgICBkZWYgdGVz
dF9icm9rZXJjbGllbnRfaXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFs
bCB0aGUgYmFzZSBjbGFzcyBtZXRob2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2ZSB0aGUKKyAgICAg
ICAgIyBzaWduYXR1cmUgd2UgZXhwZWN0LgorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuX0Jyb2tlckNsaWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxl
bWVudGVkRXJyb3IsIG9iai5pc19kb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJ
bXBsZW1lbnRlZEVycm9yLCBvYmoubmFtZSkKKwogICAgIGRlZiB0ZXN0X21hbmFnZXJjb25uZWN0
aW9uX2lzX2Fic3RyYWN0KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBhbGwgdGhlIGJhc2Ug
Y2xhc3MgbWV0aG9kcyBhcmUgYWJzdHJhY3QgYW5kIGhhdmUgdGhlCiAgICAgICAgICMgc2lnbmF0
dXJlIHdlIGV4cGVjdC4KQEAgLTIyMSw1ICsyMjcsMjggQEAgY2xhc3MgSW50ZXJmYWNlVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVu
dGVkRXJyb3IsIG9iai5qb2luLCBOb25lKQogCiAKK2NsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fbm9fYm9keShzZWxmKToKKyAgICAgICAgbXNnID0g
bWFuYWdlcl93b3JrZXJfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNz
YWdlX25hbWUnLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAg
ICAgICBzID0gbXNnLmR1bXBzKCkKKyAgICAgICAgbmV3X21zZyA9IG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5fTWVzc2FnZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cu
bmFtZSwgJ21lc3NhZ2VfbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5h
cmdzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cudG9waWNfbmFtZSwg
J3RvcGljX25hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cuc3JjLCAnc3Jj
JykKKworICAgIGRlZiB0ZXN0X19ib2R5KHNlbGYpOgorICAgICAgICBtc2cgPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuX01lc3NhZ2UoJ3NyYycsICd0b3BpY19uYW1lJywgJ21lc3NhZ2VfbmFtZScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYm9keScsIDApKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQorICAgICAgICBzID0gbXNnLmR1bXBzKCkK
KyAgICAgICAgbmV3X21zZyA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fTWVzc2FnZS5sb2Fkcyhz
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFtZSwgJ21lc3NhZ2VfbmFtZScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdzLCAoJ2JvZHknLCAwKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25hbWUsICd0b3BpY19uYW1lJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywgJ3NyYycpCisKKwogaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJv
a2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWVzc2FnZV9icm9rZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGQzNmQ0
YjQ1ZTQ1ZmZlYWVlM2ExOGM4OTc1ZTg3ZDNiYTU2ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2Fn
aW5nIGZvciBydW4td2Via2l0LXRlc3RzLgotCi1UaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgc2lt
cGxlIG1lc3NhZ2UgYnJva2VyIGFic3RyYWN0aW9uIHRoYXQgd2lsbCBiZQotdXNlZCB0byBjb29y
ZGluYXRlIG1lc3NhZ2VzIGJldHdlZW4gdGhlIG1haW4gcnVuLXdlYmtpdC10ZXN0cyB0aHJlYWQK
LShha2EgVGVzdFJ1bm5lcikgYW5kIHRoZSBpbmRpdmlkdWFsIHdvcmtlciB0aHJlYWRzIChwcmV2
aW91c2x5IGtub3duIGFzCi1kdW1wX3JlbmRlcl90cmVlX3RocmVhZHMpLgotCi1UaGUgYnJva2Vy
IHNpbXBseSBkaXN0cmlidXRlcyBtZXNzYWdlcyBvbnRvIHRvcGljcyAobmFtZWQgcXVldWVzKTsg
dGhlIGFjdHVhbAotcXVldWVzIHRoZW1zZWx2ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIs
IGFzIHRoZSBxdWV1ZSdzIGltcGxlbWVudGF0aW9uCi1yZXF1aXJlbWVudHMgdmFyaWVzIHZhcnkg
ZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIGNvbmN1cnJlbmN5IG1vZGVsCi0obm9uZS90aHJlYWRz
L3Byb2Nlc3NlcykuCi0KLUluIG9yZGVyIGZvciBzaGFyZWQtbm90aGluZyBtZXNzYWdpbmcgYmV0
d2VlbiBwcm9jZXNzaW5nIHRvIGJlIHBvc3NpYmxlLAotTWVzc2FnZXMgbXVzdCBiZSBwaWNrbGFi
bGUuCi0KLVRoZSBtb2R1bGUgZGVmaW5lcyBvbmUgaW50ZXJmYWNlIGFuZCB0d28gY2xhc3Nlcy4g
Q2FsbGVycyBvZiB0aGlzIHBhY2thZ2UKLW11c3QgaW1wbGVtZW50IHRoZSBCcm9rZXJDbGllbnQg
aW50ZXJmYWNlLCBhbmQgbW9zdCBjYWxsZXJzIHdpbGwgY3JlYXRlCi1Ccm9rZXJDb25uZWN0aW9u
cyBhcyB3ZWxsIGFzIEJyb2tlcnMuCi0KLVRoZSBjbGFzc2VzIHJlbGF0ZSB0byBlYWNoIG90aGVy
IGFzOgotCi0gICAgQnJva2VyQ2xpZW50ICAgLS0tLS0tPiAgICBCcm9rZXJDb25uZWN0aW9uCi0g
ICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgdgotICAgICAgICAgXC0tLS0tLS0tLS0tLS0tLS0gICAgICBCcm9rZXIK
LQotKFRoZSBCcm9rZXJDbGllbnQgbmV2ZXIgY2FsbHMgYnJva2VyIGRpcmVjdGx5IGFmdGVyIGl0
IGlzIGNyZWF0ZWQsIG9ubHkKLUJyb2tlckNvbm5lY3Rpb24uICBCcm9rZXJDb25uZWN0aW9uIHBh
c3NlcyBhIHJlZmVyZW5jZSB0byBCcm9rZXJDbGllbnQgdG8KLUJyb2tlciwgYW5kIEJyb2tlciBv
bmx5IGludm9rZXMgdGhhdCByZWZlcmVuY2UsIG5ldmVyIHRhbGtpbmcgZGlyZWN0bHkgdG8KLUJy
b2tlckNvbm5lY3Rpb24pLgotIiIiCi1pbXBvcnQgc3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWlt
cG9ydCBjUGlja2xlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IFF1ZXVlCi0KLWZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgc3RhY2tfdXRpbHMKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWNsYXNzIEJyb2tlckNsaWVudChvYmplY3QpOgotICAgICIi
IkFic3RyYWN0IGJhc2UgY2xhc3MgLyBpbnRlcmZhY2UgdGhhdCBhbGwgbWVzc2FnZSBicm9rZXIg
Y2xpZW50cyBtdXN0Ci0gICAgaW1wbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBi
ZWxvdywgYnkgY29udmVudGlvbiBjbGllbnRzCi0gICAgaW1wbGVtZW50IHJvdXRpbmVzIG9mIHRo
ZSBzaWduYXR1cmUgdHlwZQotCi0gICAgICAgIGhhbmRsZV9NRVNTQUdFX05BTUUoc2VsZiwgc3Jj
LCAuLi4pOgotCi0gICAgd2hlcmUgTUVTU0FHRV9OQU1FIG1hdGNoZXMgdGhlIHN0cmluZyBwYXNz
ZWQgdG8gcG9zdF9tZXNzYWdlKCksIGFuZAotICAgIHNyYyBpbmRpY2F0ZXMgdGhlIG5hbWUgb2Yg
dGhlIHNlbmRlci4gSWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgdmFsdWVzIGluCi0gICAgdGhlIG1l
c3NhZ2UgYm9keSwgdGhvc2Ugd2lsbCBiZSBwcm92aWRlZCBhcyBvcHRwYXJhbXMuIiIiCi0KLSAg
ICBkZWYgaXNfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVkIGZyb20gaW5zaWRlIHJ1bl9t
ZXNzYWdlX2xvb3AoKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGV4aXQuIiIiCi0gICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAi
IiJSZXR1cm4gYSBuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUgY2xpZW50LiIiIgotICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0KLQotY2xhc3MgQnJva2VyKG9iamVjdCk6Ci0gICAg
IiIiQnJva2VycyBwcm92aWRlIHRoZSBiYXNpYyBtb2RlbCBvZiBhIHNldCBvZiB0b3BpY3MuIENs
aWVudHMgY2FuIHBvc3QgYQotICAgIG1lc3NhZ2UgdG8gYW55IHRvcGljIHVzaW5nIHBvc3RfbWVz
c2FnZSgpLCBhbmQgY2FuIHByb2Nlc3MgbWVzc2FnZXMgb24gb25lCi0gICAgdG9waWMgYXQgYSB0
aW1lIHVzaW5nIHJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBxdWV1ZV9tYWtlcik6Ci0gICAgICAgICIiIkFyZ3M6Ci0gICAgICAgICAgICBxdWV1ZV9tYWtl
cjogYSBmYWN0b3J5IG1ldGhvZCB0aGF0IHJldHVybnMgb2JqZWN0cyBpbXBsZW1lbnRpbmcgYQot
ICAgICAgICAgICAgICAgIFF1ZXVlIGludGVyZmFjZSAocHV0KCkvZ2V0KCkpLgotICAgICAgICAi
IiIKLSAgICAgICAgc2VsZi5fcXVldWVfbWFrZXIgPSBxdWV1ZV9tYWtlcgotICAgICAgICBzZWxm
Ll90b3BpY3MgPSB7fQotCi0gICAgZGVmIGFkZF90b3BpYyhzZWxmLCB0b3BpY19uYW1lKToKLSAg
ICAgICAgaWYgdG9waWNfbmFtZSBub3QgaW4gc2VsZi5fdG9waWNzOgotICAgICAgICAgICAgc2Vs
Zi5fdG9waWNzW3RvcGljX25hbWVdID0gc2VsZi5fcXVldWVfbWFrZXIoKQotCi0gICAgZGVmIF9n
ZXRfcXVldWVfZm9yX3RvcGljKHNlbGYsIHRvcGljX25hbWUpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fdG9waWNzW3RvcGljX25hbWVdCi0KLSAgICBkZWYgcG9zdF9tZXNzYWdlKHNlbGYsIGNsaWVu
dCwgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1lLCAqbWVzc2FnZV9hcmdzKToKLSAgICAgICAgIiIi
UG9zdCBhIG1lc3NhZ2UgdG8gdGhlIGFwcHJvcHJpYXRlIHRvcGljIG5hbWUuCi0KLSAgICAgICAg
TWVzc2FnZXMgaGF2ZSBhIG5hbWUgYW5kIGEgdHVwbGUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzLiBC
b3RoIG11c3QgYmUgcGlja2xhYmxlLiIiIgotICAgICAgICBtZXNzYWdlID0gX01lc3NhZ2UoY2xp
ZW50Lm5hbWUoKSwgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpCi0gICAg
ICAgIHF1ZXVlID0gc2VsZi5fZ2V0X3F1ZXVlX2Zvcl90b3BpYyh0b3BpY19uYW1lKQotICAgICAg
ICBxdWV1ZS5wdXQoX01lc3NhZ2UuZHVtcHMobWVzc2FnZSkpCi0KLSAgICBkZWYgcnVuX21lc3Nh
Z2VfbG9vcChzZWxmLCB0b3BpY19uYW1lLCBjbGllbnQsIGRlbGF5X3NlY3M9Tm9uZSk6Ci0gICAg
ICAgICIiIkxvb3AgcHJvY2Vzc2luZyBtZXNzYWdlcyB1bnRpbCBjbGllbnQuaXNfZG9uZSgpIG9y
IGRlbGF5IHBhc3Nlcy4KLQotICAgICAgICBUbyBydW4gaW5kZWZpbml0ZWx5LCBzZXQgZGVsYXlf
c2VjcyB0byBOb25lLiIiIgotICAgICAgICBhc3NlcnQgZGVsYXlfc2VjcyBpcyBOb25lIG9yIGRl
bGF5X3NlY3MgPiAwCi0gICAgICAgIHNlbGYuX3J1bl9sb29wKHRvcGljX25hbWUsIGNsaWVudCwg
YmxvY2s9VHJ1ZSwgZGVsYXlfc2Vjcz1kZWxheV9zZWNzKQotCi0gICAgZGVmIHJ1bl9hbGxfcGVu
ZGluZyhzZWxmLCB0b3BpY19uYW1lLCBjbGllbnQpOgotICAgICAgICAiIiJQcm9jZXNzIG1lc3Nh
Z2VzIHVudGlsIGNsaWVudC5pc19kb25lKCkgb3IgY2FsbGVyIHdvdWxkIGJsb2NrLiIiIgotICAg
ICAgICBzZWxmLl9ydW5fbG9vcCh0b3BpY19uYW1lLCBjbGllbnQsIGJsb2NrPUZhbHNlLCBkZWxh
eV9zZWNzPU5vbmUpCi0KLSAgICBkZWYgX3J1bl9sb29wKHNlbGYsIHRvcGljX25hbWUsIGNsaWVu
dCwgYmxvY2ssIGRlbGF5X3NlY3MpOgotICAgICAgICBxdWV1ZSA9IHNlbGYuX2dldF9xdWV1ZV9m
b3JfdG9waWModG9waWNfbmFtZSkKLSAgICAgICAgd2hpbGUgbm90IGNsaWVudC5pc19kb25lKCk6
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcyA9IHF1ZXVlLmdldChibG9jaywg
ZGVsYXlfc2VjcykKLSAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgICAgIG1zZyA9IF9NZXNzYWdlLmxvYWRzKHMpCi0gICAgICAg
ICAgICBzZWxmLl9kaXNwYXRjaF9tZXNzYWdlKG1zZywgY2xpZW50KQotCi0gICAgZGVmIF9kaXNw
YXRjaF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGNsaWVudCk6Ci0gICAgICAgIGlmIG5vdCBoYXNh
dHRyKGNsaWVudCwgJ2hhbmRsZV8nICsgbWVzc2FnZS5uYW1lKToKLSAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAiJXM6IHJlY2VpdmVkIG1lc3NhZ2UgJyVzJyBp
dCBjb3VsZG4ndCBoYW5kbGUiICUKLSAgICAgICAgICAgICAgIChjbGllbnQubmFtZSgpLCBtZXNz
YWdlLm5hbWUpKQotICAgICAgICBvcHRhcmdzID0gbWVzc2FnZS5hcmdzCi0gICAgICAgIG1lc3Nh
Z2VfaGFuZGxlciA9IGdldGF0dHIoY2xpZW50LCAnaGFuZGxlXycgKyBtZXNzYWdlLm5hbWUpCi0g
ICAgICAgIG1lc3NhZ2VfaGFuZGxlcihtZXNzYWdlLnNyYywgKm9wdGFyZ3MpCi0KLQotY2xhc3Mg
X01lc3NhZ2Uob2JqZWN0KToKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGxvYWRzKHN0cmlu
Z192YWx1ZSk6Ci0gICAgICAgIG9iaiA9IGNQaWNrbGUubG9hZHMoc3RyaW5nX3ZhbHVlKQotICAg
ICAgICBhc3NlcnQoaXNpbnN0YW5jZShvYmosIF9NZXNzYWdlKSkKLSAgICAgICAgcmV0dXJuIG9i
agotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNyYywgdG9waWNfbmFtZSwgbWVzc2FnZV9uYW1l
LCBtZXNzYWdlX2FyZ3MpOgotICAgICAgICBzZWxmLnNyYyA9IHNyYwotICAgICAgICBzZWxmLnRv
cGljX25hbWUgPSB0b3BpY19uYW1lCi0gICAgICAgIHNlbGYubmFtZSA9IG1lc3NhZ2VfbmFtZQot
ICAgICAgICBzZWxmLmFyZ3MgPSBtZXNzYWdlX2FyZ3MKLQotICAgIGRlZiBkdW1wcyhzZWxmKToK
LSAgICAgICAgcmV0dXJuIGNQaWNrbGUuZHVtcHMoc2VsZikKLQotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuICgiX01lc3NhZ2UoZnJvbT0nJXMnLCB0b3BpY19uYW1lPScl
cycsIG1lc3NhZ2VfbmFtZT0nJXMnKSIgJQotICAgICAgICAgICAgICAgIChzZWxmLnNyYywgc2Vs
Zi50b3BpY19uYW1lLCBzZWxmLm5hbWUpKQotCi0KLWNsYXNzIEJyb2tlckNvbm5lY3Rpb24ob2Jq
ZWN0KToKLSAgICAiIiJCcm9rZXJDb25uZWN0aW9uIHByb3ZpZGVzIGEgY29ubmVjdGlvbi1vcmll
bnRlZCBmYWNhZGUgb24gdG9wIG9mIGEKLSAgICBCcm9rZXIsIHNvIHRoYXQgY2FsbGVycyBkb24n
dCBoYXZlIHRvIHJlcGVhdGVkbHkgcGFzcyB0aGUgc2FtZSB0b3BpYwotICAgIG5hbWVzIG92ZXIg
YW5kIG92ZXIuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHJ1
bl90b3BpYywgcG9zdF90b3BpYyk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIEJyb2tlckNvbm5lY3Rp
b24gb24gdG9wIG9mIGEgQnJva2VyLiBOb3RlIHRoYXQgdGhlIEJyb2tlcgotICAgICAgICBpcyBw
YXNzZWQgaW4gcmF0aGVyIHRoYW4gY3JlYXRlZCBzbyB0aGF0IGEgc2luZ2xlIEJyb2tlciBjYW4g
YmUgdXNlZAotICAgICAgICBieSBtdWx0aXBsZSBCcm9rZXJDb25uZWN0aW9ucy4iIiIKLSAgICAg
ICAgc2VsZi5fYnJva2VyID0gYnJva2VyCi0gICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAot
ICAgICAgICBzZWxmLl9wb3N0X3RvcGljID0gcG9zdF90b3BpYwotICAgICAgICBzZWxmLl9ydW5f
dG9waWMgPSBydW5fdG9waWMKLSAgICAgICAgYnJva2VyLmFkZF90b3BpYyhydW5fdG9waWMpCi0g
ICAgICAgIGJyb2tlci5hZGRfdG9waWMocG9zdF90b3BpYykKLQotICAgIGRlZiBydW5fbWVzc2Fn
ZV9sb29wKHNlbGYsIGRlbGF5X3NlY3M9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Jyb2tlci5ydW5f
bWVzc2FnZV9sb29wKHNlbGYuX3J1bl90b3BpYywgc2VsZi5fY2xpZW50LCBkZWxheV9zZWNzKQot
Ci0gICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2FyZ3Mp
OgotICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKHNlbGYuX2NsaWVudCwgc2VsZi5f
cG9zdF90b3BpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX25h
bWUsICptZXNzYWdlX2FyZ3MpCi0KLSAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIGV4Y19p
bmZvKToKLSAgICAgICAgIyBTaW5jZSB0cmFjZWJhY2tzIGFyZW4ndCBwaWNrbGFibGUsIHNlbmQg
dGhlIGV4dHJhY3RlZCBzdGFjayBpbnN0ZWFkLgotICAgICAgICBleGNlcHRpb25fdHlwZSwgZXhj
ZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25fdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKLSAgICAg
ICAgc3RhY2tfdXRpbHMubG9nX3RyYWNlYmFjayhfbG9nLmRlYnVnLCBleGNlcHRpb25fdHJhY2Vi
YWNrKQotICAgICAgICBzdGFjayA9IHRyYWNlYmFjay5leHRyYWN0X3RiKGV4Y2VwdGlvbl90cmFj
ZWJhY2spCi0gICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2Uoc2VsZi5fY2xpZW50LCBz
ZWxmLl9wb3N0X3RvcGljLCAnZXhjZXB0aW9uJywgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlvbl92
YWx1ZSwgc3RhY2spCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyX3VuaXR0
ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjhkOGU2Zjk3YTZlMTNiMTdl
MWJkYTE4NmI3Y2Q4MGI3YzI0NTY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAs
MCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKLQotIyBUaGlz
IGZpbGUgZXhpc3RzIHRvIHRlc3Qgcm91dGluZXMgdGhhdCBhcmVuJ3QgbmVjZXNzYXJpbHkgY292
ZXJlZCBlbHNld2hlcmU7Ci0jIG1vc3Qgb2YgdGhlIHRlc3Rpbmcgb2YgbWVzc2FnZV9icm9rZXIg
d2lsbCBiZSBjb3ZlcmVkIHVuZGVyIHRoZSB0ZXN0cyBpbgotIyB0aGUgbWFuYWdlcl93b3JrZXJf
YnJva2VyIG1vZHVsZS4KLQotCi1jbGFzcyBNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3RfX25vX2JvZHkoc2VsZik6Ci0gICAgICAgIG1zZyA9IG1lc3NhZ2VfYnJv
a2VyLl9NZXNzYWdlKCdzcmMnLCAndG9waWNfbmFtZScsICdtZXNzYWdlX25hbWUnLCBOb25lKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtc2cpKQotICAgICAgICBzID0gbXNnLmR1bXBz
KCkKLSAgICAgICAgbmV3X21zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlLmxvYWRzKHMpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5uYW1lLCAnbWVzc2FnZV9uYW1lJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLmFyZ3MsIE5vbmUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobmV3X21zZy50b3BpY19uYW1lLCAndG9waWNfbmFtZScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobmV3X21zZy5zcmMsICdzcmMnKQotCi0gICAgZGVmIHRlc3RfX2JvZHko
c2VsZik6Ci0gICAgICAgIG1zZyA9IG1lc3NhZ2VfYnJva2VyLl9NZXNzYWdlKCdzcmMnLCAndG9w
aWNfbmFtZScsICdtZXNzYWdlX25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoJ2JvZHknLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobXNnKSkK
LSAgICAgICAgcyA9IG1zZy5kdW1wcygpCi0gICAgICAgIG5ld19tc2cgPSBtZXNzYWdlX2Jyb2tl
ci5fTWVzc2FnZS5sb2FkcyhzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19tc2cubmFt
ZSwgJ21lc3NhZ2VfbmFtZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X21zZy5hcmdz
LCAoJ2JvZHknLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnRvcGljX25h
bWUsICd0b3BpY19uYW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbXNnLnNyYywg
J3NyYycpCi0KLQotY2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
IyBUaGVzZSB0ZXN0cyBtb3N0bHkgZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgotCi0gICAgIyBG
SVhNRTogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBhbmQgYWxzbyB2ZXJp
ZnkKLSAgICAjIHRoYXQgY2xhc3NlcyBkbyBpbXBsZW1lbnQgZXZlcnkgYWJzdHJhY3QgbWV0aG9k
IGluIGFuIGludGVyZmFjZS4KLQotICAgIGRlZiB0ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFj
dChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMg
YXJlIGFic3RyYWN0IGFuZCBoYXZlIHRoZQotICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3Qu
Ci0gICAgICAgIG9iaiA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19kb25lKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmoubmFtZSkKLQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>