<?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>226425</bug_id>
          
          <creation_ts>2021-05-29 15:21:03 -0700</creation_ts>
          <short_desc>Adopt BifurcatedGraphicsContext for backing store + display list RemoteLayerBackingStore</short_desc>
          <delta_ts>2021-07-16 11:24:45 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765138</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-29 15:21:03 -0700</bug_when>
    <thetext>Adopt BifurcatedGraphicsContext for backing store + display list RemoteLayerBackingStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765139</commentid>
    <comment_count>1</comment_count>
      <attachid>430113</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-29 15:22:36 -0700</bug_when>
    <thetext>Created attachment 430113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765140</commentid>
    <comment_count>2</comment_count>
      <attachid>430113</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-29 15:24:24 -0700</bug_when>
    <thetext>Comment on attachment 430113
Patch

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

Needs a bunch more ifdefs, too.

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:60
&gt; +    void ensureBackingStore(Type, WebCore::FloatSize, float scale, bool deepColor, bool isOpaque, bool includeDisplayList);

Should not be just a bool

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:298
&gt; +    m_frontBuffer.imageBuffer-&gt;flushDrawingContextAsync();
&gt; +
&gt; +    m_frontBufferFlusher = m_frontBuffer.imageBuffer-&gt;createFlusher();

Need to make sure that it&apos;s OK to not flush the DL ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766191</commentid>
    <comment_count>3</comment_count>
      <attachid>430413</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-02 15:47:47 -0700</bug_when>
    <thetext>Created attachment 430413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766236</commentid>
    <comment_count>4</comment_count>
      <attachid>430424</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-02 17:34:05 -0700</bug_when>
    <thetext>Created attachment 430424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766630</commentid>
    <comment_count>5</comment_count>
      <attachid>430528</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-03 18:39:57 -0700</bug_when>
    <thetext>Created attachment 430528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766776</commentid>
    <comment_count>6</comment_count>
      <attachid>430528</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 08:38:24 -0700</bug_when>
    <thetext>Comment on attachment 430528
Patch

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

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:60
&gt; +    enum class IncludeDisplayList : bool { No, Yes };

This feels a bit confusing, since this includes the CGDisplayList not the WebCore DisplayList. 

I also think it would be useful to keep around the &quot;only send the CGDisplayList&quot; version for a bit if we can. I wonder if we can generalize this a bit to keep that around without adding too much overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766777</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 08:38:50 -0700</bug_when>
    <thetext>Let&apos;s chat about this a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766879</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-04 12:31:29 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; Comment on attachment 430528 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430528&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:60
&gt; &gt; +    enum class IncludeDisplayList : bool { No, Yes };
&gt; 
&gt; This feels a bit confusing, since this includes the CGDisplayList not the
&gt; WebCore DisplayList. 

... true.

&gt; I also think it would be useful to keep around the &quot;only send the
&gt; CGDisplayList&quot; version for a bit if we can. I wonder if we can generalize
&gt; this a bit to keep that around without adding too much overhead.

We could, I don&apos;t even think it would be particularly high overhead. I will peek.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766982</commentid>
    <comment_count>9</comment_count>
      <attachid>430528</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 16:14:51 -0700</bug_when>
    <thetext>Comment on attachment 430528
Patch

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

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:123
&gt;          RefPtr&lt;WebCore::ImageBuffer&gt; imageBuffer;
&gt; +#if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER)
&gt; +        RefPtr&lt;WebCore::ImageBuffer&gt; displayListImageBuffer;
&gt; +#endif

