<?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>170008</bug_id>
          
          <creation_ts>2017-03-23 07:52:04 -0700</creation_ts>
          <short_desc>[Readable Streams API] Implement cloneArrayBuffer in WebCore</short_desc>
          <delta_ts>2017-04-13 09:40:30 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Romain Bellessort">romain.wkt</reporter>
          <assigned_to name="Romain Bellessort">romain.wkt</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>nael.ouedp</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1290442</commentid>
    <comment_count>0</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-03-23 07:52:04 -0700</bug_when>
    <thetext>Readable Streams API requires implementing cloneArrayBuffer operation. structuredCloneArrayBuffer, which is already implemented in WebCore, already provides support for cloning a full ArrayBuffer, while cloneArrayBuffer allows cloning a part of a given buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290448</commentid>
    <comment_count>1</comment_count>
      <attachid>305195</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-03-23 08:09:29 -0700</bug_when>
    <thetext>Created attachment 305195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290484</commentid>
    <comment_count>2</comment_count>
      <attachid>305201</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-03-23 09:46:35 -0700</bug_when>
    <thetext>Created attachment 305201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290807</commentid>
    <comment_count>3</comment_count>
      <attachid>305201</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-24 08:39:53 -0700</bug_when>
    <thetext>Comment on attachment 305201
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        once ReadableStreamBYOBReader is implemented.

You might be able to test it by adding an Internals routine that allows calling cloneArrayBuffer.
This has been done for isReadableStreamDisturbed for instance.

&gt; Source/WebCore/bindings/js/StructuredClone.cpp:40
&gt; +EncodedJSValue JSC_HOST_CALL cloneArrayBufferImpl(ExecState* state, bool isPartialClone)

In general, we are trying to avoid bool parameters like this. It is not always easy to understand the meaning of it.
Here, it is probably ok since all functions are grouped together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291457</commentid>
    <comment_count>4</comment_count>
      <attachid>305465</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-03-27 07:04:52 -0700</bug_when>
    <thetext>Created attachment 305465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291469</commentid>
    <comment_count>5</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-03-27 08:28:21 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 305201 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305201&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        once ReadableStreamBYOBReader is implemented.
&gt; 
&gt; You might be able to test it by adding an Internals routine that allows
&gt; calling cloneArrayBuffer.
&gt; This has been done for isReadableStreamDisturbed for instance.

Thanks, I was not aware this was feasible. The new patch implements such testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292454</commentid>
    <comment_count>6</comment_count>
      <attachid>305465</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-29 10:08:43 -0700</bug_when>
    <thetext>Comment on attachment 305465
Patch

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

&gt; Source/WebCore/bindings/js/StructuredClone.cpp:64
&gt; +    return cloneArrayBufferImpl(state, true);

It is not always clear/readable what boolean parameters mean. Here I guess this is ok as is, although you could also have used a class enum .

&gt; LayoutTests/streams/readable-stream-byob-request.js:246
&gt; +    const CloneArrayBuffer = internals.cloneArrayBuffer.bind(internals);

Why not testing it in Worker since @cloneArrayBuffer is available in worker global object as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292785</commentid>
    <comment_count>7</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-03-30 08:16:07 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; Comment on attachment 305465 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305465&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/StructuredClone.cpp:64
&gt; &gt; +    return cloneArrayBufferImpl(state, true);
&gt; 
&gt; It is not always clear/readable what boolean parameters mean. Here I guess
&gt; this is ok as is, although you could also have used a class enum .
&gt; 
&gt; &gt; LayoutTests/streams/readable-stream-byob-request.js:246
&gt; &gt; +    const CloneArrayBuffer = internals.cloneArrayBuffer.bind(internals);
&gt; 
&gt; Why not testing it in Worker since @cloneArrayBuffer is available in worker
&gt; global object as well.

I disabled the test when running a worker as the reference to &quot;internals&quot; throws a ReferenceError (Can&apos;t find variable: internals) in this case. Have I missed something here that enables avoiding this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292819</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-30 09:51:32 -0700</bug_when>
    <thetext>&gt; I disabled the test when running a worker as the reference to &quot;internals&quot;
&gt; throws a ReferenceError (Can&apos;t find variable: internals) in this case. Have
&gt; I missed something here that enables avoiding this issue?

Ah right, I guess this is good enough although it would be good to add infra support for worker internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293148</commentid>
    <comment_count>9</comment_count>
      <attachid>305465</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-31 03:37:09 -0700</bug_when>
    <thetext>Comment on attachment 305465
Patch

Clearing flags on attachment: 305465

Committed r214663: &lt;http://trac.webkit.org/changeset/214663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293149</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-31 03:37:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293444</commentid>
    <comment_count>11</comment_count>
      <attachid>306043</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-04-01 00:43:12 -0700</bug_when>
    <thetext>Created attachment 306043
memory corruption

This introduced heap-use-after-free memory corruption, see attached ASan report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293445</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-04-01 00:47:54 -0700</bug_when>
    <thetext>Rolled back in r214713.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296014</commentid>
    <comment_count>13</comment_count>
      <attachid>306695</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-04-10 09:50:15 -0700</bug_when>
    <thetext>Created attachment 306695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296036</commentid>
    <comment_count>14</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-04-10 10:29:08 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #11)
&gt; Created attachment 306043 [details]
&gt; memory corruption
&gt; 
&gt; This introduced heap-use-after-free memory corruption, see attached ASan
&gt; report.

