<?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>157947</bug_id>
          
          <creation_ts>2016-05-20 09:56:56 -0700</creation_ts>
          <short_desc>Modern IDB: Properly handle blobs in Workers</short_desc>
          <delta_ts>2016-06-04 10:19:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157958</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1195153</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-20 09:56:56 -0700</bug_when>
    <thetext>Modern IDB: Properly handle writing blobs from Workers

All of the blob writing code that&apos;s kicked off from IDBTransaction::putOrAddOnServer presumes that callbacks should come to the main thread.

That&apos;s wrong - they should come to whatever thread IDBTransaction::putOrAddOnServer was called on (possibly the worker thread)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195154</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-20 09:57:18 -0700</bug_when>
    <thetext>Noticed while working on https://bugs.webkit.org/show_bug.cgi?id=157525, though I don&apos;t think it&apos;s the cause of https://bugs.webkit.org/show_bug.cgi?id=157525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195231</commentid>
    <comment_count>2</comment_count>
      <attachid>279503</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-20 14:50:09 -0700</bug_when>
    <thetext>Created attachment 279503
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195239</commentid>
    <comment_count>3</comment_count>
      <attachid>279503</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-20 15:09:58 -0700</bug_when>
    <thetext>Comment on attachment 279503
Patch v1

View in context: https://bugs.webkit.org/attachment.cgi?id=279503&amp;action=review

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:950
&gt; +    // If this transaction is on a worker thread, we must write the blobs to disk synchronously

This is not ideal, but it&apos;s not catastrophic because we&apos;re already on a worker thread.  Put a FIXME that says with future refactoring and c++14 lambda passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195257</commentid>
    <comment_count>4</comment_count>
      <attachid>279509</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-20 15:52:54 -0700</bug_when>
    <thetext>Created attachment 279509
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195263</commentid>
    <comment_count>5</comment_count>
      <attachid>279509</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-20 16:14:14 -0700</bug_when>
    <thetext>Comment on attachment 279509
Patch for landing

Clearing flags on attachment: 279509

Committed r201232: &lt;http://trac.webkit.org/changeset/201232&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279503</attachid>
            <date>2016-05-20 14:50:09 -0700</date>
            <delta_ts>2016-05-20 15:09:58 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19558</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTQwMjYyLi4yMjA3ZDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDUt
MjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFByb3Blcmx5IGhhbmRsZSBibG9icyBpbiBXb3JrZXJzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
YmxvYi1zaW1wbGUtd29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmxvYi1zaW1wbGUtd29y
a2Vycy5qczogQWRkZWQuCisgICAgICAgIAogMjAxNi0wNS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFRlc3QgZ2FyZGVuaW5nIGFmdGVyIHIy
MDEyMDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9i
bG9iLXNpbXBsZS13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS13b3JrZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmU2NGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc2ltcGxlLXdvcmtlcnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDggQEAKK1tXb3JrZXJdIFRoaXMgdGVzdHMgYmFzaWMgb3Bl
cmF0aW9ucyBwdXR0aW5nIGJsb2JzIGludG8gYW4gb2JqZWN0IHN0b3JlIGFuZCB0aGVuIHJldHJp
ZXZpbmcgdGhlbS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YXJ0aW5nIHdv
cmtlcjogcmVzb3VyY2VzL2Jsb2Itc2ltcGxlLXdvcmtlcnMuanMKK1tXb3JrZXJdIGluZGV4ZWRE
QiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5k
ZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworW1dvcmtlcl0g
CitbV29ya2VyXSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorW1dvcmtlcl0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lKQorW1dvcmtlcl0gSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xk
IHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorW1dvcmtlcl0gTGV0J3MgY3JlYXRlIGEgYmxv
YiBhbmQgc3RvcmUgaXQgaW4gSW5kZXhlZERCIHR3aWNlLgorW1dvcmtlcl0gQWRkZWQgYmxvYiB0
byBkYXRhYmFzZSBvbmNlCitbV29ya2VyXSBBZGRlZCBibG9iIHRvIGRhdGFiYXNlIHR3aWNlCitb
V29ya2VyXSBMZXQncyByZXRyaWV2ZSB0aGUgYmxvYiBhZ2FpbiBhbmQgdmVyaWZ5IHRoZSBjb250
ZW50cyBpcyB0aGUgc2FtZS4KK1tXb3JrZXJdIEdvdCBibG9iIGZyb20gZGF0YWJhc2UKK1tXb3Jr
ZXJdIENvcnJlY3QgdGV4dDogdHJ1ZQorW1dvcmtlcl0gTGV0J3MgcmV0cmlldmUgaXQgYWdhaW4s
IGNyZWF0ZSBhbiBvYmplY3QgVVJMIGZvciB0aGUgYmxvYiwgbG9hZCBpdCB2aWEgYW4gWE1MSHR0
cFJlcXVlc3QsIGFuZCB2ZXJpZnkgdGhlIGNvbnRlbnRzIGFyZSB0aGUgc2FtZS4KK1tXb3JrZXJd
IEdvdCBibG9iIGZyb20gZGF0YWJhc2UKK1tXb3JrZXJdIENvcnJlY3QgcmVzcG9uc2VUZXh0OiB0
cnVlCitbV29ya2VyXSBSZXRyaWV2ZSBib3RoIGJsb2IgZW50cmllcyBmcm9tIHRoZSBkYXRhYmFz
ZSBhbmQgdmVyaWZ5IGNvbnRlbnRzLgorW1dvcmtlcl0gQ29ycmVjdCB0ZXh0IG9uIGZpcnN0IHZh
bHVlOiB0cnVlCitbV29ya2VyXSBDb3JyZWN0IHRleHQgb24gc2Vjb25kIHZhbHVlOiB0cnVlCitb
V29ya2VyXSBHb3QgaXRlbSBmcm9tIGN1cnNvcgorW1dvcmtlcl0gR290IGl0ZW0gZnJvbSBjdXJz
b3IKK1tXb3JrZXJdIEZpbmlzaGVkIGN1cnNvcgorW1dvcmtlcl0gR290IHJpZ2h0IG51bWJlciBv
ZiBpdGVtczogdHJ1ZQorW1dvcmtlcl0gQ29ycmVjdCB0ZXh0OiB0cnVlCitbV29ya2VyXSBSZXRy
aWV2ZSBibG9icyBmcm9tIGRhdGFiYXNlIHZpYSBpbmRleCBhbmQgdmVyaWZ5IGNvbnRlbnRzLgor
W1dvcmtlcl0gR290IGJsb2IgZnJvbSBkYXRhYmFzZQorW1dvcmtlcl0gQ29ycmVjdCB0ZXh0OiB0
cnVlCitbV29ya2VyXSBHb3QgaXRlbSBmcm9tIGN1cnNvcgorW1dvcmtlcl0gR290IGl0ZW0gZnJv
bSBjdXJzb3IKK1tXb3JrZXJdIEZpbmlzaGVkIGN1cnNvcgorW1dvcmtlcl0gR290IHJpZ2h0IG51
bWJlciBvZiBpdGVtczogdHJ1ZQorW1dvcmtlcl0gQ29ycmVjdCB0ZXh0OiB0cnVlCitbV29ya2Vy
XSBDb3JyZWN0IHRleHQ6IHRydWUKK1tXb3JrZXJdIFNsaWNlIHRoZSB0aGUgcmV0cmlldmVkIGJs
b2IgYW5kIHZlcmlmeSBpdHMgY29udGVudHMuCitbV29ya2VyXSBDb3JyZWN0IHRleHQ6IHRydWUK
K1tXb3JrZXJdIFN0b3JlIGEgYmxvYiBiYWNrIGluIHRoZSBkYXRhYmFzZSwgYW5kIGtlZXAgaG9s
ZGluZyBvbiB0byB0aGUgYmxvYiwgdmVyaWZ5aW5nIHRoYXQgaXQgc3RpbGwgY2FuIGJlIHJlYWQu
CitbV29ya2VyXSBHb3QgYmxvYiBmcm9tIGRhdGFiYXNlCitbV29ya2VyXSBTdG9yZWQgYmxvYiBi
YWNrIGludG8gZGF0YWJhc2UKK1tXb3JrZXJdIENvcnJlY3QgdGV4dDogdHJ1ZQorW1dvcmtlcl0g
Q29ycmVjdCByZXNwb25zZVRleHQ6IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vYmxvYi1zaW1wbGUtd29ya2Vycy5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc2ltcGxlLXdvcmtlcnMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGFhMGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc2ltcGxlLXdvcmtlcnMuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5kZXhl
ZERCV29ya2Vyc0VuYWJsZWQodHJ1ZSk7Cit3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2Vz
L2Jsb2Itc2ltcGxlLXdvcmtlcnMuanMnKTs8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
YmxvYi1zaW1wbGUtd29ya2Vycy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9yZXNvdXJjZXMvYmxvYi1zaW1wbGUtd29ya2Vycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mOGVmYTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9ibG9iLXNpbXBsZS13b3JrZXJzLmpz
CkBAIC0wLDAgKzEsMjcwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKKy8vIE9yaWdpbmFsIGlt
cGxlbWVudGF0aW9uIG9mIHRlc3QgZnJvbSBNb3ppbGxhOiAuL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2Jsb2Jfc2ltcGxlLmh0bWwKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGJhc2ljIG9wZXJh
dGlvbnMgcHV0dGluZyBibG9icyBpbnRvIGFuIG9iamVjdCBzdG9yZSBhbmQgdGhlbiByZXRyaWV2
aW5nIHRoZW0uIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlKTsKKworZnVuY3Rp
b24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNz
YWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCit2YXIgdGVzdEdlbmVyYXRvcjsKKwor
ZnVuY3Rpb24gY29udGludWVXaXRoRXZlbnQoZXZlbnQpCit7CisgICAgdGVzdEdlbmVyYXRvci5u
ZXh0KGV2ZW50KTsKK30KKworZnVuY3Rpb24gYXN5bmNDb250aW51ZSgpCit7CisgICAgc2V0VGlt
ZW91dCgidGVzdEdlbmVyYXRvci5uZXh0KCk7IiwgMCk7Cit9CisKK2Z1bmN0aW9uIGlkYlJlcXVl
c3QocmVxdWVzdCkKK3sKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBjb250aW51ZVdpdGhFdmVudDsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50OworfQorCit2YXIgZGI7
CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldmVudCkKK3sKKyAgICBkZWJ1ZygiSW5pdGlh
bCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIg
TmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICBkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoImZvbyIsIHsgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9KS5jcmVhdGVJbmRleCgiZm9vIiwgImluZGV4Iik7CisgICAgZXZlbnQudGFy
Z2V0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0R2VuZXJhdG9yID0gdGVz
dFN0ZXBzKCk7CisgICAgICAgIHRlc3RHZW5lcmF0b3IubmV4dCgpOworICAgIH07Cit9CisKK2Z1
bmN0aW9uIGlzKGEsIGIsIG1lc3NhZ2UpIHsKKyAgICByZXN1bHQgPSBhID09IGIgPyAidHJ1ZSIg
OiAiZmFsc2UiOworICAgIGRlYnVnKG1lc3NhZ2UgKyAiOiAiICsgcmVzdWx0KTsKK30KKworZnVu
Y3Rpb24qIHRlc3RTdGVwcygpCit7CisgICAgZGVidWcoIkxldCdzIGNyZWF0ZSBhIGJsb2IgYW5k
IHN0b3JlIGl0IGluIEluZGV4ZWREQiB0d2ljZS4iKTsKKworICAgIGNvbnN0IEJMT0JfREFUQSA9
IFsiZnVuICIsICJ0aW1lcyAiLCAiYWxsICIsICJhcm91bmQhIl07CisgICAgY29uc3QgSU5ERVhf
S0VZID0gNTsKKyAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKEJMT0JfREFUQSwgeyB0eXBlOiAidGV4
dC9wbGFpbiIgfSk7CisgICAgbGV0IGRhdGEgPSB7IGJsb2I6IGJsb2IsIGluZGV4OiBJTkRFWF9L
RVkgfTsKKworICAgIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oImZvbyIsICJyZWFkd3Jp
dGUiKS5vYmplY3RTdG9yZSgiZm9vIik7CisgICAgCisgICAgaWRiUmVxdWVzdChvYmplY3RTdG9y
ZS5hZGQoZGF0YSkpOworICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisgICAgZGVidWcoIkFkZGVk
IGJsb2IgdG8gZGF0YWJhc2Ugb25jZSIpOworCisgICAgbGV0IGtleTEgPSBldmVudC50YXJnZXQu
cmVzdWx0OworCisgICAgaWRiUmVxdWVzdChvYmplY3RTdG9yZS5hZGQoZGF0YSkpOworICAgIGV2
ZW50ID0geWllbGQ7CisKKyAgICBkZWJ1ZygiQWRkZWQgYmxvYiB0byBkYXRhYmFzZSB0d2ljZSIp
OworICAgIAorICAgIGxldCBrZXkyID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRlYnVn
KCJMZXQncyByZXRyaWV2ZSB0aGUgYmxvYiBhZ2FpbiBhbmQgdmVyaWZ5IHRoZSBjb250ZW50cyBp
cyB0aGUgc2FtZS4iKTsKKworICAgIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oImZvbyIp
Lm9iamVjdFN0b3JlKCJmb28iKTsKKyAgICBpZGJSZXF1ZXN0KG9iamVjdFN0b3JlLmdldChrZXkx
KSk7CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAgIGRlYnVnKCJHb3QgYmxvYiBmcm9tIGRhdGFi
YXNlIik7CisgICAgCisgICAgbGV0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAg
IGZpbGVSZWFkZXIub25sb2FkID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZmlsZVJlYWRlci5y
ZWFkQXNUZXh0KGV2ZW50LnRhcmdldC5yZXN1bHQuYmxvYik7CisgICAgZXZlbnQgPSB5aWVsZDsK
KworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQsIEJMT0JfREFUQS5qb2luKCIiKSwgIkNvcnJl
Y3QgdGV4dCIpOworCisgICAgZGVidWcoIkxldCdzIHJldHJpZXZlIGl0IGFnYWluLCBjcmVhdGUg
YW4gb2JqZWN0IFVSTCBmb3IgdGhlIGJsb2IsIGxvYWQgaXQgdmlhIGFuIFhNTEh0dHBSZXF1ZXN0
LCBhbmQgdmVyaWZ5IHRoZSBjb250ZW50cyBhcmUgdGhlIHNhbWUuIik7CisgICAgCisgICAgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiZm9vIikub2JqZWN0U3RvcmUoImZvbyIpOworICAg
IGlkYlJlcXVlc3Qob2JqZWN0U3RvcmUuZ2V0KGtleTEpKTsKKyAgICBldmVudCA9IHlpZWxkOwor
ICAgIAorICAgIGRlYnVnKCJHb3QgYmxvYiBmcm9tIGRhdGFiYXNlIik7CisgICAgCisgICAgbGV0
IGJsb2JVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGV2ZW50LnRhcmdldC5yZXN1bHQuYmxvYik7
CisgICAgCisgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVu
KCJHRVQiLCBibG9iVVJMKTsKKyAgICB4aHIub25sb2FkID0gY29udGludWVXaXRoRXZlbnQ7Cisg
ICAgeGhyLnNlbmQoKTsKKyAgICB5aWVsZDsKKyAgICAKKyAgICBVUkwucmV2b2tlT2JqZWN0VVJM
KGJsb2JVUkwpOyAgICAKKyAgICBpcyh4aHIucmVzcG9uc2VUZXh0LCBCTE9CX0RBVEEuam9pbigi
IiksICJDb3JyZWN0IHJlc3BvbnNlVGV4dCIpOworICAgIAorICAgIGRlYnVnKCJSZXRyaWV2ZSBi
b3RoIGJsb2IgZW50cmllcyBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdmVyaWZ5IGNvbnRlbnRzLiIp
OworCisgICAgdmFyIG9iamVjdHMgPSBbXQorICAgIAorICAgIG9iamVjdFN0b3JlID0gZGIudHJh
bnNhY3Rpb24oImZvbyIpLm9iamVjdFN0b3JlKCJmb28iKTsKKyAgICBpZGJSZXF1ZXN0KG9iamVj
dFN0b3JlLmdldChrZXkxKSk7CisgICAgZXZlbnQgPSB5aWVsZDsKKyAgICAKKyAgICBvYmplY3Rz
LnB1c2goZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgCisgICAgb2JqZWN0U3RvcmUgPSBkYi50
cmFuc2FjdGlvbigiZm9vIikub2JqZWN0U3RvcmUoImZvbyIpOworICAgIGlkYlJlcXVlc3Qob2Jq
ZWN0U3RvcmUuZ2V0KGtleTIpKTsKKyAgICBldmVudCA9IHlpZWxkOworICAgIAorICAgIG9iamVj
dHMucHVzaChldmVudC50YXJnZXQucmVzdWx0KTsKKyAgICAgICAgCisgICAgZmlsZVJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgZmlsZVJlYWRlci5vbmxvYWQgPSBjb250aW51ZVdpdGhF
dmVudDsKKyAgICBmaWxlUmVhZGVyLnJlYWRBc1RleHQob2JqZWN0c1swXS5ibG9iKTsKKyAgICBl
dmVudCA9IHlpZWxkOworCisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCwgQkxPQl9EQVRBLmpv
aW4oIiIpLCAiQ29ycmVjdCB0ZXh0IG9uIGZpcnN0IHZhbHVlIik7CisKKyAgICBmaWxlUmVhZGVy
ID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGNvbnRpbnVlV2l0
aEV2ZW50OworICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChvYmplY3RzWzFdLmJsb2IpOworICAg
IGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0LCBCTE9CX0RBVEEu
am9pbigiIiksICJDb3JyZWN0IHRleHQgb24gc2Vjb25kIHZhbHVlIik7CisKKyAgICBsZXQgY3Vy
c29yUmVzdWx0cyA9IFtdOworICAgIAorICAgIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
ImZvbyIpLm9iamVjdFN0b3JlKCJmb28iKTsKKyAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCku
b25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgIGxldCBjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBkZWJ1ZygiR290IGl0
ZW0gZnJvbSBjdXJzb3IiKTsKKyAgICAgICAgY3Vyc29yUmVzdWx0cy5wdXNoKGN1cnNvci52YWx1
ZSk7CisgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIGRlYnVnKCJGaW5pc2hlZCBjdXJzb3IiKTsKKyAgICAgICAgYXN5bmNDb250aW51ZSgp
OworICAgICAgfQorICAgIH07CisgICAgeWllbGQ7CisKKyAgICBpcyhjdXJzb3JSZXN1bHRzLmxl
bmd0aCwgMiwgIkdvdCByaWdodCBudW1iZXIgb2YgaXRlbXMiKTsKKworICAgIGZpbGVSZWFkZXIg
PSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25sb2FkID0gY29udGludWVXaXRo
RXZlbnQ7CisgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGN1cnNvclJlc3VsdHNbMF0uYmxvYik7
CisgICAgZXZlbnQgPSB5aWVsZDsKKyAgICAKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0LCBC
TE9CX0RBVEEuam9pbigiIiksICJDb3JyZWN0IHRleHQiKTsKKworICAgIGRlYnVnKCJSZXRyaWV2
ZSBibG9icyBmcm9tIGRhdGFiYXNlIHZpYSBpbmRleCBhbmQgdmVyaWZ5IGNvbnRlbnRzLiIpOwor
ICAgIAorICAgIGluZGV4ID0gZGIudHJhbnNhY3Rpb24oImZvbyIpLm9iamVjdFN0b3JlKCJmb28i
KS5pbmRleCgiZm9vIik7CisgICAgaWRiUmVxdWVzdChpbmRleC5nZXQoSU5ERVhfS0VZKSk7IAor
ICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisgICAgZGVidWcoIkdvdCBibG9iIGZyb20gZGF0YWJh
c2UiKTsKKyAgICAKKyAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICBmaWxl
UmVhZGVyLm9ubG9hZCA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGZpbGVSZWFkZXIucmVhZEFz
VGV4dChldmVudC50YXJnZXQucmVzdWx0LmJsb2IpOworICAgIGV2ZW50ID0geWllbGQ7CisgICAg
CisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCwgQkxPQl9EQVRBLmpvaW4oIiIpLCAiQ29ycmVj
dCB0ZXh0Iik7CisgICAgICAgIAorICAgIGN1cnNvclJlc3VsdHMgPSBbXTsKKyAgICAKKyAgICBp
bmRleCA9IGRiLnRyYW5zYWN0aW9uKCJmb28iKS5vYmplY3RTdG9yZSgiZm9vIikuaW5kZXgoImZv
byIpOworICAgIGluZGV4Lm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgbGV0IGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgIGRlYnVnKCJHb3QgaXRlbSBmcm9tIGN1cnNvciIpOworICAgICAgICBj
dXJzb3JSZXN1bHRzLnB1c2goY3Vyc29yLnZhbHVlKTsKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZGVidWcoIkZpbmlzaGVkIGN1cnNv
ciIpOworICAgICAgICBhc3luY0NvbnRpbnVlKCk7CisgICAgICB9CisgICAgfTsKKyAgICB5aWVs
ZDsKKyAgICAKKyAgICBpcyhjdXJzb3JSZXN1bHRzLmxlbmd0aCwgMiwgIkdvdCByaWdodCBudW1i
ZXIgb2YgaXRlbXMiKTsKKyAgICAKKyAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsK
KyAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGZpbGVSZWFk
ZXIucmVhZEFzVGV4dChjdXJzb3JSZXN1bHRzWzBdLmJsb2IpOworICAgIGV2ZW50ID0geWllbGQ7
CisgICAgCisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCwgQkxPQl9EQVRBLmpvaW4oIiIpLCAi
Q29ycmVjdCB0ZXh0Iik7CisgICAgCisgICAgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7
CisgICAgZmlsZVJlYWRlci5vbmxvYWQgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBmaWxlUmVh
ZGVyLnJlYWRBc1RleHQoY3Vyc29yUmVzdWx0c1sxXS5ibG9iKTsKKyAgICBldmVudCA9IHlpZWxk
OworICAgIAorICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQsIEJMT0JfREFUQS5qb2luKCIiKSwg
IkNvcnJlY3QgdGV4dCIpOworICAgIAorICAgIGRlYnVnKCJTbGljZSB0aGUgdGhlIHJldHJpZXZl
ZCBibG9iIGFuZCB2ZXJpZnkgaXRzIGNvbnRlbnRzLiIpOworICAgIAorICAgIGxldCBzbGljZSA9
IGN1cnNvclJlc3VsdHNbMV0uYmxvYi5zbGljZSgwLCBCTE9CX0RBVEFbMF0ubGVuZ3RoKTsKKyAg
ICAKKyAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9u
bG9hZCA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChzbGlj
ZSk7CisgICAgZXZlbnQgPSB5aWVsZDsKKyAgICAKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0
LCBCTE9CX0RBVEFbMF0sICJDb3JyZWN0IHRleHQiKTsKKyAgICAKKyAgICBkZWJ1ZygiU3RvcmUg
YSBibG9iIGJhY2sgaW4gdGhlIGRhdGFiYXNlLCBhbmQga2VlcCBob2xkaW5nIG9uIHRvIHRoZSAi
ICsKKyAgICAgICAgICJibG9iLCB2ZXJpZnlpbmcgdGhhdCBpdCBzdGlsbCBjYW4gYmUgcmVhZC4i
KTsKKyAgICAKKyAgICBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJmb28iKS5vYmplY3RT
dG9yZSgiZm9vIik7CisgICAgaWRiUmVxdWVzdChvYmplY3RTdG9yZS5nZXQoa2V5MSkpOyAKKyAg
ICBldmVudCA9IHlpZWxkOworICAgIAorICAgIGxldCBibG9iRnJvbURCID0gZXZlbnQudGFyZ2V0
LnJlc3VsdC5ibG9iOworICAgIGRlYnVnKCJHb3QgYmxvYiBmcm9tIGRhdGFiYXNlIik7CisgICAg
CisgICAgbGV0IHR4biA9IGRiLnRyYW5zYWN0aW9uKCJmb28iLCAicmVhZHdyaXRlIik7CisgICAg
dHhuLm9iamVjdFN0b3JlKCJmb28iKS5wdXQoZXZlbnQudGFyZ2V0LnJlc3VsdCwga2V5MSk7Cisg
ICAgdHhuLm9uY29tcGxldGUgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBldmVudCA9IHlpZWxk
OworICAgIAorICAgIGRlYnVnKCJTdG9yZWQgYmxvYiBiYWNrIGludG8gZGF0YWJhc2UiKTsKKyAg
ICAKKyAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9u
bG9hZCA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChibG9i
RnJvbURCKTsKKyAgICBldmVudCA9IHlpZWxkOworICAgIAorICAgIGlzKGV2ZW50LnRhcmdldC5y
ZXN1bHQsIEJMT0JfREFUQS5qb2luKCIiKSwgIkNvcnJlY3QgdGV4dCIpOworICAgIAorICAgIGJs
b2JVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2JGcm9tREIpOworICAgIAorICAgIHhociA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJHRVQiLCBibG9iVVJMKTsKKyAg
ICB4aHIub25sb2FkID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgeGhyLnNlbmQoKTsKKyAgICB5
aWVsZDsKKyAgICAKKyAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVUkwpOworICAgIAorICAg
IGlzKHhoci5yZXNwb25zZVRleHQsIEJMT0JfREFUQS5qb2luKCIiKSwgIkNvcnJlY3QgcmVzcG9u
c2VUZXh0Iik7CisgICAgCisgICAgZmluaXNoSlNUZXN0KCk7CisgfQorIApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwM2NlMTA3Li44OGZlMmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYtMDUtMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IFByb3Blcmx5IGhhbmRsZSBibG9icyBpbiBX
b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc2ltcGxlLXdvcmtlcnMuaHRtbAor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOiBVc2Ugd3JpdGVC
bG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkgZnJvbQorICAgICAgICAgIGJhY2tn
cm91bmQgdGhyZWFkcyBpbnN0ZWFkIG9mIHRoZSBhc3luY2hyb25vdXMgZm9ybS4KKyAgICAgICAg
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIHNldCBhbiBleGlzdGluZyBlbXB0eSBJREJWYWx1ZSB0
byBiZSBhbiBpc29sYXRlZCBjb3B5IG9mIGEgZGlmZmVyZW50IElEQlZhbHVlOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZh
bHVlOjpzZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpJREJWYWx1ZTo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oOgorICAg
ICAgICAKKyAgICAgICAgQWRkIGEgbWV0aG9kIC0gb25seSB0byBiZSBjYWxsZWQgZnJvbSBhIG5v
bi1tYWluIHRocmVhZCAtIHRoYXQgc3luY2hyb25vdXNseSB3cml0ZXMgYmxvYnMgdG8gZGlzazoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5k
ZXhlZERCU3luY2hyb25vdXNseSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIAogMjAxNi0wNS0yMCAgUmF3aW5kZXIgU2luZ2ggIDxyYXdp
bmRlci5zaW5naC13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAgICAgICAgIEltcGxlbWVu
dCBvcGVyYXRvcj09IGZvciBXZWFrUHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZWY0Y2VkMC4uY2FlNDdhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTM4LDcgKzkzOCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdFB1dE9yQWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24mIG9wZXJhdGlvbiwgUmVmUHRyPElEQktleT4ga2V5LCBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUmIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpwdXRPckFkZE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOwogICAgIEFTU0VSVCghaXNSZWFkT25seSgpKTsKICAgICBBU1NF
UlQodmFsdWUpOwogCkBAIC05NDcsOSArOTQ3LDI4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1
dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9u
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBJZiB0aGlzIHRyYW5zYWN0aW9uIGlz
IG9uIGEgd29ya2VyIHRocmVhZCwgd2UgbXVzdCB3cml0ZSB0aGUgYmxvYnMgdG8gZGlzayBzeW5j
aHJvbm91c2x5CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBhdXRvIGlkYlZh
bHVlID0gdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCk7
CisgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRh
YmFzZS0+Y29ubmVjdGlvblByb3h5KCkucHV0T3JBZGQob3BlcmF0aW9uLCBrZXkuZ2V0KCksIGlk
YlZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBJ
ZiB0aGUgSURCVmFsdWUgZG9lc24ndCBoYXZlIGFueSBkYXRhLCB0aGVuIHNvbWV0aGluZyB3ZW50
IHdyb25nIHdyaXRpbmcgdGhlIGJsb2JzIHRvIGRpc2suCisgICAgICAgICAgICAvLyBJbiB0aGF0
IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdlIGNh
bGxiYWNrIHdpdGggYW4gZXJyb3IuCisgICAgICAgICAgICBSZWZQdHI8SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkT3BlcmF0aW9uKCZvcGVyYXRpb24pOworICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24uaWRlbnRp
ZmllcigpLCB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiRXJyb3IgcHJlcGFyaW5nIEJsb2IvRmlsZSBkYXRhIHRvIGJlIHN0b3JlZCBpbiBvYmplY3Qg
c3RvcmUiKSB9KTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRh
c2soW3Byb3RlY3RlZE9wZXJhdGlvbiwgcmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
eworICAgICAgICAgICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+Y29tcGxldGVkKHJlc3VsdCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFJlZlB0
cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRPcGVyYXRpb24oJm9w
ZXJhdGlvbik7CiAgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoW3Byb3Rl
Y3RlZFRoaXMsIHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRl
TW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSB7CisgICAgICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7CiAgICAgICAgICAg
ICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5wdXRPckFkZCgqcHJvdGVjdGVkT3BlcmF0
aW9uLCBrZXkuZ2V0KCksIGlkYlZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcApp
bmRleCA5ZjcwZTQwLi42ZWExYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmFsdWUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCiAjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY5LDE5
ICs3MCwxOSBAQCBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IHZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYgogewogfQogCi1JREJWYWx1ZSBJREJW
YWx1ZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3ZvaWQgSURCVmFsdWU6OnNldEFzSXNvbGF0ZWRD
b3B5KGNvbnN0IElEQlZhbHVlJiBvdGhlcikKIHsKLSAgICBJREJWYWx1ZSByZXN1bHQ7Ci0gICAg
cmVzdWx0Lm1fZGF0YSA9IG1fZGF0YTsKKyAgICBBU1NFUlQobV9ibG9iVVJMcy5pc0VtcHR5KCkg
JiYgbV9ibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSk7CiAKLSAgICByZXN1bHQubV9ibG9iVVJMcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYmxvYlVSTHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8m
IHVybCA6IG1fYmxvYlVSTHMpCi0gICAgICAgIHJlc3VsdC5tX2Jsb2JVUkxzLnVuY2hlY2tlZEFw
cGVuZCh1cmwuaXNvbGF0ZWRDb3B5KCkpOwotCi0gICAgcmVzdWx0Lm1fYmxvYkZpbGVQYXRocy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYmxvYkZpbGVQYXRocy5zaXplKCkpOwotICAgIGZvciAo
YXV0byYgcGF0aCA6IG1fYmxvYkZpbGVQYXRocykKLSAgICAgICAgcmVzdWx0Lm1fYmxvYkZpbGVQ
YXRocy51bmNoZWNrZWRBcHBlbmQocGF0aC5pc29sYXRlZENvcHkoKSk7CisgICAgbV9kYXRhID0g
b3RoZXIubV9kYXRhOworICAgIG1fYmxvYlVSTHMgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8
U3RyaW5nPj46OmNvcHkob3RoZXIubV9ibG9iVVJMcyk7CisgICAgbV9ibG9iRmlsZVBhdGhzID0g
Q3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KG90aGVyLm1fYmxvYkZpbGVQ
YXRocyk7Cit9CiAKK0lEQlZhbHVlIElEQlZhbHVlOjppc29sYXRlZENvcHkoKSBjb25zdAorewor
ICAgIElEQlZhbHVlIHJlc3VsdDsKKyAgICByZXN1bHQuc2V0QXNJc29sYXRlZENvcHkoKnRoaXMp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJWYWx1ZS5oCmluZGV4IDQzZWM0ZTQuLjJiMmNmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6
CiAgICAgSURCVmFsdWUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImLCBWZWN0b3I8U3RyaW5n
PiYmIGJsb2JVUkxzLCBWZWN0b3I8U3RyaW5nPiYmIGJsb2JGaWxlUGF0aHMpOwogICAgIElEQlZh
bHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocyk7CiAKKyAgICB2b2lk
IHNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IElEQlZhbHVlJik7CiAgICAgSURCVmFsdWUgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZTkwYTJkYy4uZGM1ODE1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5
cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTI4MTYsNiArMjgxNywzMyBAQCB2b2lkIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGNvbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7ICp0aGlzLCBtX2Jsb2JV
UkxzLCBibG9iRmlsZVBhdGhzIH0pOwogICAgIH0pOwogfQorCitJREJWYWx1ZSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIElEQlZhbHVlIHZhbHVlOwor
ICAgIElEQlZhbHVlKiB2YWx1ZVB0ciA9ICZ2YWx1ZTsKKworICAgIExvY2sgbG9jazsKKyAgICBD
b25kaXRpb24gY29uZGl0aW9uOworICAgIENvbmRpdGlvbiogY29uZGl0aW9uUHRyID0gJmNvbmRp
dGlvbjsKKyAgICBsb2NrLmxvY2soKTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgY29uZGl0aW9uUHRyLCB2YWx1ZVB0cl0geworICAgICAgICB3cml0ZUJsb2JzVG9EaXNr
Rm9ySW5kZXhlZERCKFtjb25kaXRpb25QdHIsIHZhbHVlUHRyXShjb25zdCBJREJWYWx1ZSYgcmVz
dWx0KSB7CisgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAg
dmFsdWVQdHItPnNldEFzSXNvbGF0ZWRDb3B5KHJlc3VsdCk7CisKKyAgICAgICAgICAgIGNvbmRp
dGlvblB0ci0+bm90aWZ5QWxsKCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgY29uZGl0
aW9uLndhaXQobG9jayk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBk
NGI4OGJjLi43Yzc1NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHNJc29sYXRl
ZENvcHkoKSBjb25zdDsKICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgSURCVmFsdWUgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogICAgIHN0YXRpYyBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCg==
</data>
<flag name="review"
          id="303551"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279509</attachid>
            <date>2016-05-20 15:52:54 -0700</date>
            <delta_ts>2016-05-20 16:14:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19798</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYWUxOWFmLi5lODY0Yzg5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA1
LTIwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4g
SURCOiBQcm9wZXJseSBoYW5kbGUgYmxvYnMgaW4gV29ya2Vycy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzk0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vYmxvYi1zaW1wbGUtd29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS13b3JrZXJzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmxvYi1zaW1wbGUt
d29ya2Vycy5qczogQWRkZWQuCisgICAgICAgIAogMjAxNi0wNS0yMCAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUkVHUkVTU0lPTihy
MTg0ODk5KTogQXNjZW50IGFkanVzdG1lbnRzIGFyZSBhcHBsaWVkIHRvIHdlYiBmb250cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc2ltcGxl
LXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2Jsb2Itc2ltcGxlLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIyZTY0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmxvYi1zaW1wbGUtd29ya2Vycy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0OCBAQAorW1dvcmtlcl0gVGhpcyB0ZXN0cyBiYXNpYyBvcGVyYXRpb25zIHB1
dHRpbmcgYmxvYnMgaW50byBhbiBvYmplY3Qgc3RvcmUgYW5kIHRoZW4gcmV0cmlldmluZyB0aGVt
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcgd29ya2VyOiByZXNv
dXJjZXMvYmxvYi1zaW1wbGUtd29ya2Vycy5qcworW1dvcmtlcl0gaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CitbV29ya2VyXSAKK1tXb3JrZXJd
IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitbV29ya2VyXSBpbmRleGVkREIub3Bl
bihkYm5hbWUpCitbV29ya2VyXSBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAt
IDAgTmV3IHZlcnNpb24gLSAxCitbV29ya2VyXSBMZXQncyBjcmVhdGUgYSBibG9iIGFuZCBzdG9y
ZSBpdCBpbiBJbmRleGVkREIgdHdpY2UuCitbV29ya2VyXSBBZGRlZCBibG9iIHRvIGRhdGFiYXNl
IG9uY2UKK1tXb3JrZXJdIEFkZGVkIGJsb2IgdG8gZGF0YWJhc2UgdHdpY2UKK1tXb3JrZXJdIExl
dCdzIHJldHJpZXZlIHRoZSBibG9iIGFnYWluIGFuZCB2ZXJpZnkgdGhlIGNvbnRlbnRzIGlzIHRo
ZSBzYW1lLgorW1dvcmtlcl0gR290IGJsb2IgZnJvbSBkYXRhYmFzZQorW1dvcmtlcl0gQ29ycmVj
dCB0ZXh0OiB0cnVlCitbV29ya2VyXSBMZXQncyByZXRyaWV2ZSBpdCBhZ2FpbiwgY3JlYXRlIGFu
IG9iamVjdCBVUkwgZm9yIHRoZSBibG9iLCBsb2FkIGl0IHZpYSBhbiBYTUxIdHRwUmVxdWVzdCwg
YW5kIHZlcmlmeSB0aGUgY29udGVudHMgYXJlIHRoZSBzYW1lLgorW1dvcmtlcl0gR290IGJsb2Ig
ZnJvbSBkYXRhYmFzZQorW1dvcmtlcl0gQ29ycmVjdCByZXNwb25zZVRleHQ6IHRydWUKK1tXb3Jr
ZXJdIFJldHJpZXZlIGJvdGggYmxvYiBlbnRyaWVzIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB2ZXJp
ZnkgY29udGVudHMuCitbV29ya2VyXSBDb3JyZWN0IHRleHQgb24gZmlyc3QgdmFsdWU6IHRydWUK
K1tXb3JrZXJdIENvcnJlY3QgdGV4dCBvbiBzZWNvbmQgdmFsdWU6IHRydWUKK1tXb3JrZXJdIEdv
dCBpdGVtIGZyb20gY3Vyc29yCitbV29ya2VyXSBHb3QgaXRlbSBmcm9tIGN1cnNvcgorW1dvcmtl
cl0gRmluaXNoZWQgY3Vyc29yCitbV29ya2VyXSBHb3QgcmlnaHQgbnVtYmVyIG9mIGl0ZW1zOiB0
cnVlCitbV29ya2VyXSBDb3JyZWN0IHRleHQ6IHRydWUKK1tXb3JrZXJdIFJldHJpZXZlIGJsb2Jz
IGZyb20gZGF0YWJhc2UgdmlhIGluZGV4IGFuZCB2ZXJpZnkgY29udGVudHMuCitbV29ya2VyXSBH
b3QgYmxvYiBmcm9tIGRhdGFiYXNlCitbV29ya2VyXSBDb3JyZWN0IHRleHQ6IHRydWUKK1tXb3Jr
ZXJdIEdvdCBpdGVtIGZyb20gY3Vyc29yCitbV29ya2VyXSBHb3QgaXRlbSBmcm9tIGN1cnNvcgor
W1dvcmtlcl0gRmluaXNoZWQgY3Vyc29yCitbV29ya2VyXSBHb3QgcmlnaHQgbnVtYmVyIG9mIGl0
ZW1zOiB0cnVlCitbV29ya2VyXSBDb3JyZWN0IHRleHQ6IHRydWUKK1tXb3JrZXJdIENvcnJlY3Qg
dGV4dDogdHJ1ZQorW1dvcmtlcl0gU2xpY2UgdGhlIHRoZSByZXRyaWV2ZWQgYmxvYiBhbmQgdmVy
aWZ5IGl0cyBjb250ZW50cy4KK1tXb3JrZXJdIENvcnJlY3QgdGV4dDogdHJ1ZQorW1dvcmtlcl0g
U3RvcmUgYSBibG9iIGJhY2sgaW4gdGhlIGRhdGFiYXNlLCBhbmQga2VlcCBob2xkaW5nIG9uIHRv
IHRoZSBibG9iLCB2ZXJpZnlpbmcgdGhhdCBpdCBzdGlsbCBjYW4gYmUgcmVhZC4KK1tXb3JrZXJd
IEdvdCBibG9iIGZyb20gZGF0YWJhc2UKK1tXb3JrZXJdIFN0b3JlZCBibG9iIGJhY2sgaW50byBk
YXRhYmFzZQorW1dvcmtlcl0gQ29ycmVjdCB0ZXh0OiB0cnVlCitbV29ya2VyXSBDb3JyZWN0IHJl
c3BvbnNlVGV4dDogdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9ibG9iLXNpbXBsZS13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vYmxvYi1zaW1wbGUtd29ya2Vycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjMwYWEwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmxvYi1zaW1wbGUtd29ya2Vycy5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbmRleGVkREJXb3JrZXJz
RW5hYmxlZCh0cnVlKTsKK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvYmxvYi1zaW1w
bGUtd29ya2Vycy5qcycpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9ibG9iLXNpbXBs
ZS13b3JrZXJzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9ibG9iLXNpbXBsZS13b3JrZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmY4ZWZhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jsb2Itc2ltcGxlLXdvcmtlcnMuanMKQEAgLTAsMCAr
MSwyNzAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworLy8gT3JpZ2luYWwgaW1wbGVtZW50YXRp
b24gb2YgdGVzdCBmcm9tIE1vemlsbGE6IC4vZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYmxvYl9z
aW1wbGUuaHRtbAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYmFzaWMgb3BlcmF0aW9ucyBwdXR0
aW5nIGJsb2JzIGludG8gYW4gb2JqZWN0IHN0b3JlIGFuZCB0aGVuIHJldHJpZXZpbmcgdGhlbS4i
KTsKKworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UpOworCitmdW5jdGlvbiBkb25lKCkK
K3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7Cisg
ICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciB0ZXN0R2VuZXJhdG9yOworCitmdW5jdGlvbiBj
b250aW51ZVdpdGhFdmVudChldmVudCkKK3sKKyAgICB0ZXN0R2VuZXJhdG9yLm5leHQoZXZlbnQp
OworfQorCitmdW5jdGlvbiBhc3luY0NvbnRpbnVlKCkKK3sKKyAgICBzZXRUaW1lb3V0KCJ0ZXN0
R2VuZXJhdG9yLm5leHQoKTsiLCAwKTsKK30KKworZnVuY3Rpb24gaWRiUmVxdWVzdChyZXF1ZXN0
KQoreworICAgIHJlcXVlc3Qub25lcnJvciA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7Cit9CisKK3ZhciBkYjsKKworZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQoreworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lv
biAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgiZm9vIiwgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pLmNyZWF0ZUluZGV4KCJmb28iLCAiaW5kZXgiKTsKKyAgICBldmVudC50YXJnZXQub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RHZW5lcmF0b3IgPSB0ZXN0U3RlcHMoKTsK
KyAgICAgICAgdGVzdEdlbmVyYXRvci5uZXh0KCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gaXMo
YSwgYiwgbWVzc2FnZSkgeworICAgIHJlc3VsdCA9IGEgPT0gYiA/ICJ0cnVlIiA6ICJmYWxzZSI7
CisgICAgZGVidWcobWVzc2FnZSArICI6ICIgKyByZXN1bHQpOworfQorCitmdW5jdGlvbiogdGVz
dFN0ZXBzKCkKK3sKKyAgICBkZWJ1ZygiTGV0J3MgY3JlYXRlIGEgYmxvYiBhbmQgc3RvcmUgaXQg
aW4gSW5kZXhlZERCIHR3aWNlLiIpOworCisgICAgY29uc3QgQkxPQl9EQVRBID0gWyJmdW4gIiwg
InRpbWVzICIsICJhbGwgIiwgImFyb3VuZCEiXTsKKyAgICBjb25zdCBJTkRFWF9LRVkgPSA1Owor
ICAgIGxldCBibG9iID0gbmV3IEJsb2IoQkxPQl9EQVRBLCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9
KTsKKyAgICBsZXQgZGF0YSA9IHsgYmxvYjogYmxvYiwgaW5kZXg6IElOREVYX0tFWSB9OworCisg
ICAgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiZm9vIiwgInJlYWR3cml0ZSIpLm9iamVj
dFN0b3JlKCJmb28iKTsKKyAgICAKKyAgICBpZGJSZXF1ZXN0KG9iamVjdFN0b3JlLmFkZChkYXRh
KSk7CisgICAgZXZlbnQgPSB5aWVsZDsKKyAgICAKKyAgICBkZWJ1ZygiQWRkZWQgYmxvYiB0byBk
YXRhYmFzZSBvbmNlIik7CisKKyAgICBsZXQga2V5MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisK
KyAgICBpZGJSZXF1ZXN0KG9iamVjdFN0b3JlLmFkZChkYXRhKSk7CisgICAgZXZlbnQgPSB5aWVs
ZDsKKworICAgIGRlYnVnKCJBZGRlZCBibG9iIHRvIGRhdGFiYXNlIHR3aWNlIik7CisgICAgCisg
ICAgbGV0IGtleTIgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgZGVidWcoIkxldCdzIHJl
dHJpZXZlIHRoZSBibG9iIGFnYWluIGFuZCB2ZXJpZnkgdGhlIGNvbnRlbnRzIGlzIHRoZSBzYW1l
LiIpOworCisgICAgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiZm9vIikub2JqZWN0U3Rv
cmUoImZvbyIpOworICAgIGlkYlJlcXVlc3Qob2JqZWN0U3RvcmUuZ2V0KGtleTEpKTsKKyAgICBl
dmVudCA9IHlpZWxkOworCisgICAgZGVidWcoIkdvdCBibG9iIGZyb20gZGF0YWJhc2UiKTsKKyAg
ICAKKyAgICBsZXQgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgZmlsZVJlYWRl
ci5vbmxvYWQgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBmaWxlUmVhZGVyLnJlYWRBc1RleHQo
ZXZlbnQudGFyZ2V0LnJlc3VsdC5ibG9iKTsKKyAgICBldmVudCA9IHlpZWxkOworCisgICAgaXMo
ZXZlbnQudGFyZ2V0LnJlc3VsdCwgQkxPQl9EQVRBLmpvaW4oIiIpLCAiQ29ycmVjdCB0ZXh0Iik7
CisKKyAgICBkZWJ1ZygiTGV0J3MgcmV0cmlldmUgaXQgYWdhaW4sIGNyZWF0ZSBhbiBvYmplY3Qg
VVJMIGZvciB0aGUgYmxvYiwgbG9hZCBpdCB2aWEgYW4gWE1MSHR0cFJlcXVlc3QsIGFuZCB2ZXJp
ZnkgdGhlIGNvbnRlbnRzIGFyZSB0aGUgc2FtZS4iKTsKKyAgICAKKyAgICBvYmplY3RTdG9yZSA9
IGRiLnRyYW5zYWN0aW9uKCJmb28iKS5vYmplY3RTdG9yZSgiZm9vIik7CisgICAgaWRiUmVxdWVz
dChvYmplY3RTdG9yZS5nZXQoa2V5MSkpOworICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisgICAg
ZGVidWcoIkdvdCBibG9iIGZyb20gZGF0YWJhc2UiKTsKKyAgICAKKyAgICBsZXQgYmxvYlVSTCA9
IFVSTC5jcmVhdGVPYmplY3RVUkwoZXZlbnQudGFyZ2V0LnJlc3VsdC5ibG9iKTsKKyAgICAKKyAg
ICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIkdFVCIsIGJs
b2JVUkwpOworICAgIHhoci5vbmxvYWQgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICB4aHIuc2Vu
ZCgpOworICAgIHlpZWxkOworICAgIAorICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVSTCk7
ICAgIAorICAgIGlzKHhoci5yZXNwb25zZVRleHQsIEJMT0JfREFUQS5qb2luKCIiKSwgIkNvcnJl
Y3QgcmVzcG9uc2VUZXh0Iik7CisgICAgCisgICAgZGVidWcoIlJldHJpZXZlIGJvdGggYmxvYiBl
bnRyaWVzIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB2ZXJpZnkgY29udGVudHMuIik7CisKKyAgICB2
YXIgb2JqZWN0cyA9IFtdCisgICAgCisgICAgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigi
Zm9vIikub2JqZWN0U3RvcmUoImZvbyIpOworICAgIGlkYlJlcXVlc3Qob2JqZWN0U3RvcmUuZ2V0
KGtleTEpKTsKKyAgICBldmVudCA9IHlpZWxkOworICAgIAorICAgIG9iamVjdHMucHVzaChldmVu
dC50YXJnZXQucmVzdWx0KTsKKyAgICAKKyAgICBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9u
KCJmb28iKS5vYmplY3RTdG9yZSgiZm9vIik7CisgICAgaWRiUmVxdWVzdChvYmplY3RTdG9yZS5n
ZXQoa2V5MikpOworICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisgICAgb2JqZWN0cy5wdXNoKGV2
ZW50LnRhcmdldC5yZXN1bHQpOworICAgICAgICAKKyAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVS
ZWFkZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAg
IGZpbGVSZWFkZXIucmVhZEFzVGV4dChvYmplY3RzWzBdLmJsb2IpOworICAgIGV2ZW50ID0geWll
bGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0LCBCTE9CX0RBVEEuam9pbigiIiksICJD
b3JyZWN0IHRleHQgb24gZmlyc3QgdmFsdWUiKTsKKworICAgIGZpbGVSZWFkZXIgPSBuZXcgRmls
ZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25sb2FkID0gY29udGludWVXaXRoRXZlbnQ7Cisg
ICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KG9iamVjdHNbMV0uYmxvYik7CisgICAgZXZlbnQgPSB5
aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQsIEJMT0JfREFUQS5qb2luKCIiKSwg
IkNvcnJlY3QgdGV4dCBvbiBzZWNvbmQgdmFsdWUiKTsKKworICAgIGxldCBjdXJzb3JSZXN1bHRz
ID0gW107CisgICAgCisgICAgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiZm9vIikub2Jq
ZWN0U3RvcmUoImZvbyIpOworICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgbGV0IGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIGRlYnVnKCJHb3QgaXRlbSBmcm9tIGN1
cnNvciIpOworICAgICAgICBjdXJzb3JSZXN1bHRzLnB1c2goY3Vyc29yLnZhbHVlKTsKKyAgICAg
ICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZGVi
dWcoIkZpbmlzaGVkIGN1cnNvciIpOworICAgICAgICBhc3luY0NvbnRpbnVlKCk7CisgICAgICB9
CisgICAgfTsKKyAgICB5aWVsZDsKKworICAgIGlzKGN1cnNvclJlc3VsdHMubGVuZ3RoLCAyLCAi
R290IHJpZ2h0IG51bWJlciBvZiBpdGVtcyIpOworCisgICAgZmlsZVJlYWRlciA9IG5ldyBGaWxl
UmVhZGVyKCk7CisgICAgZmlsZVJlYWRlci5vbmxvYWQgPSBjb250aW51ZVdpdGhFdmVudDsKKyAg
ICBmaWxlUmVhZGVyLnJlYWRBc1RleHQoY3Vyc29yUmVzdWx0c1swXS5ibG9iKTsKKyAgICBldmVu
dCA9IHlpZWxkOworICAgIAorICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQsIEJMT0JfREFUQS5q
b2luKCIiKSwgIkNvcnJlY3QgdGV4dCIpOworCisgICAgZGVidWcoIlJldHJpZXZlIGJsb2JzIGZy
b20gZGF0YWJhc2UgdmlhIGluZGV4IGFuZCB2ZXJpZnkgY29udGVudHMuIik7CisgICAgCisgICAg
aW5kZXggPSBkYi50cmFuc2FjdGlvbigiZm9vIikub2JqZWN0U3RvcmUoImZvbyIpLmluZGV4KCJm
b28iKTsKKyAgICBpZGJSZXF1ZXN0KGluZGV4LmdldChJTkRFWF9LRVkpKTsgCisgICAgZXZlbnQg
PSB5aWVsZDsKKyAgICAKKyAgICBkZWJ1ZygiR290IGJsb2IgZnJvbSBkYXRhYmFzZSIpOworICAg
IAorICAgIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25s
b2FkID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGV2ZW50
LnRhcmdldC5yZXN1bHQuYmxvYik7CisgICAgZXZlbnQgPSB5aWVsZDsKKyAgICAKKyAgICBpcyhl
dmVudC50YXJnZXQucmVzdWx0LCBCTE9CX0RBVEEuam9pbigiIiksICJDb3JyZWN0IHRleHQiKTsK
KyAgICAgICAgCisgICAgY3Vyc29yUmVzdWx0cyA9IFtdOworICAgIAorICAgIGluZGV4ID0gZGIu
dHJhbnNhY3Rpb24oImZvbyIpLm9iamVjdFN0b3JlKCJmb28iKS5pbmRleCgiZm9vIik7CisgICAg
aW5kZXgub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICBs
ZXQgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgZGVidWcoIkdvdCBpdGVtIGZyb20gY3Vyc29yIik7CisgICAgICAgIGN1cnNvclJlc3Vs
dHMucHVzaChjdXJzb3IudmFsdWUpOworICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICBkZWJ1ZygiRmluaXNoZWQgY3Vyc29yIik7CisgICAg
ICAgIGFzeW5jQ29udGludWUoKTsKKyAgICAgIH0KKyAgICB9OworICAgIHlpZWxkOworICAgIAor
ICAgIGlzKGN1cnNvclJlc3VsdHMubGVuZ3RoLCAyLCAiR290IHJpZ2h0IG51bWJlciBvZiBpdGVt
cyIpOworICAgIAorICAgIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVS
ZWFkZXIub25sb2FkID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZmlsZVJlYWRlci5yZWFkQXNU
ZXh0KGN1cnNvclJlc3VsdHNbMF0uYmxvYik7CisgICAgZXZlbnQgPSB5aWVsZDsKKyAgICAKKyAg
ICBpcyhldmVudC50YXJnZXQucmVzdWx0LCBCTE9CX0RBVEEuam9pbigiIiksICJDb3JyZWN0IHRl
eHQiKTsKKyAgICAKKyAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICBmaWxl
UmVhZGVyLm9ubG9hZCA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGZpbGVSZWFkZXIucmVhZEFz
VGV4dChjdXJzb3JSZXN1bHRzWzFdLmJsb2IpOworICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisg
ICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCwgQkxPQl9EQVRBLmpvaW4oIiIpLCAiQ29ycmVjdCB0
ZXh0Iik7CisgICAgCisgICAgZGVidWcoIlNsaWNlIHRoZSB0aGUgcmV0cmlldmVkIGJsb2IgYW5k
IHZlcmlmeSBpdHMgY29udGVudHMuIik7CisgICAgCisgICAgbGV0IHNsaWNlID0gY3Vyc29yUmVz
dWx0c1sxXS5ibG9iLnNsaWNlKDAsIEJMT0JfREFUQVswXS5sZW5ndGgpOworICAgIAorICAgIGZp
bGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25sb2FkID0gY29u
dGludWVXaXRoRXZlbnQ7CisgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KHNsaWNlKTsKKyAgICBl
dmVudCA9IHlpZWxkOworICAgIAorICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQsIEJMT0JfREFU
QVswXSwgIkNvcnJlY3QgdGV4dCIpOworICAgIAorICAgIGRlYnVnKCJTdG9yZSBhIGJsb2IgYmFj
ayBpbiB0aGUgZGF0YWJhc2UsIGFuZCBrZWVwIGhvbGRpbmcgb24gdG8gdGhlICIgKworICAgICAg
ICAgImJsb2IsIHZlcmlmeWluZyB0aGF0IGl0IHN0aWxsIGNhbiBiZSByZWFkLiIpOworICAgIAor
ICAgIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oImZvbyIpLm9iamVjdFN0b3JlKCJmb28i
KTsKKyAgICBpZGJSZXF1ZXN0KG9iamVjdFN0b3JlLmdldChrZXkxKSk7IAorICAgIGV2ZW50ID0g
eWllbGQ7CisgICAgCisgICAgbGV0IGJsb2JGcm9tREIgPSBldmVudC50YXJnZXQucmVzdWx0LmJs
b2I7CisgICAgZGVidWcoIkdvdCBibG9iIGZyb20gZGF0YWJhc2UiKTsKKyAgICAKKyAgICBsZXQg
dHhuID0gZGIudHJhbnNhY3Rpb24oImZvbyIsICJyZWFkd3JpdGUiKTsKKyAgICB0eG4ub2JqZWN0
U3RvcmUoImZvbyIpLnB1dChldmVudC50YXJnZXQucmVzdWx0LCBrZXkxKTsKKyAgICB0eG4ub25j
b21wbGV0ZSA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisg
ICAgZGVidWcoIlN0b3JlZCBibG9iIGJhY2sgaW50byBkYXRhYmFzZSIpOworICAgIAorICAgIGZp
bGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25sb2FkID0gY29u
dGludWVXaXRoRXZlbnQ7CisgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGJsb2JGcm9tREIpOwor
ICAgIGV2ZW50ID0geWllbGQ7CisgICAgCisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCwgQkxP
Ql9EQVRBLmpvaW4oIiIpLCAiQ29ycmVjdCB0ZXh0Iik7CisgICAgCisgICAgYmxvYlVSTCA9IFVS
TC5jcmVhdGVPYmplY3RVUkwoYmxvYkZyb21EQik7CisgICAgCisgICAgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIkdFVCIsIGJsb2JVUkwpOworICAgIHhoci5vbmxv
YWQgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICB4aHIuc2VuZCgpOworICAgIHlpZWxkOworICAg
IAorICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVSTCk7CisgICAgCisgICAgaXMoeGhyLnJl
c3BvbnNlVGV4dCwgQkxPQl9EQVRBLmpvaW4oIiIpLCAiQ29ycmVjdCByZXNwb25zZVRleHQiKTsK
KyAgICAKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyB9CisgClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGE5OGVjOWUuLjk0NmE1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNyBAQAorMjAxNi0wNS0yMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW9kZXJuIElEQjogUHJvcGVybHkgaGFuZGxlIGJsb2JzIGluIFdvcmtlcnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc5NDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRlc3Q6IHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS13b3JrZXJzLmh0bWwKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKTogVXNlIHdyaXRlQmxvYnNUb0Rp
c2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5IGZyb20KKyAgICAgICAgICBiYWNrZ3JvdW5kIHRo
cmVhZHMgaW5zdGVhZCBvZiB0aGUgYXN5bmNocm9ub3VzIGZvcm0uCisgICAgICAgIAorICAgICAg
ICBBZGQgYWJpbGl0eSB0byBzZXQgYW4gZXhpc3RpbmcgZW1wdHkgSURCVmFsdWUgdG8gYmUgYW4g
aXNvbGF0ZWQgY29weSBvZiBhIGRpZmZlcmVudCBJREJWYWx1ZToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWYWx1ZTo6c2V0
QXNJc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmFsdWU6Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaDoKKyAgICAgICAgCisg
ICAgICAgIEFkZCBhIG1ldGhvZCAtIG9ubHkgdG8gYmUgY2FsbGVkIGZyb20gYSBub24tbWFpbiB0
aHJlYWQgLSB0aGF0IHN5bmNocm9ub3VzbHkgd3JpdGVzIGJsb2JzIHRvIGRpc2s6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oOgorICAgICAgICAKIDIwMTYtMDUtMjAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjE4NDg5OSk6IEFzY2Vu
dCBhZGp1c3RtZW50cyBhcmUgYXBwbGllZCB0byB3ZWIgZm9udHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBlZjRjZWQw
Li5iZjRlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCkBAIC05MzgsNyArOTM4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwKIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBSZWZQdHI8SURCS2V5PiBrZXksIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0
b3JlT3ZlcndyaXRlTW9kZSYgb3ZlcndyaXRlTW9kZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAgICAgQVNTRVJUKCFpc1JlYWRPbmx5
KCkpOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKQEAgLTk0Nyw5ICs5NDcsMzAgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIER1ZSB0byBj
dXJyZW50IGxpbWl0YXRpb25zIG9uIG91ciBhYmlsaXR5IHRvIHBvc3QgdGFza3MgYmFjayB0byBh
IHdvcmtlciB0aHJlYWQsCisgICAgLy8gd29ya2VycyBjdXJyZW50bHkgd3JpdGUgYmxvYnMgdG8g
ZGlzayBzeW5jaHJvbm91c2x5LgorICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTU4IC0gTWFrZSB0aGlzIGFzeW5jaHJvbm91cyBhZnRlciBy
ZWZhY3RvcmluZyBhbGxvd3MgaXQuCisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICBhdXRvIGlkYlZhbHVlID0gdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5j
aHJvbm91c2x5KCk7CisgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKQorICAgICAg
ICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkucHV0T3JBZGQob3BlcmF0aW9uLCBr
ZXkuZ2V0KCksIGlkYlZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBJZiB0aGUgSURCVmFsdWUgZG9lc24ndCBoYXZlIGFueSBkYXRhLCB0aGVuIHNv
bWV0aGluZyB3ZW50IHdyb25nIHdyaXRpbmcgdGhlIGJsb2JzIHRvIGRpc2suCisgICAgICAgICAg
ICAvLyBJbiB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNv
cmQsIHNvIHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCisgICAgICAgICAgICBSZWZQdHI8SURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkT3BlcmF0aW9uKCZvcGVyYXRp
b24pOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihvcGVy
YXRpb24uaWRlbnRpZmllcigpLCB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiRXJyb3IgcHJlcGFyaW5nIEJsb2IvRmlsZSBkYXRhIHRvIGJlIHN0b3Jl
ZCBpbiBvYmplY3Qgc3RvcmUiKSB9KTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZE9wZXJhdGlvbiwgcmVzdWx0XShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgeworICAgICAgICAgICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+Y29tcGxl
dGVkKHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRP
cGVyYXRpb24oJm9wZXJhdGlvbik7CiAgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRl
eGVkREIoW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiwga2V5LCB2YWx1
ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSB7CisgICAgICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7
CiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5wdXRPckFkZCgqcHJv
dGVjdGVkT3BlcmF0aW9uLCBrZXkuZ2V0KCksIGlkYlZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZhbHVlLmNwcAppbmRleCA5ZjcwZTQwLi42ZWExYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgi
CiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTY5LDE5ICs3MCwxOSBAQCBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYgogewogfQogCi1J
REJWYWx1ZSBJREJWYWx1ZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3ZvaWQgSURCVmFsdWU6OnNl
dEFzSXNvbGF0ZWRDb3B5KGNvbnN0IElEQlZhbHVlJiBvdGhlcikKIHsKLSAgICBJREJWYWx1ZSBy
ZXN1bHQ7Ci0gICAgcmVzdWx0Lm1fZGF0YSA9IG1fZGF0YTsKKyAgICBBU1NFUlQobV9ibG9iVVJM
cy5pc0VtcHR5KCkgJiYgbV9ibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSk7CiAKLSAgICByZXN1bHQu
bV9ibG9iVVJMcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYmxvYlVSTHMuc2l6ZSgpKTsKLSAg
ICBmb3IgKGF1dG8mIHVybCA6IG1fYmxvYlVSTHMpCi0gICAgICAgIHJlc3VsdC5tX2Jsb2JVUkxz
LnVuY2hlY2tlZEFwcGVuZCh1cmwuaXNvbGF0ZWRDb3B5KCkpOwotCi0gICAgcmVzdWx0Lm1fYmxv
YkZpbGVQYXRocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYmxvYkZpbGVQYXRocy5zaXplKCkp
OwotICAgIGZvciAoYXV0byYgcGF0aCA6IG1fYmxvYkZpbGVQYXRocykKLSAgICAgICAgcmVzdWx0
Lm1fYmxvYkZpbGVQYXRocy51bmNoZWNrZWRBcHBlbmQocGF0aC5pc29sYXRlZENvcHkoKSk7Cisg
ICAgbV9kYXRhID0gb3RoZXIubV9kYXRhOworICAgIG1fYmxvYlVSTHMgPSBDcm9zc1RocmVhZENv
cGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkob3RoZXIubV9ibG9iVVJMcyk7CisgICAgbV9ibG9i
RmlsZVBhdGhzID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KG90aGVy
Lm1fYmxvYkZpbGVQYXRocyk7Cit9CiAKK0lEQlZhbHVlIElEQlZhbHVlOjppc29sYXRlZENvcHko
KSBjb25zdAoreworICAgIElEQlZhbHVlIHJlc3VsdDsKKyAgICByZXN1bHQuc2V0QXNJc29sYXRl
ZENvcHkoKnRoaXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCmluZGV4IDQzZWM0ZTQuLjJiMmNmYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaApAQCAtNDIsNiArNDIs
NyBAQCBwdWJsaWM6CiAgICAgSURCVmFsdWUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImLCBW
ZWN0b3I8U3RyaW5nPiYmIGJsb2JVUkxzLCBWZWN0b3I8U3RyaW5nPiYmIGJsb2JGaWxlUGF0aHMp
OwogICAgIElEQlZhbHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocyk7
CiAKKyAgICB2b2lkIHNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IElEQlZhbHVlJik7CiAgICAgSURC
VmFsdWUgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZTkwYTJk
Yy4uZGM1ODE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSA8cnVudGlt
ZS9UeXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTI4MTYsNiArMjgxNywzMyBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7ICp0
aGlzLCBtX2Jsb2JVUkxzLCBibG9iRmlsZVBhdGhzIH0pOwogICAgIH0pOwogfQorCitJREJWYWx1
ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5j
aHJvbm91c2x5KCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIElEQlZh
bHVlIHZhbHVlOworICAgIElEQlZhbHVlKiB2YWx1ZVB0ciA9ICZ2YWx1ZTsKKworICAgIExvY2sg
bG9jazsKKyAgICBDb25kaXRpb24gY29uZGl0aW9uOworICAgIENvbmRpdGlvbiogY29uZGl0aW9u
UHRyID0gJmNvbmRpdGlvbjsKKyAgICBsb2NrLmxvY2soKTsKKworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgY29uZGl0aW9uUHRyLCB2YWx1ZVB0cl0geworICAgICAgICB3cml0
ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtjb25kaXRpb25QdHIsIHZhbHVlUHRyXShjb25zdCBJ
REJWYWx1ZSYgcmVzdWx0KSB7CisgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgICAgICAgICAgdmFsdWVQdHItPnNldEFzSXNvbGF0ZWRDb3B5KHJlc3VsdCk7CisKKyAgICAg
ICAgICAgIGNvbmRpdGlvblB0ci0+bm90aWZ5QWxsKCk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgY29uZGl0aW9uLndhaXQobG9jayk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCBkNGI4OGJjLi43Yzc1NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtODcsNiArODcsNyBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxv
YlVSTHNJc29sYXRlZENvcHkoKSBjb25zdDsKICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJ
bmRleGVkREIoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgSURCVmFsdWUgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNo
cm9ub3VzbHkoKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogICAgIHN0
YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>