Ultimately, I think it would be beneficial if we could avoid this layer being aware of the two image buffers at all, but just having a single bifurcated ImageBuffer class and letting the interface take care of things. That way, if we need a different structure in the future this won&apos;t have to change (and all the other benefits that come with good abstractions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767155</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-05 15:22:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78911168&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777478</commentid>
    <comment_count>11</comment_count>
      <attachid>433667</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-07-16 02:51:27 -0700</bug_when>
    <thetext>Created attachment 433667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777547</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-16 11:24:43 -0700</bug_when>
    <thetext>Committed r279992 (239735@main): &lt;https://commits.webkit.org/239735@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433667.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430113</attachid>
            <date>2021-05-29 15:22:36 -0700</date>
            <delta_ts>2021-06-02 15:47:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226425-20210529152235.patch</filename>
            <type>text/plain</type>
            <size>18192</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEwNjA2MDM3NjdiMmFjOTQ1
ZWE4NTNjN2YwODc5NWMwY2I3ZTE2MWMuLjFkNTdmODJkNzg1MDNhY2IxMjcwYWE4Mjg5ZjEzNmI3
MmU1MzZjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMjkgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dCBmb3IgYmFja2luZyBzdG9yZSArIGRpc3BsYXkgbGlzdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3Vy
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3
YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpsYXllckNv
bnRlbnRzRm9yQnVmZmVySGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXll
cnMubW06CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250ZW50czp3aXRo
RGlzcGxheUxpc3Q6XSk6CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250
ZW50c0Rpc3BsYXlMaXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbXBvc2l0aW5nTGF5
ZXIgX3drQ29udGVudHNEaXNwbGF5TGlzdF0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVCYWNraW5nU3RvcmUp
OgorICAgICAgICBJbnN0ZWFkIG9mICJkaXNwbGF5IGxpc3QgYmFja2VkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlIiBiZWluZyBpdHMgb3duCisgICAgICAgIGJhY2tpbmcgc3RvcmUgdHlwZSwgd2Ug
bWFrZSAiaW5jbHVkZXMgYSBkaXNwbGF5IGxpc3QiIGEgc2VwYXJhdGUgYml0LgorICAgICAgICBU
aGlzIHdheSwgd2UgY2FuIHBhaW50IGJvdGggYSBiaXRtYXAgKElPU3VyZmFjZSBvciBDRyBiaXRt
YXAsIGFsbAorICAgICAgICBleGFjdGx5IGFzIGl0IG5vcm1hbGx5IGlzKSwgYW5kIGFsc28gY2Fy
cnkgYSBzaWRlY2FyIGRpc3BsYXkgbGlzdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
Z2V0cyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGJpdG1hcCBhbmQgZGlzcGxheSBsaXN0IGV4aXN0
CisgICAgICAgIGluIHRoZSBVSSBwcm9jZXNzLCBidXQgY3VycmVudGx5IG9ubHkgYXBwbGllcyB0
aGUgZGlzcGxheSBsaXN0LCBsZWF2aW5nCisgICAgICAgIGJlaGF2aW9yIGFzIGl0IHdhcyBpbiBy
Mjc3MjEwLgorCiAyMDIxLTA1LTI4ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBIRFIgdmFyaWFudHMgaW4gSExTIHBsYXlsaXN0cyBub3Qg
c2VsZWN0ZWQgd2hlbiBzY3JlZW4gaXMgSERSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDc1MjNjYjc5Yjg5YTMyNDI1MWIxYzg4MzJmM2ViNTA2YmI4ZThhNTkuLmJiMmJkMWI2MjA0
NTVlNThiNjMwNjg4YmE1YTcxZjVlYjg4ZGY4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oCkBAIC01NCwxMyArNTQsMTAgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7CiAgICAgICAgIElPU3VyZmFjZSwKLSAgICAgICAgQml0bWFwLAotI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgQ0dEaXNwbGF5
TGlzdCwKLSNlbmRpZgorICAgICAgICBCaXRtYXAKICAgICB9OwogCi0gICAgdm9pZCBlbnN1cmVC
YWNraW5nU3RvcmUoVHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplLCBmbG9hdCBzY2FsZSwgYm9vbCBk
ZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUpOworICAgIHZvaWQgZW5zdXJlQmFja2luZ1N0b3JlKFR5
cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSwgZmxvYXQgc2NhbGUsIGJvb2wgZGVlcENvbG9yLCBib29s
IGlzT3BhcXVlLCBib29sIGluY2x1ZGVEaXNwbGF5TGlzdCk7CiAKICAgICB2b2lkIHNldE5lZWRz
RGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxh
eSgpOwpAQCAtMTIwLDYgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgQnVmZmVyIHsK
ICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBkaXNwbGF5TGlzdEltYWdlQnVmZmVyOwog
ICAgICAgICBib29sIGlzVm9sYXRpbGUgPSBmYWxzZTsKIAogICAgICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QKQEAgLTEzNCwxMCArMTMyLDEyIEBAIHByaXZhdGU6CiAgICAgQnVm
ZmVyIG1fYmFja0J1ZmZlcjsKICAgICBCdWZmZXIgbV9zZWNvbmRhcnlCYWNrQnVmZmVyOwogICAg
IE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9idWZmZXJIYW5kbGU7CisgICAg
T3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBtX2Rpc3BsYXlMaXN0QnVmZmVySGFu
ZGxlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZl
ckZsdXNoZXI+IG1fZnJvbnRCdWZmZXJGbHVzaGVyOwogCiAgICAgVHlwZSBtX3R5cGU7CisgICAg
Ym9vbCBtX2luY2x1ZGVEaXNwbGF5TGlzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RlZXBDb2xv
ciB7IGZhbHNlIH07CiAKICAgICBXZWJDb3JlOjpSZXBhaW50UmVjdExpc3QgbV9wYWludGluZ1Jl
Y3RzOwpAQCAtMTUxLDEyICsxNTEsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlPiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6VHlwZQotICAgICAgICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZQotICAgICAgICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAotI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFD
S0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgLCBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpUeXBlOjpDR0Rpc3BsYXlMaXN0Ci0jZW5kaWYKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6VHlwZSwKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNlLAorICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpUeXBlOjpCaXRtYXAKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCmluZGV4IGI3YTI4ZGQ3NTc0YTU3MzgzMzZmNjYxZTQ4MzcwZGViY2EyZjk1MDIu
LmZkZjQ4OTI2OWM1MWUzM2I0YmZlMTUzY2Y0ZGNiZTUyMGM5NzViMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CkBAIC03
NSw5ICs3Niw5IEBAIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp+UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUoKQogICAgICAgICBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEZXN0cm95ZWQoKnRo
aXMpOwogfQogCi12b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3Rv
cmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUsIGJvb2wg
ZGVlcENvbG9yLCBib29sIGlzT3BhcXVlKQordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGZs
b2F0IHNjYWxlLCBib29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSwgYm9vbCBpbmNsdWRlRGlz
cGxheUxpc3QpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSB0eXBlICYmIG1fc2l6ZSA9PSBzaXplICYm
IG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVlcENvbG9yICYmIG1faXNPcGFx
dWUgPT0gaXNPcGFxdWUpCisgICAgaWYgKG1fdHlwZSA9PSB0eXBlICYmIG1fc2l6ZSA9PSBzaXpl
ICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVlcENvbG9yICYmIG1faXNP
cGFxdWUgPT0gaXNPcGFxdWUgJiYgbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gaW5jbHVkZURpc3Bs
YXlMaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3R5cGUgPSB0eXBlOwpAQCAtODUsNiAr
ODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUo
VHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogICAgIG1fc2NhbGUgPSBzY2FsZTsKICAg
ICBtX2RlZXBDb2xvciA9IGRlZXBDb2xvcjsKICAgICBtX2lzT3BhcXVlID0gaXNPcGFxdWU7Cisg
ICAgbV9pbmNsdWRlRGlzcGxheUxpc3QgPSBpbmNsdWRlRGlzcGxheUxpc3Q7CiAKICAgICBpZiAo
bV9mcm9udEJ1ZmZlcikgewogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdmFsaWQgYmFja2luZyBz
dG9yZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBnZXRzIGNvbXBsZXRlbHkKQEAgLTEwOCw2
ICsxMTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zaXplOwogICAgIGVuY29kZXIg
PDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7CisgICAgZW5jb2RlciA8PCBt
X2luY2x1ZGVEaXNwbGF5TGlzdDsKIAogICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZT4gaGFuZGxlOwogICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0x
MjEsMTUgKzEyNCwxOCBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAg
ICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJhY2tlbmQmPigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CiAgICAgICAgICAg
ICBicmVhazsKLSNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIp
Ci0gICAgICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgICAgIGhhbmRsZSA9
IHN0YXRpY19jYXN0PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQmPigqbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICB9
CiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisKKyNpZiBFTkFCTEUoQ0dfRElTUExB
WV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgT3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKKyAgICBpZiAobV9mcm9udEJ1ZmZlci5kaXNw
bGF5TGlzdEltYWdlQnVmZmVyKQorICAgICAgICBkaXNwbGF5TGlzdEhhbmRsZSA9IHN0YXRpY19j
YXN0PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQmPigqbV9mcm9udEJ1ZmZlci5kaXNw
bGF5TGlzdEltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKS5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKTsKKworICAgIGVuY29kZXIgPDwgZGlzcGxheUxpc3RIYW5kbGU7
CisjZW5kaWYKIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIHJlc3VsdCkKQEAgLTE0
Niw5ICsxNTIsMTcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJCYWNraW5nU3QKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5tX2lzT3BhcXVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pbmNsdWRlRGlzcGxheUxpc3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2J1ZmZl
ckhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tX2Rpc3BsYXlMaXN0QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjIyLDI3ICsyMzYsMTkgQEAgdm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tl
bmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOworICAg
IH0KKwogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAg
ICBjYXNlIFR5cGU6OkNHRGlzcGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7Ci0gICAgICAgIGJy
ZWFrOworICAgIGlmIChtX2luY2x1ZGVEaXNwbGF5TGlzdCkKKyAgICAgICAgbV9mcm9udEJ1ZmZl
ci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51
bGxwdHIpOwogI2VuZGlmCi0gICAgfQogfQogCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkKIHsKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAg
IGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCi0gICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBGSVhNRTogRmluZCBh
IHdheSB0byBzdXBwb3J0IHBhcnRpYWwgcmVwYWludCBmb3IgYmFja2luZyBzdG9yZSB0aGF0Cisg
ICAgLy8gaW5jbHVkZXMgYSBkaXNwbGF5IGxpc3Qgd2l0aG91dCBhbGxvd2luZyB1bmJvdW5kZWQg
bWVtb3J5IGdyb3d0aC4KKyAgICByZXR1cm4gIW1faW5jbHVkZURpc3BsYXlMaXN0OwogfQogCiBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKQEAgLTI3NCw3ICsyODAsMjgg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgaWYgKCFtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKKyAgICBpZiAobV9pbmNsdWRlRGlzcGxheUxpc3QpIHsKKyAgICAgICAgV2Vi
Q29yZTo6QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSwgbV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVy
LT5jb250ZXh0KCkpOworICAgICAgICBkcmF3SW5Db250ZXh0KGNvbnRleHQpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAgZHJhd0luQ29udGV4dChjb250
ZXh0KTsgICAgCisgICAgfQorCisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigp
OworICAgIG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworCisgICAgbV9sYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworCisgICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFzeW5jKCk7CisKKyAgICBtX2Zy
b250QnVmZmVyRmx1c2hlciA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNo
ZXIoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sK
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGxlc3MgdGhhbiB3ZWJMYXllck1heFJlY3RzVG9QYWlu
dCByZWN0cyB0byBwYWludCBhbmQgdGhleSBjb3ZlciBsZXNzCkBAIC0yOTcsNiArMzI0LDcgQEAg
Ym9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fcGFpbnRp
bmdSZWN0cy5hcHBlbmQoc2NhbGVkUmVjdCk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6SW50UmVj
dCBsYXllckJvdW5kcyhXZWJDb3JlOjpJbnRQb2ludCgpLCBXZWJDb3JlOjpleHBhbmRlZEludFNp
emUobV9zaXplKSk7CiAgICAgaWYgKCFtX2RpcnR5UmVnaW9uLmNvbnRhaW5zKGxheWVyQm91bmRz
KSkgewogICAgICAgICBBU1NFUlQobV9iYWNrQnVmZmVyLmltYWdlQnVmZmVyKTsKICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlciwgeyB7MCwg
MH0sIG1fc2l6ZSB9LCB7IHswLCAwfSwgbV9zaXplIH0sIHsgV2ViQ29yZTo6Q29tcG9zaXRlT3Bl
cmF0b3I6OkNvcHkgfSk7CkBAIC0zNTQsMTcgKzM4Miw2IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfTsKLQotICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24o
KTsKLSAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsKLQotICAgIG1fbGF5ZXItPm93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKLQotICAgIG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpOwotCi0gICAgbV9m
cm9udEJ1ZmZlckZsdXNoZXIgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVz
aGVyKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgdm9pZCAoXmJsb2NrKShXZWJDb3JlOjpGbG9hdFJlY3QpKQpAQCAtMzgyLDQyICsz
OTksNTggQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYKICAgICB9CiB9CiAKLXZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXll
ciwgTGF5ZXJDb250ZW50c1R5cGUgY29udGVudHNUeXBlKQorc3RhdGljIGlkIGxheWVyQ29udGVu
dHNGb3JCdWZmZXJIYW5kbGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiBidWZmZXJIYW5kbGUs
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSBjb250ZW50c1R5cGUp
CiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVySGFuZGxlKTsKLSAgICBsYXllci5jb250ZW50c09wYXF1
ZSA9IG1faXNPcGFxdWU7Ci0KLSAgICBXVEY6OnN3aXRjaE9uKCptX2J1ZmZlckhhbmRsZSwKKyAg
ICBpZCBjb250ZW50czsKKyAgICBXVEY6OnN3aXRjaE9uKGJ1ZmZlckhhbmRsZSwKICAgICAgICAg
WyZdIChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGU6OkJpdG1hcCk7CiAgICAgICAgICAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAgICAgICAgICBsYXllci5jb250ZW50
cyA9IChfX2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgICAg
ICAgICAgY29udGVudHMgPSAoX19icmlkZ2UgaWQpYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKS5n
ZXQoKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChNYWNoU2VuZFJpZ2h0JiBtYWNoU2VuZFJp
Z2h0KSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewotICAgICAgICAgICAgY2FzZSBMYXll
ckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CisgICAgICAgICAgICBjYXNlIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKLSAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBz
dXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKKyAgICAgICAgICAgICAgICBjb250ZW50
cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgTGF5ZXJDb250
ZW50c1R5cGU6OkNBTWFjaFBvcnQ6Ci0gICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAo
X19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRlKG1hY2hTZW5kUmlnaHQubGVha1Nl
bmRSaWdodCgpKSkuZ2V0KCk7CisgICAgICAgICAgICBjYXNlIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9ydDoKKyAgICAgICAgICAgICAgICBjb250
ZW50cyA9IChfX2JyaWRnZSBpZClhZG9wdENGKENBTWFjaFBvcnRDcmVhdGUobWFjaFNlbmRSaWdo
dC5sZWFrU2VuZFJpZ2h0KCkpKS5nZXQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lN
QUdFX0JVRkZFUikKICAgICAgICAgLCBbJl0gKElQQzo6U2hhcmVkQnVmZmVyQ29weSYgYnVmZmVy
KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNHRGlzcGxheUxpc3QpOwot
ICAgICAgICAgICAgQVNTRVJUKFtsYXllciBpc0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nTGF5
ZXIgY2xhc3NdXSk7Ci0gICAgICAgICAgICBpZiAoIVtsYXllciBpc0tpbmRPZkNsYXNzOltXS0Nv
bXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBbbGF5ZXIgc2V0VmFsdWU6QDEgZm9yS2V5UGF0aDpXS0NHRGlzcGxheUxpc3RFbmFibGVk
S2V5XTsKLSAgICAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci5idWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7Ci0gICAgICAgICAgICBbKFdLQ29tcG9zaXRpbmdMYXllciAqKWxheWVyIF9zZXRXS0Nv
bnRlbnRzRGlzcGxheUxpc3Q6ZGF0YS5nZXQoKV07CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgKTsKKworICAgIHJldHVybiBjb250ZW50
czsKK30KKwordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVU
b0xheWVyKENBTGF5ZXIgKmxheWVyLCBMYXllckNvbnRlbnRzVHlwZSBjb250ZW50c1R5cGUpCit7
CisgICAgQVNTRVJUKG1fYnVmZmVySGFuZGxlKTsKKyAgICBsYXllci5jb250ZW50c09wYXF1ZSA9
IG1faXNPcGFxdWU7CisKKyAgICBpZCBjb250ZW50cyA9IGxheWVyQ29udGVudHNGb3JCdWZmZXJI
YW5kbGUoKm1fYnVmZmVySGFuZGxlLCBjb250ZW50c1R5cGUpOworCisjaWYgRU5BQkxFKENHX0RJ
U1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIGlmIChtX2Rpc3BsYXlMaXN0QnVm
ZmVySGFuZGxlKSB7CisgICAgICAgIEFTU0VSVChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV0tDb21w
b3NpdGluZ0xheWVyIGNsYXNzXV0pOworICAgICAgICBpZiAoIVtsYXllciBpc0tpbmRPZkNsYXNz
OltXS0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgW2xheWVyIHNldFZhbHVlOkAxIGZvcktleVBhdGg6V0tDR0Rpc3BsYXlMaXN0RW5hYmxlZEtl
eV07CisgICAgICAgIGF1dG8gZGF0YSA9IFdURjo6Z2V0PElQQzo6U2hhcmVkQnVmZmVyQ29weT4o
Km1fZGlzcGxheUxpc3RCdWZmZXJIYW5kbGUpLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKKyAg
ICAgICAgWyhXS0NvbXBvc2l0aW5nTGF5ZXIgKilsYXllciBfc2V0V0tDb250ZW50czpjb250ZW50
cyB3aXRoRGlzcGxheUxpc3Q6ZGF0YS5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKworICAgIGxheWVyLmNvbnRlbnRzID0gY29udGVudHM7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6dGFrZVBlbmRpbmdGbHVzaGVyKCkKQEAgLTQ4OCw2ICs1MjEsNyBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQoKQogICAgIGlmIChpbWFn
ZUJ1ZmZlcikKICAgICAgICAgaW1hZ2VCdWZmZXItPnJlbGVhc2VCdWZmZXJUb1Bvb2woKTsKICAg
ICBpbWFnZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgZGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IG51
bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVy
cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90
ZUxheWVyVHJlZUxheWVycy5oCmluZGV4IGFiNTFjNGMwOGY5ZjA1OTRkNzA2NmU4MTUwOWZjOGU3
MzFjMDUxMmEuLjdiNTE1ZTZiNjdkN2Y1ZGU4Y2IzMzFhZjc0NDEyNjkxMDYzYjUzMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1v
dGVMYXllclRyZWVMYXllcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgKQEAgLTMzLDcgKzMzLDcgQEAK
IEBpbnRlcmZhY2UgV0tDb21wb3NpdGluZ0xheWVyIDogQ0FMYXllcgogCiAjaWYgRU5BQkxFKENH
X0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotQHByb3BlcnR5IChub25hdG9taWMs
IHJldGFpbiwgc2V0dGVyPV9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6KSBfX2F0dHJpYnV0ZV9f
KChOU09iamVjdCkpIENGRGF0YVJlZiBfd2tDb250ZW50c0Rpc3BsYXlMaXN0OworLSAodm9pZClf
c2V0V0tDb250ZW50czooaWQpY29udGVudHMgd2l0aERpc3BsYXlMaXN0OihDRkRhdGFSZWYpZGF0
YTsKICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVy
cy5tbQppbmRleCA2YjM4YWExMGMyNDdmNjhkN2Q1MmIzMGQzYmNiOWI4ZDRjNTdlYzkzLi5kZWE3
YjZhZjVmNDk1ZmIxYWFhNTM1N2QwYTI2OTI5YWM4MTViZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5
ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2Nv
YS9SZW1vdGVMYXllclRyZWVMYXllcnMubW0KQEAgLTQ4LDE3ICs0OCwxMyBAQCAtIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIpCi0tICh2b2lkKV9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6KENGRGF0YVJl
ZilkYXRhCistICh2b2lkKV9zZXRXS0NvbnRlbnRzOihpZCljb250ZW50cyB3aXRoRGlzcGxheUxp
c3Q6KENGRGF0YVJlZilkYXRhCiB7CisgICAgLy8gRklYTUU6IEFsc28gYXBwbHkgdGhlIGNvbnRl
bnRzIHRvIHRoZSBsYXllciwgb25jZSB3ZSBoYXZlIEFQSSB0byBkbyBib3RoLgogICAgIF9jb250
ZW50c0Rpc3BsYXlMaXN0ID0gZGF0YTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwogfQog
Ci0tIChDRkRhdGFSZWYpX3drQ29udGVudHNEaXNwbGF5TGlzdAotewotICAgIHJldHVybiBfY29u
dGVudHNEaXNwbGF5TGlzdC5nZXQoKTsKLX0KLQogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAogewogICAgIGlmICghX2NvbnRlbnRzRGlzcGxheUxpc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDk3NWNi
NWI2NTI4YmM5ZDk2ZGFiNmM5NmQ4YzMxYmIzZDdkMTNjMDAuLjE1NTM3MDc5YjE4ODExMjk0NzVi
MzNhYmEwNWQwNWJjMDJhZDYwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0yMzQsMTEgKzIzNCwxMSBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6dXBkYXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGF1dG8gdHlwZSA9IG1fYWNjZWxlcmF0ZXNE
cmF3aW5nID8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZSA6IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpCaXRtYXA7CisgICAgYm9vbCBpbmNsdWRlRGlzcGxh
eUxpc3QgPSBmYWxzZTsKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9C
VUZGRVIpCi0gICAgaWYgKG1fY29udGV4dC0+dXNlQ0dEaXNwbGF5TGlzdHNGb3JET01SZW5kZXJp
bmcoKSkKLSAgICAgICAgdHlwZSA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpDR0Rp
c3BsYXlMaXN0OworICAgIGluY2x1ZGVEaXNwbGF5TGlzdCB8PSBtX2NvbnRleHQtPnVzZUNHRGlz
cGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nKCk7CiAjZW5kaWYKLSAgICBtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLT5lbnN1cmVCYWNraW5nU3RvcmUodHlwZSwgbV9wcm9wZXJ0aWVzLmJvdW5kcy5z
aXplKCksIG1fcHJvcGVydGllcy5jb250ZW50c1NjYWxlLCBtX3dhbnRzRGVlcENvbG9yQmFja2lu
Z1N0b3JlLCBtX3Byb3BlcnRpZXMub3BhcXVlKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0
b3JlLT5lbnN1cmVCYWNraW5nU3RvcmUodHlwZSwgbV9wcm9wZXJ0aWVzLmJvdW5kcy5zaXplKCks
IG1fcHJvcGVydGllcy5jb250ZW50c1NjYWxlLCBtX3dhbnRzRGVlcENvbG9yQmFja2luZ1N0b3Jl
LCBtX3Byb3BlcnRpZXMub3BhcXVlLCBpbmNsdWRlRGlzcGxheUxpc3QpOwogfQogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430413</attachid>
            <date>2021-06-02 15:47:47 -0700</date>
            <delta_ts>2021-06-02 17:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226425-20210602154746.patch</filename>
            <type>text/plain</type>
            <size>17905</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlNjg2N2UwZWIzZmQ2ZGQ4
YmM4NWIxZGE0ZDQ5NmQ5NWI4M2QwZDUuLjVjOWZiN2U0ODQzNGFjOTFkMWYwNDM5MDg1Yjg0MTkz
MTJhMjUyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMjkgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dCBmb3IgYmFja2luZyBzdG9yZSArIGRpc3BsYXkgbGlzdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3Vy
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3
YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpsYXllckNv
bnRlbnRzRm9yQnVmZmVySGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXll
cnMubW06CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250ZW50czp3aXRo
RGlzcGxheUxpc3Q6XSk6CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250
ZW50c0Rpc3BsYXlMaXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbXBvc2l0aW5nTGF5
ZXIgX3drQ29udGVudHNEaXNwbGF5TGlzdF0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVCYWNraW5nU3RvcmUp
OgorICAgICAgICBJbnN0ZWFkIG9mICJkaXNwbGF5IGxpc3QgYmFja2VkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlIiBiZWluZyBpdHMgb3duCisgICAgICAgIGJhY2tpbmcgc3RvcmUgdHlwZSwgd2Ug
bWFrZSAiaW5jbHVkZXMgYSBkaXNwbGF5IGxpc3QiIGEgc2VwYXJhdGUgYml0LgorICAgICAgICBU
aGlzIHdheSwgd2UgY2FuIHBhaW50IGJvdGggYSBiaXRtYXAgKElPU3VyZmFjZSBvciBDRyBiaXRt
YXAsIGFsbAorICAgICAgICBleGFjdGx5IGFzIGl0IG5vcm1hbGx5IGlzKSwgYW5kIGFsc28gY2Fy
cnkgYSBzaWRlY2FyIGRpc3BsYXkgbGlzdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
Z2V0cyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGJpdG1hcCBhbmQgZGlzcGxheSBsaXN0IGV4aXN0
CisgICAgICAgIGluIHRoZSBVSSBwcm9jZXNzLCBidXQgY3VycmVudGx5IG9ubHkgYXBwbGllcyB0
aGUgZGlzcGxheSBsaXN0LCBsZWF2aW5nCisgICAgICAgIGJlaGF2aW9yIGFzIGl0IHdhcyBpbiBy
Mjc3MjEwLgorCiAyMDIxLTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCBDaGVja2VkOjpzYWZlR2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmgKaW5kZXggYWU5ZDJmODg2NTA1YzIwNWZjMWFhZmNkMjIwMGRjNmU2ZTQzMGQ0ZC4uODNiZWY1
ZjhhYjhkMTAwOGU5MGYzYzE5NjA2MWViZDlkMDBjMmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmgKQEAgLTU0LDEzICs1NCwxMCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsKICAgICAgICAgSU9TdXJmYWNlLAotICAgICAgICBCaXRtYXAsCi0jaWYg
RU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgICAgICBDR0Rp
c3BsYXlMaXN0LAotI2VuZGlmCisgICAgICAgIEJpdG1hcAogICAgIH07CiAKLSAgICB2b2lkIGVu
c3VyZUJhY2tpbmdTdG9yZShUeXBlLCBXZWJDb3JlOjpGbG9hdFNpemUsIGZsb2F0IHNjYWxlLCBi
b29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSk7CisgICAgdm9pZCBlbnN1cmVCYWNraW5nU3Rv
cmUoVHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplLCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3Is
IGJvb2wgaXNPcGFxdWUsIGJvb2wgaW5jbHVkZURpc3BsYXlMaXN0KTsKIAogICAgIHZvaWQgc2V0
TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNE
aXNwbGF5KCk7CkBAIC0xMjAsNiArMTE3LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBCdWZm
ZXIgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwor
I2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBkaXNwbGF5TGlzdEltYWdlQnVmZmVyOworI2Vu
ZGlmCiAgICAgICAgIGJvb2wgaXNWb2xhdGlsZSA9IGZhbHNlOwogCiAgICAgICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdApAQCAtMTM0LDEwICsxMzQsMTQgQEAgcHJpdmF0ZToKICAg
ICBCdWZmZXIgbV9iYWNrQnVmZmVyOwogICAgIEJ1ZmZlciBtX3NlY29uZGFyeUJhY2tCdWZmZXI7
CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFu
ZGxlOworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAg
ICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9kaXNwbGF5TGlzdEJ1
ZmZlckhhbmRsZTsKKyNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVh
ZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IG1fZnJvbnRCdWZmZXJGbHVzaGVyOwogCiAgICAgVHlw
ZSBtX3R5cGU7CisgICAgYm9vbCBtX2luY2x1ZGVEaXNwbGF5TGlzdCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2RlZXBDb2xvciB7IGZhbHNlIH07CiAKICAgICBXZWJDb3JlOjpSZXBhaW50UmVjdExp
c3QgbV9wYWludGluZ1JlY3RzOwpAQCAtMTUxLDEyICsxNTUsOSBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAg
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZQotICAgICAgICAsIFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZQotICAgICAgICAsIFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAotI2lmIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgLCBXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpDR0Rpc3BsYXlMaXN0Ci0jZW5kaWYKKyAgICAgICAg
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZSwKKyAgICAgICAgV2ViS2l0OjpS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNlLAorICAgICAgICBXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpCaXRtYXAKICAgICA+OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGQwZGFkYzcyMjZiMWEyNGVlNjM3OWQyMTU4
YTk3ODM3N2QyOTI0NDAuLmVlNjJkMjQwMTRmYzlmNTMyY2JjNjdjYTQ3YTY3MTc3Y2FjZWU4ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBv
cnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdl
QnVmZmVyLmg+CkBAIC03NSw5ICs3Niw5IEBAIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp+UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUoKQogICAgICAgICBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxs
QmVEZXN0cm95ZWQoKnRoaXMpOwogfQogCi12b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpl
bnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSwgZmxv
YXQgc2NhbGUsIGJvb2wgZGVlcENvbG9yLCBib29sIGlzT3BhcXVlKQordm9pZCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6Rmxv
YXRTaXplIHNpemUsIGZsb2F0IHNjYWxlLCBib29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSwg
Ym9vbCBpbmNsdWRlRGlzcGxheUxpc3QpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSB0eXBlICYmIG1f
c2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVlcENv
bG9yICYmIG1faXNPcGFxdWUgPT0gaXNPcGFxdWUpCisgICAgaWYgKG1fdHlwZSA9PSB0eXBlICYm
IG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVl
cENvbG9yICYmIG1faXNPcGFxdWUgPT0gaXNPcGFxdWUgJiYgbV9pbmNsdWRlRGlzcGxheUxpc3Qg
PT0gaW5jbHVkZURpc3BsYXlMaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3R5cGUgPSB0
eXBlOwpAQCAtODUsNiArODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1
cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogICAgIG1fc2Nh
bGUgPSBzY2FsZTsKICAgICBtX2RlZXBDb2xvciA9IGRlZXBDb2xvcjsKICAgICBtX2lzT3BhcXVl
ID0gaXNPcGFxdWU7CisgICAgbV9pbmNsdWRlRGlzcGxheUxpc3QgPSBpbmNsdWRlRGlzcGxheUxp
c3Q7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlcikgewogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEg
dmFsaWQgYmFja2luZyBzdG9yZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBnZXRzIGNvbXBs
ZXRlbHkKQEAgLTEwOCw2ICsxMTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zaXpl
OwogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7Cisg
ICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIpIHsKQEAgLTEyMSwxNSArMTI0LDE4IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIGNh
c2UgVHlwZTo6Qml0bWFwOgogICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKICAgICAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1Rf
QkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0Ogot
ICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRl
ZCgpKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKwor
I2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBPcHRp
b25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOworICAgIGlm
IChtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIpCisgICAgICAgIGRpc3BsYXlM
aXN0SGFuZGxlID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCY+
KCptX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVh
dGVkKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworCisgICAgZW5jb2RlciA8
PCBkaXNwbGF5TGlzdEhhbmRsZTsKKyNlbmRpZgogfQogCiBib29sIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZSYgcmVzdWx0KQpAQCAtMTQ2LDkgKzE1MiwxNyBAQCBib29sIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJhY2tpbmdT
dAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1faXNPcGFxdWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2luY2x1ZGVE
aXNwbGF5TGlzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fYnVmZmVySGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisj
aWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZGlzcGxheUxpc3RCdWZmZXJIYW5kbGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjIs
MjcgKzIzNiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZy
b250QnVmZmVyKCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdl
QnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
ICAgICAgICAgYnJlYWs7CisgICAgfQorCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNL
RURfSU1BR0VfQlVGRkVSKQotICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUs
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBu
dWxscHRyKTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0KQor
ICAgICAgICBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAjZW5kaWYKLSAgICB9CiB9CiAKIGJvb2wgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogewotICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgY2FzZSBUeXBl
OjpCaXRtYXA6Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJ
U1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICBjYXNlIFR5cGU6OkNHRGlzcGxheUxpc3Q6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwor
ICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHN1cHBvcnQgcGFydGlhbCByZXBhaW50IGZvciBi
YWNraW5nIHN0b3JlIHRoYXQKKyAgICAvLyBpbmNsdWRlcyBhIGRpc3BsYXkgbGlzdCB3aXRob3V0
IGFsbG93aW5nIHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoLgorICAgIHJldHVybiAhbV9pbmNsdWRl
RGlzcGxheUxpc3Q7CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXko
KQpAQCAtMjc0LDcgKzI4MCwzMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNw
bGF5KCkKICAgICBpZiAoIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworCisgICAgaWYgKG1faW5jbHVkZURpc3Bs
YXlMaXN0KSB7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVS
KQorICAgICAgICBXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGNvbnRleHQobV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBtX2Zyb250QnVmZmVyLmRpc3BsYXlM
aXN0SW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisjZWxzZQorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0
KCk7CisjZW5kaWYKKyAgICAgICAgZHJhd0luQ29udGV4dChjb250ZXh0KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGRyYXdJbkNvbnRleHQoY29udGV4
dCk7ICAgIAorICAgIH0KKworICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsK
KyAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsKKworICAgIG1fbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKKworICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpOworCisgICAgbV9mcm9u
dEJ1ZmZlckZsdXNoZXIgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVy
KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CiAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBsZXNzIHRoYW4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQg
cmVjdHMgdG8gcGFpbnQgYW5kIHRoZXkgY292ZXIgbGVzcwpAQCAtMjk3LDYgKzMyOSw3IEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX3BhaW50aW5n
UmVjdHMuYXBwZW5kKHNjYWxlZFJlY3QpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OkludFJlY3Qg
bGF5ZXJCb3VuZHMoV2ViQ29yZTo6SW50UG9pbnQoKSwgV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXpl
KG1fc2l6ZSkpOwogICAgIGlmICghbV9kaXJ0eVJlZ2lvbi5jb250YWlucyhsYXllckJvdW5kcykp
IHsKICAgICAgICAgQVNTRVJUKG1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlcik7CiAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIsIHsgezAsIDB9
LCBtX3NpemUgfSwgeyB7MCwgMH0sIG1fc2l6ZSB9LCB7IFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJh
dG9yOjpDb3B5IH0pOwpAQCAtMzU0LDE3ICszODcsNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH07Ci0KLSAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7
Ci0gICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Ci0KLSAgICBtX2xheWVyLT5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7Ci0KLSAgICBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QXN5bmMoKTsKLQotICAgIG1fZnJv
bnRCdWZmZXJGbHVzaGVyID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y3JlYXRlRmx1c2hl
cigpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIHZvaWQgKF5ibG9jaykoV2ViQ29yZTo6RmxvYXRSZWN0KSkKQEAgLTM4NywzNyArNDA5
LDQ2IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9M
YXllcihDQUxheWVyICpsYXllciwgTGF5ZXJDb250CiAgICAgQVNTRVJUKG1fYnVmZmVySGFuZGxl
KTsKICAgICBsYXllci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7CiAKKyAgICBpZCBjb250
ZW50cyA9IG5pbDsKICAgICBXVEY6OnN3aXRjaE9uKCptX2J1ZmZlckhhbmRsZSwKICAgICAgICAg
WyZdIChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGU6OkJpdG1hcCk7CiAgICAgICAgICAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAgICAgICAgICBsYXllci5jb250ZW50
cyA9IChfX2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgICAg
ICAgICAgY29udGVudHMgPSAoX19icmlkZ2UgaWQpYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKS5n
ZXQoKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChNYWNoU2VuZFJpZ2h0JiBtYWNoU2VuZFJp
Z2h0KSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewotICAgICAgICAgICAgY2FzZSBMYXll
ckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CisgICAgICAgICAgICBjYXNlIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKLSAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBz
dXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKKyAgICAgICAgICAgICAgICBjb250ZW50
cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgTGF5ZXJDb250
ZW50c1R5cGU6OkNBTWFjaFBvcnQ6Ci0gICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAo
X19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRlKG1hY2hTZW5kUmlnaHQubGVha1Nl
bmRSaWdodCgpKSkuZ2V0KCk7CisgICAgICAgICAgICBjYXNlIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9ydDoKKyAgICAgICAgICAgICAgICBjb250
ZW50cyA9IChfX2JyaWRnZSBpZClhZG9wdENGKENBTWFjaFBvcnRDcmVhdGUobWFjaFNlbmRSaWdo
dC5sZWFrU2VuZFJpZ2h0KCkpKS5nZXQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lN
QUdFX0JVRkZFUikKICAgICAgICAgLCBbJl0gKElQQzo6U2hhcmVkQnVmZmVyQ29weSYgYnVmZmVy
KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNHRGlzcGxheUxpc3QpOwot
ICAgICAgICAgICAgQVNTRVJUKFtsYXllciBpc0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nTGF5
ZXIgY2xhc3NdXSk7Ci0gICAgICAgICAgICBpZiAoIVtsYXllciBpc0tpbmRPZkNsYXNzOltXS0Nv
bXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBbbGF5ZXIgc2V0VmFsdWU6QDEgZm9yS2V5UGF0aDpXS0NHRGlzcGxheUxpc3RFbmFibGVk
S2V5XTsKLSAgICAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci5idWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7Ci0gICAgICAgICAgICBbKFdLQ29tcG9zaXRpbmdMYXllciAqKWxheWVyIF9zZXRXS0Nv
bnRlbnRzRGlzcGxheUxpc3Q6ZGF0YS5nZXQoKV07CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgKTsKKworI2lmIEVOQUJMRShDR19ESVNQ
TEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBpZiAobV9kaXNwbGF5TGlzdEJ1ZmZl
ckhhbmRsZSkgeworICAgICAgICBBU1NFUlQoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9z
aXRpbmdMYXllciBjbGFzc11dKTsKKyAgICAgICAgaWYgKCFbbGF5ZXIgaXNLaW5kT2ZDbGFzczpb
V0tDb21wb3NpdGluZ0xheWVyIGNsYXNzXV0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IFtsYXllciBzZXRWYWx1ZTpAMSBmb3JLZXlQYXRoOldLQ0dEaXNwbGF5TGlzdEVuYWJsZWRLZXld
OworICAgICAgICBhdXRvIGRhdGEgPSBXVEY6OmdldDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+KCpt
X2Rpc3BsYXlMaXN0QnVmZmVySGFuZGxlKS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CisgICAg
ICAgIFsoV0tDb21wb3NpdGluZ0xheWVyICopbGF5ZXIgX3NldFdLQ29udGVudHM6Y29udGVudHMg
d2l0aERpc3BsYXlMaXN0OmRhdGEuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBsYXllci5jb250ZW50cyA9IGNvbnRlbnRzOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnRha2VQZW5kaW5nRmx1c2hlcigpCkBAIC00ODgsNiArNTE5LDkgQEAgdm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNjYXJkKCkKICAgICBpZiAoaW1hZ2VC
dWZmZXIpCiAgICAgICAgIGltYWdlQnVmZmVyLT5yZWxlYXNlQnVmZmVyVG9Qb29sKCk7CiAgICAg
aW1hZ2VCdWZmZXIgPSBudWxscHRyOworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VE
X0lNQUdFX0JVRkZFUikKKyAgICBkaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyNl
bmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVM
YXllclRyZWVMYXllcnMuaAppbmRleCBhYjUxYzRjMDhmOWYwNTk0ZDcwNjZlODE1MDlmYzhlNzMx
YzA1MTJhLi43YjUxNWU2YjY3ZDdmNWRlOGNiMzMxYWY3NDQxMjY5MTA2M2I1MzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3Rl
TGF5ZXJUcmVlTGF5ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oCkBAIC0zMyw3ICszMyw3IEBACiBA
aW50ZXJmYWNlIFdLQ29tcG9zaXRpbmdMYXllciA6IENBTGF5ZXIKIAogI2lmIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZXRhaW4sIHNldHRlcj1fc2V0V0tDb250ZW50c0Rpc3BsYXlMaXN0OikgX19hdHRyaWJ1dGVfXygo
TlNPYmplY3QpKSBDRkRhdGFSZWYgX3drQ29udGVudHNEaXNwbGF5TGlzdDsKKy0gKHZvaWQpX3Nl
dFdLQ29udGVudHM6KGlkKWNvbnRlbnRzIHdpdGhEaXNwbGF5TGlzdDooQ0ZEYXRhUmVmKWRhdGE7
CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMu
bW0KaW5kZXggNmIzOGFhMTBjMjQ3ZjY4ZDdkNTJiMzBkM2JjYjliOGQ0YzU3ZWM5My4uZGVhN2I2
YWY1ZjQ5NWZiMWFhYTUzNTdkMGEyNjkyOWFjODE1YmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVy
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2Ev
UmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tCkBAIC00OCwxNyArNDgsMTMgQEAgLSAoTlNTdHJpbmcg
KilkZXNjcmlwdGlvbgogfQogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1B
R0VfQlVGRkVSKQotLSAodm9pZClfc2V0V0tDb250ZW50c0Rpc3BsYXlMaXN0OihDRkRhdGFSZWYp
ZGF0YQorLSAodm9pZClfc2V0V0tDb250ZW50czooaWQpY29udGVudHMgd2l0aERpc3BsYXlMaXN0
OihDRkRhdGFSZWYpZGF0YQogeworICAgIC8vIEZJWE1FOiBBbHNvIGFwcGx5IHRoZSBjb250ZW50
cyB0byB0aGUgbGF5ZXIsIG9uY2Ugd2UgaGF2ZSBBUEkgdG8gZG8gYm90aC4KICAgICBfY29udGVu
dHNEaXNwbGF5TGlzdCA9IGRhdGE7CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAot
LSAoQ0ZEYXRhUmVmKV93a0NvbnRlbnRzRGlzcGxheUxpc3QKLXsKLSAgICByZXR1cm4gX2NvbnRl
bnRzRGlzcGxheUxpc3QuZ2V0KCk7Ci19Ci0KIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250
ZXh0UmVmKWNvbnRleHQKIHsKICAgICBpZiAoIV9jb250ZW50c0Rpc3BsYXlMaXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA5NzVjYjVi
NjUyOGJjOWQ5NmRhYjZjOTZkOGMzMWJiM2Q3ZDEzYzAwLi4xNTUzNzA3OWIxODgxMTI5NDc1YjMz
YWJhMDVkMDViYzAyYWQ2MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcApAQCAtMjM0LDExICsyMzQsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmVBdHRhY2hlZCk7CiAKICAgICBhdXRvIHR5cGUgPSBtX2FjY2VsZXJhdGVzRHJh
d2luZyA/IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2UgOiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6VHlwZTo6Qml0bWFwOworICAgIGJvb2wgaW5jbHVkZURpc3BsYXlM
aXN0ID0gZmFsc2U7CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQotICAgIGlmIChtX2NvbnRleHQtPnVzZUNHRGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5n
KCkpCi0gICAgICAgIHR5cGUgPSBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6Q0dEaXNw
bGF5TGlzdDsKKyAgICBpbmNsdWRlRGlzcGxheUxpc3QgfD0gbV9jb250ZXh0LT51c2VDR0Rpc3Bs
YXlMaXN0c0ZvckRPTVJlbmRlcmluZygpOwogI2VuZGlmCi0gICAgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZS0+ZW5zdXJlQmFja2luZ1N0b3JlKHR5cGUsIG1fcHJvcGVydGllcy5ib3VuZHMuc2l6
ZSgpLCBtX3Byb3BlcnRpZXMuY29udGVudHNTY2FsZSwgbV93YW50c0RlZXBDb2xvckJhY2tpbmdT
dG9yZSwgbV9wcm9wZXJ0aWVzLm9wYXF1ZSk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZS0+ZW5zdXJlQmFja2luZ1N0b3JlKHR5cGUsIG1fcHJvcGVydGllcy5ib3VuZHMuc2l6ZSgpLCBt
X3Byb3BlcnRpZXMuY29udGVudHNTY2FsZSwgbV93YW50c0RlZXBDb2xvckJhY2tpbmdTdG9yZSwg
bV9wcm9wZXJ0aWVzLm9wYXF1ZSwgaW5jbHVkZURpc3BsYXlMaXN0KTsKIH0KIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430424</attachid>
            <date>2021-06-02 17:34:05 -0700</date>
            <delta_ts>2021-06-03 18:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226425-20210602173404.patch</filename>
            <type>text/plain</type>
            <size>20824</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlNjg2N2UwZWIzZmQ2ZGQ4
YmM4NWIxZGE0ZDQ5NmQ5NWI4M2QwZDUuLjVjOWZiN2U0ODQzNGFjOTFkMWYwNDM5MDg1Yjg0MTkz
MTJhMjUyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMjkgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dCBmb3IgYmFja2luZyBzdG9yZSArIGRpc3BsYXkgbGlzdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3Vy
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3
YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpsYXllckNv
bnRlbnRzRm9yQnVmZmVySGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXll
cnMubW06CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250ZW50czp3aXRo
RGlzcGxheUxpc3Q6XSk6CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250
ZW50c0Rpc3BsYXlMaXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbXBvc2l0aW5nTGF5
ZXIgX3drQ29udGVudHNEaXNwbGF5TGlzdF0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVCYWNraW5nU3RvcmUp
OgorICAgICAgICBJbnN0ZWFkIG9mICJkaXNwbGF5IGxpc3QgYmFja2VkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlIiBiZWluZyBpdHMgb3duCisgICAgICAgIGJhY2tpbmcgc3RvcmUgdHlwZSwgd2Ug
bWFrZSAiaW5jbHVkZXMgYSBkaXNwbGF5IGxpc3QiIGEgc2VwYXJhdGUgYml0LgorICAgICAgICBU
aGlzIHdheSwgd2UgY2FuIHBhaW50IGJvdGggYSBiaXRtYXAgKElPU3VyZmFjZSBvciBDRyBiaXRt
YXAsIGFsbAorICAgICAgICBleGFjdGx5IGFzIGl0IG5vcm1hbGx5IGlzKSwgYW5kIGFsc28gY2Fy
cnkgYSBzaWRlY2FyIGRpc3BsYXkgbGlzdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
Z2V0cyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGJpdG1hcCBhbmQgZGlzcGxheSBsaXN0IGV4aXN0
CisgICAgICAgIGluIHRoZSBVSSBwcm9jZXNzLCBidXQgY3VycmVudGx5IG9ubHkgYXBwbGllcyB0
aGUgZGlzcGxheSBsaXN0LCBsZWF2aW5nCisgICAgICAgIGJlaGF2aW9yIGFzIGl0IHdhcyBpbiBy
Mjc3MjEwLgorCiAyMDIxLTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCBDaGVja2VkOjpzYWZlR2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmgKaW5kZXggYWU5ZDJmODg2NTA1YzIwNWZjMWFhZmNkMjIwMGRjNmU2ZTQzMGQ0ZC4uMmZiYTdm
ODQ1YzEzMDM0NmZjZWIyZTVlMDMwODliMzI3ZmZjYWUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmgKQEAgLTU0LDEzICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsKICAgICAgICAgSU9TdXJmYWNlLAotICAgICAgICBCaXRtYXAsCi0jaWYg
RU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgICAgICBDR0Rp
c3BsYXlMaXN0LAotI2VuZGlmCisgICAgICAgIEJpdG1hcAogICAgIH07CiAKLSAgICB2b2lkIGVu
c3VyZUJhY2tpbmdTdG9yZShUeXBlLCBXZWJDb3JlOjpGbG9hdFNpemUsIGZsb2F0IHNjYWxlLCBi
b29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSk7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlRGlz
cGxheUxpc3QgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgZW5zdXJlQmFja2luZ1N0b3Jl
KFR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSwgZmxvYXQgc2NhbGUsIGJvb2wgZGVlcENvbG9yLCBi
b29sIGlzT3BhcXVlLCBJbmNsdWRlRGlzcGxheUxpc3QpOwogCiAgICAgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
KTsKQEAgLTg4LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISFtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiB0YWtlUGVuZGluZ0ZsdXNoZXIoKTsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CiAKICAgICBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUg
ewogICAgICAgICBGcm9udCwKQEAgLTEyMCw2ICsxMTgsOSBAQCBwcml2YXRlOgogCiAgICAgc3Ry
dWN0IEJ1ZmZlciB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXI7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQor
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXI7CisjZW5kaWYKICAgICAgICAgYm9vbCBpc1ZvbGF0aWxlID0gZmFsc2U7CiAKICAgICAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CkBAIC0xMzQsMTAgKzEzNSwxNCBAQCBwcml2
YXRlOgogICAgIEJ1ZmZlciBtX2JhY2tCdWZmZXI7CiAgICAgQnVmZmVyIG1fc2Vjb25kYXJ5QmFj
a0J1ZmZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9i
dWZmZXJIYW5kbGU7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQorICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBtX2Rpc3Bs
YXlMaXN0QnVmZmVySGFuZGxlOworI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gbV9mcm9udEJ1ZmZlckZsdXNoZXI7Cisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJG
bHVzaGVyPj4gbV9mcm9udEJ1ZmZlckZsdXNoZXJzOwogCiAgICAgVHlwZSBtX3R5cGU7CisgICAg
SW5jbHVkZURpc3BsYXlMaXN0IG1faW5jbHVkZURpc3BsYXlMaXN0IHsgSW5jbHVkZURpc3BsYXlM
aXN0OjpObyB9OwogICAgIGJvb2wgbV9kZWVwQ29sb3IgeyBmYWxzZSB9OwogCiAgICAgV2ViQ29y
ZTo6UmVwYWludFJlY3RMaXN0IG1fcGFpbnRpbmdSZWN0czsKQEAgLTE1MSwxMiArMTU2LDE3IEBA
IG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAotICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlCi0g
ICAgICAgICwgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNl
Ci0gICAgICAgICwgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6Qml0bWFw
Ci0jaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgICAg
ICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkNHRGlzcGxheUxpc3QK
LSNlbmRpZgorICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlLAor
ICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2Us
CisgICAgICAgIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAor
ICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OkluY2x1ZGVEaXNwbGF5TGlzdD4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OkluY2x1ZGVEaXNwbGF5TGlzdCwKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6SW5jbHVkZURpc3BsYXlMaXN0OjpObywKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6SW5jbHVkZURpc3BsYXlMaXN0OjpZZXMKICAgICA+OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGQwZGFkYzcyMjZiMWEyNGVlNjM3OWQyMTU4
YTk3ODM3N2QyOTI0NDAuLjg5MjgwNTIzODc3OGU5N2FhMjFhYjFlOTJmMWJhN2EwOTg0YjEwNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEsNCArMSw0IEBACi0gLyoKKy8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgpA
QCAtNzUsOSArNzYsOSBAQCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6flJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlKCkKICAgICAgICAgY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGVzdHJveWVk
KCp0aGlzKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2lu
Z1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGZsb2F0IHNjYWxlLCBi
b29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSkKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXpl
LCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUsIEluY2x1ZGVEaXNw
bGF5TGlzdCBpbmNsdWRlRGlzcGxheUxpc3QpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSB0eXBlICYm
IG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVl
cENvbG9yICYmIG1faXNPcGFxdWUgPT0gaXNPcGFxdWUpCisgICAgaWYgKG1fdHlwZSA9PSB0eXBl
ICYmIG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0g
ZGVlcENvbG9yICYmIG1faXNPcGFxdWUgPT0gaXNPcGFxdWUgJiYgbV9pbmNsdWRlRGlzcGxheUxp
c3QgPT0gaW5jbHVkZURpc3BsYXlMaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3R5cGUg
PSB0eXBlOwpAQCAtODUsNiArODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpl
bnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogICAgIG1f
c2NhbGUgPSBzY2FsZTsKICAgICBtX2RlZXBDb2xvciA9IGRlZXBDb2xvcjsKICAgICBtX2lzT3Bh
cXVlID0gaXNPcGFxdWU7CisgICAgbV9pbmNsdWRlRGlzcGxheUxpc3QgPSBpbmNsdWRlRGlzcGxh
eUxpc3Q7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlcikgewogICAgICAgICAvLyBJZiB3ZSBoYXZl
IGEgdmFsaWQgYmFja2luZyBzdG9yZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBnZXRzIGNv
bXBsZXRlbHkKQEAgLTEwOCw2ICsxMTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9z
aXplOwogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7
CisgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTEyMSwxNSArMTI0LDE4IEBAIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAg
IGNhc2UgVHlwZTo6Qml0bWFwOgogICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5h
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUoKTsKICAgICAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJ
U1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0
OgotICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
KworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBz
dGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7
CisgICAgaWYgKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlcikKKyAgICAgICAg
ZGlzcGxheUxpc3RIYW5kbGUgPSBzdGF0aWNfY2FzdDxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kJj4oKm1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+ZW5zdXJlQmFj
a2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisKKyAgICBl
bmNvZGVyIDw8IGRpc3BsYXlMaXN0SGFuZGxlOworI2VuZGlmCiB9CiAKIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlJiByZXN1bHQpCkBAIC0xNDYsOSArMTUyLDE3IEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVy
QmFja2luZ1N0CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pc09wYXF1ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
aW5jbHVkZURpc3BsYXlMaXN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubV9idWZmZXJIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kaXNwbGF5TGlzdEJ1ZmZlckhhbmRsZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTIyMiwzMiArMjM2LDI0IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51
bGxwdHIpOwogICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9M
SVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCi0gICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0Ogot
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9y
bWF0KCksIG51bGxwdHIpOwotICAgICAgICBicmVhazsKKyAgICBpZiAobV9pbmNsdWRlRGlzcGxh
eUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpZZXMpCisgICAgICAgIG1fZnJvbnRCdWZmZXIu
ZGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxs
cHRyKTsKICNlbmRpZgotICAgIH0KIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiB7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBj
YXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0jaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVS
KQotICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gRklYTUU6IEZpbmQgYSB3
YXkgdG8gc3VwcG9ydCBwYXJ0aWFsIHJlcGFpbnQgZm9yIGJhY2tpbmcgc3RvcmUgdGhhdAorICAg
IC8vIGluY2x1ZGVzIGEgZGlzcGxheSBsaXN0IHdpdGhvdXQgYWxsb3dpbmcgdW5ib3VuZGVkIG1l
bW9yeSBncm93dGguCisgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVE
aXNwbGF5TGlzdDo6Tm87CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3Bs
YXkoKQogewotICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXIpOworICAgIEFTU0VSVCgh
bV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUoKSk7CiAKICAgICBtX2xhc3REaXNwbGF5VGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogCkBAIC0yNzQsNyArMjgwLDM3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlmICghbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisK
KyAgICBpZiAobV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpZZXMp
IHsKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAg
ICAgIFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY29udGV4dChtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0KCksIG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyNlbHNlCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyNl
bmRpZgorICAgICAgICBkcmF3SW5Db250ZXh0KGNvbnRleHQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAgZHJhd0luQ29udGV4dChjb250ZXh0KTsgICAg
CisgICAgfQorCisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1f
cGFpbnRpbmdSZWN0cy5jbGVhcigpOworCisgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworCisgICAgbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFzeW5jKCk7CisKKyAgICBtX2Zyb250QnVmZmVy
Rmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIo
KSk7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAg
IGlmIChtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6OlllcykKKyAg
ICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3BsYXlM
aXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICAvLyBJZiB3ZSBo
YXZlIGxlc3MgdGhhbiB3ZWJMYXllck1heFJlY3RzVG9QYWludCByZWN0cyB0byBwYWludCBhbmQg
dGhleSBjb3ZlciBsZXNzCkBAIC0yOTcsNiArMzMzLDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBlbmQoc2NhbGVk
UmVjdCk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6SW50UmVjdCBsYXllckJvdW5kcyhXZWJDb3Jl
OjpJbnRQb2ludCgpLCBXZWJDb3JlOjpleHBhbmRlZEludFNpemUobV9zaXplKSk7CiAgICAgaWYg
KCFtX2RpcnR5UmVnaW9uLmNvbnRhaW5zKGxheWVyQm91bmRzKSkgewogICAgICAgICBBU1NFUlQo
bV9iYWNrQnVmZmVyLmltYWdlQnVmZmVyKTsKICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKm1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlciwgeyB7MCwgMH0sIG1fc2l6ZSB9LCB7IHswLCAw
fSwgbV9zaXplIH0sIHsgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CkBAIC0z
NTQsMTcgKzM5MSw2IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfTsKLQot
ICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKLSAgICBtX3BhaW50aW5nUmVj
dHMuY2xlYXIoKTsKLQotICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVy
RGlkRGlzcGxheShtX2xheWVyKTsKLQotICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZs
dXNoRHJhd2luZ0NvbnRleHRBc3luYygpOwotCi0gICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNC
ZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgdm9pZCAoXmJsb2Nr
KShXZWJDb3JlOjpGbG9hdFJlY3QpKQpAQCAtMzg3LDQyICs0MTMsNTEgQEAgdm9pZCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5ZXIgKmxheWVy
LCBMYXllckNvbnQKICAgICBBU1NFUlQobV9idWZmZXJIYW5kbGUpOwogICAgIGxheWVyLmNvbnRl
bnRzT3BhcXVlID0gbV9pc09wYXF1ZTsKIAorICAgIGlkIGNvbnRlbnRzID0gbmlsOwogICAgIFdU
Rjo6c3dpdGNoT24oKm1fYnVmZmVySGFuZGxlLAogICAgICAgICBbJl0gKFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBoYW5kbGUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6
Qml0bWFwKTsKICAgICAgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlKTsKLSAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWJp
dG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCk7CisgICAgICAgICAgICBjb250ZW50cyA9IChf
X2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOwogICAgICAgICB9LAog
ICAgICAgICBbJl0gKE1hY2hTZW5kUmlnaHQmIG1hY2hTZW5kUmlnaHQpIHsKICAgICAgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgICAgIHN3aXRjaCAo
Y29udGVudHNUeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpJT1N1
cmZhY2U6IHsKKyAgICAgICAgICAgIGNhc2UgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVy
Q29udGVudHNUeXBlOjpJT1N1cmZhY2U6IHsKICAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2Ug
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAg
ICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250
ZW50cygpIDogbmlsOworICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZh
Y2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9y
dDoKLSAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClhZG9wdENG
KENBTWFjaFBvcnRDcmVhdGUobWFjaFNlbmRSaWdodC5sZWFrU2VuZFJpZ2h0KCkpKS5nZXQoKTsK
KyAgICAgICAgICAgIGNhc2UgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNU
eXBlOjpDQU1hY2hQb3J0OgorICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gKF9fYnJpZGdlIGlk
KWFkb3B0Q0YoQ0FNYWNoUG9ydENyZWF0ZShtYWNoU2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKSkp
LmdldCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgICAg
ICAsIFsmXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBidWZmZXIpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gVHlwZTo6Q0dEaXNwbGF5TGlzdCk7Ci0gICAgICAgICAgICBBU1NFUlQo
W2xheWVyIGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdMYXllciBjbGFzc11dKTsKLSAgICAg
ICAgICAgIGlmICghW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdMYXllciBjbGFz
c11dKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIFtsYXllciBzZXRWYWx1
ZTpAMSBmb3JLZXlQYXRoOldLQ0dEaXNwbGF5TGlzdEVuYWJsZWRLZXldOwotICAgICAgICAgICAg
YXV0byBkYXRhID0gYnVmZmVyLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKLSAgICAgICAgICAg
IFsoV0tDb21wb3NpdGluZ0xheWVyICopbGF5ZXIgX3NldFdLQ29udGVudHNEaXNwbGF5TGlzdDpk
YXRhLmdldCgpXTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAjZW5kaWYKICAgICApOworCisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1B
R0VfQlVGRkVSKQorICAgIGlmIChtX2Rpc3BsYXlMaXN0QnVmZmVySGFuZGxlKSB7CisgICAgICAg
IEFTU0VSVChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV0tDb21wb3NpdGluZ0xheWVyIGNsYXNzXV0p
OworICAgICAgICBpZiAoIVtsYXllciBpc0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nTGF5ZXIg
Y2xhc3NdXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgW2xheWVyIHNldFZhbHVlOkAx
IGZvcktleVBhdGg6V0tDR0Rpc3BsYXlMaXN0RW5hYmxlZEtleV07CisgICAgICAgIGF1dG8gZGF0
YSA9IFdURjo6Z2V0PElQQzo6U2hhcmVkQnVmZmVyQ29weT4oKm1fZGlzcGxheUxpc3RCdWZmZXJI
YW5kbGUpLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKKyAgICAgICAgWyhXS0NvbXBvc2l0aW5n
TGF5ZXIgKilsYXllciBfc2V0V0tDb250ZW50czpjb250ZW50cyB3aXRoRGlzcGxheUxpc3Q6ZGF0
YS5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGxheWVyLmNv
bnRlbnRzID0gY29udGVudHM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRT
YWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6dGFrZVBlbmRp
bmdGbHVzaGVyKCkKK1ZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUlt
YWdlQnVmZmVyRmx1c2hlcj4+IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp0YWtlUGVuZGluZ0Zs
dXNoZXJzKCkKIHsKLSAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Zyb250QnVmZmVyRmx1c2hl
ciwgbnVsbHB0cik7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9mcm9udEJ1ZmZlckZsdXNo
ZXJzLCB7IH0pOwogfQogCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJW
b2xhdGlsaXR5KEJ1ZmZlclR5cGUgYnVmZmVyVHlwZSwgYm9vbCBpc1ZvbGF0aWxlKQpAQCAtNDg4
LDYgKzUyMyw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlcjo6ZGlzY2Fy
ZCgpCiAgICAgaWYgKGltYWdlQnVmZmVyKQogICAgICAgICBpbWFnZUJ1ZmZlci0+cmVsZWFzZUJ1
ZmZlclRvUG9vbCgpOwogICAgIGltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyNpZiBFTkFCTEUoQ0df
RElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgZGlzcGxheUxpc3RJbWFnZUJ1
ZmZlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVt
b3RlTGF5ZXJUcmVlTGF5ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgKaW5kZXggYWI1MWM0YzA4ZjlmMDU5
NGQ3MDY2ZTgxNTA5ZmM4ZTczMWMwNTEyYS4uN2I1MTVlNmI2N2Q3ZjVkZThjYjMzMWFmNzQ0MTI2
OTEwNjNiNTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMuaApA
QCAtMzMsNyArMzMsNyBAQAogQGludGVyZmFjZSBXS0NvbXBvc2l0aW5nTGF5ZXIgOiBDQUxheWVy
CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBzZXR0ZXI9X3NldFdLQ29udGVudHNEaXNwbGF5TGlz
dDopIF9fYXR0cmlidXRlX18oKE5TT2JqZWN0KSkgQ0ZEYXRhUmVmIF93a0NvbnRlbnRzRGlzcGxh
eUxpc3Q7CistICh2b2lkKV9zZXRXS0NvbnRlbnRzOihpZCljb250ZW50cyB3aXRoRGlzcGxheUxp
c3Q6KENGRGF0YVJlZilkYXRhOwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXll
cnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVt
b3RlTGF5ZXJUcmVlTGF5ZXJzLm1tCmluZGV4IDZiMzhhYTEwYzI0N2Y2OGQ3ZDUyYjMwZDNiY2I5
YjhkNGM1N2VjOTMuLmRlYTdiNmFmNWY0OTVmYjFhYWE1MzU3ZDBhMjY5MjlhYzgxNWJmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9S
ZW1vdGVMYXllclRyZWVMYXllcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbQpAQCAtNDgsMTcgKzQ4
LDEzIEBAIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIH0KIAogI2lmIEVOQUJMRShDR19ESVNQ
TEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLS0gKHZvaWQpX3NldFdLQ29udGVudHNEaXNw
bGF5TGlzdDooQ0ZEYXRhUmVmKWRhdGEKKy0gKHZvaWQpX3NldFdLQ29udGVudHM6KGlkKWNvbnRl
bnRzIHdpdGhEaXNwbGF5TGlzdDooQ0ZEYXRhUmVmKWRhdGEKIHsKKyAgICAvLyBGSVhNRTogQWxz
byBhcHBseSB0aGUgY29udGVudHMgdG8gdGhlIGxheWVyLCBvbmNlIHdlIGhhdmUgQVBJIHRvIGRv
IGJvdGguCiAgICAgX2NvbnRlbnRzRGlzcGxheUxpc3QgPSBkYXRhOwogICAgIFtzZWxmIHNldE5l
ZWRzRGlzcGxheV07CiB9CiAKLS0gKENGRGF0YVJlZilfd2tDb250ZW50c0Rpc3BsYXlMaXN0Ci17
Ci0gICAgcmV0dXJuIF9jb250ZW50c0Rpc3BsYXlMaXN0LmdldCgpOwotfQotCiAtICh2b2lkKWRy
YXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgaWYgKCFfY29udGVudHNE
aXNwbGF5TGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAKaW5kZXggOTc1Y2I1YjY1MjhiYzlkOTZkYWI2Yzk2ZDhjMzFiYjNkN2QxM2MwMC4uNWQw
ZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIzNCwxMSArMjM0LDEyIEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVCYWNraW5nU3RvcmUoKQogICAgIEFT
U0VSVChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQpOwogCiAgICAgYXV0byB0eXBl
ID0gbV9hY2NlbGVyYXRlc0RyYXdpbmcgPyBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6
SU9TdXJmYWNlIDogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcDsKKyAgICBh
dXRvIGluY2x1ZGVEaXNwbGF5TGlzdCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpJbmNsdWRl
RGlzcGxheUxpc3Q6Ok5vOwogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKICAgICBpZiAobV9jb250ZXh0LT51c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRl
cmluZygpKQotICAgICAgICB0eXBlID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkNH
RGlzcGxheUxpc3Q7CisgICAgICAgIGluY2x1ZGVEaXNwbGF5TGlzdCA9IFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpJbmNsdWRlRGlzcGxheUxpc3Q6OlllczsKICNlbmRpZgotICAgIG1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUtPmVuc3VyZUJhY2tpbmdTdG9yZSh0eXBlLCBtX3Byb3BlcnRpZXMu
Ym91bmRzLnNpemUoKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fd2FudHNEZWVwQ29s
b3JCYWNraW5nU3RvcmUsIG1fcHJvcGVydGllcy5vcGFxdWUpOworICAgIG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmUtPmVuc3VyZUJhY2tpbmdTdG9yZSh0eXBlLCBtX3Byb3BlcnRpZXMuYm91bmRz
LnNpemUoKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fd2FudHNEZWVwQ29sb3JCYWNr
aW5nU3RvcmUsIG1fcHJvcGVydGllcy5vcGFxdWUsIGluY2x1ZGVEaXNwbGF5TGlzdCk7CiB9CiAK
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGExOGIzMTVlNmFkMDBmMGU0ZjA5ZWZhYWIxNjNjZjUy
NTM1ODk5Y2EuLmQ1OWE0ODc5MmQwMWNhMDE2NzU4MzFlMDk0MGY4ZmM3MDM5OGZmMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
QEAgLTM4NywxMCArMzg3LDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBk
YXRlUmVuZGVyaW5nKCkKICAgICBmb3IgKGF1dG8mIGxheWVyIDogbGF5ZXJUcmFuc2FjdGlvbi5j
aGFuZ2VkTGF5ZXJzKCkpIHsKICAgICAgICAgaWYgKGxheWVyLT5wcm9wZXJ0aWVzKCkuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hh
bmdlZCkgewogICAgICAgICAgICAgaGFkQW55Q2hhbmdlZEJhY2tpbmdTdG9yZSA9IHRydWU7Ci0g
ICAgICAgICAgICBpZiAobGF5ZXItPnByb3BlcnRpZXMoKS5iYWNraW5nU3RvcmUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byBwZW5kaW5nRmx1c2hlciA9IGxheWVyLT5wcm9wZXJ0aWVzKCku
YmFja2luZ1N0b3JlLT50YWtlUGVuZGluZ0ZsdXNoZXIoKSkKLSAgICAgICAgICAgICAgICAgICAg
Zmx1c2hlcnMuYXBwZW5kKFdURk1vdmUocGVuZGluZ0ZsdXNoZXIpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChsYXllci0+cHJvcGVydGllcygpLmJhY2tpbmdTdG9yZSkKKyAgICAg
ICAgICAgICAgICBmbHVzaGVycy5hcHBlbmRWZWN0b3IobGF5ZXItPnByb3BlcnRpZXMoKS5iYWNr
aW5nU3RvcmUtPnRha2VQZW5kaW5nRmx1c2hlcnMoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBs
YXllci0+ZGlkQ29tbWl0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430528</attachid>
            <date>2021-06-03 18:39:57 -0700</date>
            <delta_ts>2021-07-07 23:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226425-20210603183956.patch</filename>
            <type>text/plain</type>
            <size>20830</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlNjg2N2UwZWIzZmQ2ZGQ4
YmM4NWIxZGE0ZDQ5NmQ5NWI4M2QwZDUuLjVjOWZiN2U0ODQzNGFjOTFkMWYwNDM5MDg1Yjg0MTkz
MTJhMjUyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMjkgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dCBmb3IgYmFja2luZyBzdG9yZSArIGRpc3BsYXkgbGlzdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3Vy
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3
YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpsYXllckNv
bnRlbnRzRm9yQnVmZmVySGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXll
cnMubW06CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250ZW50czp3aXRo
RGlzcGxheUxpc3Q6XSk6CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250
ZW50c0Rpc3BsYXlMaXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbXBvc2l0aW5nTGF5
ZXIgX3drQ29udGVudHNEaXNwbGF5TGlzdF0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVCYWNraW5nU3RvcmUp
OgorICAgICAgICBJbnN0ZWFkIG9mICJkaXNwbGF5IGxpc3QgYmFja2VkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlIiBiZWluZyBpdHMgb3duCisgICAgICAgIGJhY2tpbmcgc3RvcmUgdHlwZSwgd2Ug
bWFrZSAiaW5jbHVkZXMgYSBkaXNwbGF5IGxpc3QiIGEgc2VwYXJhdGUgYml0LgorICAgICAgICBU
aGlzIHdheSwgd2UgY2FuIHBhaW50IGJvdGggYSBiaXRtYXAgKElPU3VyZmFjZSBvciBDRyBiaXRt
YXAsIGFsbAorICAgICAgICBleGFjdGx5IGFzIGl0IG5vcm1hbGx5IGlzKSwgYW5kIGFsc28gY2Fy
cnkgYSBzaWRlY2FyIGRpc3BsYXkgbGlzdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2gg
Z2V0cyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGJpdG1hcCBhbmQgZGlzcGxheSBsaXN0IGV4aXN0
CisgICAgICAgIGluIHRoZSBVSSBwcm9jZXNzLCBidXQgY3VycmVudGx5IG9ubHkgYXBwbGllcyB0
aGUgZGlzcGxheSBsaXN0LCBsZWF2aW5nCisgICAgICAgIGJlaGF2aW9yIGFzIGl0IHdhcyBpbiBy
Mjc3MjEwLgorCiAyMDIxLTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCBDaGVja2VkOjpzYWZlR2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmgKaW5kZXggYWU5ZDJmODg2NTA1YzIwNWZjMWFhZmNkMjIwMGRjNmU2ZTQzMGQ0ZC4uMmZiYTdm
ODQ1YzEzMDM0NmZjZWIyZTVlMDMwODliMzI3ZmZjYWUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmgKQEAgLTU0LDEzICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsKICAgICAgICAgSU9TdXJmYWNlLAotICAgICAgICBCaXRtYXAsCi0jaWYg
RU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgICAgICBDR0Rp
c3BsYXlMaXN0LAotI2VuZGlmCisgICAgICAgIEJpdG1hcAogICAgIH07CiAKLSAgICB2b2lkIGVu
c3VyZUJhY2tpbmdTdG9yZShUeXBlLCBXZWJDb3JlOjpGbG9hdFNpemUsIGZsb2F0IHNjYWxlLCBi
b29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSk7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlRGlz
cGxheUxpc3QgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgZW5zdXJlQmFja2luZ1N0b3Jl
KFR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSwgZmxvYXQgc2NhbGUsIGJvb2wgZGVlcENvbG9yLCBi
b29sIGlzT3BhcXVlLCBJbmNsdWRlRGlzcGxheUxpc3QpOwogCiAgICAgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
KTsKQEAgLTg4LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISFtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiB0YWtlUGVuZGluZ0ZsdXNoZXIoKTsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CiAKICAgICBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUg
ewogICAgICAgICBGcm9udCwKQEAgLTEyMCw2ICsxMTgsOSBAQCBwcml2YXRlOgogCiAgICAgc3Ry
dWN0IEJ1ZmZlciB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXI7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQor
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXI7CisjZW5kaWYKICAgICAgICAgYm9vbCBpc1ZvbGF0aWxlID0gZmFsc2U7CiAKICAgICAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CkBAIC0xMzQsMTAgKzEzNSwxNCBAQCBwcml2
YXRlOgogICAgIEJ1ZmZlciBtX2JhY2tCdWZmZXI7CiAgICAgQnVmZmVyIG1fc2Vjb25kYXJ5QmFj
a0J1ZmZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9i
dWZmZXJIYW5kbGU7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQorICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBtX2Rpc3Bs
YXlMaXN0QnVmZmVySGFuZGxlOworI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gbV9mcm9udEJ1ZmZlckZsdXNoZXI7Cisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJG
bHVzaGVyPj4gbV9mcm9udEJ1ZmZlckZsdXNoZXJzOwogCiAgICAgVHlwZSBtX3R5cGU7CisgICAg
SW5jbHVkZURpc3BsYXlMaXN0IG1faW5jbHVkZURpc3BsYXlMaXN0IHsgSW5jbHVkZURpc3BsYXlM
aXN0OjpObyB9OwogICAgIGJvb2wgbV9kZWVwQ29sb3IgeyBmYWxzZSB9OwogCiAgICAgV2ViQ29y
ZTo6UmVwYWludFJlY3RMaXN0IG1fcGFpbnRpbmdSZWN0czsKQEAgLTE1MSwxMiArMTU2LDE3IEBA
IG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAotICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlCi0g
ICAgICAgICwgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNl
Ci0gICAgICAgICwgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6Qml0bWFw
Ci0jaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgICAg
ICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkNHRGlzcGxheUxpc3QK
LSNlbmRpZgorICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlLAor
ICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2Us
CisgICAgICAgIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAor
ICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OkluY2x1ZGVEaXNwbGF5TGlzdD4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OkluY2x1ZGVEaXNwbGF5TGlzdCwKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6SW5jbHVkZURpc3BsYXlMaXN0OjpObywKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6SW5jbHVkZURpc3BsYXlMaXN0OjpZZXMKICAgICA+OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGQwZGFkYzcyMjZiMWEyNGVlNjM3OWQyMTU4
YTk3ODM3N2QyOTI0NDAuLmNhMDViN2IxNDU5ZTY2N2U4MzllOTBmYmExZWIxYmMyMmU2N2VlMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEsNCArMSw0IEBACi0gLyoKKy8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgpA
QCAtNzUsOSArNzYsOSBAQCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6flJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlKCkKICAgICAgICAgY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGVzdHJveWVk
KCp0aGlzKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2lu
Z1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGZsb2F0IHNjYWxlLCBi
b29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSkKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXpl
LCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUsIEluY2x1ZGVEaXNw
bGF5TGlzdCBpbmNsdWRlRGlzcGxheUxpc3QpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSB0eXBlICYm
IG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVl
cENvbG9yICYmIG1faXNPcGFxdWUgPT0gaXNPcGFxdWUpCisgICAgaWYgKG1fdHlwZSA9PSB0eXBl
ICYmIG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0g
ZGVlcENvbG9yICYmIG1faXNPcGFxdWUgPT0gaXNPcGFxdWUgJiYgbV9pbmNsdWRlRGlzcGxheUxp
c3QgPT0gaW5jbHVkZURpc3BsYXlMaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3R5cGUg
PSB0eXBlOwpAQCAtODUsNiArODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpl
bnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogICAgIG1f
c2NhbGUgPSBzY2FsZTsKICAgICBtX2RlZXBDb2xvciA9IGRlZXBDb2xvcjsKICAgICBtX2lzT3Bh
cXVlID0gaXNPcGFxdWU7CisgICAgbV9pbmNsdWRlRGlzcGxheUxpc3QgPSBpbmNsdWRlRGlzcGxh
eUxpc3Q7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlcikgewogICAgICAgICAvLyBJZiB3ZSBoYXZl
IGEgdmFsaWQgYmFja2luZyBzdG9yZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBnZXRzIGNv
bXBsZXRlbHkKQEAgLTEwOCw2ICsxMTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9z
aXplOwogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7
CisgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTEyMSwxNSArMTI0LDE4IEBAIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAg
IGNhc2UgVHlwZTo6Qml0bWFwOgogICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5h
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUoKTsKICAgICAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJ
U1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0
OgotICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZCY+KCptX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
KworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBz
dGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7
CisgICAgaWYgKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlcikKKyAgICAgICAg
ZGlzcGxheUxpc3RIYW5kbGUgPSBzdGF0aWNfY2FzdDxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kJj4oKm1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+ZW5zdXJlQmFj
a2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisKKyAgICBl
bmNvZGVyIDw8IGRpc3BsYXlMaXN0SGFuZGxlOworI2VuZGlmCiB9CiAKIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlJiByZXN1bHQpCkBAIC0xNDYsOSArMTUyLDE3IEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVy
QmFja2luZ1N0CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pc09wYXF1ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
aW5jbHVkZURpc3BsYXlMaXN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubV9idWZmZXJIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kaXNwbGF5TGlzdEJ1ZmZlckhhbmRsZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTIyMiwzMiArMjM2LDI0IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51
bGxwdHIpOwogICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9M
SVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCi0gICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0Ogot
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9y
bWF0KCksIG51bGxwdHIpOwotICAgICAgICBicmVhazsKKyAgICBpZiAobV9pbmNsdWRlRGlzcGxh
eUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpZZXMpCisgICAgICAgIG1fZnJvbnRCdWZmZXIu
ZGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxs
cHRyKTsKICNlbmRpZgotICAgIH0KIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiB7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBj
YXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0jaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVS
KQotICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gRklYTUU6IEZpbmQgYSB3
YXkgdG8gc3VwcG9ydCBwYXJ0aWFsIHJlcGFpbnQgZm9yIGJhY2tpbmcgc3RvcmUgdGhhdAorICAg
IC8vIGluY2x1ZGVzIGEgZGlzcGxheSBsaXN0IHdpdGhvdXQgYWxsb3dpbmcgdW5ib3VuZGVkIG1l
bW9yeSBncm93dGguCisgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVE
aXNwbGF5TGlzdDo6Tm87CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3Bs
YXkoKQogewotICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXIpOworICAgIEFTU0VSVCgh
bV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUoKSk7CiAKICAgICBtX2xhc3REaXNwbGF5VGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogCkBAIC0yNzQsNyArMjgwLDM3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlmICghbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisK
KyAgICBpZiAobV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpZZXMp
IHsKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAg
ICAgIFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY29udGV4dChtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0KCksIG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyNlbHNlCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyNl
bmRpZgorICAgICAgICBkcmF3SW5Db250ZXh0KGNvbnRleHQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAgZHJhd0luQ29udGV4dChjb250ZXh0KTsgICAg
CisgICAgfQorCisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1f
cGFpbnRpbmdSZWN0cy5jbGVhcigpOworCisgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworCisgICAgbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFzeW5jKCk7CisKKyAgICBtX2Zyb250QnVmZmVy
Rmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIo
KSk7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAg
IGlmIChtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6OlllcykKKyAg
ICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3BsYXlM
aXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICAvLyBJZiB3ZSBo
YXZlIGxlc3MgdGhhbiB3ZWJMYXllck1heFJlY3RzVG9QYWludCByZWN0cyB0byBwYWludCBhbmQg
dGhleSBjb3ZlciBsZXNzCkBAIC0yOTcsNiArMzMzLDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBlbmQoc2NhbGVk
UmVjdCk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6SW50UmVjdCBsYXllckJvdW5kcyhXZWJDb3Jl
OjpJbnRQb2ludCgpLCBXZWJDb3JlOjpleHBhbmRlZEludFNpemUobV9zaXplKSk7CiAgICAgaWYg
KCFtX2RpcnR5UmVnaW9uLmNvbnRhaW5zKGxheWVyQm91bmRzKSkgewogICAgICAgICBBU1NFUlQo
bV9iYWNrQnVmZmVyLmltYWdlQnVmZmVyKTsKICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKm1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlciwgeyB7MCwgMH0sIG1fc2l6ZSB9LCB7IHswLCAw
fSwgbV9zaXplIH0sIHsgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CkBAIC0z
NTQsMTcgKzM5MSw2IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfTsKLQot
ICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKLSAgICBtX3BhaW50aW5nUmVj
dHMuY2xlYXIoKTsKLQotICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVy
RGlkRGlzcGxheShtX2xheWVyKTsKLQotICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZs
dXNoRHJhd2luZ0NvbnRleHRBc3luYygpOwotCi0gICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNC
ZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgdm9pZCAoXmJsb2Nr
KShXZWJDb3JlOjpGbG9hdFJlY3QpKQpAQCAtMzg3LDQyICs0MTMsNTEgQEAgdm9pZCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5ZXIgKmxheWVy
LCBMYXllckNvbnQKICAgICBBU1NFUlQobV9idWZmZXJIYW5kbGUpOwogICAgIGxheWVyLmNvbnRl
bnRzT3BhcXVlID0gbV9pc09wYXF1ZTsKIAorICAgIGlkIGNvbnRlbnRzID0gbmlsOwogICAgIFdU
Rjo6c3dpdGNoT24oKm1fYnVmZmVySGFuZGxlLAogICAgICAgICBbJl0gKFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBoYW5kbGUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6
Qml0bWFwKTsKICAgICAgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlKTsKLSAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWJp
dG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCk7CisgICAgICAgICAgICBjb250ZW50cyA9IGJp
dG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9
LAogICAgICAgICBbJl0gKE1hY2hTZW5kUmlnaHQmIG1hY2hTZW5kUmlnaHQpIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgICAgIHN3aXRj
aCAoY29udGVudHNUeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpJ
T1N1cmZhY2U6IHsKKyAgICAgICAgICAgIGNhc2UgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6Okxh
eWVyQ29udGVudHNUeXBlOjpJT1N1cmZhY2U6IHsKICAgICAgICAgICAgICAgICBhdXRvIHN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNo
U2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAg
ICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJD
b250ZW50cygpIDogbmlsOworICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gc3VyZmFjZSA/IHN1
cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNo
UG9ydDoKLSAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClhZG9w
dENGKENBTWFjaFBvcnRDcmVhdGUobWFjaFNlbmRSaWdodC5sZWFrU2VuZFJpZ2h0KCkpKS5nZXQo
KTsKKyAgICAgICAgICAgIGNhc2UgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVu
dHNUeXBlOjpDQU1hY2hQb3J0OgorICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gYWRvcHRDRihD
QU1hY2hQb3J0Q3JlYXRlKG1hY2hTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpKSkuYnJpZGdpbmdB
dXRvcmVsZWFzZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQog
ICAgICAgICAsIFsmXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBidWZmZXIpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6Q0dEaXNwbGF5TGlzdCk7Ci0gICAgICAgICAgICBB
U1NFUlQoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdMYXllciBjbGFzc11dKTsK
LSAgICAgICAgICAgIGlmICghW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdMYXll
ciBjbGFzc11dKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIFtsYXllciBz
ZXRWYWx1ZTpAMSBmb3JLZXlQYXRoOldLQ0dEaXNwbGF5TGlzdEVuYWJsZWRLZXldOwotICAgICAg
ICAgICAgYXV0byBkYXRhID0gYnVmZmVyLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKLSAgICAg
ICAgICAgIFsoV0tDb21wb3NpdGluZ0xheWVyICopbGF5ZXIgX3NldFdLQ29udGVudHNEaXNwbGF5
TGlzdDpkYXRhLmdldCgpXTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAjZW5kaWYKICAgICApOworCisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNL
RURfSU1BR0VfQlVGRkVSKQorICAgIGlmIChtX2Rpc3BsYXlMaXN0QnVmZmVySGFuZGxlKSB7Cisg
ICAgICAgIEFTU0VSVChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV0tDb21wb3NpdGluZ0xheWVyIGNs
YXNzXV0pOworICAgICAgICBpZiAoIVtsYXllciBpc0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5n
TGF5ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgW2xheWVyIHNldFZh
bHVlOkAxIGZvcktleVBhdGg6V0tDR0Rpc3BsYXlMaXN0RW5hYmxlZEtleV07CisgICAgICAgIGF1
dG8gZGF0YSA9IFdURjo6Z2V0PElQQzo6U2hhcmVkQnVmZmVyQ29weT4oKm1fZGlzcGxheUxpc3RC
dWZmZXJIYW5kbGUpLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKKyAgICAgICAgWyhXS0NvbXBv
c2l0aW5nTGF5ZXIgKilsYXllciBfc2V0V0tDb250ZW50czpjb250ZW50cyB3aXRoRGlzcGxheUxp
c3Q6ZGF0YS5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGxh
eWVyLmNvbnRlbnRzID0gY29udGVudHM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6dGFr
ZVBlbmRpbmdGbHVzaGVyKCkKK1ZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFk
U2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp0YWtlUGVu
ZGluZ0ZsdXNoZXJzKCkKIHsKLSAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Zyb250QnVmZmVy
Rmx1c2hlciwgbnVsbHB0cik7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9mcm9udEJ1ZmZl
ckZsdXNoZXJzLCB7IH0pOwogfQogCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRC
dWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUgYnVmZmVyVHlwZSwgYm9vbCBpc1ZvbGF0aWxlKQpA
QCAtNDg4LDYgKzUyMyw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlcjo6
ZGlzY2FyZCgpCiAgICAgaWYgKGltYWdlQnVmZmVyKQogICAgICAgICBpbWFnZUJ1ZmZlci0+cmVs
ZWFzZUJ1ZmZlclRvUG9vbCgpOwogICAgIGltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyNpZiBFTkFC
TEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgZGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29j
b2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgKaW5kZXggYWI1MWM0YzA4
ZjlmMDU5NGQ3MDY2ZTgxNTA5ZmM4ZTczMWMwNTEyYS4uN2I1MTVlNmI2N2Q3ZjVkZThjYjMzMWFm
NzQ0MTI2OTEwNjNiNTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXll
cnMuaApAQCAtMzMsNyArMzMsNyBAQAogQGludGVyZmFjZSBXS0NvbXBvc2l0aW5nTGF5ZXIgOiBD
QUxheWVyCiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIp
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBzZXR0ZXI9X3NldFdLQ29udGVudHNEaXNw
bGF5TGlzdDopIF9fYXR0cmlidXRlX18oKE5TT2JqZWN0KSkgQ0ZEYXRhUmVmIF93a0NvbnRlbnRz
RGlzcGxheUxpc3Q7CistICh2b2lkKV9zZXRXS0NvbnRlbnRzOihpZCljb250ZW50cyB3aXRoRGlz
cGxheUxpc3Q6KENGRGF0YVJlZilkYXRhOwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRy
ZWVMYXllcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29j
b2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tCmluZGV4IDZiMzhhYTEwYzI0N2Y2OGQ3ZDUyYjMw
ZDNiY2I5YjhkNGM1N2VjOTMuLmRlYTdiNmFmNWY0OTVmYjFhYWE1MzU3ZDBhMjY5MjlhYzgxNWJm
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9j
b2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbQpAQCAtNDgs
MTcgKzQ4LDEzIEBAIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIH0KIAogI2lmIEVOQUJMRShD
R19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLS0gKHZvaWQpX3NldFdLQ29udGVu
dHNEaXNwbGF5TGlzdDooQ0ZEYXRhUmVmKWRhdGEKKy0gKHZvaWQpX3NldFdLQ29udGVudHM6KGlk
KWNvbnRlbnRzIHdpdGhEaXNwbGF5TGlzdDooQ0ZEYXRhUmVmKWRhdGEKIHsKKyAgICAvLyBGSVhN
RTogQWxzbyBhcHBseSB0aGUgY29udGVudHMgdG8gdGhlIGxheWVyLCBvbmNlIHdlIGhhdmUgQVBJ
IHRvIGRvIGJvdGguCiAgICAgX2NvbnRlbnRzRGlzcGxheUxpc3QgPSBkYXRhOwogICAgIFtzZWxm
IHNldE5lZWRzRGlzcGxheV07CiB9CiAKLS0gKENGRGF0YVJlZilfd2tDb250ZW50c0Rpc3BsYXlM
aXN0Ci17Ci0gICAgcmV0dXJuIF9jb250ZW50c0Rpc3BsYXlMaXN0LmdldCgpOwotfQotCiAtICh2
b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgaWYgKCFfY29u
dGVudHNEaXNwbGF5TGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAKaW5kZXggOTc1Y2I1YjY1MjhiYzlkOTZkYWI2Yzk2ZDhjMzFiYjNkN2QxM2Mw
MC4uNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIzNCwxMSArMjM0
LDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVCYWNraW5nU3RvcmUoKQog
ICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQpOwogCiAgICAgYXV0
byB0eXBlID0gbV9hY2NlbGVyYXRlc0RyYXdpbmcgPyBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
VHlwZTo6SU9TdXJmYWNlIDogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcDsK
KyAgICBhdXRvIGluY2x1ZGVEaXNwbGF5TGlzdCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpJ
bmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VE
X0lNQUdFX0JVRkZFUikKICAgICBpZiAobV9jb250ZXh0LT51c2VDR0Rpc3BsYXlMaXN0c0ZvckRP
TVJlbmRlcmluZygpKQotICAgICAgICB0eXBlID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5
cGU6OkNHRGlzcGxheUxpc3Q7CisgICAgICAgIGluY2x1ZGVEaXNwbGF5TGlzdCA9IFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpJbmNsdWRlRGlzcGxheUxpc3Q6OlllczsKICNlbmRpZgotICAgIG1f
cHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmVuc3VyZUJhY2tpbmdTdG9yZSh0eXBlLCBtX3Byb3Bl
cnRpZXMuYm91bmRzLnNpemUoKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fd2FudHNE
ZWVwQ29sb3JCYWNraW5nU3RvcmUsIG1fcHJvcGVydGllcy5vcGFxdWUpOworICAgIG1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUtPmVuc3VyZUJhY2tpbmdTdG9yZSh0eXBlLCBtX3Byb3BlcnRpZXMu
Ym91bmRzLnNpemUoKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fd2FudHNEZWVwQ29s
b3JCYWNraW5nU3RvcmUsIG1fcHJvcGVydGllcy5vcGFxdWUsIGluY2x1ZGVEaXNwbGF5TGlzdCk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGExOGIzMTVlNmFkMDBmMGU0ZjA5ZWZhYWIx
NjNjZjUyNTM1ODk5Y2EuLmQ1OWE0ODc5MmQwMWNhMDE2NzU4MzFlMDk0MGY4ZmM3MDM5OGZmMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0KQEAgLTM4NywxMCArMzg3LDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBmb3IgKGF1dG8mIGxheWVyIDogbGF5ZXJUcmFuc2Fj
dGlvbi5jaGFuZ2VkTGF5ZXJzKCkpIHsKICAgICAgICAgaWYgKGxheWVyLT5wcm9wZXJ0aWVzKCku
Y2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0
b3JlQ2hhbmdlZCkgewogICAgICAgICAgICAgaGFkQW55Q2hhbmdlZEJhY2tpbmdTdG9yZSA9IHRy
dWU7Ci0gICAgICAgICAgICBpZiAobGF5ZXItPnByb3BlcnRpZXMoKS5iYWNraW5nU3RvcmUpIHsK
LSAgICAgICAgICAgICAgICBpZiAoYXV0byBwZW5kaW5nRmx1c2hlciA9IGxheWVyLT5wcm9wZXJ0
aWVzKCkuYmFja2luZ1N0b3JlLT50YWtlUGVuZGluZ0ZsdXNoZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZmx1c2hlcnMuYXBwZW5kKFdURk1vdmUocGVuZGluZ0ZsdXNoZXIpKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChsYXllci0+cHJvcGVydGllcygpLmJhY2tpbmdTdG9yZSkK
KyAgICAgICAgICAgICAgICBmbHVzaGVycy5hcHBlbmRWZWN0b3IobGF5ZXItPnByb3BlcnRpZXMo
KS5iYWNraW5nU3RvcmUtPnRha2VQZW5kaW5nRmx1c2hlcnMoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBsYXllci0+ZGlkQ29tbWl0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433667</attachid>
            <date>2021-07-16 02:51:27 -0700</date>
            <delta_ts>2021-07-16 11:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226425-20210716025126.patch</filename>
            <type>text/plain</type>
            <size>22557</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5NjRlOGZmOTUxOWUwNDZk
ZjI1ODBjMjM2Y2E2ZDUxZDhkYmQ1ZmUuLjlkMTJjYjE0YjNiNzg4YmE5Yjg0MTdjMzBjZmM5MWQx
MWEzYzVhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMDctMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dCBmb3IgYmFja2luZyBzdG9yZSArIGRpc3BsYXkgbGlzdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NDI1CisgICAgICAgIDxyZGFyOi8vNzc5MjkyOTk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiAiZGlzcGxheSBs
aXN0IGJhY2tlZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSIgYmVpbmcgaXRzIG93bgorICAgICAg
ICBiYWNraW5nIHN0b3JlIHR5cGUsIHdlIG1ha2UgImluY2x1ZGVzIGEgZGlzcGxheSBsaXN0IiBh
IHNlcGFyYXRlIGJpdC4KKyAgICAgICAgVGhpcyB3YXksIHdlIGNhbiBwYWludCBib3RoIGEgYml0
bWFwIChJT1N1cmZhY2Ugb3IgQ0cgYml0bWFwLCBhbGwKKyAgICAgICAgZXhhY3RseSBhcyBpdCBu
b3JtYWxseSBpcyksIGFuZCBhbHNvIGNhcnJ5IGEgc2lkZWNhciBkaXNwbGF5IGxpc3QuCisKKyAg
ICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6
CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAgICAgIFdlIGNhbid0IHBhcnRpYWxs
eSByZXBhaW50IHRoZSBkaXNwbGF5IGxpc3QsIGFuZCByZXF1aXJlIGl0cyByZW5kZXJpbmcKKyAg
ICAgICAgdG8gbWF0Y2ggdGhlIHBhaW50ZWQgYmFja2luZyBzdG9yZSwgc28gZGlzYWJsZSBwYXJ0
aWFsIHJlcGFpbnQgZW50aXJlbHkKKyAgICAgICAgaWYgZGlzcGxheSBsaXN0cyBhcmUgYmVpbmcg
dXNlZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250
ZXh0KToKKyAgICAgICAgQWRvcHQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBpbiBvcmRlciB0
byBwYWludCBpbnRvIHRoZSBhZm9yZW1lbnRpb25lZAorICAgICAgICBiaXRtYXAgYW5kIGRpc3Bs
YXkgbGlzdCBzaW11bHRhbmVvdXNseS4KKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggbWF5IGFic3Ry
YWN0IHRoaXMgaW50byBhIG5ldyBJbWFnZUJ1ZmZlciB0eXBlCisgICAgICAgIGluc3RlYWQgb2Yg
cG9sbHV0aW5nIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHdpdGggaXQuCisKKyAgICAgICAgTGVh
dmUgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgYSBDb3JlQW5pbWF0aW9uIGJ1Zywgd2hpY2gg
Y2FuIGJlCisgICAgICAgIGRpc2FibGVkIHZpYSBgZGVmYXVsdHMgd3JpdGVgLCBidXQgaXMgZW5h
YmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgIChXZWJLaXQ6OmxheWVyQ29udGVudHNGb3JCdWZm
ZXJIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBw
bHlCYWNraW5nU3RvcmVUb0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OkJ1ZmZlcjo6ZGlzY2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbToKKyAgICAg
ICAgKC1bV0tDb21wb3NpdGluZ0xheWVyIF9zZXRXS0NvbnRlbnRzOndpdGhEaXNwbGF5TGlzdDpd
KToKKyAgICAgICAgKC1bV0tDb21wb3NpdGluZ0xheWVyIF9zZXRXS0NvbnRlbnRzRGlzcGxheUxp
c3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfd2tDb250ZW50
c0Rpc3BsYXlMaXN0XSk6IERlbGV0ZWQuCisgICAgICAgIFBhc3MgdGhlIGRpc3BsYXkgbGlzdCBk
YXRhIHRvIENvcmVBbmltYXRpb24gYWxvbmdzaWRlIHRoZSBiaXRtYXAuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dXBkYXRlQmFja2lu
Z1N0b3JlKToKKwogMjAyMS0wNy0xNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdIEV4cGFuZCBHUFUgc2FuZGJveCB0byBzdXBwb3J0IG11bHRp
LXRhcmdldCBBaXJQbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IGFlOWQyZjg4
NjUwNWMyMDVmYzFhYWZjZDIyMDBkYzZlNmU0MzBkNGQuLjJmYmE3Zjg0NWMxMzAzNDZmY2ViMmU1
ZTAzMDg5YjMyN2ZmY2FlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC01NCwx
MyArNTQsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CiAg
ICAgICAgIElPU3VyZmFjZSwKLSAgICAgICAgQml0bWFwLAotI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgQ0dEaXNwbGF5TGlzdCwKLSNlbmRp
ZgorICAgICAgICBCaXRtYXAKICAgICB9OwogCi0gICAgdm9pZCBlbnN1cmVCYWNraW5nU3RvcmUo
VHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplLCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3IsIGJv
b2wgaXNPcGFxdWUpOworICAgIGVudW0gY2xhc3MgSW5jbHVkZURpc3BsYXlMaXN0IDogYm9vbCB7
IE5vLCBZZXMgfTsKKyAgICB2b2lkIGVuc3VyZUJhY2tpbmdTdG9yZShUeXBlLCBXZWJDb3JlOjpG
bG9hdFNpemUsIGZsb2F0IHNjYWxlLCBib29sIGRlZXBDb2xvciwgYm9vbCBpc09wYXF1ZSwgSW5j
bHVkZURpc3BsYXlMaXN0KTsKIAogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CkBAIC04OCw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsK
ICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVm
ZmVyRmx1c2hlcj4gdGFrZVBlbmRpbmdGbHVzaGVyKCk7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdG
bHVzaGVycygpOwogCiAgICAgZW51bSBjbGFzcyBCdWZmZXJUeXBlIHsKICAgICAgICAgRnJvbnQs
CkBAIC0xMjAsNiArMTE4LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBCdWZmZXIgewogICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiBkaXNwbGF5TGlzdEltYWdlQnVmZmVyOworI2VuZGlmCiAgICAg
ICAgIGJvb2wgaXNWb2xhdGlsZSA9IGZhbHNlOwogCiAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdApAQCAtMTM0LDEwICsxMzUsMTQgQEAgcHJpdmF0ZToKICAgICBCdWZmZXIg
bV9iYWNrQnVmZmVyOwogICAgIEJ1ZmZlciBtX3NlY29uZGFyeUJhY2tCdWZmZXI7CiAgICAgc3Rk
OjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFuZGxlOworI2lm
IEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBzdGQ6Om9w
dGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9kaXNwbGF5TGlzdEJ1ZmZlckhhbmRs
ZTsKKyNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFn
ZUJ1ZmZlckZsdXNoZXI+IG1fZnJvbnRCdWZmZXJGbHVzaGVyOworICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IG1fZnJvbnRC
dWZmZXJGbHVzaGVyczsKIAogICAgIFR5cGUgbV90eXBlOworICAgIEluY2x1ZGVEaXNwbGF5TGlz
dCBtX2luY2x1ZGVEaXNwbGF5TGlzdCB7IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm8gfTsKICAgICBi
b29sIG1fZGVlcENvbG9yIHsgZmFsc2UgfTsKIAogICAgIFdlYkNvcmU6OlJlcGFpbnRSZWN0TGlz
dCBtX3BhaW50aW5nUmVjdHM7CkBAIC0xNTEsMTIgKzE1NiwxNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAg
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZQotICAgICAgICAsIFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZQotICAgICAgICAsIFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAotI2lmIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgLCBXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpDR0Rpc3BsYXlMaXN0Ci0jZW5kaWYKKyAgICAgICAg
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZSwKKyAgICAgICAgV2ViS2l0OjpS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNlLAorICAgICAgICBXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpCaXRtYXAKKyAgICA+OworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpJbmNsdWRlRGlzcGxheUxpc3Q+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpJbmNsdWRlRGlzcGxheUxp
c3QsCisgICAgICAgIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkluY2x1ZGVEaXNw
bGF5TGlzdDo6Tm8sCisgICAgICAgIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6Oklu
Y2x1ZGVEaXNwbGF5TGlzdDo6WWVzCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQppbmRleCBkMGRhZGM3MjI2YjFhMjRlZTYzNzlkMjE1OGE5NzgzNzdkMjkyNDQwLi5l
ZjYxNzBkMWQ5OTE2ODBmOGEzM2EyYjYyNzY0ZTYzMjQ0YjFjNWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tCkBAIC0xLDQgKzEsNCBAQAotIC8qCisvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZh
Y2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KQEAgLTc1LDkgKzc2LDkgQEAg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6On5SZW1vdGVMYXllckJhY2tpbmdTdG9yZSgpCiAgICAg
ICAgIGNvbnRleHQtPmJhY2tpbmdTdG9yZVdpbGxCZURlc3Ryb3llZCgqdGhpcyk7CiB9CiAKLXZv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUs
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplLCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3IsIGJv
b2wgaXNPcGFxdWUpCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5n
U3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUsIGJv
b2wgZGVlcENvbG9yLCBib29sIGlzT3BhcXVlLCBJbmNsdWRlRGlzcGxheUxpc3QgaW5jbHVkZURp
c3BsYXlMaXN0KQogewotICAgIGlmIChtX3R5cGUgPT0gdHlwZSAmJiBtX3NpemUgPT0gc2l6ZSAm
JiBtX3NjYWxlID09IHNjYWxlICYmIG1fZGVlcENvbG9yID09IGRlZXBDb2xvciAmJiBtX2lzT3Bh
cXVlID09IGlzT3BhcXVlKQorICAgIGlmIChtX3R5cGUgPT0gdHlwZSAmJiBtX3NpemUgPT0gc2l6
ZSAmJiBtX3NjYWxlID09IHNjYWxlICYmIG1fZGVlcENvbG9yID09IGRlZXBDb2xvciAmJiBtX2lz
T3BhcXVlID09IGlzT3BhcXVlICYmIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IGluY2x1ZGVEaXNw
bGF5TGlzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV90eXBlID0gdHlwZTsKQEAgLTg1LDYg
Kzg2LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3Jl
KFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKICAgICBtX3NjYWxlID0gc2NhbGU7CiAg
ICAgbV9kZWVwQ29sb3IgPSBkZWVwQ29sb3I7CiAgICAgbV9pc09wYXF1ZSA9IGlzT3BhcXVlOwor
ICAgIG1faW5jbHVkZURpc3BsYXlMaXN0ID0gaW5jbHVkZURpc3BsYXlMaXN0OwogCiAgICAgaWYg
KG1fZnJvbnRCdWZmZXIpIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHZhbGlkIGJhY2tpbmcg
c3RvcmUsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXQgZ2V0cyBjb21wbGV0ZWx5CkBAIC0xMDgs
NiArMTEwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKICAgICBlbmNvZGVy
IDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOworICAgIGVuY29kZXIgPDwg
bV9pbmNsdWRlRGlzcGxheUxpc3Q7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZT4gaGFuZGxlOwogICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7
CkBAIC0xMjEsMTUgKzEyNCwxOCBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBjYXNlIFR5cGU6OkJpdG1h
cDoKICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9C
VUZGRVIpCi0gICAgICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgICAgIGhh
bmRsZSA9IHN0YXRpY19jYXN0PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQmPigqbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAg
ICAgICB9CiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisKKyNpZiBFTkFCTEUoQ0df
RElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgc3RkOjpvcHRpb25hbDxJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOworICAgIGlmIChtX2Zyb250
QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIpCisgICAgICAgIGRpc3BsYXlMaXN0SGFuZGxl
ID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCY+KCptX2Zyb250
QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpLmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworCisgICAgZW5jb2RlciA8PCBkaXNwbGF5
TGlzdEhhbmRsZTsKKyNlbmRpZgogfQogCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgcmVz
dWx0KQpAQCAtMTQ2LDkgKzE1MiwxNyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJhY2tpbmdTdAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1faXNPcGFxdWUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2luY2x1ZGVEaXNwbGF5TGlz
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fYnVmZmVySGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxF
KENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fZGlzcGxheUxpc3RCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjIsMzIgKzIzNiwy
NCBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVy
KCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9
IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hh
cmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAgICAg
YnJlYWs7CisgICAgfQorCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0Vf
QlVGRkVSKQotICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
LSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVE
aXNwbGF5TGlzdDo6WWVzKQorICAgICAgICBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAjZW5kaWYKLSAg
ICB9CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJl
cGFpbnQoKQogewotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBUeXBlOjpJT1N1cmZh
Y2U6Ci0gICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2lmIEVO
QUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICBjYXNlIFR5cGU6
OkNHRGlzcGxheUxpc3Q6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIH0KLQot
ICAgIHJldHVybiB0cnVlOworICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHN1cHBvcnQgcGFy
dGlhbCByZXBhaW50IGZvciBiYWNraW5nIHN0b3JlIHRoYXQKKyAgICAvLyBpbmNsdWRlcyBhIGRp
c3BsYXkgbGlzdCB3aXRob3V0IGFsbG93aW5nIHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoLgorICAg
IHJldHVybiBtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwog
fQogCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKLSAgICBBU1NF
UlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVyKTsKKyAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVz
aGVycy5zaXplKCkpOwogCiAgICAgbV9sYXN0RGlzcGxheVRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKIApAQCAtMjc0LDcgKzI4MCw1MCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaXNwbGF5KCkKICAgICBpZiAoIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworCisgICAgaWYgKG1faW5jbHVk
ZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVzKSB7CisjaWYgRU5BQkxFKENH
X0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgICAgICBhdXRvJiBkaXNwbGF5
TGlzdENvbnRleHQgPSBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKKworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiA8cmRhcjovL3Byb2Js
ZW0vODA0ODc2OTc+IGlzIGZpeGVkLgorICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29s
PiBuZWVkc01pc3NpbmdGbGlwV29ya2Fyb3VuZDsKKyAgICAgICAgaWYgKCFuZWVkc01pc3NpbmdG
bGlwV29ya2Fyb3VuZCkgeworICAgICAgICAgICAgaWQgZGVmYXVsdFZhbHVlID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0TmVlZHNX
b3JrYXJvdW5kRm9yODA0ODc2OTciXTsKKyAgICAgICAgICAgIG5lZWRzTWlzc2luZ0ZsaXBXb3Jr
YXJvdW5kID0gZGVmYXVsdFZhbHVlID8gW2RlZmF1bHRWYWx1ZSBib29sVmFsdWVdIDogdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAobmVlZHNNaXNzaW5nRmxpcFdvcmthcm91bmQudmFsdWUo
KSkgeworICAgICAgICAgICAgZGlzcGxheUxpc3RDb250ZXh0LnNjYWxlKFdlYkNvcmU6OkZsb2F0
U2l6ZShtX3NjYWxlLCAtbV9zY2FsZSkpOworICAgICAgICAgICAgZGlzcGxheUxpc3RDb250ZXh0
LnRyYW5zbGF0ZSgwLCAtbV9zaXplLmhlaWdodCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdl
YkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY29udGV4dChtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5jb250ZXh0KCksIGRpc3BsYXlMaXN0Q29udGV4dCk7CisjZWxzZQorICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5jb250ZXh0KCk7CisjZW5kaWYKKyAgICAgICAgZHJhd0luQ29udGV4dChjb250ZXh0
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGRyYXdJ
bkNvbnRleHQoY29udGV4dCk7ICAgIAorICAgIH0KKworICAgIG1fZGlydHlSZWdpb24gPSBXZWJD
b3JlOjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsKKworICAgIG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKKwor
ICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygp
OworCisgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFD
S0VEX0lNQUdFX0JVRkZFUikKKyAgICBpZiAobV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVk
ZURpc3BsYXlMaXN0OjpZZXMpCisgICAgICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBlbmQo
bV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBsZXNzIHRoYW4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFp
bnQgcmVjdHMgdG8gcGFpbnQgYW5kIHRoZXkgY292ZXIgbGVzcwpAQCAtMjk3LDYgKzM0Niw3IEBA
IGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX3BhaW50
aW5nUmVjdHMuYXBwZW5kKHNjYWxlZFJlY3QpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OkludFJl
Y3QgbGF5ZXJCb3VuZHMoV2ViQ29yZTo6SW50UG9pbnQoKSwgV2ViQ29yZTo6ZXhwYW5kZWRJbnRT
aXplKG1fc2l6ZSkpOwogICAgIGlmICghbV9kaXJ0eVJlZ2lvbi5jb250YWlucyhsYXllckJvdW5k
cykpIHsKICAgICAgICAgQVNTRVJUKG1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlcik7CiAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIsIHsgezAs
IDB9LCBtX3NpemUgfSwgeyB7MCwgMH0sIG1fc2l6ZSB9LCB7IFdlYkNvcmU6OkNvbXBvc2l0ZU9w
ZXJhdG9yOjpDb3B5IH0pOwpAQCAtMzU0LDE3ICs0MDQsNiBAQCBib29sIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH07Ci0KLSAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9u
KCk7Ci0gICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Ci0KLSAgICBtX2xheWVyLT5vd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7Ci0KLSAgICBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QXN5bmMoKTsKLQotICAgIG1f
ZnJvbnRCdWZmZXJGbHVzaGVyID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y3JlYXRlRmx1
c2hlcigpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIHZvaWQgKF5ibG9jaykoV2ViQ29yZTo6RmxvYXRSZWN0KSkKQEAgLTM4Nyw0MiAr
NDI2LDUxIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3Jl
VG9MYXllcihDQUxheWVyICpsYXllciwgTGF5ZXJDb250CiAgICAgQVNTRVJUKG1fYnVmZmVySGFu
ZGxlKTsKICAgICBsYXllci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7CiAKKyAgICBpZCBj
b250ZW50cyA9IG5pbDsKICAgICBXVEY6OnN3aXRjaE9uKCptX2J1ZmZlckhhbmRsZSwKICAgICAg
ICAgWyZdIChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKSB7CiAgICAgICAgICAgICBB
U1NFUlQobV90eXBlID09IFR5cGU6OkJpdG1hcCk7CiAgICAgICAgICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAgICAgICAgICBsYXllci5jb250
ZW50cyA9IChfX2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAg
ICAgICAgICAgY29udGVudHMgPSBiaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmJyaWRnaW5nQXV0
b3JlbGVhc2UoKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChNYWNoU2VuZFJpZ2h0JiBtYWNo
U2VuZFJpZ2h0KSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFj
ZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewotICAgICAgICAgICAgY2Fz
ZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CisgICAgICAgICAgICBjYXNlIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CiAgICAg
ICAgICAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZh
Y2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKKyAgICAgICAgICAgICAgICBj
b250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgTGF5
ZXJDb250ZW50c1R5cGU6OkNBTWFjaFBvcnQ6Ci0gICAgICAgICAgICAgICAgbGF5ZXIuY29udGVu
dHMgPSAoX19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRlKG1hY2hTZW5kUmlnaHQu
bGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7CisgICAgICAgICAgICBjYXNlIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9ydDoKKyAgICAgICAgICAgICAg
ICBjb250ZW50cyA9IGFkb3B0Q0YoQ0FNYWNoUG9ydENyZWF0ZShtYWNoU2VuZFJpZ2h0LmxlYWtT
ZW5kUmlnaHQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1Rf
QkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICAgICAgLCBbJl0gKElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgYnVmZmVyKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNHRGlzcGxh
eUxpc3QpOwotICAgICAgICAgICAgQVNTRVJUKFtsYXllciBpc0tpbmRPZkNsYXNzOltXS0NvbXBv
c2l0aW5nTGF5ZXIgY2xhc3NdXSk7Ci0gICAgICAgICAgICBpZiAoIVtsYXllciBpc0tpbmRPZkNs
YXNzOltXS0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBbbGF5ZXIgc2V0VmFsdWU6QDEgZm9yS2V5UGF0aDpXS0NHRGlzcGxheUxp
c3RFbmFibGVkS2V5XTsKLSAgICAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci5idWZmZXIoKS0+
Y3JlYXRlQ0ZEYXRhKCk7Ci0gICAgICAgICAgICBbKFdLQ29tcG9zaXRpbmdMYXllciAqKWxheWVy
IF9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6ZGF0YS5nZXQoKV07CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgKTsKKworI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBpZiAobV9kaXNwbGF5
TGlzdEJ1ZmZlckhhbmRsZSkgeworICAgICAgICBBU1NFUlQoW2xheWVyIGlzS2luZE9mQ2xhc3M6
W1dLQ29tcG9zaXRpbmdMYXllciBjbGFzc11dKTsKKyAgICAgICAgaWYgKCFbbGF5ZXIgaXNLaW5k
T2ZDbGFzczpbV0tDb21wb3NpdGluZ0xheWVyIGNsYXNzXV0pCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIFtsYXllciBzZXRWYWx1ZTpAMSBmb3JLZXlQYXRoOldLQ0dEaXNwbGF5TGlzdEVu
YWJsZWRLZXldOworICAgICAgICBhdXRvIGRhdGEgPSBXVEY6OmdldDxJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk+KCptX2Rpc3BsYXlMaXN0QnVmZmVySGFuZGxlKS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRh
KCk7CisgICAgICAgIFsoV0tDb21wb3NpdGluZ0xheWVyICopbGF5ZXIgX3NldFdLQ29udGVudHM6
Y29udGVudHMgd2l0aERpc3BsYXlMaXN0OmRhdGEuZ2V0KCldOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyAgICBsYXllci5jb250ZW50cyA9IGNvbnRlbnRzOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnRha2VQZW5kaW5nRmx1c2hlcigpCitWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6dGFrZVBlbmRpbmdGbHVzaGVycygpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UobV9mcm9udEJ1ZmZlckZsdXNoZXIsIG51bGxwdHIpOworICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fZnJvbnRCdWZmZXJGbHVzaGVycywgeyB9KTsKIH0KIAogYm9vbCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIGJ1ZmZlclR5
cGUsIGJvb2wgaXNWb2xhdGlsZSkKQEAgLTQ4OCw2ICs1MzYsOSBAQCB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQoKQogICAgIGlmIChpbWFnZUJ1ZmZlcikKICAg
ICAgICAgaW1hZ2VCdWZmZXItPnJlbGVhc2VCdWZmZXJUb1Bvb2woKTsKICAgICBpbWFnZUJ1ZmZl
ciA9IG51bGxwdHI7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQorICAgIGRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBudWxscHRyOworI2VuZGlmCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxh
eWVycy5oCmluZGV4IGFiNTFjNGMwOGY5ZjA1OTRkNzA2NmU4MTUwOWZjOGU3MzFjMDUxMmEuLjdi
NTE1ZTZiNjdkN2Y1ZGU4Y2IzMzFhZjc0NDEyNjkxMDYzYjUzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVM
YXllcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29j
b2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgKQEAgLTMzLDcgKzMzLDcgQEAKIEBpbnRlcmZhY2Ug
V0tDb21wb3NpdGluZ0xheWVyIDogQ0FMYXllcgogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElT
VF9CQUNLRURfSU1BR0VfQlVGRkVSKQotQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbiwgc2V0
dGVyPV9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6KSBfX2F0dHJpYnV0ZV9fKChOU09iamVjdCkp
IENGRGF0YVJlZiBfd2tDb250ZW50c0Rpc3BsYXlMaXN0OworLSAodm9pZClfc2V0V0tDb250ZW50
czooaWQpY29udGVudHMgd2l0aERpc3BsYXlMaXN0OihDRkRhdGFSZWYpZGF0YTsKICNlbmRpZgog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbQppbmRleCA2
YjM4YWExMGMyNDdmNjhkN2Q1MmIzMGQzYmNiOWI4ZDRjNTdlYzkzLi40MWVjMWZlNmNhMjIzYWE4
MzIxNGIxYjU5NTA2OTc2Y2M2Mjc5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXll
clRyZWVMYXllcnMubW0KQEAgLTM2LDExICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQWRkaXRpb25zLmg+CiAjZW5kaWYKIAotQGltcGxl
bWVudGF0aW9uIFdLQ29tcG9zaXRpbmdMYXllciB7Ci0jaWYgRU5BQkxFKENHX0RJU1BMQVlfTElT
VF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IF9jb250ZW50
c0Rpc3BsYXlMaXN0OwotI2VuZGlmCi19CitAaW1wbGVtZW50YXRpb24gV0tDb21wb3NpdGluZ0xh
eWVyCiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKQEAgLTQ4LDIzICs0NCwxNCBAQCAt
IChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNU
X0JBQ0tFRF9JTUFHRV9CVUZGRVIpCi0tICh2b2lkKV9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6
KENGRGF0YVJlZilkYXRhCi17Ci0gICAgX2NvbnRlbnRzRGlzcGxheUxpc3QgPSBkYXRhOwotICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07Ci19Ci0KLS0gKENGRGF0YVJlZilfd2tDb250ZW50c0Rp
c3BsYXlMaXN0CistICh2b2lkKV9zZXRXS0NvbnRlbnRzOihpZCljb250ZW50cyB3aXRoRGlzcGxh
eUxpc3Q6KENGRGF0YVJlZilkYXRhCiB7Ci0gICAgcmV0dXJuIF9jb250ZW50c0Rpc3BsYXlMaXN0
LmdldCgpOworICAgIHNlbGYuY29udGVudHMgPSBjb250ZW50czsKKyAgICBbc2VsZiBzZXRWYWx1
ZTooaWQpZGF0YSBmb3JLZXlQYXRoOldLQ0dEaXNwbGF5TGlzdENvbnRlbnRzS2V5XTsKKyAgICAK
KyAgICAKIH0KIAotLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAot
ewotICAgIGlmICghX2NvbnRlbnRzRGlzcGxheUxpc3QpCi0gICAgICAgIHJldHVybjsKLSAgICBX
S0NHQ29udGV4dERyYXdDR0NvbW1hbmRzRW5jb2RlZERhdGEoY29udGV4dCwgX2NvbnRlbnRzRGlz
cGxheUxpc3QuZ2V0KCksIG51bGxwdHIpOwotfQogI2VuZGlmIC8vIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA5NzVjYjViNjUyOGJjOWQ5NmRhYjZj
OTZkOGMzMWJiM2Q3ZDEzYzAwLi41ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIz
YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cApAQCAtMjM0LDExICsyMzQsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnVwZGF0
ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRh
Y2hlZCk7CiAKICAgICBhdXRvIHR5cGUgPSBtX2FjY2VsZXJhdGVzRHJhd2luZyA/IFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2UgOiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6VHlwZTo6Qml0bWFwOworICAgIGF1dG8gaW5jbHVkZURpc3BsYXlMaXN0ID0gUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OkluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiAjaWYgRU5BQkxFKENHX0RJ
U1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIGlmIChtX2NvbnRleHQtPnVzZUNH
RGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nKCkpCi0gICAgICAgIHR5cGUgPSBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6VHlwZTo6Q0dEaXNwbGF5TGlzdDsKKyAgICAgICAgaW5jbHVkZURpc3Bs
YXlMaXN0ID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkluY2x1ZGVEaXNwbGF5TGlzdDo6WWVz
OwogI2VuZGlmCi0gICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZW5zdXJlQmFja2luZ1N0
b3JlKHR5cGUsIG1fcHJvcGVydGllcy5ib3VuZHMuc2l6ZSgpLCBtX3Byb3BlcnRpZXMuY29udGVu
dHNTY2FsZSwgbV93YW50c0RlZXBDb2xvckJhY2tpbmdTdG9yZSwgbV9wcm9wZXJ0aWVzLm9wYXF1
ZSk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZW5zdXJlQmFja2luZ1N0b3JlKHR5
cGUsIG1fcHJvcGVydGllcy5ib3VuZHMuc2l6ZSgpLCBtX3Byb3BlcnRpZXMuY29udGVudHNTY2Fs
ZSwgbV93YW50c0RlZXBDb2xvckJhY2tpbmdTdG9yZSwgbV9wcm9wZXJ0aWVzLm9wYXF1ZSwgaW5j
bHVkZURpc3BsYXlMaXN0KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5l
ZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYTE4YjMxNWU2
YWQwMGYwZTRmMDllZmFhYjE2M2NmNTI1MzU4OTljYS4uZDU5YTQ4NzkyZDAxY2EwMTY3NTgzMWUw
OTQwZjhmYzcwMzk4ZmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzg3LDEwICszODcsOCBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIGZvciAoYXV0byYgbGF5
ZXIgOiBsYXllclRyYW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkgewogICAgICAgICBpZiAobGF5
ZXItPnByb3BlcnRpZXMoKS5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKSB7CiAgICAgICAgICAgICBoYWRBbnlDaGFuZ2Vk
QmFja2luZ1N0b3JlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChsYXllci0+cHJvcGVydGllcygp
LmJhY2tpbmdTdG9yZSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvIHBlbmRpbmdGbHVzaGVy
ID0gbGF5ZXItPnByb3BlcnRpZXMoKS5iYWNraW5nU3RvcmUtPnRha2VQZW5kaW5nRmx1c2hlcigp
KQotICAgICAgICAgICAgICAgICAgICBmbHVzaGVycy5hcHBlbmQoV1RGTW92ZShwZW5kaW5nRmx1
c2hlcikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxheWVyLT5wcm9wZXJ0aWVz
KCkuYmFja2luZ1N0b3JlKQorICAgICAgICAgICAgICAgIGZsdXNoZXJzLmFwcGVuZFZlY3Rvcihs
YXllci0+cHJvcGVydGllcygpLmJhY2tpbmdTdG9yZS0+dGFrZVBlbmRpbmdGbHVzaGVycygpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGxheWVyLT5kaWRDb21taXQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>