I&apos;ve fixed the memory corruption by making two different calls depending on whether a partial or a full clone is requested (previously I had factorized the code, but this was the reason for the memory issue). Also, as suggested in a previous comment, I replaced the boolean parameter by an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296076</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-04-10 11:08:30 -0700</bug_when>
    <thetext>(In reply to Romain Bellessort from comment #14)
&gt; (In reply to Alexey Proskuryakov from comment #11)
&gt; &gt; Created attachment 306043 [details]
&gt; &gt; memory corruption
&gt; &gt; 
&gt; &gt; This introduced heap-use-after-free memory corruption, see attached ASan
&gt; &gt; report.
&gt; 
&gt; I&apos;ve fixed the memory corruption by making two different calls depending on
&gt; whether a partial or a full clone is requested (previously I had factorized
&gt; the code, but this was the reason for the memory issue). Also, as suggested
&gt; in a previous comment, I replaced the boolean parameter by an enum.

LGTM.
Maybe you should split the added test in its own file.
This test will remain webkit specific while the other ones might move/be superseeded to web-platform-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296317</commentid>
    <comment_count>16</comment_count>
      <attachid>306786</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-04-11 01:29:34 -0700</bug_when>
    <thetext>Created attachment 306786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296334</commentid>
    <comment_count>17</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2017-04-11 02:58:35 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #15)
&gt; (In reply to Romain Bellessort from comment #14)
&gt; &gt; (In reply to Alexey Proskuryakov from comment #11)
&gt; &gt; &gt; Created attachment 306043 [details]
&gt; &gt; &gt; memory corruption
&gt; &gt; &gt; 
&gt; &gt; &gt; This introduced heap-use-after-free memory corruption, see attached ASan
&gt; &gt; &gt; report.
&gt; &gt; 
&gt; &gt; I&apos;ve fixed the memory corruption by making two different calls depending on
&gt; &gt; whether a partial or a full clone is requested (previously I had factorized
&gt; &gt; the code, but this was the reason for the memory issue). Also, as suggested
&gt; &gt; in a previous comment, I replaced the boolean parameter by an enum.
&gt; 
&gt; LGTM.
&gt; Maybe you should split the added test in its own file.
&gt; This test will remain webkit specific while the other ones might move/be
&gt; superseeded to web-platform-tests

I just did that in the new patch, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297010</commentid>
    <comment_count>18</comment_count>
      <attachid>306786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-13 09:40:28 -0700</bug_when>
    <thetext>Comment on attachment 306786
Patch

Clearing flags on attachment: 306786

Committed r215322: &lt;http://trac.webkit.org/changeset/215322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297012</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-13 09:40:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305195</attachid>
            <date>2017-03-23 08:09:29 -0700</date>
            <delta_ts>2017-03-23 09:46:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170008-20170323160928.patch</filename>
            <type>text/plain</type>
            <size>6990</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBmYjBlMTE0NmQ1NGE1
ZTE0MTBkYWYwYzAyNDY5YzhjYTNiZDcwOS4uM2FmNWNiZmY1Yzc1MzY5ZTJmNTI2YjI5ZTZjYjdi
ZjM2MGMwMTZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAzLTIzICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBjbG9uZUFycmF5QnVmZmVyIGluIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDAwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGVkIGNsb25lQXJyYXlCdWZmZXIgYmFzZWQgb24gZXhpc3Rpbmcgc3RydWN0dXJlZENs
b25lQXJyYXlCdWZmZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBjb2RlIGhhcyBiZWVu
IGZhY3Rvcml6ZWQgc28gdGhhdCBib3RoIGNsb25lQXJyYXlCdWZmZXIKKyAgICAgICAgYW5kIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyIHJlbHkgb24gdGhlIHNhbWUgY29kZSAod2hpY2ggaXMg
YmFzaWNhbGx5CisgICAgICAgIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlciArIHRoZSBhYmlsaXR5CisgICAgICAgIHRvIGNsb25lIG9ubHkg
YSBwYXJ0IG9mIGNvbnNpZGVyZWQgYnVmZmVyKS4KKworICAgICAgICBObyBuZXcgdGVzdCBhcyBj
bG9uZUFycmF5QnVmZmVyIGNhbiBiZSBjYWxsZWQgaW4gUmVhZGFibGUgU3RyZWFtcyBvbmx5Cisg
ICAgICAgIG9uY2UgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGlzIGltcGxlbWVudGVkLgorCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qczog
RGVsZXRlZCBjbG9uZUFycmF5QnVmZmVyIEpTIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0OjphZGRCdWlsdGluR2xvYmFscyk6IEFkZCBjbG9uZUFycmF5QnVmZmVyIHBy
aXZhdGUgZGVjbGFyYXRpb24uCisgICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb25lQXJyYXlCdWZmZXJJbXBsKTogQWRkZWQgKG1v
c3RseSBiYXNlZCBvbiBwcmV2aW91cyBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcikuCisgICAg
ICAgIChXZWJDb3JlOjpjbG9uZUFycmF5QnVmZmVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcik6IFVwZGF0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvU3RydWN0dXJlZENsb25lLmg6IEFkZGVkIGNsb25lQXJyYXlCdWZmZXIgZGVjbGFyYXRp
b24uCisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCBj
bG9uZUFycmF5QnVmZmVyIGRlY2xhcmF0aW9uLgorCiAyMDE3LTAzLTIyICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBMZXQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IHRyYWNrIHdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgYWN0aXZlIG9yIGluYWN0aXZlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVT
dHJlYW1JbnRlcm5hbHMuanMKaW5kZXggM2E3NTVkOGY4ZDk4ZGM4NTZkMmJjNjkxNDliNWJmNjlk
OGZmYTg5ZS4uZDE2NGE2NTc3OGEwZmIzNGRkZmU5ZGRiYjY0NDJkN2Y0N2Y2M2RmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVC
eXRlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0zNzgsMTcgKzM3OCw2IEBAIGZ1bmN0aW9uIHJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJSZXNwb25kSW50ZXJuYWwoY29udHJvbGxlciwgYnl0ZXNX
cml0dGVuKQogICAgIH0KIH0KIAotZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihzcmNCdWZmZXIs
IHNyY0J5dGVPZmZzZXQsIHNyY0xlbmd0aCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICAv
LyBGSVhNRTogQmVsb3cgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgZGF0
YSBidXQgZG9lcyBub3QgcGVyZm9ybQotICAgIC8vIGV4YWN0bHkgd2hhdCBpcyBkZXNjcmliZWQg
YnkgRUNNQVNjcmlwdCBDbG9uZUFycmF5QnVmZmVyIG9wZXJhdGlvbi4gVGhpcyBzaG91bGQKLSAg
ICAvLyBiZSBmaXhlZCBpbiBhIGZvbGxvdyB1cCBwYXRjaCBpbXBsZW1lbnRpbmcgY2xvbmVBcnJh
eUJ1ZmZlciBpbiBKU0MgKHNpbWlsYXJseSB0bwotICAgIC8vIHN0cnVjdHVyZWRDbG9uZUFycmF5
QnVmZmVyIGltcGxlbWVudGF0aW9uKS4KLSAgICByZXR1cm4gc3JjQnVmZmVyLnNsaWNlKHNyY0J5
dGVPZmZzZXQsIHNyY0J5dGVPZmZzZXQgKyBzcmNMZW5ndGgpOwotfQotCiBmdW5jdGlvbiByZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUmVzcG9uZEluUmVhZGFibGVTdGF0ZShjb250cm9sbGVy
LCBieXRlc1dyaXR0ZW4sIHB1bGxJbnRvRGVzY3JpcHRvcikKIHsKICAgICAidXNlIHN0cmljdCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggYmQxYmMwNjMzNmY3ODgxYzdlMmMyZDVmZGMyYzBmNmQwYzM3YmUzOC4uNGQxODRjNzNh
MjAzOTY1MGFhN2NmMDg5YzQ4ZGE3YzhhOTYxNGM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMTQyLDYgKzE0Miw4IEBAIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKFZNJiB2bSkKICAgICAgICAg
ICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VUaGlzVHlw
ZUVycm9yRm9yQnVpbHRpbnMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBKU0RP
TUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVz
KCkubWFrZUdldHRlclR5cGVFcnJvclByaXZhdGVOYW1lKCksCiAgICAgICAgICAgICBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBtYWtlR2V0dGVyVHlwZUVycm9yRm9y
QnVpbHRpbnMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBKU0RPTUdsb2JhbE9i
amVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuY2xvbmVB
cnJheUJ1ZmZlclByaXZhdGVOYW1lKCksCisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDMsIFN0cmluZygpLCBjbG9uZUFycmF5QnVmZmVyKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhj
bGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyUHJpdmF0
ZU5hbWUoKSwKICAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3Ry
aW5nKCksIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnRE
YXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlld1ByaXZhdGVO
YW1lKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNw
cAppbmRleCA0ODY5YWMwZGY3MjNjNmIwMWUzN2YxYjEwZDNlNmYyM2UzMzQ4YmNmLi43MDEzZGYz
ZGY0OGMzM2E1YzRmMjMwNjAxMzA1ZDc1NzA1YmI4OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXJJbXBsKEV4ZWNT
dGF0ZSogc3RhdGUsIGJvb2wgaXNQYXJ0aWFsQ2xvbmUpCiB7CiAgICAgQVNTRVJUKHN0YXRlKTsK
ICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CkBAIC00OCw5ICs0OCwyNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4
ZWNTdGF0ZSogc3RhdGUpCiAgICAgICAgIHRocm93RGF0YUNsb25lRXJyb3IoKnN0YXRlLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQorICAgIGlmIChpc1BhcnRpYWxDbG9uZSkg
eworICAgICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA9PSAzKTsKKyAgICAgICAg
aW50IHNyY0J5dGVPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgxKS50b051bWJlcihzdGF0ZSkpOworICAgICAgICBpbnQgc3JjTGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8aW50PihzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9OdW1iZXIoc3RhdGUpKTsK
KyAgICAgICAgYnVmZmVyID0gYnVmZmVyLT5zbGljZShzcmNCeXRlT2Zmc2V0LCBzcmNCeXRlT2Zm
c2V0ICsgc3JjTGVuZ3RoKS5nZXQoKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0FycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUtPnZtKCksIHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5
dGVMZW5ndGgoKSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFy
cmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZm
ZXJJbXBsKHN0YXRlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVy
biBjbG9uZUFycmF5QnVmZmVySW1wbChzdGF0ZSwgZmFsc2UpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyhFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEFTU0VSVChzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1N0cnVjdHVyZWRDbG9uZS5oCmluZGV4IGVhNmQwMWI2OTQwZTBmNjViZWMxN2FhN2RkNDA2
YjgwOTUzZGRlODcuLmE2ZTRmODMwNjMzZWFjODM2ZjAyODkxNjc5YThiNWIzZGEwYmY3MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCkBAIC0zMSw2
ICszMSw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9u
ZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEpTQzo6RXhlY1N0YXRlKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aAppbmRleCAyNWQyZTQ3YjZhYmE4YzBlMjQ5OWJmYzA5ZTVkMzMzYmJjNTFkNzNjLi4zOWJhYTQ3
YzQxM2NiNmQ5ODE5OWFmZGE4M2UwZjQ2ZDljYmE5OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0zOSw2ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhib2R5KSBcCiAgICAgbWFjcm8oYnlvYlJlcXVl
c3QpIFwKICAgICBtYWNybyhjYW5jZWwpIFwKKyAgICBtYWNybyhjbG9uZUFycmF5QnVmZmVyKSBc
CiAgICAgbWFjcm8oY2xvbmVGb3JKUykgXAogICAgIG1hY3JvKGNsb3NlUmVxdWVzdGVkKSBcCiAg
ICAgbWFjcm8oY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305201</attachid>
            <date>2017-03-23 09:46:35 -0700</date>
            <delta_ts>2017-03-27 07:04:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170008-20170323174633.patch</filename>
            <type>text/plain</type>
            <size>7062</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBmYjBlMTE0NmQ1NGE1
ZTE0MTBkYWYwYzAyNDY5YzhjYTNiZDcwOS4uM2FmNWNiZmY1Yzc1MzY5ZTJmNTI2YjI5ZTZjYjdi
ZjM2MGMwMTZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAzLTIzICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBjbG9uZUFycmF5QnVmZmVyIGluIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDAwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGVkIGNsb25lQXJyYXlCdWZmZXIgYmFzZWQgb24gZXhpc3Rpbmcgc3RydWN0dXJlZENs
b25lQXJyYXlCdWZmZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBjb2RlIGhhcyBiZWVu
IGZhY3Rvcml6ZWQgc28gdGhhdCBib3RoIGNsb25lQXJyYXlCdWZmZXIKKyAgICAgICAgYW5kIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyIHJlbHkgb24gdGhlIHNhbWUgY29kZSAod2hpY2ggaXMg
YmFzaWNhbGx5CisgICAgICAgIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlciArIHRoZSBhYmlsaXR5CisgICAgICAgIHRvIGNsb25lIG9ubHkg
YSBwYXJ0IG9mIGNvbnNpZGVyZWQgYnVmZmVyKS4KKworICAgICAgICBObyBuZXcgdGVzdCBhcyBj
bG9uZUFycmF5QnVmZmVyIGNhbiBiZSBjYWxsZWQgaW4gUmVhZGFibGUgU3RyZWFtcyBvbmx5Cisg
ICAgICAgIG9uY2UgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGlzIGltcGxlbWVudGVkLgorCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qczog
RGVsZXRlZCBjbG9uZUFycmF5QnVmZmVyIEpTIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0OjphZGRCdWlsdGluR2xvYmFscyk6IEFkZCBjbG9uZUFycmF5QnVmZmVyIHBy
aXZhdGUgZGVjbGFyYXRpb24uCisgICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb25lQXJyYXlCdWZmZXJJbXBsKTogQWRkZWQgKG1v
c3RseSBiYXNlZCBvbiBwcmV2aW91cyBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcikuCisgICAg
ICAgIChXZWJDb3JlOjpjbG9uZUFycmF5QnVmZmVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcik6IFVwZGF0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvU3RydWN0dXJlZENsb25lLmg6IEFkZGVkIGNsb25lQXJyYXlCdWZmZXIgZGVjbGFyYXRp
b24uCisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCBj
bG9uZUFycmF5QnVmZmVyIGRlY2xhcmF0aW9uLgorCiAyMDE3LTAzLTIyICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBMZXQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IHRyYWNrIHdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgYWN0aXZlIG9yIGluYWN0aXZlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVT
dHJlYW1JbnRlcm5hbHMuanMKaW5kZXggM2E3NTVkOGY4ZDk4ZGM4NTZkMmJjNjkxNDliNWJmNjlk
OGZmYTg5ZS4uZDE2NGE2NTc3OGEwZmIzNGRkZmU5ZGRiYjY0NDJkN2Y0N2Y2M2RmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVC
eXRlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0zNzgsMTcgKzM3OCw2IEBAIGZ1bmN0aW9uIHJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJSZXNwb25kSW50ZXJuYWwoY29udHJvbGxlciwgYnl0ZXNX
cml0dGVuKQogICAgIH0KIH0KIAotZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihzcmNCdWZmZXIs
IHNyY0J5dGVPZmZzZXQsIHNyY0xlbmd0aCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICAv
LyBGSVhNRTogQmVsb3cgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgZGF0
YSBidXQgZG9lcyBub3QgcGVyZm9ybQotICAgIC8vIGV4YWN0bHkgd2hhdCBpcyBkZXNjcmliZWQg
YnkgRUNNQVNjcmlwdCBDbG9uZUFycmF5QnVmZmVyIG9wZXJhdGlvbi4gVGhpcyBzaG91bGQKLSAg
ICAvLyBiZSBmaXhlZCBpbiBhIGZvbGxvdyB1cCBwYXRjaCBpbXBsZW1lbnRpbmcgY2xvbmVBcnJh
eUJ1ZmZlciBpbiBKU0MgKHNpbWlsYXJseSB0bwotICAgIC8vIHN0cnVjdHVyZWRDbG9uZUFycmF5
QnVmZmVyIGltcGxlbWVudGF0aW9uKS4KLSAgICByZXR1cm4gc3JjQnVmZmVyLnNsaWNlKHNyY0J5
dGVPZmZzZXQsIHNyY0J5dGVPZmZzZXQgKyBzcmNMZW5ndGgpOwotfQotCiBmdW5jdGlvbiByZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUmVzcG9uZEluUmVhZGFibGVTdGF0ZShjb250cm9sbGVy
LCBieXRlc1dyaXR0ZW4sIHB1bGxJbnRvRGVzY3JpcHRvcikKIHsKICAgICAidXNlIHN0cmljdCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggYmQxYmMwNjMzNmY3ODgxYzdlMmMyZDVmZGMyYzBmNmQwYzM3YmUzOC4uNGQxODRjNzNh
MjAzOTY1MGFhN2NmMDg5YzQ4ZGE3YzhhOTYxNGM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMTQyLDYgKzE0Miw4IEBAIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKFZNJiB2bSkKICAgICAgICAg
ICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VUaGlzVHlw
ZUVycm9yRm9yQnVpbHRpbnMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBKU0RP
TUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVz
KCkubWFrZUdldHRlclR5cGVFcnJvclByaXZhdGVOYW1lKCksCiAgICAgICAgICAgICBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBtYWtlR2V0dGVyVHlwZUVycm9yRm9y
QnVpbHRpbnMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBKU0RPTUdsb2JhbE9i
amVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuY2xvbmVB
cnJheUJ1ZmZlclByaXZhdGVOYW1lKCksCisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDMsIFN0cmluZygpLCBjbG9uZUFycmF5QnVmZmVyKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhj
bGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyUHJpdmF0
ZU5hbWUoKSwKICAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3Ry
aW5nKCksIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnRE
YXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlld1ByaXZhdGVO
YW1lKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNw
cAppbmRleCA0ODY5YWMwZGY3MjNjNmIwMWUzN2YxYjEwZDNlNmYyM2UzMzQ4YmNmLi44NmFmMjVi
MWE1OWFiNGE0MWY4MzMxOGI4NTY5OTkwNTRkMzY0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTM1LDcgKzM1LDkgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXJJbXBsKEV4ZWNT
dGF0ZSosIGJvb2wpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlC
dWZmZXJJbXBsKEV4ZWNTdGF0ZSogc3RhdGUsIGJvb2wgaXNQYXJ0aWFsQ2xvbmUpCiB7CiAgICAg
QVNTRVJUKHN0YXRlKTsKICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CkBAIC00
OCw5ICs1MCwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9u
ZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgICAgIHRocm93RGF0YUNsb25lRXJy
b3IoKnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQorICAgIGlmIChp
c1BhcnRpYWxDbG9uZSkgeworICAgICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA9
PSAzKTsKKyAgICAgICAgaW50IHNyY0J5dGVPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgxKS50b051bWJlcihzdGF0ZSkpOworICAgICAgICBpbnQgc3Jj
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9O
dW1iZXIoc3RhdGUpKTsKKyAgICAgICAgYnVmZmVyID0gYnVmZmVyLT5zbGljZShzcmNCeXRlT2Zm
c2V0LCBzcmNCeXRlT2Zmc2V0ICsgc3JjTGVuZ3RoKS5nZXQoKTsKKyAgICB9CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUtPnZtKCksIHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVy
U2hhcmluZ01vZGU6OkRlZmF1bHQpLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJu
IGNsb25lQXJyYXlCdWZmZXJJbXBsKHN0YXRlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIHN0YXRl
KQoreworICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChzdGF0ZSwgZmFsc2UpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVy
VmlldyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEFTU0VSVChzdGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCmluZGV4IGVhNmQwMWI2OTQwZTBm
NjViZWMxN2FhN2RkNDA2YjgwOTUzZGRlODcuLmE2ZTRmODMwNjMzZWFjODM2ZjAyODkxNjc5YThi
NWIzZGEwYmY3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVj
dHVyZWRDbG9uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRD
bG9uZS5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1
ZmZlcihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEpT
Qzo6RXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaAppbmRleCAyNWQyZTQ3YjZhYmE4YzBlMjQ5OWJmYzA5ZTVkMzMzYmJj
NTFkNzNjLi4zOWJhYTQ3YzQxM2NiNmQ5ODE5OWFmZGE4M2UwZjQ2ZDljYmE5OTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0z
OSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhib2R5KSBcCiAgICAg
bWFjcm8oYnlvYlJlcXVlc3QpIFwKICAgICBtYWNybyhjYW5jZWwpIFwKKyAgICBtYWNybyhjbG9u
ZUFycmF5QnVmZmVyKSBcCiAgICAgbWFjcm8oY2xvbmVGb3JKUykgXAogICAgIG1hY3JvKGNsb3Nl
UmVxdWVzdGVkKSBcCiAgICAgbWFjcm8oY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305465</attachid>
            <date>2017-03-27 07:04:52 -0700</date>
            <delta_ts>2017-04-10 09:50:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170008-20170327160450.patch</filename>
            <type>text/plain</type>
            <size>25318</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ0YTY5YjdmZGRmYWVj
ZWNmN2Y1ZDQ5OWQ4YmY1N2U0YjBjNmUwZC4uNDc2OWE2MDkzNTA5YzliNzdhNjMxYjIzNjlmNGE1
NThjN2FlZDAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAzLTI3ICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBjbG9uZUFycmF5QnVmZmVyIGluIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDAwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGVkIGNsb25lQXJyYXlCdWZmZXIgYmFzZWQgb24gZXhpc3Rpbmcgc3RydWN0dXJlZENs
b25lQXJyYXlCdWZmZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBjb2RlIGhhcyBiZWVu
IGZhY3Rvcml6ZWQgc28gdGhhdCBib3RoIGNsb25lQXJyYXlCdWZmZXIKKyAgICAgICAgYW5kIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyIHJlbHkgb24gdGhlIHNhbWUgY29kZSAod2hpY2ggaXMg
YmFzaWNhbGx5CisgICAgICAgIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlciArIHRoZSBhYmlsaXR5CisgICAgICAgIHRvIGNsb25lIG9ubHkg
YSBwYXJ0IG9mIGNvbnNpZGVyZWQgYnVmZmVyKS4KKworICAgICAgICBBZGRlZCB0ZXN0IHRvIGNo
ZWNrIGNsb25lQXJyYXlCdWZmZXIgYmVoYXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qczogRGVsZXRlZCBjbG9uZUFycmF5QnVm
ZmVyIEpTIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjphZGRCdWls
dGluR2xvYmFscyk6IEFkZCBjbG9uZUFycmF5QnVmZmVyIHByaXZhdGUgZGVjbGFyYXRpb24uCisg
ICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNsb25lQXJyYXlCdWZmZXJJbXBsKTogQWRkZWQgKG1vc3RseSBiYXNlZCBvbiBwcmV2aW91
cyBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcikuCisgICAgICAgIChXZWJDb3JlOjpjbG9uZUFy
cmF5QnVmZmVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJ1Y3R1cmVkQ2xvbmVBcnJh
eUJ1ZmZlcik6IFVwZGF0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
Lmg6IEFkZGVkIGNsb25lQXJyYXlCdWZmZXIgZGVjbGFyYXRpb24uCisgICAgICAgICogYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCBjbG9uZUFycmF5QnVmZmVyIGRlY2xh
cmF0aW9uLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDogQWRkZWQgc3VwcG9ydCBm
b3IgdGVzdGluZyBjbG9uZUFycmF5QnVmZmVyLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6IEFkZGVkIHN1cHBvcnQgZm9yIHRlc3RpbmcgY2xvbmVBcnJheUJ1ZmZlci4KKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZGVkIHN1cHBvcnQgZm9yIHRlc3RpbmcgY2xvbmVB
cnJheUJ1ZmZlci4KKwogMjAxNy0wMy0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIEltcHJvdmUgbWVkaWEgZG9j
dW1lbnRzIGFjcm9zcyBtYWNPUywgaVBob25lIGFuZCBpUGFkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFs
cy5qcwppbmRleCAzYTc1NWQ4ZjhkOThkYzg1NmQyYmM2OTE0OWI1YmY2OWQ4ZmZhODllLi5kMTY0
YTY1Nzc4YTBmYjM0ZGRmZTlkZGJiNjQ0MmQ3ZjQ3ZjYzZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRl
cm5hbHMuanMKQEAgLTM3OCwxNyArMzc4LDYgQEAgZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlclJlc3BvbmRJbnRlcm5hbChjb250cm9sbGVyLCBieXRlc1dyaXR0ZW4pCiAgICAg
fQogfQogCi1mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKHNyY0J1ZmZlciwgc3JjQnl0ZU9mZnNl
dCwgc3JjTGVuZ3RoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIC8vIEZJWE1FOiBCZWxv
dyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBkYXRhIGJ1dCBkb2VzIG5v
dCBwZXJmb3JtCi0gICAgLy8gZXhhY3RseSB3aGF0IGlzIGRlc2NyaWJlZCBieSBFQ01BU2NyaXB0
IENsb25lQXJyYXlCdWZmZXIgb3BlcmF0aW9uLiBUaGlzIHNob3VsZAotICAgIC8vIGJlIGZpeGVk
IGluIGEgZm9sbG93IHVwIHBhdGNoIGltcGxlbWVudGluZyBjbG9uZUFycmF5QnVmZmVyIGluIEpT
QyAoc2ltaWxhcmx5IHRvCi0gICAgLy8gc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIgaW1wbGVt
ZW50YXRpb24pLgotICAgIHJldHVybiBzcmNCdWZmZXIuc2xpY2Uoc3JjQnl0ZU9mZnNldCwgc3Jj
Qnl0ZU9mZnNldCArIHNyY0xlbmd0aCk7Ci19Ci0KIGZ1bmN0aW9uIHJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXJSZXNwb25kSW5SZWFkYWJsZVN0YXRlKGNvbnRyb2xsZXIsIGJ5dGVzV3JpdHRl
biwgcHVsbEludG9EZXNjcmlwdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiZDFiYzA2
MzM2Zjc4ODFjN2UyYzJkNWZkYzJjMGY2ZDBjMzdiZTM4Li40ZDE4NGM3M2EyMDM5NjUwYWE3Y2Yw
ODljNDhkYTdjOGE5NjE0Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xNDIsNiArMTQyLDggQEAgdm9pZCBKU0RPTUdsb2Jh
bE9iamVjdDo6YWRkQnVpbHRpbkdsb2JhbHMoVk0mIHZtKQogICAgICAgICAgICAgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgbWFrZVRoaXNUeXBlRXJyb3JGb3JCdWls
dGlucyksIERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0
OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5tYWtlR2V0dGVy
VHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwKICAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyksIERv
bnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQ
cm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5jbG9uZUFycmF5QnVmZmVyUHJp
dmF0ZU5hbWUoKSwKKyAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMywg
U3RyaW5nKCksIGNsb25lQXJyYXlCdWZmZXIpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVp
bHRpbk5hbWVzKCkuc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJQcml2YXRlTmFtZSgpLAogICAg
ICAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgc3RydWN0
dXJlZENsb25lQXJyYXlCdWZmZXIpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3UHJpdmF0ZU5hbWUoKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCmluZGV4IDQ4Njlh
YzBkZjcyM2M2YjAxZTM3ZjFiMTBkM2U2ZjIzZTMzNDhiY2YuLjg2YWYyNWIxYTU5YWI0YTQxZjgz
MzE4Yjg1Njk5OTA1NGQzNjQwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U3RydWN0dXJlZENsb25lLmNwcApAQCAtMzUsNyArMzUsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhlY1N0YXRlKiwgYm9vbCk7
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhl
Y1N0YXRlKiBzdGF0ZSwgYm9vbCBpc1BhcnRpYWxDbG9uZSkKIHsKICAgICBBU1NFUlQoc3RhdGUp
OwogICAgIEFTU0VSVChzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKQEAgLTQ4LDkgKzUwLDI1IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIo
RXhlY1N0YXRlKiBzdGF0ZSkKICAgICAgICAgdGhyb3dEYXRhQ2xvbmVFcnJvcigqc3RhdGUsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CisgICAgaWYgKGlzUGFydGlhbENsb25l
KSB7CisgICAgICAgIEFTU0VSVChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID09IDMpOworICAgICAg
ICBpbnQgc3JjQnl0ZU9mZnNldCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLnRvTnVtYmVyKHN0YXRlKSk7CisgICAgICAgIGludCBzcmNMZW5ndGggPSBzdGF0
aWNfY2FzdDxpbnQ+KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b051bWJlcihzdGF0ZSkp
OworICAgICAgICBidWZmZXIgPSBidWZmZXItPnNsaWNlKHNyY0J5dGVPZmZzZXQsIHNyY0J5dGVP
ZmZzZXQgKyBzcmNMZW5ndGgpLmdldCgpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6
RGVmYXVsdCksIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25l
QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY2xvbmVBcnJheUJ1
ZmZlckltcGwoc3RhdGUsIHRydWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0
dXJuIGNsb25lQXJyYXlCdWZmZXJJbXBsKHN0YXRlLCBmYWxzZSk7Cit9CisKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU3RydWN0dXJlZENsb25lLmgKaW5kZXggZWE2ZDAxYjY5NDBlMGY2NWJlYzE3YWE3ZGQ0
MDZiODA5NTNkZGU4Ny4uYTZlNGY4MzA2MzNlYWM4MzZmMDI4OTE2NzlhOGI1YjNkYTBiZjcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmgKQEAgLTMx
LDYgKzMxLDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENs
b25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlNDOjpFeGVjU3RhdGUq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCmluZGV4IDI1ZDJlNDdiNmFiYThjMGUyNDk5YmZjMDllNWQzMzNiYmM1MWQ3M2MuLjM5YmFh
NDdjNDEzY2I2ZDk4MTk5YWZkYTgzZTBmNDZkOWNiYTk5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTM5LDYgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJvZHkpIFwKICAgICBtYWNybyhieW9iUmVx
dWVzdCkgXAogICAgIG1hY3JvKGNhbmNlbCkgXAorICAgIG1hY3JvKGNsb25lQXJyYXlCdWZmZXIp
IFwKICAgICBtYWNybyhjbG9uZUZvckpTKSBcCiAgICAgbWFjcm8oY2xvc2VSZXF1ZXN0ZWQpIFwK
ICAgICBtYWNybyhjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDlkMzkwZjk5MWRkNmFjNGY2MDZmY2U1YzUwZjcwY2VhZTc5YWUx
YjIuLjNmZGZmYmE4M2M2Njc5ZTUwMTA0NzFlNTQ0MWMxNGVlOGNlNTA4YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgYm9vbCBt
YXJrZXJUeXBlRnJvbShjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlJgogI2VuZGlmCiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzkwLDkgKzM5MCw5IEBAIHZvaWQgSW50ZXJu
YWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkKGZhbHNlKTsKIAogICAgIHBhZ2Uuc2V0RGVmZXJzTG9hZGlu
ZyhmYWxzZSk7Ci0gICAgCisKICAgICBwYWdlLm1haW5GcmFtZSgpLnNldFRleHRab29tRmFjdG9y
KDEuMGYpOwotICAgIAorCiAgICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcGFnZS5tYWlu
RnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKG1haW5GcmFtZVZpZXcpIHsKICAgICAgICAgbWFpbkZy
YW1lVmlldy0+c2V0SGVhZGVySGVpZ2h0KDApOwpAQCAtNTk1LDcgKzU5NSw3IEBAIGJvb2wgSW50
ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChjb250ZXh0RG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsKSk7CiAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb250ZXh0RG9j
dW1lbnQoKS0+dG9wT3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7Ci0gICAgCisK
ICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCku
cmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIGNvbnRleHREb2N1bWVudCgpLT5wYWdlKCktPnNl
c3Npb25JRCgpKTsKICAgICByZXR1cm4gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0YXR1cygpID09
IENhY2hlZFJlc291cmNlOjpDYWNoZWQ7CiB9CkBAIC03MjMsMTEgKzcyMywxMSBAQCB2b2lkIElu
dGVybmFsczo6c2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCYg
ZWxlbWVudCwgZmxvYXQgZAogICAgIGF1dG8qIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJ
bWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwog
ICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgaWYgKCFpczxCaXRt
YXBJbWFnZT4oaW1hZ2UpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBkb3duY2FzdDxC
aXRtYXBJbWFnZT4oKmltYWdlKS5zZXRGcmFtZURlY29kaW5nRHVyYXRpb25Gb3JUZXN0aW5nKGR1
cmF0aW9uKTsKIH0KIApAQCAtOTY5LDcgKzk2OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBkZWZlcnJl
ZFN0eWxlUnVsZXNDb3VudEZvckxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
CiAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIFN0eWxlUnVsZUdyb3VwKiBncm91cFJ1bGUgPSBudWxs
cHRyOwogICAgICAgICBpZiAoaXM8U3R5bGVSdWxlTWVkaWE+KHJ1bGUuZ2V0KCkpKQogICAgICAg
ICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KHJ1bGUuZ2V0KCkpOwpA
QCAtOTc3LDExICs5NzcsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGRlZmVycmVkU3R5bGVSdWxlc0Nv
dW50Rm9yTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2UKICAgICAgICAgICAg
IGdyb3VwUnVsZSA9IGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPihydWxlLmdldCgpKTsKICAg
ICAgICAgaWYgKCFncm91cFJ1bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisK
ICAgICAgICAgYXV0byogZ3JvdXBDaGlsZFJ1bGVzID0gZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzV2l0
aG91dERlZmVycmVkUGFyc2luZygpOwogICAgICAgICBpZiAoIWdyb3VwQ2hpbGRSdWxlcykKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBjb3VudCArPSBkZWZlcnJl
ZFN0eWxlUnVsZXNDb3VudEZvckxpc3QoKmdyb3VwQ2hpbGRSdWxlcyk7CiAgICAgfQogCkBAIC0x
MDA0LDcgKzEwMDQsNyBAQCBzdGF0aWMgdW5zaWduZWQgZGVmZXJyZWRHcm91cFJ1bGVzQ291bnRG
b3JMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZQogICAgICAgICAgICAgZ3Jv
dXBSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KHJ1bGUuZ2V0KCkpOwogICAgICAg
ICBpZiAoIWdyb3VwUnVsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAg
ICAgICBhdXRvKiBncm91cENoaWxkUnVsZXMgPSBncm91cFJ1bGUtPmNoaWxkUnVsZXNXaXRob3V0
RGVmZXJyZWRQYXJzaW5nKCk7CiAgICAgICAgIGlmICghZ3JvdXBDaGlsZFJ1bGVzKQogICAgICAg
ICAgICAgY291bnQrKzsKQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBkZWZl
cnJlZEtleWZyYW1lc1J1bGVzQ291bnRGb3JMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVS
dWxlCiAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFN0eWxlUnVsZUdyb3VwKiBncm91cFJ1bGUgPSBu
dWxscHRyOwogICAgICAgICBpZiAoaXM8U3R5bGVSdWxlTWVkaWE+KHJ1bGUuZ2V0KCkpKQogICAg
ICAgICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KHJ1bGUuZ2V0KCkp
OwpAQCAtMTAzNywxNCArMTAzNywxNCBAQCBzdGF0aWMgdW5zaWduZWQgZGVmZXJyZWRLZXlmcmFt
ZXNSdWxlc0NvdW50Rm9yTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZQogICAgICAg
ICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KHJ1bGUuZ2V0KCkp
OwogICAgICAgICBpZiAoIWdyb3VwUnVsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAKKwogICAgICAgICBhdXRvKiBncm91cENoaWxkUnVsZXMgPSBncm91cFJ1bGUtPmNoaWxkUnVs
ZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCk7CiAgICAgICAgIGlmICghZ3JvdXBDaGlsZFJ1bGVz
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIGNvdW50ICs9IGRl
ZmVycmVkS2V5ZnJhbWVzUnVsZXNDb3VudEZvckxpc3QoKmdyb3VwQ2hpbGRSdWxlcyk7CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIGNvdW50OwogfQogCkBAIC0xMTE3LDcgKzExMTcsNyBAQCBz
dGQ6Om9wdGlvbmFsPEludGVybmFsczo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IEludGVybmFs
czo6ZXZlbnRUaHJvdHRsaW5nQmVoYQogICAgIGF1dG8gYmVoYXZpb3IgPSBkb2N1bWVudC0+cGFn
ZSgpLT5ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCk7CiAgICAgaWYgKCFiZWhhdmlv
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKKwogICAgIHN3aXRjaCAoYmVo
YXZpb3IudmFsdWUoKSkgewogICAgIGNhc2UgV2ViQ29yZTo6RXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3I6OlJlc3BvbnNpdmU6CiAgICAgICAgIHJldHVybiBJbnRlcm5hbHM6OkV2ZW50VGhyb3R0bGlu
Z0JlaGF2aW9yOjpSZXNwb25zaXZlOwpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgdm9pZCBJbnRlcm5h
bHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigpCiAgICAgU3BlZWNoU3ludGhlc2lzKiBz
eW50aGVzaXMgPSBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OnNwZWVjaFN5bnRoZXNpcygqZG9j
dW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQog
CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8UmFuZ2U+PiBJbnRlcm5h
bHM6OnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oaW50IHgsCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKIAogICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICAKKwogICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gZG9jdW1lbnQtPmZyYW1lKCktPm1haW5GcmFtZSgpLmV2ZW50SGFu
ZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpKTsKICAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBudWxscHRyOwogICAgIHJldHVybiBEaWN0aW9uYXJ5TG9va3VwOjpy
YW5nZUF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRpb25zKTsKQEAgLTE3NTIsNyArMTc1Miw3
IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlTGlzdD4+IEludGVybmFsczo6bm9kZXNGcm9tUmVj
dChEb2N1bWVudCYgZG9jdW1lbnQsIGludCBjCiAgICAgfSBlbHNlIHsKICAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcpOwogICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVT
ZXQmIG5vZGVTZXQgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwogICAgICAgICBtYXRj
aGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZVNldC5zaXplKCkpOwogICAgICAgICBmb3Ig
KGF1dG8mIG5vZGUgOiBub2RlU2V0KQpAQCAtMTg3Myw3ICsxODczLDcgQEAgYm9vbCBJbnRlcm5h
bHM6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQogCiAgICAgcmV0dXJu
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7CiB9Ci0gICAgCisKIGJvb2wg
SW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVkTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQog
ewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwpAQCAtMjEyNiw3
ICsyMTI2LDcgQEAgdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZlNjcm9sbGFibGVBcmVhcygp
CiAKICAgICByZXR1cm4gY291bnQ7CiB9Ci0gICAgCisKIEV4Y2VwdGlvbk9yPGJvb2w+IEludGVy
bmFsczo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZU51bWJlcikKIHsKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKQEAgLTIxNzksNyArMjE3OSw3IEBAIEV4Y2Vw
dGlvbk9yPHVpbnQ2NF90PiBJbnRlcm5hbHM6OmxheWVySURGb3JFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgYXV0byYgbGF5ZXJNb2RlbE9iamVjdCA9IGRvd25jYXN0PFJlbmRlckxheWVy
TW9kZWxPYmplY3Q+KCplbGVtZW50LnJlbmRlcmVyKCkpOwogICAgIGlmICghbGF5ZXJNb2RlbE9i
amVjdC5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5PVF9GT1VORF9FUlIgfTsKLSAgICAKKwogICAgIGF1dG8qIGJhY2tpbmcgPSBsYXllck1vZGVs
T2JqZWN0LmxheWVyKCktPmJhY2tpbmcoKTsKICAgICByZXR1cm4gYmFja2luZy0+Z3JhcGhpY3NM
YXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpOwogfQpAQCAtMjI0OCwxMSArMjI0OCwxMSBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldEVsZW1lbnRVc2VzRGlzcGxheUxpc3REcmF3aW5n
KEVsZW1lbnQmIGVsZW1lbnQsCiAKICAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXIoKS0+aGFzTGF5
ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9Owot
ICAgIAorCiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oZWxlbWVudC5yZW5kZXJlcigpKS0+bGF5ZXIoKTsKICAgICBpZiAoIWxheWVyLT5p
c0NvbXBvc2l0ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNT
X0VSUiB9OwotICAgIAorCiAgICAgbGF5ZXItPmJhY2tpbmcoKS0+c2V0VXNlc0Rpc3BsYXlMaXN0
RHJhd2luZyh1c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAt
MjI3Nyw3ICsyMjc3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRFbGVtZW50
VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoRWxlbWVudCYgZWxlbWVudCwKICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihlbGVtZW50LnJlbmRl
cmVyKCkpLT5sYXllcigpOwogICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgCisKICAgICBs
YXllci0+YmFja2luZygpLT5zZXRJc1RyYWNraW5nRGlzcGxheUxpc3RSZXBsYXkoaXNUcmFja2lu
Z1JlcGxheSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTI1MTcsNyArMjUxNyw3IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRGb290ZXJIZWlnaHQoZmxvYXQgaGVpZ2h0KQogCiAgICAgZG9jdW1lbnQt
PnZpZXcoKS0+c2V0Rm9vdGVySGVpZ2h0KGhlaWdodCk7CiB9Ci0gICAgCisKIHZvaWQgSW50ZXJu
YWxzOjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQogewogICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwpAQCAtMjY2MSw3ICsyNjYxLDcgQEAg
RXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6c3R5bGVSZWNhbGNDb3VudCgpCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwotICAg
IAorCiAgICAgcmV0dXJuIGRvY3VtZW50LT5zdHlsZVJlY2FsY0NvdW50KCk7CiB9CiAKQEAgLTI2
ODgsNyArMjY4OCw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OmNvbXBvc2l0
aW5nVXBkYXRlQ291bnQoKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVu
dCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKLSAgICAKKwogICAg
IHJldHVybiBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkuY29tcG9zaXRpbmdV
cGRhdGVDb3VudCgpOwogfQogCkBAIC0yOTgwLDEwICsyOTgwLDEwIEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEludGVybmFsczo6c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgYXV0byYgY2FwdGlvblByZWZlcmVuY2VzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAgICAKKwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtb2RlLCAiYXV0b21hdGljIikpCiAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNl
cy5zZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGlj
KTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAiZm9y
Y2Vkb25seSIpKQpAQCAtMzA0OCwxMiArMzA0OCwxMiBAQCBFeGNlcHRpb25Pcjxib29sPiBJbnRl
cm5hbHM6OmlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50JiBl
bAogCiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIp
LmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpOwogfQotICAgIAorCiBib29sIEludGVybmFsczo6aXNQ
bHVnaW5TbmFwc2hvdHRlZChFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBpczxIVE1M
UGx1Z0luRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KGVs
ZW1lbnQpLmRpc3BsYXlTdGF0ZSgpIDw9IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25h
cHNob3Q7CiB9Ci0gICAgCisKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiB2b2lkIEludGVy
bmFsczo6aW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpCkBAIC0zMDcxLDcgKzMwNzEsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNl
QnVmZmVyJiBidWZmZXIsIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ1ZmZlci5idWZmZXJlZFNhbXBs
ZXNGb3JUcmFja0lEKHRyYWNrSUQpOwogfQotICAgIAorCiBWZWN0b3I8U3RyaW5nPiBJbnRlcm5h
bHM6OmVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKIHsKICAgICByZXR1cm4gYnVmZmVyLmVucXVldWVkU2Ft
cGxlc0ZvclRyYWNrSUQodHJhY2tJRCk7CkBAIC0zMTExLDcgKzMxMTEsNyBAQCB2b2lkIEludGVy
bmFsczo6ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNvbnN0IFN0cmluZyYgZmxhZ3NTdHJp
bmcpCiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmxhZ3NTdHJpbmcs
ICJtYXlyZXN1bWVwbGF5aW5nIikpCiAgICAgICAgIGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1heVJlc3VtZVBsYXlpbmc7Ci0gICAgCisKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwogfQogCkBAIC0z
MjY0LDcgKzMyNjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnBvc3RSZW1vdGVD
b250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmRTdHJpbgogICAgICAgICBjb21tYW5k
ID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kOwog
ICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9
OwotICAgIAorCiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQsICZwYXJhbWV0ZXIpOwog
ICAgIHJldHVybiB7IH07CiB9CkBAIC0zNTM1LDEyICszNTM1LDEyIEBAIHN0YXRpYyB2b2lkIGFw
cGVuZE9mZnNldHMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVmVjdG9yPExheW91dFVu
aXQ+JiBzbmFwCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGp1c3RTdGFydGluZyA9IGZhbHNlOwotICAgICAgICAKKwog
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihjb29yZGluYXRlLnRvVW5zaWdu
ZWQoKSkpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9Iik7CiB9Ci0gICAg
CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlv
bkVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGVuYWJsZWQp
OwpAQCAtMzU1NSwxMyArMzU1NSwxMyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6
c2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCYgZWxlbWVudCkKIAogICAgIFJlbmRlckJveCYgYm94
ID0gKmVsZW1lbnQucmVuZGVyQm94KCk7CiAgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVB
cmVhOwotICAgIAorCiAgICAgaWYgKGJveC5pc0JvZHkoKSkgewogICAgICAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IGJveC5mcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICAgICAgaWYg
KCFmcmFtZVZpZXcgfHwgIWZyYW1lVmlldy0+aXNTY3JvbGxhYmxlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07CiAgICAgICAgIHNjcm9sbGFi
bGVBcmVhID0gZnJhbWVWaWV3OwotICAgICAgICAKKwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghYm94LmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwpAQCAtMzU3MCw3ICszNTcw
LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVs
ZW1lbnQmIGVsZW1lbnQpCiAKICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgCisKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAogICAgIGlm
IChhdXRvKiBvZmZzZXRzID0gc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTbmFwT2Zmc2V0cygp
KSB7CkBAIC0zNjU5LDcgKzM2NTksNyBAQCB2b2lkIEludGVybmFsczo6c2V0U2hvd0FsbFBsdWdp
bnMoYm9vbCBzaG93KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzY5Miw2ICszNjkyLDMyIEBAIGJvb2wgSW50ZXJuYWxzOjppc1JlYWRhYmxlU3RyZWFt
RGlzdHVyYmVkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBzdHJlYW0pCiAgICAgcmV0
dXJuIHJldHVybmVkVmFsdWUuYXNCb29sZWFuKCk7CiB9CiAKKyNpZiBFTkFCTEUoUkVBREFCTEVf
QllURV9TVFJFQU1fQVBJKQorCitKU1ZhbHVlIEludGVybmFsczo6Y2xvbmVBcnJheUJ1ZmZlcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYnVmZmVyLCBKU1ZhbHVlIHNyY0J5dGVPZmZz
ZXQsIEpTVmFsdWUgc3JjTGVuZ3RoKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdGF0ZS52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CisgICAgSlNWTUNsaWVudERhdGEqIGNs
aWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHN0YXRlLnZtKCkuY2xpZW50
RGF0YSk7CisgICAgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5i
dWlsdGluTmFtZXMoKS5jbG9uZUFycmF5QnVmZmVyUHJpdmF0ZU5hbWUoKTsKKyAgICBKU1ZhbHVl
IHZhbHVlOworICAgIFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3QodmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIGdsb2JhbE9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgJnN0YXRlLCBwcml2YXRlTmFt
ZSwgcHJvcGVydHlTbG90KTsKKyAgICB2YWx1ZSA9IHByb3BlcnR5U2xvdC5nZXRWYWx1ZSgmc3Rh
dGUsIHByaXZhdGVOYW1lKTsKKyAgICBBU1NFUlQodmFsdWUuaXNGdW5jdGlvbigpKTsKKworICAg
IEpTT2JqZWN0KiBmdW5jdGlvbiA9IHZhbHVlLmdldE9iamVjdCgpOworICAgIENhbGxEYXRhIGNh
bGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlv
biwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25l
KTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFw
cGVuZChidWZmZXIpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoc3JjQnl0ZU9mZnNldCk7CisgICAg
YXJndW1lbnRzLmFwcGVuZChzcmNMZW5ndGgpOworCisgICAgcmV0dXJuIEpTQzo6Y2FsbCgmc3Rh
dGUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJn
dW1lbnRzKTsKK30KKworI2VuZGlmCiAjZW5kaWYKIAogU3RyaW5nIEludGVybmFsczo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDM4M2QwNWM3YzVlYjlkYzQyNWZhMjU3ZWY2ZjFlMWE3
YjQwOGNhZDAuLmQ1MzBkYjJlZTUzZTQ5M2IzOGRlZGI0MjA0NmY5MzA0YmZiOGFlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTg1LDE0ICsxODUsMTQgQEAgcHVibGljOgog
CiAgICAgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCk7CiAgICAgdm9pZCBzZXRGb250U21vb3Ro
aW5nRW5hYmxlZChib29sKTsKLSAgICAKKwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldExvd1Bv
d2VyTW9kZUVuYWJsZWQoYm9vbCk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTY3JvbGxW
aWV3UG9zaXRpb24oaW50IHgsIGludCB5KTsKLSAgICAKKwogICAgIEV4Y2VwdGlvbk9yPFJlZjxD
bGllbnRSZWN0Pj4gbGF5b3V0Vmlld3BvcnRSZWN0KCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPENs
aWVudFJlY3Q+PiB2aXN1YWxWaWV3cG9ydFJlY3QoKTsKLSAgICAKKwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3JWYWx1
ZSk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQYWdpbmF0aW9uKGNvbnN0IFN0cmluZyYg
bW9kZSwgaW50IGdhcCwgaW50IHBhZ2VMZW5ndGgpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHB1Ymxp
YzoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0VHJhY2tpbmdMYXllckZsdXNoZXMoKTsK
ICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gbGF5ZXJGbHVzaENvdW50KCk7Ci0gICAgCisKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFRyYWNraW5nU3R5bGVSZWNhbGNzKCk7CiAgICAgRXhj
ZXB0aW9uT3I8dW5zaWduZWQ+IHN0eWxlUmVjYWxjQ291bnQoKTsKICAgICB1bnNpZ25lZCBsYXN0
U3R5bGVVcGRhdGVTaXplKCkgY29uc3Q7CkBAIC01MTcsMTAgKzUxNywxMyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoUkVBREFCTEVfU1RSRUFNX0FQSSkKICAgICBib29sIGlzUmVhZGFibGVTdHJl
YW1EaXN0dXJiZWQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworI2lmIEVOQUJMRShS
RUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpCisgICAgSlNDOjpKU1ZhbHVlIGNsb25lQXJyYXlCdWZm
ZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1Zh
bHVlKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBTdHJpbmcgY29tcG9zZWRUcmVlQXNUZXh0KE5v
ZGUmKTsKLSAgICAKKwogICAgIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIAogICAg
IFJlZlB0cjxHQ09ic2VydmF0aW9uPiBvYnNlcnZlR0MoSlNDOjpKU1ZhbHVlKTsKQEAgLTUyOSw3
ICs1MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogCiAgICAgYm9vbCB1c2VyUHJlZmVy
c1JlZHVjZWRNb3Rpb24oKSBjb25zdDsKLSAgICAKKwogICAgIHZvaWQgcmVwb3J0QmFja3RyYWNl
KCk7CiAKICAgICBlbnVtIGNsYXNzIEJhc2VXcml0aW5nRGlyZWN0aW9uIHsgTmF0dXJhbCwgTHRy
LCBSdGwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA3MjI1MDdjYzhh
M2I1ZDIzY2VlODliZWYxOGI1OTFiMDlmNTNmY2YzLi4wZjRjMGUwY2RjMGE1ZTM1OTNiZmYzOGMx
ZjQ3MTYwZGQ4YmVmMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC00
ODQsNiArNDg0LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAKICAgICB2b2lk
IHNldFNob3dBbGxQbHVnaW5zKGJvb2xlYW4gc2hvd0FsbCk7CiAKKyAgICBbQ29uZGl0aW9uYWw9
UkVBREFCTEVfU1RSRUFNX0FQSSZSRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEksIENhbGxXaXRoPVNj
cmlwdFN0YXRlXSBhbnkgY2xvbmVBcnJheUJ1ZmZlcihhbnkgYnVmZmVyLCBhbnkgc3JjQnl0ZU9m
ZnNldCwgYW55IGJ5dGVMZW5ndGgpOwogICAgIFtDb25kaXRpb25hbD1SRUFEQUJMRV9TVFJFQU1f
QVBJLCBDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gYm9vbGVhbiBpc1JlYWRhYmxlU3RyZWFtRGlzdHVy
YmVkKGFueSBzdHJlYW0pOwogCiAgICAgRE9NU3RyaW5nIHJlc291cmNlTG9hZFN0YXRpc3RpY3NG
b3JPcmlnaW4oRE9NU3RyaW5nIGRvbWFpbik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2VhNzExNmE2ZDY1Y2MzYmU0Y2Rj
NTM1MmY2NDA1MDcxYzE3NzM2NC4uNmU5ZDc2NmZmZmE4N2U1YzIxZTU0MjNhMjY0MjlkOGMwOTQ0
ZmUxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTI3ICBSb21haW4gQmVsbGVzc29y
dCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbUmVhZGFibGUg
U3RyZWFtcyBBUEldIEltcGxlbWVudCBjbG9uZUFycmF5QnVmZmVyIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDAwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8g
Y2hlY2sgY2xvbmVBcnJheUJ1ZmZlciBiZWhhdmlvdXIuIAorCisgICAgICAgICogc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzOgorCiAyMDE3LTAzLTI3ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVybiBNZWRpYSBDb250cm9s
c10gSW1wcm92ZSBtZWRpYSBkb2N1bWVudHMgYWNyb3NzIG1hY09TLCBpUGhvbmUgYW5kIGlQYWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVx
dWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1i
eW9iLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IDFhNmNmMWNiMzliNzhmNjE4ZWI1MWI4MzI2
OTcxZjI0NjI3YmU0NzMuLjY3MWNhYzUwNmI4YjE5YzU3ZmEwNDRjYWQzOTE1YjhlYzg4NDU3MDcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVx
dWVzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tYnlvYi1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMTAsNiArMTAsNyBAQCBQQVNTIENhbGxp
bmcgcmVzcG9uZCgpIHdpdGggYSBieXRlc1dyaXR0ZW4gdmFsdWUgZGlmZmVyZW50IGZyb20gMCB3
aGVuIHN0cmVhbSBpcwogUEFTUyBDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVu
IHZhbHVlIG9mIDAgd2hlbiBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBzdWNjZWVkIAogUEFTUyBD
YWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVuIHZhbHVlIGdyZWF0ZXIgdGhhbiBh
dXRvQWxsb2NhdGVDaHVua1NpemUgc2hvdWxkIGZhaWwgCiBQQVNTIENhbGxpbmcgcmVzcG9uZCgp
IHdpdGggYSBieXRlc1dyaXR0ZW4gdmFsdWUgbG93ZXIgdGhhbiBhdXRvQWxsb2NhdGVDaHVua1Np
emUgc2hvdWxkIHN1Y2NlZWQgCitQQVNTIFRlc3QgY2xvbmVBcnJheUJ1ZmZlciBpbXBsZW1lbnRh
dGlvbiAKIFBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAogUEFTUyBCeSBkZWZhdWx0LCBieW9i
UmVxdWVzdCBzaG91bGQgYmUgdW5kZWZpbmVkIAogUEFTUyBieW9iUmVxdWVzdC52aWV3IGxlbmd0
aCBzaG91bGQgYmUgZXF1YWwgdG8gYXV0b0FsbG9jYXRlQ2h1bmtTaXplIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzCmluZGV4IGI0
YWQ0YzRjMTZmYTNlMDk3ODk4MTVmMDUxMGE2ZDE5MjJiZDE1MTEuLjk2OTIwYTAwYjNiMDRiZTFh
NzQxMWI4YzJjNTQ3ODRkMWQzMmYxY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKQEAgLTI0MSw0ICsyNDEsMjIgQEAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKCkgewogLy8gRklYTUU6IHdoZW4gUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyIGlzIGltcGxlbWVudGVkLCBhZGQgdGVzdHMgd2l0aCBlbGVtZW50U2l6ZSBkaWZmZXJl
bnQgZnJvbSAxCiAvLyBzbyB0aGF0IG1vcmUgY29kZSBjYW4gYmUgY292ZXJlZC4KIAoraWYgKCFz
ZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgICAvLyBUZXN0IG9ubHkgaWYgbm90IFdvcmtlci4KKyAg
ICBjb25zdCBDbG9uZUFycmF5QnVmZmVyID0gaW50ZXJuYWxzLmNsb25lQXJyYXlCdWZmZXIuYmlu
ZChpbnRlcm5hbHMpOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgY29uc3QgdHlw
ZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KFszLCA1LCA3XSk7CisgICAgICAgIGNvbnN0IGNsb25l
ZEJ1ZmZlciA9IENsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIsIDEsIDEpOworICAg
ICAgICBjb25zdCBvdGhlckFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoY2xvbmVkQnVmZmVyKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhvdGhlckFycmF5LmJ5dGVMZW5ndGgsIDEpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKG90aGVyQXJyYXkuYnl0ZU9mZnNldCwgMCk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMob3RoZXJBcnJheS5idWZmZXIuYnl0ZUxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMob3RoZXJBcnJheVswXSwgNSk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgd2hlbiB0eXBl
ZEFycmF5IGlzIG1vZGlmaWVkLCBvdGhlckFycmF5IGlzIG5vdCBtb2RpZmllZC4KKyAgICAgICAg
dHlwZWRBcnJheVsxXSA9IDA7CisgICAgICAgIGFzc2VydF9lcXVhbHMob3RoZXJBcnJheVswXSwg
NSk7CisgICAgfSwgIlRlc3QgY2xvbmVBcnJheUJ1ZmZlciBpbXBsZW1lbnRhdGlvbiIpOworfQor
CiBkb25lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>306043</attachid>
            <date>2017-04-01 00:43:12 -0700</date>
            <delta_ts>2017-04-11 01:45:26 -0700</delta_ts>
            <desc>memory corruption</desc>
            <filename>readable-stream-byob-request-crash-log.txt</filename>
            <type>text/plain</type>
            <size>12701</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">QXBwbGljYXRpb24gU3BlY2lmaWMgSW5mb3JtYXRpb246CkNSQVNISU5HIFRFU1Q6IHN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj09Mzc3NjE9PUVSUk9S
OiBBZGRyZXNzU2FuaXRpemVyOiBoZWFwLXVzZS1hZnRlci1mcmVlIG9uIGFkZHJlc3MgMHg2MDYw
MDE1N2NiYTAgYXQgcGMgMHgwMDAxMGZmZThmOWIgYnAgMHg3ZmZmNWI0ZjhlNDAgc3AgMHg3ZmZm
NWI0ZjhlMzgKUkVBRCBvZiBzaXplIDggYXQgMHg2MDYwMDE1N2NiYTAgdGhyZWFkIFQwCj09Mzc3
NjE9PWF0b3MgcmV0dXJuZWQgYW4gZXJyb3I6IGR5bGQ6IHdhcm5pbmc6IGNvdWxkIG5vdCBsb2Fk
IGluc2VydGVkIGxpYnJhcnkgJy4uLi9saWJXZWJDb3JlVGVzdFNoaW0uZHlsaWInIGludG8gbGli
cmFyeSB2YWxpZGF0ZWQgcHJvY2VzcyBiZWNhdXNlIG5vIHN1aXRhYmxlIGltYWdlIGZvdW5kLiAg
RGlkIGZpbmQ6CiAgICAjMCAweDEwZmZlOGY5YSBpbiBKU0M6OkFycmF5QnVmZmVyOjpkYXRhKCkg
KC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHgxMmNmOWEpCiAgICAj
MSAweDExMjdiNzdmMiBpbiBXZWJDb3JlOjpjbG9uZUFycmF5QnVmZmVySW1wbChKU0M6OkV4ZWNT
dGF0ZSosIGJvb2wpICguLi4vV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlKzB4
MjhmYjdmMikKICAgICMyIDB4MTA2MTgyYzVmIGluIHZtRW50cnlUb05hdGl2ZSAoLi4uL0phdmFT
Y3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3JlKzB4MTQzN2M1ZikK
ICAgICMzIDB4MTA1ZDgwYjc0IGluIEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6Q2FsbFR5cGUsIEpTQzo6Q2FsbERhdGEg
Y29uc3QmLCBKU0M6OkpTVmFsdWUsIEpTQzo6QXJnTGlzdCBjb25zdCYpICguLi4vSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlwdENvcmUrMHgxMDM1Yjc0KQogICAg
IzQgMHgxMDU0MTNjMjEgaW4gSlNDOjpjYWxsKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkNhbGxUeXBlLCBKU0M6OkNhbGxEYXRhIGNvbnN0JiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OkFyZ0xpc3QgY29uc3QmKSAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9B
L0phdmFTY3JpcHRDb3JlKzB4NmM4YzIxKQogICAgIzUgMHgxMDQ5MDAwYTIgaW4gV2ViQ29yZTo6
SW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSkgKC4uLi9saWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIrMHgyMjBhMikKICAgICM2IDB4MTA0OWE4MzIwIGluIFdlYkNvcmU6OmpzSW50ZXJuYWxz
UHJvdG90eXBlRnVuY3Rpb25DbG9uZUFycmF5QnVmZmVyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwg
V2ViQ29yZTo6SlNJbnRlcm5hbHMqLCBKU0M6OlRocm93U2NvcGUmKSAoLi4uL2xpYldlYkNvcmVU
ZXN0U3VwcG9ydC5keWxpYisweGNhMzIwKQogICAgIzcgMHgxMDQ5NjZkNjEgaW4gbG9uZyBsb25n
IFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8V2ViQ29yZTo6SlNJbnRlcm5hbHM+OjpjYWxsT3BlcmF0
aW9uPCYoV2ViQ29yZTo6anNJbnRlcm5hbHNQcm90b3R5cGVGdW5jdGlvbkNsb25lQXJyYXlCdWZm
ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBXZWJDb3JlOjpKU0ludGVybmFscyosIEpTQzo6VGhy
b3dTY29wZSYpKSwgKFdlYkNvcmU6OkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yKTA+KEpTQzo6RXhl
Y1N0YXRlKiwgY2hhciBjb25zdCopICguLi4vbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliKzB4
ODhkNjEpCiAgICAjOCAweDNlNmRhNmUwMTAyNyAgKDx1bmtub3duIG1vZHVsZT4pCiAgICAjOSAw
eDNlNmRhNzNjMjA2ZiAgKDx1bmtub3duIG1vZHVsZT4pCiAgICAjMTAgMHgxMDYxODk1MWEgaW4g
bGxpbnRfZW50cnkgKC4uLi9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9KYXZh
U2NyaXB0Q29yZSsweDE0M2U1MWEpCiAgICAjMTEgMHgxMDYxODk5MTQgaW4gbGxpbnRfZW50cnkg
KC4uLi9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsw
eDE0M2U5MTQpCiAgICAjMTIgMHgxMDYxODk0YTggaW4gbGxpbnRfZW50cnkgKC4uLi9KYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsweDE0M2U0YTgpCiAg
ICAjMTMgMHgxMDYxODk1MWEgaW4gbGxpbnRfZW50cnkgKC4uLi9KYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsweDE0M2U1MWEpCiAgICAjMTQgMHgxMDYx
ODJhZWEgaW4gdm1FbnRyeVRvSmF2YVNjcmlwdCAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3JlKzB4MTQzN2FlYSkKICAgICMxNSAweDEwNWRmY2Nl
MiBpbiBKU0M6OkpJVENvZGU6OmV4ZWN1dGUoSlNDOjpWTSosIEpTQzo6UHJvdG9DYWxsRnJhbWUq
KSAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3Jl
KzB4MTBiMWNlMikKICAgICMxNiAweDEwNWQ3ZjE1OCBpbiBKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbShKU0M6OlNvdXJjZUNvZGUgY29uc3QmLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqKSAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFT
Y3JpcHRDb3JlKzB4MTAzNDE1OCkKICAgICMxNyAweDEwNTRmNjZmYyBpbiBKU0M6OmV2YWx1YXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VDb2RlIGNvbnN0JiwgSlNDOjpKU1ZhbHVlLCBX
VEY6Ok5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYpICguLi4vSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlwdENvcmUrMHg3YWI2ZmMpCiAgICAjMTggMHgxMDU0ZjY4
ZmUgaW4gSlNDOjpwcm9maWxlZEV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxp
bmdSZWFzb24sIEpTQzo6U291cmNlQ29kZSBjb25zdCYsIEpTQzo6SlNWYWx1ZSwgV1RGOjpOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mKSAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJz
aW9ucy9BL0phdmFTY3JpcHRDb3JlKzB4N2FiOGZlKQogICAgIzE5IDB4MTEyNTc5OTYzIGluIFdl
YkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvZmlsaW5nUmVhc29uLCBKU0M6OlNvdXJjZUNvZGUgY29uc3QmLCBKU0M6
OkpTVmFsdWUsIFdURjo6TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JikgKC4uLi9XZWJDb3JlLmZy
YW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHgyNmJkOTYzKQogICAgIzIwIDB4MTEyNTc5NGQ0
IGluIFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChXZWJDb3JlOjpT
Y3JpcHRTb3VyY2VDb2RlIGNvbnN0JiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiwgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyopICguLi4vV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9X
ZWJDb3JlKzB4MjZiZDRkNCkKICAgICMyMSAweDExMjU4ZjIwMSBpbiBXZWJDb3JlOjpTY3JpcHRF
bGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlIGNv
bnN0JikgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHgyNmQzMjAx
KQogICAgIzIyIDB4MTExY2YwMDc4IGluIFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6
ZXhlY3V0ZShXZWJDb3JlOjpTY3JpcHRFbGVtZW50JikgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9W
ZXJzaW9ucy9BL1dlYkNvcmUrMHgxZTM0MDc4KQogICAgIzIzIDB4MTEyNThmY2ZiIGluIFdlYkNv
cmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFdlYkNvcmU6
OkxvYWRhYmxlU2NyaXB0JikgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNv
cmUrMHgyNmQzY2ZiKQogICAgIzI0IDB4MTEyNThmZjI3IGluIFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KFdlYkNvcmU6OlBlbmRpbmdTY3JpcHQmKSAoLi4uL1dl
YkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZSsweDI2ZDNmMjcpCiAgICAjMjUgMHgx
MTBjMzdjMGEgaW4gV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3Jp
cHRBbmREaXNwYXRjaEV2ZW50KFdlYkNvcmU6OlBlbmRpbmdTY3JpcHQmKSAoLi4uL1dlYkNvcmUu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZSsweGQ3YmMwYSkKICAgICMyNiAweDExMGMzODU2
MCBpbiBXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2Ny
aXB0cygpICguLi4vV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlKzB4ZDdjNTYw
KQogICAgIzI3IDB4MTEwYjY1YjVlIGluIFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cnVu
U2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCkgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJz
aW9ucy9BL1dlYkNvcmUrMHhjYTliNWUpCiAgICAjMjggMHgxMTBiNjYyNDIgaW4gV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OlN5bmNocm9ub3VzTW9kZSwgYm9vbCwgV2ViQ29yZTo6UHVtcFNlc3Npb24mKSAo
Li4uL1dlYkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZSsweGNhYTI0MikKICAgICMy
OSAweDExMGI2NTQ2NCBpbiBXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6
ZXIoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpTeW5jaHJvbm91c01vZGUpICguLi4vV2Vi
Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlKzB4Y2E5NDY0KQogICAgIzMwIDB4MTEw
YjY3NzE2IGluIFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVy
U2NyaXB0RXhlY3V0aW9uKCkgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNv
cmUrMHhjYWI3MTYpCiAgICAjMzEgMHgxMTBiNjdhMGYgaW4gV2ViQ29yZTo6SFRNTERvY3VtZW50
UGFyc2VyOjpub3RpZnlGaW5pc2hlZChXZWJDb3JlOjpQZW5kaW5nU2NyaXB0JikgKC4uLi9XZWJD
b3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHhjYWJhMGYpCiAgICAjMzIgMHgxMTFm
Y2M0NTEgaW4gV2ViQ29yZTo6UGVuZGluZ1NjcmlwdDo6bm90aWZ5Q2xpZW50RmluaXNoZWQoKSAo
Li4uL1dlYkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZSsweDIxMTA0NTEpCiAgICAj
MzMgMHgxMTFjZjI4NzcgaW4gV2ViQ29yZTo6TG9hZGFibGVTY3JpcHQ6Om5vdGlmeUNsaWVudEZp
bmlzaGVkKCkgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHgxZTM2
ODc3KQogICAgIzM0IDB4MTExY2VmZTUwIGluIFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1Njcmlw
dDo6bm90aWZ5RmluaXNoZWQoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmKSAoLi4uL1dlYkNvcmUu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZSsweDFlMzNlNTApCiAgICAjMzUgMHgxMTAxMjA4
ZDcgaW4gV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KCkgKC4uLi9XZWJDb3Jl
LmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHgyNjQ4ZDcpCiAgICAjMzYgMHgxMTI4YTY0
MTAgaW4gV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzIGNvbnN0JikgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJz
aW9ucy9BL1dlYkNvcmUrMHgyOWVhNDEwKQogICAgIzM3IDB4MTEyNGVhYmVmIGluIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KikgKC4uLi9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUrMHgyNjJlYmVmKQog
ICAgIzM4IDB4N2ZmZjc1ZjFkMWUyIGluIF9fNjUtW05TVVJMQ29ubmVjdGlvbkludGVybmFsIF93
aXRoQ29ubmVjdGlvbkFuZERlbGVnYXRlOm9ubHlBY3RpdmU6XV9ibG9ja19pbnZva2UgKC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk5l
dHdvcmsrMHgyYjFlMikKICAgICMzOSAweDdmZmY3NWYxZDBmNCBpbiAtW05TVVJMQ29ubmVjdGlv
bkludGVybmFsIF93aXRoQ29ubmVjdGlvbkFuZERlbGVnYXRlOm9ubHlBY3RpdmU6XSAoL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BL0NGTmV0
d29yaysweDJiMGY0KQogICAgIzQwIDB4N2ZmZjc1ZjFkMDFjIGluIC1bTlNVUkxDb25uZWN0aW9u
SW50ZXJuYWwgX3dpdGhBY3RpdmVDb25uZWN0aW9uQW5kRGVsZWdhdGU6XSAoL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BL0NGTmV0d29yaysw
eDJiMDFjKQogICAgIzQxIDB4N2ZmZjc1ZjIxNjBiIGluIGludm9jYXRpb24gZnVuY3Rpb24gZm9y
IGJsb2NrIGluIFVSTENvbm5lY3Rpb25DbGllbnRfQ2xhc3NpYzo6X2RlbGVnYXRlX2RpZEZpbmlz
aExvYWRpbmcodm9pZCAoKSBibG9ja19wb2ludGVyKSAoL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BL0NGTmV0d29yaysweDJmNjBiKQogICAg
IzQyIDB4N2ZmZjc2MGJhYTdlIGluIGludm9jYXRpb24gZnVuY3Rpb24gZm9yIGJsb2NrIGluIFVS
TENvbm5lY3Rpb25DbGllbnRfQ2xhc3NpYzo6X3dpdGhEZWxlZ2F0ZUFzeW5jKGNoYXIgY29uc3Qq
LCB2b2lkIChfQ0ZVUkxDb25uZWN0aW9uKiwgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50Q3VycmVudF9W
TWF4IGNvbnN0KikgYmxvY2tfcG9pbnRlcikgKC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NG
TmV0d29yay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk5ldHdvcmsrMHgxYzhhN2UpCiAgICAjNDMg
MHg3ZmZmOGM5Mzc4ZmIgaW4gX2Rpc3BhdGNoX2NsaWVudF9jYWxsb3V0ICgvdXNyL2xpYi9zeXN0
ZW0vbGliZGlzcGF0Y2guZHlsaWIrMHgxOGZiKQogICAgIzQ0IDB4N2ZmZjhjOTRiY2NjIGluIF9k
aXNwYXRjaF9ibG9ja19pbnZva2VfZGlyZWN0ICgvdXNyL2xpYi9zeXN0ZW0vbGliZGlzcGF0Y2gu
ZHlsaWIrMHgxNWNjYykKICAgICM0NSAweDdmZmY3NWYxY2VlNyBpbiBSdW5sb29wQmxvY2tDb250
ZXh0OjpfaW52b2tlX2Jsb2NrKHZvaWQgY29uc3QqLCB2b2lkKikgKC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk5ldHdvcmsrMHgyYWVl
NykKICAgICM0NiAweDdmZmY3NmQ3Zjg4MyBpbiBDRkFycmF5QXBwbHlGdW5jdGlvbiAoL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
Q29yZUZvdW5kYXRpb24rMHg0ODg4MykKICAgICM0NyAweDdmZmY3NWYxY2RlMCBpbiBSdW5sb29w
QmxvY2tDb250ZXh0OjpwZXJmb3JtKCkgKC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk5ldHdvcmsrMHgyYWRlMCkKICAgICM0OCAweDdm
ZmY3NWYxY2M3OSBpbiBNdWx0aXBsZXhlclNvdXJjZTo6cGVyZm9ybSgpICgvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ0ZOZXR3b3JrKzB4
MmFjNzkpCiAgICAjNDkgMHg3ZmZmNzVmMWNhOWIgaW4gTXVsdGlwbGV4ZXJTb3VyY2U6Ol9wZXJm
b3JtKHZvaWQqKSAoL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0NGTmV0d29yaysweDJhYTliKQogICAgIzUwIDB4N2ZmZjc2ZGRiM2IwIGlu
IF9fQ0ZSVU5MT09QX0lTX0NBTExJTkdfT1VUX1RPX0FfU09VUkNFMF9QRVJGT1JNX0ZVTkNUSU9O
X18gKC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0NvcmVGb3VuZGF0aW9uKzB4YTQzYjApCiAgICAjNTEgMHg3ZmZmNzZkYmM2M2Ig
aW4gX19DRlJ1bkxvb3BEb1NvdXJjZXMwICgvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlRm91bmRhdGlvbisweDg1NjNiKQog
ICAgIzUyIDB4N2ZmZjc2ZGJiYjI1IGluIF9fQ0ZSdW5Mb29wUnVuICgvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlRm91bmRh
dGlvbisweDg0YjI1KQogICAgIzUzIDB4N2ZmZjc2ZGJiNTIzIGluIENGUnVuTG9vcFJ1blNwZWNp
ZmljICgvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9Db3JlRm91bmRhdGlvbisweDg0NTIzKQogICAgIzU0IDB4MTA0NzJhM2RhIGlu
IHJ1blRlc3Qoc3RkOjpfXzE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6Ol9fMTo6Y2hhcl90cmFp
dHM8Y2hhcj4sIHN0ZDo6X18xOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpICguLi4vRHVtcFJl
bmRlclRyZWUrMHgxMDAwMmEzZGEpCiAgICAjNTUgMHgxMDQ3Mjk4MjEgaW4gcnVuVGVzdGluZ1Nl
cnZlckxvb3AoKSAoLi4uL0R1bXBSZW5kZXJUcmVlKzB4MTAwMDI5ODIxKQogICAgIzU2IDB4MTA0
NzI4OWUzIGluIGR1bXBSZW5kZXJUcmVlKGludCwgY2hhciBjb25zdCoqKSAoLi4uL0R1bXBSZW5k
ZXJUcmVlKzB4MTAwMDI4OWUzKQogICAgIzU3IDB4MTA0NzJiMTI2IGluIER1bXBSZW5kZXJUcmVl
TWFpbihpbnQsIGNoYXIgY29uc3QqKikgKC4uLi9EdW1wUmVuZGVyVHJlZSsweDEwMDAyYjEyNikK
ICAgICM1OCAweDdmZmY4Yzk2ZDIzNCBpbiBzdGFydCAoL3Vzci9saWIvc3lzdGVtL2xpYmR5bGQu
ZHlsaWIrMHg1MjM0KQogCjB4NjA2MDAxNTdjYmEwIGlzIGxvY2F0ZWQgMzIgYnl0ZXMgaW5zaWRl
IG9mIDY0LWJ5dGUgcmVnaW9uIFsweDYwNjAwMTU3Y2I4MCwweDYwNjAwMTU3Y2JjMCkKZnJlZWQg
YnkgdGhyZWFkIFQwIGhlcmU6CiAgICAjMCAweDEwYjljY2Q2NCBpbiBfX3Nhbml0aXplcl9tel9m
cmVlICgvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvVG9vbGNoYWlu
cy9PU1gxMC4xMi54Y3Rvb2xjaGFpbi91c3IvbGliL2NsYW5nLzguMC4wL2xpYi9kYXJ3aW4vbGli
Y2xhbmdfcnQuYXNhbl9vc3hfZHluYW1pYy5keWxpYisweDRiZDY0KQogICAgIzEgMHgxMDY4OWQw
NmYgaW4gYm1hbGxvYzo6RGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVTbG93Q2FzZSh2b2lkKikgKC4u
Li9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsweDFi
NTIwNmYpCiAgICAjMiAweDExMjdiNzc5YSBpbiBXZWJDb3JlOjpjbG9uZUFycmF5QnVmZmVySW1w
bChKU0M6OkV4ZWNTdGF0ZSosIGJvb2wpICguLi4vV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9XZWJDb3JlKzB4MjhmYjc5YSkKICAgICMzIDB4MTA2MTgyYzVmIGluIHZtRW50cnlUb05hdGl2
ZSAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3Jl
KzB4MTQzN2M1ZikKICAgICM0IDB4MTA1ZDgwYjc0IGluIEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDYWxsKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6Q2FsbFR5cGUsIEpT
Qzo6Q2FsbERhdGEgY29uc3QmLCBKU0M6OkpTVmFsdWUsIEpTQzo6QXJnTGlzdCBjb25zdCYpICgu
Li4vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlwdENvcmUrMHgx
MDM1Yjc0KQogICAgIzUgMHgxMDU0MTNjMjEgaW4gSlNDOjpjYWxsKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OkNhbGxUeXBlLCBKU0M6OkNhbGxEYXRhIGNvbnN0JiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OkFyZ0xpc3QgY29uc3QmKSAoLi4uL0phdmFTY3JpcHRDb3JlLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3JlKzB4NmM4YzIxKQogICAgIzYgMHgxMDQ5MDAwYTIg
aW4gV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSkgKC4uLi9saWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIrMHgyMjBhMikKICAgICM3IDB4MTA0OWE4MzIwIGluIFdlYkNvcmU6
OmpzSW50ZXJuYWxzUHJvdG90eXBlRnVuY3Rpb25DbG9uZUFycmF5QnVmZmVyQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiwgV2ViQ29yZTo6SlNJbnRlcm5hbHMqLCBKU0M6OlRocm93U2NvcGUmKSAoLi4u
L2xpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYisweGNhMzIwKQogICAgIzggMHgxMDQ5NjZkNjEg
aW4gbG9uZyBsb25nIFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8V2ViQ29yZTo6SlNJbnRlcm5hbHM+
OjpjYWxsT3BlcmF0aW9uPCYoV2ViQ29yZTo6anNJbnRlcm5hbHNQcm90b3R5cGVGdW5jdGlvbkNs
b25lQXJyYXlCdWZmZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBXZWJDb3JlOjpKU0ludGVybmFs
cyosIEpTQzo6VGhyb3dTY29wZSYpKSwgKFdlYkNvcmU6OkNhc3RlZFRoaXNFcnJvckJlaGF2aW9y
KTA+KEpTQzo6RXhlY1N0YXRlKiwgY2hhciBjb25zdCopICguLi4vbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliKzB4ODhkNjEpCiAgICAjOSAweDNlNmRhNmUwMTAyNyAgKDx1bmtub3duIG1vZHVs
ZT4pCiAgICAjMTAgMHgzZTZkYTczYzIwNmYgICg8dW5rbm93biBtb2R1bGU+KQogICAgIzExIDB4
MTA2MTg5NTFhIGluIGxsaW50X2VudHJ5ICguLi4vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvSmF2YVNjcmlwdENvcmUrMHgxNDNlNTFhKQogICAgIzEyIDB4MTA2MTg5OTE0IGlu
IGxsaW50X2VudHJ5ICguLi4vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2
YVNjcmlwdENvcmUrMHgxNDNlOTE0KQogICAgIzEzIDB4MTA2MTg5NGE4IGluIGxsaW50X2VudHJ5
ICguLi4vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlwdENvcmUr
MHgxNDNlNGE4KQogICAgIzE0IDB4MTA2MTg5NTFhIGluIGxsaW50X2VudHJ5ICguLi4vSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlwdENvcmUrMHgxNDNlNTFhKQog
ICAgIzE1IDB4MTA2MTgyYWVhIGluIHZtRW50cnlUb0phdmFTY3JpcHQgKC4uLi9KYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsweDE0MzdhZWEpCiAgICAj
MTYgMHgxMDVkZmNjZTIgaW4gSlNDOjpKSVRDb2RlOjpleGVjdXRlKEpTQzo6Vk0qLCBKU0M6OlBy
b3RvQ2FsbEZyYW1lKikgKC4uLi9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9K
YXZhU2NyaXB0Q29yZSsweDEwYjFjZTIpCiAgICAjMTcgMHgxMDVkN2YxNTggaW4gSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oSlNDOjpTb3VyY2VDb2RlIGNvbnN0JiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KikgKC4uLi9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsweDEwMzQxNTgpCiAgICAjMTggMHgxMDU0ZjY2ZmMgaW4g
SlNDOjpldmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlQ29kZSBjb25zdCYsIEpT
Qzo6SlNWYWx1ZSwgV1RGOjpOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mKSAoLi4uL0phdmFTY3Jp
cHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3JlKzB4N2FiNmZjKQogICAg
IzE5IDB4MTA1NGY2OGZlIGluIEpTQzo6cHJvZmlsZWRFdmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvZmlsaW5nUmVhc29uLCBKU0M6OlNvdXJjZUNvZGUgY29uc3QmLCBKU0M6OkpTVmFs
dWUsIFdURjo6TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JikgKC4uLi9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZSsweDdhYjhmZSkKICAgICMyMCAweDEx
MjU3OTk2MyBpbiBXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVh
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb2ZpbGluZ1JlYXNvbiwgSlNDOjpTb3VyY2VDb2Rl
IGNvbnN0JiwgSlNDOjpKU1ZhbHVlLCBXVEY6Ok5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYpICgu
Li4vV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlKzB4MjZiZDk2MykKICAgICMy
MSAweDExMjU3OTRkNCBpbiBXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29y
bGQoV2ViQ29yZTo6U2NyaXB0U291cmNlQ29kZSBjb25zdCYsIFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMqKSAoL1ZvbHVtZXMvRAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306695</attachid>
            <date>2017-04-10 09:50:15 -0700</date>
            <delta_ts>2017-04-11 01:29:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170008-20170410185013.patch</filename>
            <type>text/plain</type>
            <size>25741</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk1MWNjZWJmMDM4NWI3
NDdmZjNjNDgwZmE0MzM3ZjFjZjU2YmJlZC4uZjA3ODZmMGE2MGZjMzMzN2RkM2M1ZGNkNWRmN2Nk
NDc3OGZlYWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA0LTEwICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBjbG9uZUFycmF5QnVmZmVyIGluIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDAwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGVkIGNsb25lQXJyYXlCdWZmZXIgYmFzZWQgb24gZXhpc3Rpbmcgc3RydWN0dXJlZENs
b25lQXJyYXlCdWZmZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBjb2RlIGhhcyBiZWVu
IGZhY3Rvcml6ZWQgc28gdGhhdCBib3RoIGNsb25lQXJyYXlCdWZmZXIKKyAgICAgICAgYW5kIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyIHJlbHkgb24gdGhlIHNhbWUgY29kZSAod2hpY2ggaXMg
YmFzaWNhbGx5CisgICAgICAgIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlciArIHRoZSBhYmlsaXR5CisgICAgICAgIHRvIGNsb25lIG9ubHkg
YSBwYXJ0IG9mIGNvbnNpZGVyZWQgYnVmZmVyKS4KKworICAgICAgICBBZGRlZCB0ZXN0IHRvIGNo
ZWNrIGNsb25lQXJyYXlCdWZmZXIgYmVoYXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qczogRGVsZXRlZCBjbG9uZUFycmF5QnVm
ZmVyIEpTIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjphZGRCdWls
dGluR2xvYmFscyk6IEFkZCBjbG9uZUFycmF5QnVmZmVyIHByaXZhdGUgZGVjbGFyYXRpb24uCisg
ICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNsb25lQXJyYXlCdWZmZXJJbXBsKTogQWRkZWQgKG1vc3RseSBiYXNlZCBvbiBwcmV2aW91
cyBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcikuCisgICAgICAgIChXZWJDb3JlOjpjbG9uZUFy
cmF5QnVmZmVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJ1Y3R1cmVkQ2xvbmVBcnJh
eUJ1ZmZlcik6IFVwZGF0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
Lmg6IEFkZGVkIGNsb25lQXJyYXlCdWZmZXIgZGVjbGFyYXRpb24uCisgICAgICAgICogYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCBjbG9uZUFycmF5QnVmZmVyIGRlY2xh
cmF0aW9uLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDogQWRkZWQgc3VwcG9ydCBm
b3IgdGVzdGluZyBjbG9uZUFycmF5QnVmZmVyLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6IEFkZGVkIHN1cHBvcnQgZm9yIHRlc3RpbmcgY2xvbmVBcnJheUJ1ZmZlci4KKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZGVkIHN1cHBvcnQgZm9yIHRlc3RpbmcgY2xvbmVB
cnJheUJ1ZmZlci4KKwogMjAxNy0wNC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIERyb3AgVGltZXI6OnN0YXJ0T25lU2hvdCgpIG92ZXJsb2FkIHRha2luZyBh
IGRvdWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggYjgyZGUwMDE1N2EzMmI5N2Iy
YjU1OTQyNmY5NTJhNzBhYjhhZWNjNi4uMjVmZTBjMTc5MzkyNjg5ZWIxNjA4Y2Q1OGEwMTVmYTM5
N2Y1ZTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0zOTYsMTcgKzM5Niw2IEBA
IGZ1bmN0aW9uIHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJSZXNwb25kSW50ZXJuYWwoY29u
dHJvbGxlciwgYnl0ZXNXcml0dGVuKQogICAgIH0KIH0KIAotZnVuY3Rpb24gY2xvbmVBcnJheUJ1
ZmZlcihzcmNCdWZmZXIsIHNyY0J5dGVPZmZzZXQsIHNyY0xlbmd0aCkKLXsKLSAgICAidXNlIHN0
cmljdCI7Ci0KLSAgICAvLyBGSVhNRTogQmVsb3cgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUg
YXBwcm9wcmlhdGUgZGF0YSBidXQgZG9lcyBub3QgcGVyZm9ybQotICAgIC8vIGV4YWN0bHkgd2hh
dCBpcyBkZXNjcmliZWQgYnkgRUNNQVNjcmlwdCBDbG9uZUFycmF5QnVmZmVyIG9wZXJhdGlvbi4g
VGhpcyBzaG91bGQKLSAgICAvLyBiZSBmaXhlZCBpbiBhIGZvbGxvdyB1cCBwYXRjaCBpbXBsZW1l
bnRpbmcgY2xvbmVBcnJheUJ1ZmZlciBpbiBKU0MgKHNpbWlsYXJseSB0bwotICAgIC8vIHN0cnVj
dHVyZWRDbG9uZUFycmF5QnVmZmVyIGltcGxlbWVudGF0aW9uKS4KLSAgICByZXR1cm4gc3JjQnVm
ZmVyLnNsaWNlKHNyY0J5dGVPZmZzZXQsIHNyY0J5dGVPZmZzZXQgKyBzcmNMZW5ndGgpOwotfQot
CiBmdW5jdGlvbiByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUmVzcG9uZEluUmVhZGFibGVT
dGF0ZShjb250cm9sbGVyLCBieXRlc1dyaXR0ZW4sIHB1bGxJbnRvRGVzY3JpcHRvcikKIHsKICAg
ICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKaW5kZXggYmQxYmMwNjMzNmY3ODgxYzdlMmMyZDVmZGMyYzBmNmQwYzM3
YmUzOC4uNGQxODRjNzNhMjAzOTY1MGFhN2NmMDg5YzQ4ZGE3YzhhOTYxNGM5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMTQy
LDYgKzE0Miw4IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKFZN
JiB2bSkKICAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5n
KCksIG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERh
dGEuYnVpbHRpbk5hbWVzKCkubWFrZUdldHRlclR5cGVFcnJvclByaXZhdGVOYW1lKCksCiAgICAg
ICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBtYWtlR2V0
dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAg
ICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRp
bk5hbWVzKCkuY2xvbmVBcnJheUJ1ZmZlclByaXZhdGVOYW1lKCksCisgICAgICAgICAgICBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDMsIFN0cmluZygpLCBjbG9uZUFycmF5QnVmZmVyKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2Jh
bFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUFy
cmF5QnVmZmVyUHJpdmF0ZU5hbWUoKSwKICAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMSwgU3RyaW5nKCksIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3Bl
cnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnN0cnVjdHVyZWRDbG9uZUFycmF5QnVm
ZmVyVmlld1ByaXZhdGVOYW1lKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3Ry
dWN0dXJlZENsb25lLmNwcAppbmRleCA0ODY5YWMwZGY3MjNjNmIwMWUzN2YxYjEwZDNlNmYyM2Uz
MzQ4YmNmLi5iNWY0YTg2NjU4ZGI0MjQ2Y2Y5ODMxYjcxMTYzMTZkYzg0ZmU2YmNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTM1LDcg
KzM1LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqIHN0YXRlKQorZW51bSBjbGFzcyBDbG9uZU1vZGUgeworICAgIEZ1bGwsCisgICAg
UGFydGlhbCwKK307CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1
ZmZlckltcGwoRXhlY1N0YXRlKiwgQ2xvbmVNb2RlKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVySW1wbChFeGVjU3RhdGUqIHN0YXRlLCBDbG9uZU1vZGUg
bW9kZSkKIHsKICAgICBBU1NFUlQoc3RhdGUpOwogICAgIEFTU0VSVChzdGF0ZS0+YXJndW1lbnRD
b3VudCgpKTsKQEAgLTQ4LDkgKzU1LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICAgICAgdGhy
b3dEYXRhQ2xvbmVFcnJvcigqc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CisgICAgaWYgKG1vZGUgPT0gQ2xvbmVNb2RlOjpQYXJ0aWFsKSB7CisgICAgICAgIEFTU0VS
VChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID09IDMpOworICAgICAgICBpbnQgc3JjQnl0ZU9mZnNl
dCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvTnVtYmVy
KHN0YXRlKSk7CisgICAgICAgIGludCBzcmNMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgyKS50b051bWJlcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZTo6RGVmYXVsdCksIGJ1ZmZlci0+c2xpY2Uoc3JjQnl0ZU9mZnNldCwgc3JjQnl0
ZU9mZnNldCArIHNyY0xlbmd0aCkpKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0FycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUtPnZtKCksIHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5
dGVMZW5ndGgoKSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFy
cmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZm
ZXJJbXBsKHN0YXRlLCBDbG9uZU1vZGU6OlBhcnRpYWwpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUp
Cit7CisgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXJJbXBsKHN0YXRlLCBDbG9uZU1vZGU6OkZ1
bGwpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFy
cmF5QnVmZmVyVmlldyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEFTU0VSVChzdGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCmluZGV4IGVhNmQw
MWI2OTQwZTBmNjViZWMxN2FhN2RkNDA2YjgwOTUzZGRlODcuLmE2ZTRmODMwNjMzZWFjODM2ZjAy
ODkxNjc5YThiNWIzZGEwYmY3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1N0cnVjdHVyZWRDbG9uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xv
bmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZm
ZXJWaWV3KEpTQzo6RXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAyNWQyZTQ3YjZhYmE4YzBlMjQ5OWJmYzA5
ZTVkMzMzYmJjNTFkNzNjLi4zOWJhYTQ3YzQxM2NiNmQ5ODE5OWFmZGE4M2UwZjQ2ZDljYmE5OTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhib2R5
KSBcCiAgICAgbWFjcm8oYnlvYlJlcXVlc3QpIFwKICAgICBtYWNybyhjYW5jZWwpIFwKKyAgICBt
YWNybyhjbG9uZUFycmF5QnVmZmVyKSBcCiAgICAgbWFjcm8oY2xvbmVGb3JKUykgXAogICAgIG1h
Y3JvKGNsb3NlUmVxdWVzdGVkKSBcCiAgICAgbWFjcm8oY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkNTllNjg3OGY1Zjc4ZjI0
NDBiMGQyMzY4MjVlZjU0Y2E5ZWU4YzFkLi5lNzljYjQ4ZTBiNjE0NzQwYmU0NDNhODFjZDdjYzdh
ZjM5ODVlNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNTMsNyAr
MzUzLDcgQEAgc3RhdGljIGJvb2wgbWFya2VyVHlwZUZyb20oY29uc3QgU3RyaW5nJiBtYXJrZXJU
eXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSYKICNlbmRpZgogICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5Myw5
ICszOTMsOSBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBw
YWdlKQogICAgIHBhZ2Uuc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChmYWxzZSk7CiAKICAg
ICBwYWdlLnNldERlZmVyc0xvYWRpbmcoZmFsc2UpOwotICAgIAorCiAgICAgcGFnZS5tYWluRnJh
bWUoKS5zZXRUZXh0Wm9vbUZhY3RvcigxLjBmKTsKLSAgICAKKwogICAgIEZyYW1lVmlldyogbWFp
bkZyYW1lVmlldyA9IHBhZ2UubWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmIChtYWluRnJhbWVW
aWV3KSB7CiAgICAgICAgIG1haW5GcmFtZVZpZXctPnNldEhlYWRlckhlaWdodCgwKTsKQEAgLTU5
Niw3ICs1OTYsNyBAQCBib29sIEludGVybmFsczo6aXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGNv
bnN0IFN0cmluZyYgdXJsKQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoY29udGV4dERv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkpOwogICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oY29udGV4dERvY3VtZW50KCktPnRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKCkpOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gTWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBjb250ZXh0
RG9jdW1lbnQoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlICYm
IHJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkOwogfQpAQCAtNzI0
LDExICs3MjQsMTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0
aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIGZsb2F0IGQKICAgICBhdXRvKiBjYWNoZWRJ
bWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFn
ZSgpOwogICAgIGlmICghaXM8Qml0bWFwSW1hZ2U+KGltYWdlKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkuc2V0RnJhbWVEZWNvZGlu
Z0R1cmF0aW9uRm9yVGVzdGluZyhTZWNvbmRzIHsgZHVyYXRpb24gfSk7CiB9CiAKQEAgLTk4OCw3
ICs5ODgsNyBAQCBzdGF0aWMgdW5zaWduZWQgZGVmZXJyZWRTdHlsZVJ1bGVzQ291bnRGb3JMaXN0
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZQogICAgICAgICAgICAgICAgIGNvdW50
Kys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBTdHlsZVJ1bGVHcm91cCogZ3JvdXBSdWxlID0gbnVsbHB0cjsKICAgICAgICAgaWYgKGlzPFN0
eWxlUnVsZU1lZGlhPihydWxlLmdldCgpKSkKICAgICAgICAgICAgIGdyb3VwUnVsZSA9IGRvd25j
YXN0PFN0eWxlUnVsZU1lZGlhPihydWxlLmdldCgpKTsKQEAgLTk5NiwxMSArOTk2LDExIEBAIHN0
YXRpYyB1bnNpZ25lZCBkZWZlcnJlZFN0eWxlUnVsZXNDb3VudEZvckxpc3QoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlCiAgICAgICAgICAgICBncm91cFJ1bGUgPSBkb3duY2FzdDxT
dHlsZVJ1bGVTdXBwb3J0cz4ocnVsZS5nZXQoKSk7CiAgICAgICAgIGlmICghZ3JvdXBSdWxlKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8qIGdyb3VwQ2hp
bGRSdWxlcyA9IGdyb3VwUnVsZS0+Y2hpbGRSdWxlc1dpdGhvdXREZWZlcnJlZFBhcnNpbmcoKTsK
ICAgICAgICAgaWYgKCFncm91cENoaWxkUnVsZXMpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgCisKICAgICAgICAgY291bnQgKz0gZGVmZXJyZWRTdHlsZVJ1bGVzQ291bnRGb3JMaXN0
KCpncm91cENoaWxkUnVsZXMpOwogICAgIH0KIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgc3RhdGlj
IHVuc2lnbmVkIGRlZmVycmVkR3JvdXBSdWxlc0NvdW50Rm9yTGlzdChjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2UKICAgICAgICAgICAgIGdyb3VwUnVsZSA9IGRvd25jYXN0PFN0eWxl
UnVsZVN1cHBvcnRzPihydWxlLmdldCgpKTsKICAgICAgICAgaWYgKCFncm91cFJ1bGUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogZ3JvdXBDaGlsZFJ1
bGVzID0gZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzV2l0aG91dERlZmVycmVkUGFyc2luZygpOwogICAg
ICAgICBpZiAoIWdyb3VwQ2hpbGRSdWxlcykKICAgICAgICAgICAgIGNvdW50Kys7CkBAIC0xMDQ4
LDcgKzEwNDgsNyBAQCBzdGF0aWMgdW5zaWduZWQgZGVmZXJyZWRLZXlmcmFtZXNSdWxlc0NvdW50
Rm9yTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZQogICAgICAgICAgICAgICAgIGNv
dW50Kys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICBTdHlsZVJ1bGVHcm91cCogZ3JvdXBSdWxlID0gbnVsbHB0cjsKICAgICAgICAgaWYgKGlz
PFN0eWxlUnVsZU1lZGlhPihydWxlLmdldCgpKSkKICAgICAgICAgICAgIGdyb3VwUnVsZSA9IGRv
d25jYXN0PFN0eWxlUnVsZU1lZGlhPihydWxlLmdldCgpKTsKQEAgLTEwNTYsMTQgKzEwNTYsMTQg
QEAgc3RhdGljIHVuc2lnbmVkIGRlZmVycmVkS2V5ZnJhbWVzUnVsZXNDb3VudEZvckxpc3QoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGUKICAgICAgICAgICAgIGdyb3VwUnVsZSA9IGRvd25j
YXN0PFN0eWxlUnVsZVN1cHBvcnRzPihydWxlLmdldCgpKTsKICAgICAgICAgaWYgKCFncm91cFJ1
bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogZ3Jv
dXBDaGlsZFJ1bGVzID0gZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzV2l0aG91dERlZmVycmVkUGFyc2lu
ZygpOwogICAgICAgICBpZiAoIWdyb3VwQ2hpbGRSdWxlcykKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKKwogICAgICAgICBjb3VudCArPSBkZWZlcnJlZEtleWZyYW1lc1J1bGVzQ291
bnRGb3JMaXN0KCpncm91cENoaWxkUnVsZXMpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBj
b3VudDsKIH0KIApAQCAtMTEzNiw3ICsxMTM2LDcgQEAgc3RkOjpvcHRpb25hbDxJbnRlcm5hbHM6
OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGEK
ICAgICBhdXRvIGJlaGF2aW9yID0gZG9jdW1lbnQtPnBhZ2UoKS0+ZXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3JPdmVycmlkZSgpOwogICAgIGlmICghYmVoYXZpb3IpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgCisKICAgICBzd2l0Y2ggKGJlaGF2aW9yLnZhbHVlKCkpIHsKICAgICBj
YXNlIFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yOjpSZXNwb25zaXZlOgogICAgICAg
ICByZXR1cm4gSW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcjo6UmVzcG9uc2l2ZTsK
QEAgLTEyMDEsNyArMTIwMSw3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3lu
dGhlc2l6ZXIoKQogICAgIFNwZWVjaFN5bnRoZXNpcyogc3ludGhlc2lzID0gRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzOjpzcGVlY2hTeW50aGVzaXMoKmRvY3VtZW50LT5kb21XaW5kb3coKSk7CiAg
ICAgaWYgKCFzeW50aGVzaXMpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN5bnRoZXNp
cy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIApAQCAtMTY1MCw3ICsxNjUwLDcgQEAg
RXhjZXB0aW9uT3I8UmVmUHRyPFJhbmdlPj4gSW50ZXJuYWxzOjpyYW5nZUZvckRpY3Rpb25hcnlM
b29rdXBBdExvY2F0aW9uKGludCB4LAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJ
RF9BQ0NFU1NfRVJSIH07CiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7Ci0gICAgCisKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGRvY3Vt
ZW50LT5mcmFtZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQ
b2ludChJbnRQb2ludCh4LCB5KSk7CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbnVsbHB0
cjsKICAgICByZXR1cm4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVz
dWx0LCAmb3B0aW9ucyk7CkBAIC0xODA2LDcgKzE4MDYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8
Tm9kZUxpc3Q+PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQmIGRvY3VtZW50LCBp
bnQgYwogICAgIH0gZWxzZSB7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCB0
b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKICAg
ICAgICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotICAgICAgICAKKwog
ICAgICAgICBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBub2RlU2V0ID0gcmVzdWx0LnJl
Y3RCYXNlZFRlc3RSZXN1bHQoKTsKICAgICAgICAgbWF0Y2hlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG5vZGVTZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZVNldCkK
QEAgLTE5MjcsNyArMTkyNyw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTcGVsbGluZ01hcmtlcihp
bnQgZnJvbSwgaW50IGxlbmd0aCkKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRp
dG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5n
LCBmcm9tLCBsZW5ndGgpOwogfQotICAgIAorCiBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKQEAgLTIxODAsNyArMjE4MCw3IEBAIHVuc2lnbmVkIElu
dGVybmFsczo6bnVtYmVyT2ZTY3JvbGxhYmxlQXJlYXMoKQogCiAgICAgcmV0dXJuIGNvdW50Owog
fQotICAgIAorCiBFeGNlcHRpb25Pcjxib29sPiBJbnRlcm5hbHM6OmlzUGFnZUJveFZpc2libGUo
aW50IHBhZ2VOdW1iZXIpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3Vt
ZW50KCk7CkBAIC0yMjMzLDcgKzIyMzMsNyBAQCBFeGNlcHRpb25Pcjx1aW50NjRfdD4gSW50ZXJu
YWxzOjpsYXllcklERm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIGF1dG8mIGxheWVy
TW9kZWxPYmplY3QgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqZWxlbWVudC5y
ZW5kZXJlcigpKTsKICAgICBpZiAoIWxheWVyTW9kZWxPYmplY3QubGF5ZXIoKS0+aXNDb21wb3Np
dGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfRk9VTkRfRVJSIH07Ci0gICAg
CisKICAgICBhdXRvKiBiYWNraW5nID0gbGF5ZXJNb2RlbE9iamVjdC5sYXllcigpLT5iYWNraW5n
KCk7CiAgICAgcmV0dXJuIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQo
KTsKIH0KQEAgLTIzMDIsMTEgKzIzMDIsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxz
OjpzZXRFbGVtZW50VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyhFbGVtZW50JiBlbGVtZW50LAogCiAg
ICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKLSAgICAKKwogICAgIFJlbmRlckxheWVy
KiBsYXllciA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KGVsZW1lbnQucmVuZGVy
ZXIoKSktPmxheWVyKCk7CiAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKLSAgICAKKwogICAgIGxh
eWVyLT5iYWNraW5nKCktPnNldFVzZXNEaXNwbGF5TGlzdERyYXdpbmcodXNlc0Rpc3BsYXlMaXN0
RHJhd2luZyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIzMzEsNyArMjMzMSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0RWxlbWVudFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KEVsZW1lbnQmIGVsZW1lbnQsCiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdD4oZWxlbWVudC5yZW5kZXJlcigpKS0+bGF5ZXIoKTsKICAgICBp
ZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElO
VkFMSURfQUNDRVNTX0VSUiB9OwotICAgIAorCiAgICAgbGF5ZXItPmJhY2tpbmcoKS0+c2V0SXNU
cmFja2luZ0Rpc3BsYXlMaXN0UmVwbGF5KGlzVHJhY2tpbmdSZXBsYXkpOwogICAgIHJldHVybiB7
IH07CiB9CkBAIC0yNTcxLDcgKzI1NzEsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Rm9vdGVySGVp
Z2h0KGZsb2F0IGhlaWdodCkKIAogICAgIGRvY3VtZW50LT52aWV3KCktPnNldEZvb3RlckhlaWdo
dChoZWlnaHQpOwogfQotICAgIAorCiB2b2lkIEludGVybmFsczo6c2V0VG9wQ29udGVudEluc2V0
KGZsb2F0IGNvbnRlbnRJbnNldCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0
RG9jdW1lbnQoKTsKQEAgLTI3MTUsNyArMjcxNSw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJ
bnRlcm5hbHM6OnN0eWxlUmVjYWxjQ291bnQoKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNv
bnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKLSAgICAKKwogICAgIHJldHVybiBkb2N1bWVu
dC0+c3R5bGVSZWNhbGNDb3VudCgpOwogfQogCkBAIC0yNzQyLDcgKzI3NDIsNyBAQCBFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCkKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgCisKICAgICByZXR1cm4gZG9jdW1lbnQtPnJlbmRl
clZpZXcoKS0+Y29tcG9zaXRvcigpLmNvbXBvc2l0aW5nVXBkYXRlQ291bnQoKTsKIH0KIApAQCAt
MzAzNCwxMCArMzAzNCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldENhcHRp
b25EaXNwbGF5TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBh
Z2UoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9Owot
ICAgIAorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGF1dG8mIGNhcHRpb25QcmVmZXJl
bmNlcyA9IGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7Ci0g
ICAgCisKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgImF1dG9t
YXRpYyIpKQogICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMuc2V0Q2FwdGlvbkRpc3BsYXlNb2Rl
KENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYyk7CiAgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgImZvcmNlZG9ubHkiKSkKQEAgLTMxMDIsMTIg
KzMxMDIsMTIgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxh
YmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCYgZWwKIAogICAgIHJldHVybiBkb3duY2Fz
dDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5pc1JlcGxhY2VtZW50T2JzY3VyZWQo
KTsKIH0KLSAgICAKKwogYm9vbCBJbnRlcm5hbHM6OmlzUGx1Z2luU25hcHNob3R0ZWQoRWxlbWVu
dCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQp
ICYmIGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50KS5kaXNwbGF5U3RhdGUoKSA8
PSBIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheWluZ1NuYXBzaG90OwogfQotICAgIAorCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIAogdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVk
aWFTb3VyY2UoKQpAQCAtMzEyNSw3ICszMTI1LDcgQEAgVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxz
OjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNvdXJjZUJ1ZmZlciYgYnVmZmVyLCBjb25zdAog
ewogICAgIHJldHVybiBidWZmZXIuYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRCh0cmFja0lEKTsK
IH0KLSAgICAKKwogVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjplbnF1ZXVlZFNhbXBsZXNGb3JU
cmFja0lEKFNvdXJjZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSUQp
CiB7CiAgICAgcmV0dXJuIGJ1ZmZlci5lbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKHRyYWNrSUQp
OwpAQCAtMzE2NSw3ICszMTY1LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQogCiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZsYWdzU3RyaW5nLCAibWF5cmVzdW1lcGxheWluZyIpKQog
ICAgICAgICBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwot
ICAgIAorCiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KIApAQCAtMzMxOCw3ICszMzE4LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kU3RyaW4KICAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsKICAgICBlbHNlCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKLSAgICAKKwogICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZChjb21tYW5kLCAmcGFyYW1ldGVyKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAt
MzU5MywxMiArMzU5MywxMiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcAogICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBq
dXN0U3RhcnRpbmcgPSBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nOjpudW1iZXIoY29vcmRpbmF0ZS50b1Vuc2lnbmVkKCkpKTsKICAgICB9CiAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgfSIpOwogfQotICAgIAorCiB2b2lkIEludGVybmFsczo6c2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKICAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1T
Y3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChlbmFibGVkKTsKQEAgLTM2MTMsMTMgKzM2MTMsMTMg
QEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVsZW1l
bnQmIGVsZW1lbnQpCiAKICAgICBSZW5kZXJCb3gmIGJveCA9ICplbGVtZW50LnJlbmRlckJveCgp
OwogICAgIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYTsKLSAgICAKKwogICAgIGlmIChi
b3guaXNCb2R5KCkpIHsKICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBib3guZnJhbWUo
KS5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgICAgIGlmICghZnJhbWVWaWV3IHx8ICFmcmFtZVZp
ZXctPmlzU2Nyb2xsYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFM
SURfQUNDRVNTX0VSUiB9OwogICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldzsKLSAg
ICAgICAgCisKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWJveC5jYW5CZVNjcm9sbGVkQW5k
SGFzU2Nyb2xsYWJsZUFyZWEoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZB
TElEX0FDQ0VTU19FUlIgfTsKQEAgLTM2MjgsNyArMzYyOCw3IEBAIEV4Y2VwdGlvbk9yPFN0cmlu
Zz4gSW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50JiBlbGVtZW50KQogCiAgICAg
aWYgKCFzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAorCiAg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAKICAgICBpZiAoYXV0byogb2Zmc2V0cyA9IHNjcm9s
bGFibGVBcmVhLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkgewpAQCAtMzcxNyw3ICszNzE3LDcg
QEAgdm9pZCBJbnRlcm5hbHM6OnNldFNob3dBbGxQbHVnaW5zKGJvb2wgc2hvdykKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTM3NTAsNiArMzc1MCwzMiBA
QCBib29sIEludGVybmFsczo6aXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgc3RyZWFtKQogICAgIHJldHVybiByZXR1cm5lZFZhbHVlLmFzQm9v
bGVhbigpOwogfQogCisjaWYgRU5BQkxFKFJFQURBQkxFX0JZVEVfU1RSRUFNX0FQSSkKKworSlNW
YWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIGJ1ZmZlciwgSlNWYWx1ZSBzcmNCeXRlT2Zmc2V0LCBKU1ZhbHVlIHNyY0xlbmd0aCkK
K3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUudm1FbnRyeUdsb2Jh
bE9iamVjdCgpOworICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPihzdGF0ZS52bSgpLmNsaWVudERhdGEpOworICAgIGNvbnN0IElkZW50
aWZpZXImIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbk5hbWVzKCkuY2xvbmVBcnJh
eUJ1ZmZlclByaXZhdGVOYW1lKCk7CisgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICBQcm9wZXJ0eVNs
b3QgcHJvcGVydHlTbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0KTsKKyAgICBnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsICZzdGF0ZSwgcHJpdmF0ZU5hbWUsIHByb3BlcnR5U2xvdCk7CisgICAg
dmFsdWUgPSBwcm9wZXJ0eVNsb3QuZ2V0VmFsdWUoJnN0YXRlLCBwcml2YXRlTmFtZSk7CisgICAg
QVNTRVJUKHZhbHVlLmlzRnVuY3Rpb24oKSk7CisKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSB2
YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoYnVmZmVyKTsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKHNyY0J5dGVPZmZzZXQpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoc3JjTGVu
Z3RoKTsKKworICAgIHJldHVybiBKU0M6OmNhbGwoJnN0YXRlLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Cit9CisKKyNlbmRpZgog
I2VuZGlmCiAKIFN0cmluZyBJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JPcmln
aW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCA0YmMzOGQ4MDIwNzRjZTQ5ZjQ0ZmE3NzQ2NjhiMWE2ZDlhMTU0NTVjLi44MzlkM2ExNzVkNWEz
MzZmMDEwNGI2Njc3ODVhNWUyOGY5ZjFlMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTE5MSwxNCArMTkxLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZUZv
bnRDYWNoZSgpOwogICAgIHZvaWQgc2V0Rm9udFNtb290aGluZ0VuYWJsZWQoYm9vbCk7Ci0gICAg
CisKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRMb3dQb3dlck1vZGVFbmFibGVkKGJvb2wpOwog
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGludCB4LCBpbnQg
eSk7Ci0gICAgCisKICAgICBFeGNlcHRpb25PcjxSZWY8Q2xpZW50UmVjdD4+IGxheW91dFZpZXdw
b3J0UmVjdCgpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxDbGllbnRSZWN0Pj4gdmlzdWFsVmlld3Bv
cnRSZWN0KCk7Ci0gICAgCisKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWaWV3QmFzZUJhY2tn
cm91bmRDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpOwogCiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0UGFnaW5hdGlvbihjb25zdCBTdHJpbmcmIG1vZGUsIGludCBnYXAsIGludCBwYWdl
TGVuZ3RoKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCk7CiAgICAgRXhjZXB0aW9uT3I8dW5zaWdu
ZWQ+IGxheWVyRmx1c2hDb3VudCgpOwotICAgIAorCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3Rh
cnRUcmFja2luZ1N0eWxlUmVjYWxjcygpOwogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBzdHls
ZVJlY2FsY0NvdW50KCk7CiAgICAgdW5zaWduZWQgbGFzdFN0eWxlVXBkYXRlU2l6ZSgpIGNvbnN0
OwpAQCAtNTI3LDEwICs1MjcsMTMgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFQURBQkxFX1NU
UkVBTV9BUEkpCiAgICAgYm9vbCBpc1JlYWRhYmxlU3RyZWFtRGlzdHVyYmVkKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKyNpZiBFTkFCTEUoUkVBREFCTEVfQllURV9TVFJFQU1fQVBJ
KQorICAgIEpTQzo6SlNWYWx1ZSBjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CisjZW5kaWYKICNlbmRpZgog
CiAgICAgU3RyaW5nIGNvbXBvc2VkVHJlZUFzVGV4dChOb2RlJik7Ci0gICAgCisKICAgICBib29s
IGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAgICAgZG91YmxlIGxhc3RIYW5kbGVkVXNlckdl
c3R1cmVUaW1lc3RhbXAoKTsKIApAQCAtNTQwLDcgKzU0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbik7CiAKICAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0OwotICAg
IAorCiAgICAgdm9pZCByZXBvcnRCYWNrdHJhY2UoKTsKIAogICAgIGVudW0gY2xhc3MgQmFzZVdy
aXRpbmdEaXJlY3Rpb24geyBOYXR1cmFsLCBMdHIsIFJ0bCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGI4NWEwNDk2NDk1NDUyMjcwZDdhMDMwN2I3NzI1NzQ2YTEwYjJk
MTkuLjc0NGI2YTg5NDNhYTFiMjc3NTdlY2Q2NmZjM2QyMTc1NjMzYWYwOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTQ5MSw2ICs0OTEsNyBAQCBlbnVtIEV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIHZvaWQgc2V0U2hvd0FsbFBsdWdpbnMoYm9vbGVhbiBz
aG93QWxsKTsKIAorICAgIFtDb25kaXRpb25hbD1SRUFEQUJMRV9TVFJFQU1fQVBJJlJFQURBQkxF
X0JZVEVfU1RSRUFNX0FQSSwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIGFueSBjbG9uZUFycmF5QnVm
ZmVyKGFueSBidWZmZXIsIGFueSBzcmNCeXRlT2Zmc2V0LCBhbnkgYnl0ZUxlbmd0aCk7CiAgICAg
W0NvbmRpdGlvbmFsPVJFQURBQkxFX1NUUkVBTV9BUEksIENhbGxXaXRoPVNjcmlwdFN0YXRlXSBi
b29sZWFuIGlzUmVhZGFibGVTdHJlYW1EaXN0dXJiZWQoYW55IHN0cmVhbSk7CiAKICAgICBET01T
dHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zvck9yaWdpbihET01TdHJpbmcgZG9tYWluKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NmNkNzIxYzhlNzY2MGM1N2E1MDdjYmY4N2QyZGMyZjQzZTZlNmMyLi5jYThlYTcz
MjE0ZDk5NDZjNTZlOWNlMDIyYWZjYmViNGZlZmEyNjRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDQtMTAgIFJvbWFpbiBCZWxsZXNzb3J0ICA8cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNh
bm9uLmZyPgorCisgICAgICAgIFtSZWFkYWJsZSBTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGNsb25l
QXJyYXlCdWZmZXIgaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcwMDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCB0byBjaGVjayBjbG9uZUFycmF5QnVmZmVyIGJlaGF2
aW91ci4gCisKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3Qu
anM6CisKIDIwMTctMDQtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLKyBnYXJkZW5pbmcuIE1hcmsgc2V2ZXJhbCB0
ZXN0cyBhcyBmYWlsaW5nL3RpbWluZyBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAppbmRl
eCA1YjY3MDliZjMzYTUwNDA5OWNlZjU5YzU1ZDJkNTRmN2MyMTAzNTE4Li45NTk3ZjJiMjYwNWZi
NmM0MzMzNmYyNmI2YzU0NzNlZDY3MjU1NzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC1leHBlY3RlZC50eHQK
QEAgLTE2LDYgKzE2LDcgQEAgUEFTUyBDYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHdpdGgg
YW4gYXJndW1lbnQgdGhhdCBpcyBub3QgYW4gQXJyYXlCdWZmZXJWaWUKIFBBU1MgV2hlbiB1c2lu
ZyBhdXRvQWxsb2NhdGVDaHVua1NpemUsIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgc2hv
dWxkIHN1Y2NlZWQgaWYgdmlldy5ieXRlTGVuZ3RoIGlzIGVxdWFsIHRvIGF1dG9BbGxvY2F0ZUNo
dW5rU2l6ZSAKIFBBU1MgV2hlbiB1c2luZyBhdXRvQWxsb2NhdGVDaHVua1NpemUsIGNhbGxpbmcg
cmVzcG9uZFdpdGhOZXdWaWV3KCkgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBpZiB2aWV3LmJ5
dGVPZmZzZXQgaXMgZGlmZmVyZW50IGZyb20gMCAKIFBBU1MgV2hlbiB1c2luZyBhdXRvQWxsb2Nh
dGVDaHVua1NpemUsIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgc2hvdWxkIHRocm93IGEg
UmFuZ2VFcnJvciBpZiB2aWV3LmJ5dGVMZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYXV0b0FsbG9j
YXRlQ2h1bmtTaXplIAorUEFTUyBUZXN0IGNsb25lQXJyYXlCdWZmZXIgaW1wbGVtZW50YXRpb24g
CiBQQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRo
ZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyAKIFBBU1MgQnkgZGVmYXVsdCwgYnlvYlJlcXVl
c3Qgc2hvdWxkIGJlIHVuZGVmaW5lZCAKIFBBU1MgYnlvYlJlcXVlc3QudmlldyBsZW5ndGggc2hv
dWxkIGJlIGVxdWFsIHRvIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcyBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcwppbmRleCA1N2E0MTE3
YmM1NGJlODc3MjllMGUzYzQ0MzMxY2VhOTIwYzY4YjA3Li4wNDhhN2JkM2VhM2Y1Mjg4MzQ3NDA1
Y2JmOTFjZjMzOGJkNjQ1YWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzCkBAIC0zNTQsNCArMzU0LDIyIEBAIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBl
cnJvciwgcnMuZ2V0UmVhZGVyKCkucmVhZCgpKTsKIH0sICJXaGVuIHVzaW5nIGF1dG9BbGxvY2F0
ZUNodW5rU2l6ZSwgY2FsbGluZyByZXNwb25kV2l0aE5ld1ZpZXcoKSBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yIGlmIHZpZXcuYnl0ZUxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBhdXRvQWxsb2Nh
dGVDaHVua1NpemUiKTsKIAoraWYgKCFzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgICAvLyBUZXN0
IG9ubHkgaWYgbm90IFdvcmtlci4KKyAgICBjb25zdCBDbG9uZUFycmF5QnVmZmVyID0gaW50ZXJu
YWxzLmNsb25lQXJyYXlCdWZmZXIuYmluZChpbnRlcm5hbHMpOworCisgICAgdGVzdChmdW5jdGlv
bigpIHsKKyAgICAgICAgY29uc3QgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KFszLCA1LCA3
XSk7CisgICAgICAgIGNvbnN0IGNsb25lZEJ1ZmZlciA9IENsb25lQXJyYXlCdWZmZXIodHlwZWRB
cnJheS5idWZmZXIsIDEsIDEpOworICAgICAgICBjb25zdCBvdGhlckFycmF5ID0gbmV3IFVpbnQ4
QXJyYXkoY2xvbmVkQnVmZmVyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhvdGhlckFycmF5LmJ5
dGVMZW5ndGgsIDEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG90aGVyQXJyYXkuYnl0ZU9mZnNl
dCwgMCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMob3RoZXJBcnJheS5idWZmZXIuYnl0ZUxlbmd0
aCwgMSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMob3RoZXJBcnJheVswXSwgNSk7CisgICAgICAg
IC8vIENoZWNrIHRoYXQgd2hlbiB0eXBlZEFycmF5IGlzIG1vZGlmaWVkLCBvdGhlckFycmF5IGlz
IG5vdCBtb2RpZmllZC4KKyAgICAgICAgdHlwZWRBcnJheVsxXSA9IDA7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMob3RoZXJBcnJheVswXSwgNSk7CisgICAgfSwgIlRlc3QgY2xvbmVBcnJheUJ1ZmZl
ciBpbXBsZW1lbnRhdGlvbiIpOworfQorCiBkb25lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306786</attachid>
            <date>2017-04-11 01:29:34 -0700</date>
            <delta_ts>2017-04-13 09:40:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170008-20170411102932.patch</filename>
            <type>text/plain</type>
            <size>24734</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk1MWNjZWJmMDM4NWI3
NDdmZjNjNDgwZmE0MzM3ZjFjZjU2YmJlZC4uNzQyOTJiNDFjOTNjYTZmYzJhMzQ4Yzk2MzA3ZTc2
Y2QxN2E4NmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA0LTExICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBjbG9uZUFycmF5QnVmZmVyIGluIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDAwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGVkIGNsb25lQXJyYXlCdWZmZXIgYmFzZWQgb24gZXhpc3Rpbmcgc3RydWN0dXJlZENs
b25lQXJyYXlCdWZmZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBjb2RlIGhhcyBiZWVu
IGZhY3Rvcml6ZWQgc28gdGhhdCBib3RoIGNsb25lQXJyYXlCdWZmZXIKKyAgICAgICAgYW5kIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyIHJlbHkgb24gdGhlIHNhbWUgY29kZSAod2hpY2ggaXMg
YmFzaWNhbGx5CisgICAgICAgIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlciArIHRoZSBhYmlsaXR5CisgICAgICAgIHRvIGNsb25lIG9ubHkg
YSBwYXJ0IG9mIGNvbnNpZGVyZWQgYnVmZmVyKS4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL2Ns
b25lLWFycmF5LWJ1ZmZlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzOiBEZWxldGVkIGNsb25lQXJyYXlCdWZmZXIgSlMgaW1w
bGVtZW50YXRpb24uCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxz
KTogQWRkIGNsb25lQXJyYXlCdWZmZXIgcHJpdmF0ZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVB
cnJheUJ1ZmZlckltcGwpOiBBZGRlZCAobW9zdGx5IGJhc2VkIG9uIHByZXZpb3VzIHN0cnVjdHVy
ZWRDbG9uZUFycmF5QnVmZmVyKS4KKyAgICAgICAgKFdlYkNvcmU6OmNsb25lQXJyYXlCdWZmZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKTog
VXBkYXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaDogQWRkZWQg
Y2xvbmVBcnJheUJ1ZmZlciBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6IEFkZGVkIGNsb25lQXJyYXlCdWZmZXIgZGVjbGFyYXRpb24uCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBBZGRlZCBzdXBwb3J0IGZvciB0ZXN0aW5n
IGNsb25lQXJyYXlCdWZmZXIuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogQWRkZWQg
c3VwcG9ydCBmb3IgdGVzdGluZyBjbG9uZUFycmF5QnVmZmVyLgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmlkbDogQWRkZWQgc3VwcG9ydCBmb3IgdGVzdGluZyBjbG9uZUFycmF5QnVmZmVy
LgorCiAyMDE3LTA0LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCBUaW1lcjo6c3RhcnRPbmVTaG90KCkgb3ZlcmxvYWQgdGFraW5nIGEgZG91YmxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFscy5qcwppbmRleCBiODJkZTAwMTU3YTMyYjk3YjJiNTU5NDI2Zjk1
MmE3MGFiOGFlY2M2Li4yNWZlMGMxNzkzOTI2ODllYjE2MDhjZDU4YTAxNWZhMzk3ZjVlNDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMKQEAgLTM5NiwxNyArMzk2LDYgQEAgZnVuY3Rpb24g
cmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclJlc3BvbmRJbnRlcm5hbChjb250cm9sbGVyLCBi
eXRlc1dyaXR0ZW4pCiAgICAgfQogfQogCi1mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKHNyY0J1
ZmZlciwgc3JjQnl0ZU9mZnNldCwgc3JjTGVuZ3RoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQot
ICAgIC8vIEZJWE1FOiBCZWxvdyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBhcHByb3ByaWF0
ZSBkYXRhIGJ1dCBkb2VzIG5vdCBwZXJmb3JtCi0gICAgLy8gZXhhY3RseSB3aGF0IGlzIGRlc2Ny
aWJlZCBieSBFQ01BU2NyaXB0IENsb25lQXJyYXlCdWZmZXIgb3BlcmF0aW9uLiBUaGlzIHNob3Vs
ZAotICAgIC8vIGJlIGZpeGVkIGluIGEgZm9sbG93IHVwIHBhdGNoIGltcGxlbWVudGluZyBjbG9u
ZUFycmF5QnVmZmVyIGluIEpTQyAoc2ltaWxhcmx5IHRvCi0gICAgLy8gc3RydWN0dXJlZENsb25l
QXJyYXlCdWZmZXIgaW1wbGVtZW50YXRpb24pLgotICAgIHJldHVybiBzcmNCdWZmZXIuc2xpY2Uo
c3JjQnl0ZU9mZnNldCwgc3JjQnl0ZU9mZnNldCArIHNyY0xlbmd0aCk7Ci19Ci0KIGZ1bmN0aW9u
IHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJSZXNwb25kSW5SZWFkYWJsZVN0YXRlKGNvbnRy
b2xsZXIsIGJ5dGVzV3JpdHRlbiwgcHVsbEludG9EZXNjcmlwdG9yKQogewogICAgICJ1c2Ugc3Ry
aWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBiZDFiYzA2MzM2Zjc4ODFjN2UyYzJkNWZkYzJjMGY2ZDBjMzdiZTM4Li40ZDE4
NGM3M2EyMDM5NjUwYWE3Y2YwODljNDhkYTdjOGE5NjE0Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xNDIsNiArMTQyLDgg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6YWRkQnVpbHRpbkdsb2JhbHMoVk0mIHZtKQogICAg
ICAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgbWFrZVRo
aXNUeXBlRXJyb3JGb3JCdWlsdGlucyksIERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGlu
TmFtZXMoKS5tYWtlR2V0dGVyVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwKICAgICAgICAgICAgIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIG1ha2VHZXR0ZXJUeXBlRXJy
b3JGb3JCdWlsdGlucyksIERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEpTRE9NR2xv
YmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5j
bG9uZUFycmF5QnVmZmVyUHJpdmF0ZU5hbWUoKSwKKyAgICAgICAgICAgIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMywgU3RyaW5nKCksIGNsb25lQXJyYXlCdWZmZXIpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJ
bmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJQ
cml2YXRlTmFtZSgpLAogICAgICAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAx
LCBTdHJpbmcoKSwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNs
aWVudERhdGEuYnVpbHRpbk5hbWVzKCkuc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3UHJp
dmF0ZU5hbWUoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVj
dHVyZWRDbG9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xv
bmUuY3BwCmluZGV4IDQ4NjlhYzBkZjcyM2M2YjAxZTM3ZjFiMTBkM2U2ZjIzZTMzNDhiY2YuLmI1
ZjRhODY2NThkYjQyNDZjZjk4MzFiNzExNjMxNmRjODRmZTZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcApAQCAtMzUsNyArMzUsMTQgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSog
c3RhdGUpCitlbnVtIGNsYXNzIENsb25lTW9kZSB7CisgICAgRnVsbCwKKyAgICBQYXJ0aWFsLAor
fTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVySW1wbChF
eGVjU3RhdGUqLCBDbG9uZU1vZGUpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNs
b25lQXJyYXlCdWZmZXJJbXBsKEV4ZWNTdGF0ZSogc3RhdGUsIENsb25lTW9kZSBtb2RlKQogewog
ICAgIEFTU0VSVChzdGF0ZSk7CiAgICAgQVNTRVJUKHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwpA
QCAtNDgsOSArNTUsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVk
Q2xvbmVBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIHN0YXRlKQogICAgICAgICB0aHJvd0RhdGFDbG9u
ZUVycm9yKCpzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKyAgICBp
ZiAobW9kZSA9PSBDbG9uZU1vZGU6OlBhcnRpYWwpIHsKKyAgICAgICAgQVNTRVJUKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPT0gMyk7CisgICAgICAgIGludCBzcmNCeXRlT2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8aW50PihzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9OdW1iZXIoc3RhdGUpKTsK
KyAgICAgICAgaW50IHNyY0xlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDIpLnRvTnVtYmVyKHN0YXRlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
OjpEZWZhdWx0KSwgYnVmZmVyLT5zbGljZShzcmNCeXRlT2Zmc2V0LCBzcmNCeXRlT2Zmc2V0ICsg
c3JjTGVuZ3RoKSkpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlC
dWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXIo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwoc3Rh
dGUsIENsb25lTW9kZTo6UGFydGlhbCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBy
ZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwoc3RhdGUsIENsb25lTW9kZTo6RnVsbCk7Cit9CisK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJW
aWV3KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmgKaW5kZXggZWE2ZDAxYjY5NDBlMGY2
NWJlYzE3YWE3ZGQ0MDZiODA5NTNkZGU4Ny4uYTZlNGY4MzA2MzNlYWM4MzZmMDI4OTE2NzlhOGI1
YjNkYTBiZjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0
dXJlZENsb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENs
b25lLmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVm
ZmVyKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlND
OjpFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDI1ZDJlNDdiNmFiYThjMGUyNDk5YmZjMDllNWQzMzNiYmM1
MWQ3M2MuLjM5YmFhNDdjNDEzY2I2ZDk4MTk5YWZkYTgzZTBmNDZkOWNiYTk5MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTM5
LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJvZHkpIFwKICAgICBt
YWNybyhieW9iUmVxdWVzdCkgXAogICAgIG1hY3JvKGNhbmNlbCkgXAorICAgIG1hY3JvKGNsb25l
QXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhjbG9uZUZvckpTKSBcCiAgICAgbWFjcm8oY2xvc2VS
ZXF1ZXN0ZWQpIFwKICAgICBtYWNybyhjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ1OWU2ODc4ZjVmNzhmMjQ0MGIwZDIzNjgy
NWVmNTRjYTllZThjMWQuLmU3OWNiNDhlMGI2MTQ3NDBiZTQ0M2E4MWNkN2NjN2FmMzk4NWU1NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM1Myw3ICszNTMsNyBAQCBz
dGF0aWMgYm9vbCBtYXJrZXJUeXBlRnJvbShjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIERvY3Vt
ZW50TWFya2VyOjpNYXJrZXJUeXBlJgogI2VuZGlmCiAgICAgZWxzZQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzkzLDkgKzM5Myw5IEBA
IHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAg
cGFnZS5zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGZhbHNlKTsKIAogICAgIHBhZ2Uuc2V0
RGVmZXJzTG9hZGluZyhmYWxzZSk7Ci0gICAgCisKICAgICBwYWdlLm1haW5GcmFtZSgpLnNldFRl
eHRab29tRmFjdG9yKDEuMGYpOwotICAgIAorCiAgICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3
ID0gcGFnZS5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKG1haW5GcmFtZVZpZXcpIHsKICAg
ICAgICAgbWFpbkZyYW1lVmlldy0+c2V0SGVhZGVySGVpZ2h0KDApOwpAQCAtNTk2LDcgKzU5Niw3
IEBAIGJvb2wgSW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5n
JiB1cmwpCiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChjb250ZXh0RG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwodXJsKSk7CiAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlv
bihjb250ZXh0RG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KSk7Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIGNvbnRleHREb2N1bWVudCgp
LT5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gcmVzb3VyY2UgJiYgcmVzb3VyY2Ut
PnN0YXR1cygpID09IENhY2hlZFJlc291cmNlOjpDYWNoZWQ7CiB9CkBAIC03MjQsMTEgKzcyNCwx
MSBAQCB2b2lkIEludGVybmFsczo6c2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24oSFRNTElt
YWdlRWxlbWVudCYgZWxlbWVudCwgZmxvYXQgZAogICAgIGF1dG8qIGNhY2hlZEltYWdlID0gZWxl
bWVudC5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAg
aWYgKCFpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS5zZXRGcmFtZURlY29kaW5nRHVyYXRpb25G
b3JUZXN0aW5nKFNlY29uZHMgeyBkdXJhdGlvbiB9KTsKIH0KIApAQCAtOTg4LDcgKzk4OCw3IEBA
IHN0YXRpYyB1bnNpZ25lZCBkZWZlcnJlZFN0eWxlUnVsZXNDb3VudEZvckxpc3QoY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlCiAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFN0eWxlUnVs
ZUdyb3VwKiBncm91cFJ1bGUgPSBudWxscHRyOwogICAgICAgICBpZiAoaXM8U3R5bGVSdWxlTWVk
aWE+KHJ1bGUuZ2V0KCkpKQogICAgICAgICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5bGVS
dWxlTWVkaWE+KHJ1bGUuZ2V0KCkpOwpAQCAtOTk2LDExICs5OTYsMTEgQEAgc3RhdGljIHVuc2ln
bmVkIGRlZmVycmVkU3R5bGVSdWxlc0NvdW50Rm9yTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2UKICAgICAgICAgICAgIGdyb3VwUnVsZSA9IGRvd25jYXN0PFN0eWxlUnVsZVN1
cHBvcnRzPihydWxlLmdldCgpKTsKICAgICAgICAgaWYgKCFncm91cFJ1bGUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogZ3JvdXBDaGlsZFJ1bGVzID0g
Z3JvdXBSdWxlLT5jaGlsZFJ1bGVzV2l0aG91dERlZmVycmVkUGFyc2luZygpOwogICAgICAgICBp
ZiAoIWdyb3VwQ2hpbGRSdWxlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwog
ICAgICAgICBjb3VudCArPSBkZWZlcnJlZFN0eWxlUnVsZXNDb3VudEZvckxpc3QoKmdyb3VwQ2hp
bGRSdWxlcyk7CiAgICAgfQogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBzdGF0aWMgdW5zaWduZWQg
ZGVmZXJyZWRHcm91cFJ1bGVzQ291bnRGb3JMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVS
dWxlQmFzZQogICAgICAgICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9y
dHM+KHJ1bGUuZ2V0KCkpOwogICAgICAgICBpZiAoIWdyb3VwUnVsZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRvKiBncm91cENoaWxkUnVsZXMgPSBncm91
cFJ1bGUtPmNoaWxkUnVsZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCk7CiAgICAgICAgIGlmICgh
Z3JvdXBDaGlsZFJ1bGVzKQogICAgICAgICAgICAgY291bnQrKzsKQEAgLTEwNDgsNyArMTA0OCw3
IEBAIHN0YXRpYyB1bnNpZ25lZCBkZWZlcnJlZEtleWZyYW1lc1J1bGVzQ291bnRGb3JMaXN0KGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlCiAgICAgICAgICAgICAgICAgY291bnQrKzsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFN0eWxl
UnVsZUdyb3VwKiBncm91cFJ1bGUgPSBudWxscHRyOwogICAgICAgICBpZiAoaXM8U3R5bGVSdWxl
TWVkaWE+KHJ1bGUuZ2V0KCkpKQogICAgICAgICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5
bGVSdWxlTWVkaWE+KHJ1bGUuZ2V0KCkpOwpAQCAtMTA1NiwxNCArMTA1NiwxNCBAQCBzdGF0aWMg
dW5zaWduZWQgZGVmZXJyZWRLZXlmcmFtZXNSdWxlc0NvdW50Rm9yTGlzdChjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZQogICAgICAgICAgICAgZ3JvdXBSdWxlID0gZG93bmNhc3Q8U3R5bGVS
dWxlU3VwcG9ydHM+KHJ1bGUuZ2V0KCkpOwogICAgICAgICBpZiAoIWdyb3VwUnVsZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRvKiBncm91cENoaWxkUnVs
ZXMgPSBncm91cFJ1bGUtPmNoaWxkUnVsZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCk7CiAgICAg
ICAgIGlmICghZ3JvdXBDaGlsZFJ1bGVzKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAorCiAgICAgICAgIGNvdW50ICs9IGRlZmVycmVkS2V5ZnJhbWVzUnVsZXNDb3VudEZvckxpc3Qo
Kmdyb3VwQ2hpbGRSdWxlcyk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGNvdW50OwogfQog
CkBAIC0xMTM2LDcgKzExMzYsNyBAQCBzdGQ6Om9wdGlvbmFsPEludGVybmFsczo6RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3I+IEludGVybmFsczo6ZXZlbnRUaHJvdHRsaW5nQmVoYQogICAgIGF1dG8g
YmVoYXZpb3IgPSBkb2N1bWVudC0+cGFnZSgpLT5ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKCk7CiAgICAgaWYgKCFiZWhhdmlvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICAKKwogICAgIHN3aXRjaCAoYmVoYXZpb3IudmFsdWUoKSkgewogICAgIGNhc2UgV2ViQ29y
ZTo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I6OlJlc3BvbnNpdmU6CiAgICAgICAgIHJldHVybiBJ
bnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yOjpSZXNwb25zaXZlOwpAQCAtMTIwMSw3
ICsxMjAxLDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigp
CiAgICAgU3BlZWNoU3ludGhlc2lzKiBzeW50aGVzaXMgPSBET01XaW5kb3dTcGVlY2hTeW50aGVz
aXM6OnNwZWVjaFN5bnRoZXNpcygqZG9jdW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBpZiAoIXN5
bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgc3ludGhlc2lzLT5zZXRQbGF0
Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s+KHN5bnRoZXNpcykpOwogfQogCkBAIC0xNjUwLDcgKzE2NTAsNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8UmFuZ2U+PiBJbnRlcm5hbHM6OnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oaW50IHgsCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19F
UlIgfTsKIAogICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKLSAgICAKKwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZG9jdW1lbnQtPmZyYW1l
KCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBv
aW50KHgsIHkpKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBudWxscHRyOwogICAgIHJl
dHVybiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRp
b25zKTsKQEAgLTE4MDYsNyArMTgwNiw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlTGlzdD4+
IEludGVybmFsczo6bm9kZXNGcm9tUmVjdChEb2N1bWVudCYgZG9jdW1lbnQsIGludCBjCiAgICAg
fSBlbHNlIHsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcs
IHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogICAgICAgICByZW5k
ZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGNv
bnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIG5vZGVTZXQgPSByZXN1bHQucmVjdEJhc2VkVGVz
dFJlc3VsdCgpOwogICAgICAgICBtYXRjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZVNl
dC5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlU2V0KQpAQCAtMTkyNyw3
ICsxOTI3LDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBp
bnQgbGVuZ3RoKQogCiAgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxl
Y3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxl
bmd0aCk7CiB9Ci0gICAgCisKIGJvb2wgSW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVkTWFya2Vy
KGludCBmcm9tLCBpbnQgbGVuZ3RoKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpOwpAQCAtMjE4MCw3ICsyMTgwLDcgQEAgdW5zaWduZWQgSW50ZXJuYWxzOjpu
dW1iZXJPZlNjcm9sbGFibGVBcmVhcygpCiAKICAgICByZXR1cm4gY291bnQ7CiB9Ci0gICAgCisK
IEV4Y2VwdGlvbk9yPGJvb2w+IEludGVybmFsczo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZU51
bWJlcikKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKQEAg
LTIyMzMsNyArMjIzMyw3IEBAIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiBJbnRlcm5hbHM6OmxheWVy
SURGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byYgbGF5ZXJNb2RlbE9iamVj
dCA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCplbGVtZW50LnJlbmRlcmVyKCkp
OwogICAgIGlmICghbGF5ZXJNb2RlbE9iamVjdC5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9GT1VORF9FUlIgfTsKLSAgICAKKwogICAgIGF1
dG8qIGJhY2tpbmcgPSBsYXllck1vZGVsT2JqZWN0LmxheWVyKCktPmJhY2tpbmcoKTsKICAgICBy
ZXR1cm4gYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpOwogfQpAQCAt
MjMwMiwxMSArMjMwMiwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldEVsZW1l
bnRVc2VzRGlzcGxheUxpc3REcmF3aW5nKEVsZW1lbnQmIGVsZW1lbnQsCiAKICAgICBpZiAoIWVs
ZW1lbnQucmVuZGVyZXIoKS0+aGFzTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IElOVkFMSURfQUNDRVNTX0VSUiB9OwotICAgIAorCiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0g
ZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oZWxlbWVudC5yZW5kZXJlcigpKS0+bGF5
ZXIoKTsKICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwotICAgIAorCiAgICAgbGF5ZXItPmJhY2tp
bmcoKS0+c2V0VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyh1c2VzRGlzcGxheUxpc3REcmF3aW5nKTsK
ICAgICByZXR1cm4geyB9OwogfQpAQCAtMjMzMSw3ICsyMzMxLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gSW50ZXJuYWxzOjpzZXRFbGVtZW50VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoRWxlbWVudCYg
ZWxlbWVudCwKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1v
ZGVsT2JqZWN0PihlbGVtZW50LnJlbmRlcmVyKCkpLT5sYXllcigpOwogICAgIGlmICghbGF5ZXIt
PmlzQ29tcG9zaXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NF
U1NfRVJSIH07Ci0gICAgCisKICAgICBsYXllci0+YmFja2luZygpLT5zZXRJc1RyYWNraW5nRGlz
cGxheUxpc3RSZXBsYXkoaXNUcmFja2luZ1JlcGxheSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAg
LTI1NzEsNyArMjU3MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRGb290ZXJIZWlnaHQoZmxvYXQg
aGVpZ2h0KQogCiAgICAgZG9jdW1lbnQtPnZpZXcoKS0+c2V0Rm9vdGVySGVpZ2h0KGhlaWdodCk7
CiB9Ci0gICAgCisKIHZvaWQgSW50ZXJuYWxzOjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29u
dGVudEluc2V0KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OwpAQCAtMjcxNSw3ICsyNzE1LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6
c3R5bGVSZWNhbGNDb3VudCgpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElO
VkFMSURfQUNDRVNTX0VSUiB9OwotICAgIAorCiAgICAgcmV0dXJuIGRvY3VtZW50LT5zdHlsZVJl
Y2FsY0NvdW50KCk7CiB9CiAKQEAgLTI3NDIsNyArMjc0Miw3IEBAIEV4Y2VwdGlvbk9yPHVuc2ln
bmVkPiBJbnRlcm5hbHM6OmNvbXBvc2l0aW5nVXBkYXRlQ291bnQoKQogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3Vt
ZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FD
Q0VTU19FUlIgfTsKLSAgICAKKwogICAgIHJldHVybiBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5j
b21wb3NpdG9yKCkuY29tcG9zaXRpbmdVcGRhdGVDb3VudCgpOwogfQogCkBAIC0zMDM0LDEwICsz
MDM0LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Q2FwdGlvbkRpc3BsYXlN
b2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0
RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgCisKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgYXV0byYgY2FwdGlvblByZWZlcmVuY2VzID0gZG9j
dW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAgICAKKwogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAiYXV0b21hdGljIikpCiAg
ICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy5zZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShtb2RlLCAiZm9yY2Vkb25seSIpKQpAQCAtMzEwMiwxMiArMzEwMiwxMiBA
QCBFeGNlcHRpb25Pcjxib29sPiBJbnRlcm5hbHM6OmlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRp
Y2F0b3JPYnNjdXJlZChFbGVtZW50JiBlbAogCiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVt
YmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpLmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpOwogfQotICAg
IAorCiBib29sIEludGVybmFsczo6aXNQbHVnaW5TbmFwc2hvdHRlZChFbGVtZW50JiBlbGVtZW50
KQogewogICAgIHJldHVybiBpczxIVE1MUGx1Z0luRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpLmRpc3BsYXlTdGF0ZSgpIDw9IEhUTUxQbHVn
SW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNob3Q7CiB9Ci0gICAgCisKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgp
CkBAIC0zMTI1LDcgKzMxMjUsNyBAQCBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmJ1ZmZlcmVk
U2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVyJiBidWZmZXIsIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGJ1ZmZlci5idWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKHRyYWNrSUQpOwogfQotICAgIAor
CiBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoU291
cmNlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKIHsKICAgICBy
ZXR1cm4gYnVmZmVyLmVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQodHJhY2tJRCk7CkBAIC0zMTY1
LDcgKzMxNjUsNyBAQCB2b2lkIEludGVybmFsczo6ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
KGNvbnN0IFN0cmluZyYgZmxhZ3NTdHJpbmcpCiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZmxhZ3NTdHJpbmcsICJtYXlyZXN1bWVwbGF5aW5nIikpCiAgICAgICAgIGZs
YWdzID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7Ci0gICAgCisKICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5lbmRJbnRlcnJ1
cHRpb24oZmxhZ3MpOwogfQogCkBAIC0zMzE4LDcgKzMzMTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmRTdHJpbgogICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1Bs
YXliYWNrUG9zaXRpb25Db21tYW5kOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwotICAgIAorCiAgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KGNvbW1hbmQsICZwYXJhbWV0ZXIpOwogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNTkzLDEyICsz
NTkzLDEyIEBAIHN0YXRpYyB2b2lkIGFwcGVuZE9mZnNldHMoU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGp1c3RTdGFydGlu
ZyA9IGZhbHNlOwotICAgICAgICAKKwogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51
bWJlcihjb29yZGluYXRlLnRvVW5zaWduZWQoKSkpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB9Iik7CiB9Ci0gICAgCisKIHZvaWQgSW50ZXJuYWxzOjpzZXRQbGF0Zm9ybU1v
bWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb25FbmFibGVkKGVuYWJsZWQpOwpAQCAtMzYxMywxMyArMzYxMywxMyBAQCBFeGNlcHRp
b25PcjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCYgZWxlbWVu
dCkKIAogICAgIFJlbmRlckJveCYgYm94ID0gKmVsZW1lbnQucmVuZGVyQm94KCk7CiAgICAgU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhOwotICAgIAorCiAgICAgaWYgKGJveC5pc0JvZHko
KSkgewogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGJveC5mcmFtZSgpLm1haW5GcmFt
ZSgpLnZpZXcoKTsKICAgICAgICAgaWYgKCFmcmFtZVZpZXcgfHwgIWZyYW1lVmlldy0+aXNTY3Jv
bGxhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1Nf
RVJSIH07CiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWVWaWV3OwotICAgICAgICAKKwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghYm94LmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxh
YmxlQXJlYSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNT
X0VSUiB9OwpAQCAtMzYyOCw3ICszNjI4LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5h
bHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBpZiAoIXNjcm9s
bGFibGVBcmVhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisKICAgICBTdHJpbmdC
dWlsZGVyIHJlc3VsdDsKIAogICAgIGlmIChhdXRvKiBvZmZzZXRzID0gc2Nyb2xsYWJsZUFyZWEt
Pmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSB7CkBAIC0zNzE3LDcgKzM3MTcsNyBAQCB2b2lkIElu
dGVybmFsczo6c2V0U2hvd0FsbFBsdWdpbnMoYm9vbCBzaG93KQogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzc1MCw2ICszNzUwLDMyIEBAIGJvb2wgSW50
ZXJuYWxzOjppc1JlYWRhYmxlU3RyZWFtRGlzdHVyYmVkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSBzdHJlYW0pCiAgICAgcmV0dXJuIHJldHVybmVkVmFsdWUuYXNCb29sZWFuKCk7CiB9
CiAKKyNpZiBFTkFCTEUoUkVBREFCTEVfQllURV9TVFJFQU1fQVBJKQorCitKU1ZhbHVlIEludGVy
bmFsczo6Y2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYnVm
ZmVyLCBKU1ZhbHVlIHNyY0J5dGVPZmZzZXQsIEpTVmFsdWUgc3JjTGVuZ3RoKQoreworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS52bUVudHJ5R2xvYmFsT2JqZWN0KCk7
CisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHN0YXRlLnZtKCkuY2xpZW50RGF0YSk7CisgICAgY29uc3QgSWRlbnRpZmllciYgcHJp
dmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluTmFtZXMoKS5jbG9uZUFycmF5QnVmZmVyUHJp
dmF0ZU5hbWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlOworICAgIFByb3BlcnR5U2xvdCBwcm9wZXJ0
eVNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgJnN0YXRlLCBwcml2YXRlTmFtZSwgcHJvcGVydHlTbG90KTsKKyAgICB2YWx1ZSA9IHBy
b3BlcnR5U2xvdC5nZXRWYWx1ZSgmc3RhdGUsIHByaXZhdGVOYW1lKTsKKyAgICBBU1NFUlQodmFs
dWUuaXNGdW5jdGlvbigpKTsKKworICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IHZhbHVlLmdldE9i
amVjdCgpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
SlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChidWZmZXIpOworICAgIGFyZ3VtZW50cy5hcHBl
bmQoc3JjQnl0ZU9mZnNldCk7CisgICAgYXJndW1lbnRzLmFwcGVuZChzcmNMZW5ndGgpOworCisg
ICAgcmV0dXJuIEpTQzo6Y2FsbCgmc3RhdGUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKK30KKworI2VuZGlmCiAjZW5kaWYKIAog
U3RyaW5nIEludGVybmFsczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDRiYzM4ZDgw
MjA3NGNlNDlmNDRmYTc3NDY2OGIxYTZkOWExNTQ1NWMuLjgzOWQzYTE3NWQ1YTMzNmYwMTA0YjY2
Nzc4NWE1ZTI4ZjlmMWUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTkx
LDE0ICsxOTEsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCk7
CiAgICAgdm9pZCBzZXRGb250U21vb3RoaW5nRW5hYmxlZChib29sKTsKLSAgICAKKwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldExvd1Bvd2VyTW9kZUVuYWJsZWQoYm9vbCk7CiAKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRTY3JvbGxWaWV3UG9zaXRpb24oaW50IHgsIGludCB5KTsKLSAgICAK
KwogICAgIEV4Y2VwdGlvbk9yPFJlZjxDbGllbnRSZWN0Pj4gbGF5b3V0Vmlld3BvcnRSZWN0KCk7
CiAgICAgRXhjZXB0aW9uT3I8UmVmPENsaWVudFJlY3Q+PiB2aXN1YWxWaWV3cG9ydFJlY3QoKTsK
LSAgICAKKwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9y
KGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQ
YWdpbmF0aW9uKGNvbnN0IFN0cmluZyYgbW9kZSwgaW50IGdhcCwgaW50IHBhZ2VMZW5ndGgpOwpA
QCAtMzcxLDcgKzM3MSw3IEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0
VHJhY2tpbmdMYXllckZsdXNoZXMoKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gbGF5ZXJG
bHVzaENvdW50KCk7Ci0gICAgCisKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFRyYWNraW5n
U3R5bGVSZWNhbGNzKCk7CiAgICAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IHN0eWxlUmVjYWxjQ291
bnQoKTsKICAgICB1bnNpZ25lZCBsYXN0U3R5bGVVcGRhdGVTaXplKCkgY29uc3Q7CkBAIC01Mjcs
MTAgKzUyNywxMyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVBREFCTEVfU1RSRUFNX0FQSSkK
ICAgICBib29sIGlzUmVhZGFibGVTdHJlYW1EaXN0dXJiZWQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUpOworI2lmIEVOQUJMRShSRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpCisgICAgSlND
OjpKU1ZhbHVlIGNsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBTdHJp
bmcgY29tcG9zZWRUcmVlQXNUZXh0KE5vZGUmKTsKLSAgICAKKwogICAgIGJvb2wgaXNQcm9jZXNz
aW5nVXNlckdlc3R1cmUoKTsKICAgICBkb3VibGUgbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVz
dGFtcCgpOwogCkBAIC01NDAsNyArNTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKIAog
ICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Q7Ci0gICAgCisKICAgICB2
b2lkIHJlcG9ydEJhY2t0cmFjZSgpOwogCiAgICAgZW51bSBjbGFzcyBCYXNlV3JpdGluZ0RpcmVj
dGlvbiB7IE5hdHVyYWwsIEx0ciwgUnRsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggYjg1YTA0OTY0OTU0NTIyNzBkN2EwMzA3Yjc3MjU3NDZhMTBiMmQxOS4uNzQ0YjZh
ODk0M2FhMWIyNzc1N2VjZDY2ZmMzZDIxNzU2MzNhZjA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtNDkxLDYgKzQ5MSw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3IgewogCiAgICAgdm9pZCBzZXRTaG93QWxsUGx1Z2lucyhib29sZWFuIHNob3dBbGwpOwog
CisgICAgW0NvbmRpdGlvbmFsPVJFQURBQkxFX1NUUkVBTV9BUEkmUkVBREFCTEVfQllURV9TVFJF
QU1fQVBJLCBDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gYW55IGNsb25lQXJyYXlCdWZmZXIoYW55IGJ1
ZmZlciwgYW55IHNyY0J5dGVPZmZzZXQsIGFueSBieXRlTGVuZ3RoKTsKICAgICBbQ29uZGl0aW9u
YWw9UkVBREFCTEVfU1RSRUFNX0FQSSwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIGJvb2xlYW4gaXNS
ZWFkYWJsZVN0cmVhbURpc3R1cmJlZChhbnkgc3RyZWFtKTsKIAogICAgIERPTVN0cmluZyByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRm9yT3JpZ2luKERPTVN0cmluZyBkb21haW4pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ2
Y2Q3MjFjOGU3NjYwYzU3YTUwN2NiZjg3ZDJkYzJmNDNlNmU2YzIuLjNhY2UyOTk3MDk0YzM2ZWZi
MTIwN2NiOGYzYTliMGE3NDk3YTcyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNC0x
MSAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fub24uZnI+CisK
KyAgICAgICAgW1JlYWRhYmxlIFN0cmVhbXMgQVBJXSBJbXBsZW1lbnQgY2xvbmVBcnJheUJ1ZmZl
ciBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzAwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCB0ZXN0IHRvIGNoZWNrIGNsb25lQXJyYXlCdWZmZXIgYmVoYXZpb3VyLiAKKwor
ICAgICAgICAqIHN0cmVhbXMvY2xvbmUtYXJyYXktYnVmZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RyZWFtcy9jbG9uZS1hcnJheS1idWZmZXIuaHRtbDogQWRkZWQuCisKIDIw
MTctMDQtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgR1RLKyBnYXJkZW5pbmcuIE1hcmsgc2V2ZXJhbCB0ZXN0cyBhcyBm
YWlsaW5nL3RpbWluZyBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL2Nsb25l
LWFycmF5LWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL2Nsb25lLWFy
cmF5LWJ1ZmZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZiYTU1Nzk5M2FmMmJlOWZjZTU0
YzcwNTQ5YTM2MGExMGY0YmRkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVh
bXMvY2xvbmUtYXJyYXktYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBUZXN0IGNsb25lQXJyYXlCdWZmZXIgaW1wbGVtZW50YXRpb24gCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvY2xvbmUtYXJyYXktYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL2Nsb25lLWFycmF5LWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhOWUwN2M0OTljNTA4
NzZlY2JlODM5YWRiYzE1YzdiYzlmM2UxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL2Nsb25lLWFycmF5LWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKworPCFE
T0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMn
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgQ2xvbmVBcnJheUJ1
ZmZlciA9IGludGVybmFscy5jbG9uZUFycmF5QnVmZmVyLmJpbmQoaW50ZXJuYWxzKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBjb25zdCB0eXBlZEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoWzMs
IDUsIDddKTsKKyAgICBjb25zdCBjbG9uZWRCdWZmZXIgPSBDbG9uZUFycmF5QnVmZmVyKHR5cGVk
QXJyYXkuYnVmZmVyLCAxLCAxKTsKKyAgICBjb25zdCBvdGhlckFycmF5ID0gbmV3IFVpbnQ4QXJy
YXkoY2xvbmVkQnVmZmVyKTsKKyAgICBhc3NlcnRfZXF1YWxzKG90aGVyQXJyYXkuYnl0ZUxlbmd0
aCwgMSk7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlckFycmF5LmJ5dGVPZmZzZXQsIDApOworICAg
IGFzc2VydF9lcXVhbHMob3RoZXJBcnJheS5idWZmZXIuYnl0ZUxlbmd0aCwgMSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhvdGhlckFycmF5WzBdLCA1KTsKKyAgICAvLyBDaGVjayB0aGF0IHdoZW4gdHlw
ZWRBcnJheSBpcyBtb2RpZmllZCwgb3RoZXJBcnJheSBpcyBub3QgbW9kaWZpZWQuCisgICAgdHlw
ZWRBcnJheVsxXSA9IDA7CisgICAgYXNzZXJ0X2VxdWFscyhvdGhlckFycmF5WzBdLCA1KTsKK30s
ICJUZXN0IGNsb25lQXJyYXlCdWZmZXIgaW1wbGVtZW50YXRpb24iKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>