<?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>219067</bug_id>
          
          <creation_ts>2020-11-17 21:03:55 -0800</creation_ts>
          <short_desc>[Concurrent display lists] Add a way for display lists to partially replay</short_desc>
          <delta_ts>2020-11-19 12:30:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219175</see_also>
          <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>
          
          <blocked>218614</blocked>
    
    <blocked>219091</blocked>
    
    <blocked>219097</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708489</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-17 21:03:55 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708493</commentid>
    <comment_count>1</comment_count>
      <attachid>414411</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-17 21:47:01 -0800</bug_when>
    <thetext>Created attachment 414411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708505</commentid>
    <comment_count>2</comment_count>
      <attachid>414416</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-17 23:12:10 -0800</bug_when>
    <thetext>Created attachment 414416
Fix debug builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708507</commentid>
    <comment_count>3</comment_count>
      <attachid>414418</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-17 23:22:49 -0800</bug_when>
    <thetext>Created attachment 414418
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708785</commentid>
    <comment_count>4</comment_count>
      <attachid>414486</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-18 14:42:55 -0800</bug_when>
    <thetext>Created attachment 414486
Slightly simpler approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708865</commentid>
    <comment_count>5</comment_count>
      <attachid>414486</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-18 16:25:50 -0800</bug_when>
    <thetext>Comment on attachment 414486
Slightly simpler approach

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:154
&gt; +        if (destination.isAccelerated())
&gt; +            static_cast&lt;AcceleratedRemoteImageBuffer&amp;&gt;(destination).submitDisplayList(*displayList);
&gt; +        else
&gt; +            static_cast&lt;UnacceleratedRemoteImageBuffer&amp;&gt;(destination).submitDisplayList(*displayList);

This is sad-making.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708884</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-18 16:47:37 -0800</bug_when>
    <thetext>Yeah, it&apos;s the same problem in a bunch of places (but, hopefully we can fix them all simultaneously).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708886</commentid>
    <comment_count>7</comment_count>
      <attachid>414486</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-18 16:49:18 -0800</bug_when>
    <thetext>Comment on attachment 414486
Slightly simpler approach

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:154
&gt;&gt; +            static_cast&lt;UnacceleratedRemoteImageBuffer&amp;&gt;(destination).submitDisplayList(*displayList);
&gt; 
&gt; This is sad-making.

Yeah, it&apos;s not great :(

I wanted to try to cast to a RemoteImageBuffer, but that&apos;s a templated class. I think that ideally, RemoteRenderingBackend would know about the RemoteImageBuffers it can paint into (instead of always digging it up from the resource cache).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708907</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-18 17:21:12 -0800</bug_when>
    <thetext>Committed r270002: &lt;https://trac.webkit.org/changeset/270002&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414486.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708908</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-18 17:22:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71563985&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414411</attachid>
            <date>2020-11-17 21:47:01 -0800</date>
            <delta_ts>2020-11-17 22:54:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219067-20201117214701.patch</filename>
            <type>text/plain</type>
            <size>35033</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRlMWI3YWM4Njk3MzQ1
OGFlNmVkNDE1YjhjNmNmMWNhZWQyNTU5NC4uM2YyN2IyMjU3NTA4NDk1NzBkYTZhMTU2Y2ViNGU2
NTY4NDgwODVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTExLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0cyB0byBwYXJ0aWFsbHkg
cmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIGl0IHBvc3NibGUgZm9yIGEgZGlzcGxheSBsaXN0IHJlcGxheWVyIHRvIHN0b3AgZWFybHkg
aW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nIGEgZGlzcGxheSBsaXN0LiBUaGlzCisgICAgICAg
IGNhcGFiaWxpdHkgaXMgYSBwcmVyZXF1aXNpdGUgdG8gdGhyZWUgaXRlbXM6CisKKyAgICAgICAg
LSAgIEFsbG93IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIGluIHRoZSBHUFUgcHJvY2VzcyB0byBw
YXVzZSB3aGVuIGVuY291bnRlcmluZyBtaXNzaW5nIGNhY2hlZCByZXNvdXJjZXMuCisgICAgICAg
IC0gICBBbGxvdyB0aGUgR1BVIHByb2Nlc3MgdG8gcmVwbGF5IGRpc3BsYXkgbGlzdCBpdGVtIGJ1
ZmZlcnMgdGhhdCBjb250YWluIGRpc3BsYXkgbGlzdCBkYXRhIHRhcmdldGluZyBkaWZmZXJlbnQK
KyAgICAgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlcnMuCisgICAgICAgIC0gICBBbGxv
dyB0aGUgR1BVIHByb2Nlc3MgdG8gcHJlbWF0dXJlbHkgaGFsdCBkaXNwbGF5IGxpc3QgcHJvY2Vz
c2luZyBhbmQgcGVyZm9ybSBhIE1FU1NBR0VfQ0hFQ0sgdG8gdGVybWluYXRlCisgICAgICAgICAg
ICB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcywgaW4gdGhlIGNhc2Ugb2YgYW4gaW52YWxpZCBkaXNw
bGF5IGxpc3QgaXRlbSAoZS5nLiBkZWNvZGluZyBmYWlsdXJlKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBEaXNwbGF5TGlzdFRlc3RzLlJl
cGxheVdpdGhNaXNzaW5nUmVzb3VyY2VzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlz
cGxheUxpc3QpOgorCisgICAgICAgIE1ha2UgYHN1Ym1pdERpc3BsYXlMaXN0YCByZXR1cm4gYSBg
UmVwbGF5UmVzdWx0YC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMpOgorCisgICAgICAgIEFkanVzdCBzZXZlcmFsIGNhbGwgc2l0ZXMgb2YgYHJl
cGxheSgpYCB0byBncmFiIHRoZSB0cmFja2VkIGRpc3BsYXkgbGlzdCBmcm9tIHRoZSBgUmVwbGF5
UmVzdWx0YC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjppdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKworICAgICAgICBQdWxsIHRoZSBpdGVy
YXRvciB2YWx1ZSBvdXQgaW50byBhIHNlcGFyYXRlIGBWYWx1ZWAgc3RydWN0LCBhbmQgaW5jbHVk
ZSB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCBkaXNwbGF5IGxpc3QKKyAgICAgICAgaXRlbSBpbiB0
aGUgaXRlbSBidWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlcGxheURpc3BsYXlMaXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisKKyAg
ICAgICAgTWFrZSB0aGlzIHByaXZhdGUgaGVscGVyIG1ldGhvZCByZXR1cm4gYW4gZW51bSBpbmRp
Y2F0aW5nIHdoZXRoZXIgZGlzcGxheSBsaXN0IHJlcGxheSBzaG91bGQgY29udGludWUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKworICAgICAg
ICBNYWtlIHJlcGxheSgpIHJldHVybiBhIGBSZXBsYXlSZXN1bHRgLCB3aGljaCBjb250YWlucyB0
aGUgdHJhY2tlZCBkaXNwbGF5IGxpc3QgKGlmIHRyYWNraW5nIGlzIGVuYWJsZWQpLCBhcyB3ZWxs
CisgICAgICAgIGFzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgZGlzcGxheSBsaXN0IGl0ZW0gZGF0
YSB0aGF0IHdlcmUgY29uc3VtZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojph
cHBseUltYWdlQnVmZmVySXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6YXBwbHlOYXRpdmVJbWFnZUl0ZW0pOiBEZWxldGVkLgorCisgICAgICAgIE1ha2UgdGhl
c2UgdGVtcGxhdGUgbWV0aG9kcyBpbnN0ZWFkIHNvIHRoYXQgdGhleSBjYW4gY2FsbCBpbnRvIGBt
X2RlbGVnYXRlYC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5ZXI6OnJlcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6
OkRlbGVnYXRlOjp3aWxsU3RvcFJlcGxheSk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIG5v
dGlmeSB0aGUgcmVwbGF5ZXIgZGVsZWdhdGUgd2hlbiBkaXNwbGF5IGxpc3QgcmVwbGF5IGlzIGFi
b3V0IHRvIGhhbHQgZWFybHkuIFdlIGFkZGl0aW9uYWxseQorICAgICAgICBwcm92aWRlIHRoZSBj
bGllbnQgd2l0aCBhbiBlbnVtIGZsYWcgaW5kaWNhdGluZyB3aHkgZGlzcGxheSBsaXN0IHJlcGxh
eSBmaW5pc2hlZCBlYXJseSAoZm9yIGluc3RhbmNlLCBkdWUgdG8KKyAgICAgICAgbWlzc2luZyBj
YWNoZWQgcmVzb3VyY2VzKS4KKworICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxh
eWVyOjphcHBseUltYWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OmFwcGx5TmF0aXZlSW1hZ2VJdGVtKToKKwogMjAyMC0xMS0xNiAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBX
ZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjlkZGU2NmRkMjYzZTk4
MWQwZjllMDAyODI0OThjYTU2MzNlMmNlNi4uNTlkM2M5NGY1NGQzZmNkOWQyOWM1ZTVlZWQ0OWQ4
MmI3ODAwMDY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMS0xNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29uY3VycmVudCBk
aXNwbGF5IGxpc3RzXSBBZGQgYSB3YXkgZm9yIGRpc3BsYXkgbGlzdHMgdG8gcGFydGlhbGx5IHJl
cGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vl
IFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c3VibWl0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lmg6CisKIDIwMjAtMTEtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTEVEOiBDb21wbGV0aW9uIGhhbmRsZXIg
c2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgdW5kZXIgV2ViS2l0OjpHUFVQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCmluZGV4IDZjMTFlNTU2NTUyZmQyYzM2NWQxOTQwYzhjYjViZTRiMmU4OWRjYjQu
LmYzNTcyZTc3NDY2YTUxZjUxZTNmYTVlZDU4ZDM0ZWQ3ODA4OWVhMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCisj
aW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKQEAg
LTIwMyw0ICsyMDQsOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dAogICAgIGltYWdlQnVmZmVy
LT5kcmF3Q29uc3VtaW5nKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAorRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxp
c3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikKK3sKKyAgICByZXR1cm4geyB9Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA4MmMzNjEyYzAwZmU5NzViZDM4OTcxNTkzMjNi
NmFjODEwMWI5MjUzLi5mZTk1ZjAzZWM2NmNhZDEyOWRjMmU4M2QxYTZiNGE3M2RmMDA1NzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQ7CitzdHJ1Y3QgUmVw
bGF5UmVzdWx0OwogfQogCiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CkBAIC03Myw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9y
RGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2lu
Z0NvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENv
bW1pdCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIERp
c3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0Jik7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJh
bnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGEwODQ1MTJhNTIzNGUxMWI3ZTEwMWNiMjkyOGNj
MmYwYTMyN2JlYWQuLjk0NDlmNjU5MDRhYTVkMDYxNzc2MTg0NThhN2E0YWVhYzBhYjY3MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3ND
b24KICAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKGNvbnRleHQsICptX2Rp
c3BsYXlMaXN0KTsKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShpc1RyYWNraW5nRGlz
cGxheUxpc3RSZXBsYXkoKSkpIHsKLSAgICAgICAgICAgIGF1dG8gcmVwbGF5TGlzdCA9IHJlcGxh
eWVyLnJlcGxheShjbGlwLCBpc1RyYWNraW5nRGlzcGxheUxpc3RSZXBsYXkoKSk7CisgICAgICAg
ICAgICBhdXRvIHJlcGxheUxpc3QgPSByZXBsYXllci5yZXBsYXkoY2xpcCwgaXNUcmFja2luZ0Rp
c3BsYXlMaXN0UmVwbGF5KCkpLnRyYWNrZWREaXNwbGF5TGlzdDsKICAgICAgICAgICAgIGxheWVy
RGlzcGxheUxpc3RNYXAoKS5hZGQodGhpcywgc3RkOjpwYWlyPEZsb2F0UmVjdCwgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4+KGNsaXAsIFdURk1vdmUocmVwbGF5TGlz
dCkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXBsYXllci5yZXBsYXkoY2xpcCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBiYmZjODU1ZDVkNmVmNjg5MTU5YjRhNWYy
MjgxNDg1MWE0NmFjNzU4Li4xZTE1ZTA1MzMyYjlhZDc2NjBlNDA1ODUzOTUxMmIyMWM4MWY4Y2Vh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIERp
c3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5k
bGUgaXRlbSkKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0KEFzVGV4dEZsYWdzIGZsYWdzKSBj
b25zdAogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0
aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7Ci0gICAgZm9y
IChhdXRvIFtpdGVtLCBleHRlbnRdIDogKnRoaXMpIHsKKyAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4
dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhpcykgewogICAgICAgICBpZiAoIXNob3VsZER1
bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTMx
LDcgKzEzMSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0
CiAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAgdHMgPDwgImRpc3Bs
YXkgbGlzdCI7CiAKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudF0gOiAqdGhpcykgeworICAg
IGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7CiAg
ICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICB0cyA8PCBp
dGVtOwogICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCmluZGV4IDdmNjA3OGY4ODRmYzM1YzRmNWE4Mzg0ZTVmMjg4ZTM3MTg4NGExN2UuLjI2ZmM5
NzMwNzIxMTI3MzAzOTNlMmRjYmM4N2QwYzZiOWNhNTQyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCkBAIC0xMTcsNyArMTE3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVy
Lm1fZGlzcGxheUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KICAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KICAgICAgICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KLSAg
ICAgICAgc3RkOjpwYWlyPEl0ZW1IYW5kbGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4+IG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuIHsgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
fSwgbV9jdXJyZW50RXh0ZW50IH07IH0KKworICAgICAgICBzdHJ1Y3QgVmFsdWUgeworICAgICAg
ICAgICAgSXRlbUhhbmRsZSBpdGVtOworICAgICAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBl
eHRlbnQ7CisgICAgICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKKyAgICAg
ICAgfTsKKworICAgICAgICBWYWx1ZSBvcGVyYXRvciooKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtIH0sCisgICAgICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAorICAgICAg
ICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNp
emVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPSAyNTY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggZjliMzIzYzc0MjY2ZWQxZjYx
ZDQ0YjA0NzJlZjU1MTg1M2U4YzdiNS4uNTRkODU0NzEyM2Y4OTQ3ZDZmMmZhY2Q3ZmNhNmY5OTUx
ODFhMjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERyYXdpbmdDb250ZXh0OjpyZXBsYXlEaXNw
bGF5TGlzdChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0KQogCiAgICAgUmVwbGF5ZXIgcmVw
bGF5ZXIoZGVzdENvbnRleHQsIG1fZGlzcGxheUxpc3QpOwogICAgIGlmIChtX3RyYWNrc0Rpc3Bs
YXlMaXN0UmVwbGF5KQotICAgICAgICBtX3JlcGxheWVkRGlzcGxheUxpc3QgPSByZXBsYXllci5y
ZXBsYXkoeyB9LCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKKyAgICAgICAgbV9yZXBsYXll
ZERpc3BsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KHsgfSwgbV90cmFja3NEaXNwbGF5TGlzdFJl
cGxheSkudHJhY2tlZERpc3BsYXlMaXN0OwogICAgIGVsc2UKICAgICAgICAgcmVwbGF5ZXIucmVw
bGF5KCk7CiAgICAgbV9kaXNwbGF5TGlzdC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDliNzE4OWU5ODlkYjJjYTM3YWVkYzQwNmQyMmUwMTNl
NGM4NGI3OWEuLmVhYjU5YzIzMWZkNzVlNDkyY2Q0MmE3ZDg0MzgzZjViM2IwZDU0MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTQ1LDQ3ICs0NSwyOCBA
QCBSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNw
bGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbgogCiBSZXBsYXllcjo6flJlcGxheWVyKCkgPSBkZWZh
dWx0OwogCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBib29sIGFwcGx5SW1hZ2VC
dWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNo
TWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKK1JlcGxheWVyOjpTaG91bGRDb250
aW51ZSBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKLSAgICBpZiAoIWl0
ZW0uaXM8VD4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIGltYWdlQnVmZmVy
SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7Ci0gICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VC
dWZmZXJzLmdldChpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpKQotICAg
ICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlQnVmZmVyKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KKyAgICBpZiAobV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShp
dGVtLCBtX2NvbnRleHQpKQorICAgICAgICByZXR1cm4gU2hvdWxkQ29udGludWU6OlllczsKIAot
dGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgYm9vbCBhcHBseU5hdGl2ZUltYWdlSXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0
aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCi17Ci0gICAgaWYgKCFpdGVtLmlzPFQ+KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdl
dDxUPigpOwotICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQobmF0aXZlSW1h
Z2VJdGVtLmltYWdlSWRlbnRpZmllcigpKSkKLSAgICAgICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5
KGNvbnRleHQsICppbWFnZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgaWYgKGF1dG8gcmVz
dWx0ID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIGl0
ZW0pKQorICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAotdm9pZCBSZXBsYXllcjo6YXBwbHlJdGVt
KEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICBpZiAobV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5h
cHBseShpdGVtLCBtX2NvbnRleHQpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8gcmVz
dWx0ID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwg
aXRlbSkpCisgICAgICAgIHJldHVybiAqcmVzdWx0OwogCi0gICAgaWYgKGFwcGx5SW1hZ2VCdWZm
ZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX2ltYWdlQnVmZmVycywgaXRlbSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1h
Z2VCdWZmZXI+KG1fY29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQotICAgICAgICByZXR1
cm47CisgICAgaWYgKGF1dG8gcmVzdWx0ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2
ZUltYWdlPihtX2NvbnRleHQsIGl0ZW0pKQorICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAotICAg
IGlmIChhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KG1fY29udGV4dCwgbV9u
YXRpdmVJbWFnZXMsIGl0ZW0pKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGFwcGx5TmF0aXZl
SW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
LSAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvIHJlc3VsdCA9IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIGl0ZW0pKQorICAgICAgICByZXR1cm4gKnJlc3Vs
dDsKIAogICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKKyAgICByZXR1cm4gU2hvdWxkQ29udGlu
dWU6OlllczsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVw
bGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQor
UmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlM
aXN0cywgc3RyZWFtIDw8ICJcblJlcGxheWluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7
CiAgICAgVU5VU0VEX1BBUkFNKGluaXRpYWxDbGlwKTsKQEAgLTk3LDE0ICs3OCwxOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgYm9vbAogI2lmICFMT0dfRElTQUJMRUQKICAgICBzaXplX3QgaSA9IDA7
CiAjZW5kaWYKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudF0gOiBtX2Rpc3BsYXlMaXN0KSB7
CisgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkID0gMDsKKyAgICBmb3IgKGF1dG8gW2l0ZW0s
IGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiBtX2Rpc3BsYXlMaXN0KSB7CiAgICAgICAgIGlm
ICghaW5pdGlhbENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYmICFleHRlbnQtPmludGVyc2VjdHMo
aW5pdGlhbENsaXApKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3Rz
LCBzdHJlYW0gPDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKKyAgICAgICAg
ICAgIG51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwotICAgICAg
ICBhcHBseUl0ZW0oaXRlbSk7CisgICAgICAgIGlmIChhcHBseUl0ZW0oaXRlbSkgPT0gU2hvdWxk
Q29udGludWU6Ok5vKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbnVtYmVyT2ZCeXRl
c1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAogICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tS
ZXBsYXlMaXN0KSkgewogICAgICAgICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kKGl0ZW0pOwpAQCAt
MTEzLDcgKzk5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVw
bGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKICAgICAgICAgfQogICAgIH0K
IAotICAgIHJldHVybiByZXBsYXlMaXN0OworICAgIHJldHVybiB7IFdURk1vdmUocmVwbGF5TGlz
dCksIG51bWJlck9mQnl0ZXNSZWFkIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCAyYzAxOWVlMGNjOGEz
NmUyYzRmNWQyNTMwMjAwZjg3NWQxNmFkZTAwLi5jNjFiOTYwYzA1YTUyYjcyMjQxZmVmMjcwZmRi
ODNhNmQwYjIzZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAg
LTM4LDYgKzM4LDExIEBAIGNsYXNzIEltYWdlRGF0YTsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKIAorc3RydWN0IFJlcGxheVJlc3VsdCB7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlM
aXN0PiB0cmFja2VkRGlzcGxheUxpc3Q7CisgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkIHsg
MCB9OworfTsKKwogY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
cGxheWVyKTsKIHB1YmxpYzoKQEAgLTQ1LDE3ICs1MCw2MCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBj
b25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNo
TWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5SZXBsYXllcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPERpc3Bs
YXlMaXN0PiByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0
cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0
IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVw
bGF5TGlzdCA9IGZhbHNlKTsKIAogICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisKKyAgICAgICAgZW51bSBjbGFzcyBTdG9w
UmVwbGF5UmVhc29uIDogdWludDhfdCB7CisgICAgICAgICAgICBNaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VzLAorICAgICAgICAgICAgRGVjb2RpbmdGYWlsdXJlIC8vIEZJWE1FOiBQcm9wYWdhdGUgZGVj
b2RpbmcgZXJyb3JzIHRvIGRpc3BsYXkgbGlzdCByZXBsYXkgY2xpZW50cyB0aHJvdWdoIHRoaXMg
ZW51bSBhcyB3ZWxsLgorICAgICAgICB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BS
ZXBsYXkoSXRlbUhhbmRsZSwgU3RvcFJlcGxheVJlYXNvbikgeyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIH07CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgYXBwbHlJdGVtKEl0ZW1IYW5kbGUp
OwotICAgIAorICAgIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWUgOiBib29sIHsgTm8sIFllcyB9
OworICAgIFNob3VsZENvbnRpbnVlIGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKworICAgIHRlbXBs
YXRlPGNsYXNzIFQ+CisgICAgT3B0aW9uYWw8U2hvdWxkQ29udGludWU+IGFwcGx5SW1hZ2VCdWZm
ZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSXRlbUhhbmRsZSBpdGVtKQorICAgIHsK
KyAgICAgICAgaWYgKCFpdGVtLmlzPFQ+KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7Cisg
ICAgICAgIGF1dG8qIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlcnMuZ2V0KGltYWdlQnVmZmVy
SXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgICAgIGlmICghaW1hZ2VCdWZmZXIp
IHsKKyAgICAgICAgICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICAgICAgICAgIG1fZGVsZWdh
dGUtPndpbGxTdG9wUmVwbGF5KGl0ZW0sIERlbGVnYXRlOjpTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2VzKTsKKyAgICAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6
Tm87CisgICAgICAgIH0KKworICAgICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4dCwg
KmltYWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlOjpZZXM7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBPcHRpb25hbDxTaG91bGRDb250aW51ZT4g
YXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJdGVtSGFuZGxl
IGl0ZW0pCisgICAgeworICAgICAgICBpZiAoIWl0ZW0uaXM8VD4oKSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRl
bS5nZXQ8VD4oKTsKKyAgICAgICAgYXV0byogaW1hZ2UgPSBtX25hdGl2ZUltYWdlcy5nZXQobmF0
aXZlSW1hZ2VJdGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgewor
ICAgICAgICAgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+
d2lsbFN0b3BSZXBsYXkoaXRlbSwgRGVsZWdhdGU6OlN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdD
YWNoZWRSZXNvdXJjZXMpOworICAgICAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlOjpObzsK
KyAgICAgICAgfQorCisgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1h
Z2UpOworICAgICAgICByZXR1cm4gU2hvdWxkQ29udGludWU6OlllczsKKyAgICB9CisKICAgICBH
cmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNw
bGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIG1faW1hZ2VCdWZmZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaAppbmRleCA0N2I0MzZiZDU2MmQxZTE3MDc3MDQ1NDJkZjk1NzYwODViNWY0NTIwLi4w
ZDMwY2JlNmFiMjlkZmE4NGNlZGU0ZmJlNTZiMDZjYTZhMjQ3M2Y1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAt
NjYsMTQgKzY2LDIwIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzdWJt
aXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0KSBvdmVycmlkZQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1
bHQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghZGlzcGxheUxp
c3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVy
cygpOwotICAgICAgICAgICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKLSAgICAg
ICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25j
cmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAm
bmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAgICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwor
ICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywg
dGhpcyB9OworICAgICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgfQorCisgICAg
dm9pZCB3aWxsU3RvcFJlcGxheShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6U3RvcFJlcGxheVJlYXNvbikg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBCcmVhayBvdXQgb2YgdGhlIG1haW4g
ZGlzcGxheSBsaXN0IGFwcGxpY2F0aW9uIGxvb3AuCiAgICAgfQogCiAgICAgYm9vbCBhcHBseShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4
IDA1N2RjYWQ2NjUyNzhlMjgxNjI3N2IzMGNkMmRhODY5N2MxM2Q1OTIuLmUzMGY5MjVlNjMyMTdi
ZmQ0NWNkZDg5MWJjMzg3NWJjYTQyOTRjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xNTIsNyArMTUzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBhdXRv
JiBtdXRhYmxlVGhpcyA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+KCp0aGlz
KTsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtdXRhYmxlVGhpcy5tX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCk7CiAgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBtdXRhYmxlVGhpcy5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7
CisgICAgICAgICAgICBtdXRhYmxlVGhpcy5zdWJtaXQoZGlzcGxheUxpc3QpOwogICAgICAgICAg
ICAgbXV0YWJsZVRoaXMubV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAg
ICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgICAgICB9CkBAIC0xOTUsMTcgKzE5Niwx
NSBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgZGlz
cGxheUxpc3QudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRl
eHQ+KG1fc2VudEZsdXNoSWRlbnRpZmllcik7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LT5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
c3VibWl0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
ICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgICAgICBkaXNwbGF5
TGlzdC5jbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUK
KyAgICB2b2lkIHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0KQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0
KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlm
IChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiAhZGlzcGxheUxpc3QuaXNFbXB0eSgp
KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdChkaXNw
bGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIHZv
aWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBv
dmVycmlkZQpAQCAtMjE2LDcgKzIxNSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKLSAgICAg
ICAgc3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBzdWJtaXQoZGlzcGxh
eUxpc3QpOwogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM2YjAzZDM4MWVkMmM1MjQxY2Zj
ZDNmNWIzNTUxNzhiYjM4Y2Y2YTUuLjhjYjY5ZjAwN2Q4ZWNmNGM5OWVjYjMyODQzNzFiMWJjYWM2
ZTY0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQogICAgIHJldHVybiBpbWFnZURh
dGFSZWZlcmVuY2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJ
ZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1Ym1pdChjb25z
dCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogewogICAgIE9wdGlvbmFs
PHN0ZDo6cGFpcjxEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IGlk
ZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOwogICAgIGJvb2wgaXNGaXJzdEhhbmRs
ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBiMDk1
YTAwNjA1NzRkOWI0NGE4ZDdhNTZkN2Y4NzE0ZWI1NmYyMGRjLi43NmI3NTAxYTJkMDZiNjE2OGEw
ZmEzMTFhMDMyY2ZkZDU5MjI1MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNl
bnQuCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
KTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAg
dm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2Um
KTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDdmY2E4NTFkNWQ1OGZkNTUzOTM0ZTY2Mzg2MGRmYjllZTZjZDcyOTAuLjhl
NmVlYzY0YzU4NjQyZWFiMDRiYWEwYWFkMzY1YjZhNTc0MjNlMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0x
MS0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29uY3VycmVudCBkaXNwbGF5IGxpc3RzXSBBZGQgYSB3YXkgZm9yIGRpc3BsYXkgbGlzdHMgdG8g
cGFydGlhbGx5IHJlcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE5MDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgdGVzdCB0aGF0IGV4ZXJjaXNlcyBwYXJ0aWFsIGRpc3BsYXkgbGlzdCBy
ZXBsYXkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEaXNwbGF5TGlzdFJlcGxheURl
bGVnYXRlOjpyZWFzb25Gb3JTdG9wcGluZyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMC0xMS0xNyAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgog
CiAgICAgICAgIEJpZyBTdXIgdGVzdGVycyBmYWlsIHRvIGZpbmQgcHJvcGVyIGFyY2hpdmVzIGR1
ZSB0byBhcmNoaXRlY3R1cmUga2V5cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEwOWU2
MGExMzRlZjlhZTIwM2ExMzlmMWNmYjE4MGY1OTUxMDI5OC4uMzEwOTJjMjZlMzhlZDdjMTkwNzZl
ZjJlMjgzYmI3MDc4YTZkNDgzMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDUsNiAr
MTE0NSw3IEBACiAJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSAq
LzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUucG5n
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLzsgfTsKIAkJ
RjQ1NkFCMUMyMTNFREJBMzAwQ0IyQ0VGIC8qIEZvbnRNYW5hZ2VyVGVzdHMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU2QUIxQjIxM0VEQkEzMDBD
QjJDRUYgLyogRm9udE1hbmFnZXJUZXN0cy5tbSAqLzsgfTsKKwkJRjQ1NzI3NUUyNTU3OEQwNjAw
N0FDQTM0IC8qIERpc3BsYXlMaXN0VGVzdHNDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU3Mjc1RDI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcCAqLzsgfTsKIAkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBh
c3RlTWl4ZWRDb250ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1t
ICovOyB9OwogCQlGNDU3QTlENjIwMkQ2OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1
N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sICovOyB9OwogCQlGNDVC
NjNGQjFGMTk3RjRBMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1QjYzRkExRjE5N0YzMzAwOUQz
OEI5IC8qIGltYWdlLW1hcC5odG1sICovOyB9OwpAQCAtMjg4OSw2ICsyODkwLDcgQEAKIAkJRjQ1
MTdCNjYyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQt
c3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLnBuZyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NTZBQjFCMjEzRURCQTMwMENCMkNFRiAvKiBGb250TWFuYWdl
clRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9udE1hbmFnZXJUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1NzI3NUQyNTU3OEQwNjAwN0FDQTM0IC8qIERp
c3BsYXlMaXN0VGVzdHNDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwOyBwYXRoID0gY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRGF0YVRyYW5zZmVyLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0
ZU1peGVkQ29udGVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlTWl4ZWRDb250ZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVCNjNGQTFGMTk3RjMzMDA5RDM4
QjkgLyogaW1hZ2UtbWFwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1hZ2UtbWFwLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ4NCw2ICszNDg2LDcgQEAKIAkJNDQwQTFEMzYxNEEw
MTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUY0NTcyNzVCMjU1NzhDOUUwMDdBQ0EzNCAvKiBjZyAqLywKIAkJCQlD
RDg5RDAzNzFDNEVEQjEzMDAwNDBBMDQgLyogY29jb2EgKi8sCiAJCQkJQTFFQzExODUxRjQyNTNE
OTAwRDAxNDZFIC8qIGlvcyAqLywKIAkJCQlBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcgLyogQWJv
cnRhYmxlVGFza1F1ZXVlLmNwcCAqLywKQEAgLTQ2OTIsNiArNDY5NSwxNCBAQAogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjQ1NzI3NUIyNTU3
OEM5RTAwN0FDQTM0IC8qIGNnICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlGNDU3Mjc1RDI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxheUxpc3RUZXN0c0NH
LmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gY2c7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KQEAgLTUxNTAsNiArNTE2MSw3IEBACiAJCQkJQUQ1N0FDMjExREE3
NDY1QjAwRkYxQkRFIC8qIERpZFJlbW92ZUZyYW1lRnJvbUhpZWFyY2h5SW5QYWdlQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkVDMkE4NTQyNENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93
Vk1FbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDA5NENDNzI1NTQ1QkQ1MDAzRDczRTMg
LyogRGlzcGxheUxpc3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDU3Mjc1RTI1NTc4
RDA2MDA3QUNBMzQgLyogRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTczQkQ3MzE4MjNBODQ2NTAwMDIwRjQ1MCAvKiBEaXNwbGF5TmFtZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxOEVFNTFCMjBBNzhEMDAwMEUwMjRGMyAvKiBEb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZUFmdGVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDdGRDE5MzIyNDE5MDg3
MDA3ODg3RjEgLyogRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwCmluZGV4IGM3NjJhMTliOGNlZWE5MzhiYzVlZGY4MjRmYTVlOTMxMGNmMDEyZGQuLjNl
Mjg1OWRiMDY5MGE1MWExMDljNzNiNzNjYjNjOGRlM2U0Mjc5OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKICAgICBF
WFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOwogCiAgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0
ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudF0gOiBsaXN0KSB7
CisgICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwgc2l6ZV0gOiBsaXN0KSB7CiAgICAgICAg
IHN3aXRjaCAoaGFuZGxlLnR5cGUoKSkgewogICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6IHsKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5n
SXRlbSgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVu
ZEl0ZW1zKQogCiAgICAgbGlzdC5hcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7
IDAsIDAsIDEwMCwgMTAwIH0sIENvbG9yOjpibGFjayk7CiAKLSAgICBmb3IgKGF1dG8gW2hhbmRs
ZSwgZXh0ZW50XSA6IGxpc3QpIHsKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXpl
XSA6IGxpc3QpIHsKICAgICAgICAgRVhQRUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhDb2xvcik7CiAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVj
dFdpdGhDb2xvcj4oKSk7CiAKQEAgLTIyMyw3ICsyMjMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVz
dHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVu
dCgmcmVhZGVyKTsKIAogICAgIFZlY3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAo
YXV0byBbaGFuZGxlLCBleHRlbnRdIDogc2hhbGxvd0NvcHkpCisgICAgZm9yIChhdXRvIFtoYW5k
bGUsIGV4dGVudCwgc2l6ZV0gOiBzaGFsbG93Q29weSkKICAgICAgICAgaXRlbVR5cGVzLmFwcGVu
ZChoYW5kbGUudHlwZSgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0VtcHR5
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDQzZWEzOWE0OTNiYmIzM2Ey
MDM1ZjEyN2MzN2Q5OWFmZjU3NWE0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTAsMCArMSw5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShDRykKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0SXRlbXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgRGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OwordXNpbmcgbmFtZXNwYWNlIERpc3BsYXlMaXN0OworCitjbGFzcyBEaXNwbGF5TGlzdFJl
cGxheURlbGVnYXRlIDogcHVibGljIFJlcGxheWVyOjpEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAg
T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gcmVhc29uRm9yU3RvcHBpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3JlYXNvbkZvclN0b3BwaW5nOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU3Rv
cFJlcGxheShJdGVtSGFuZGxlLCBTdG9wUmVwbGF5UmVhc29uIHJlYXNvbikgZmluYWwKKyAgICB7
CisgICAgICAgIG1fcmVhc29uRm9yU3RvcHBpbmcgPSByZWFzb247CisgICAgfQorCisgICAgT3B0
aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gbV9yZWFzb25Gb3JTdG9wcGluZzsKK307CisKK1RFU1Qo
RGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmdSZXNvdXJjZXMpCit7CisgICAgY29u
c3RleHByIENHRmxvYXQgY29udGV4dFdpZHRoID0gMTAwOworICAgIGNvbnN0ZXhwciBDR0Zsb2F0
IGNvbnRleHRIZWlnaHQgPSAxMDA7CisKKyAgICBGbG9hdFJlY3QgY29udGV4dEJvdW5kcyB7IDAs
IDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCB9OworCisgICAgYXV0byBjb2xvclNwYWNl
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikp
OworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVs
bHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBj
b2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICBH
cmFwaGljc0NvbnRleHQgY29udGV4dCB7IGNnQ29udGV4dC5nZXQoKSB9OworCisgICAgYXV0byBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CisKKyAgICBEaXNwbGF5TGlzdCBsaXN0OworCisgICAgbGlzdC5hcHBlbmQ8U2V0SW5s
aW5lRmlsbENvbG9yPihDb2xvcjo6Z3JlZW4pOworICAgIGxpc3QuYXBwZW5kPEZpbGxSZWN0Pihj
b250ZXh0Qm91bmRzKTsKKyAgICBsaXN0LmFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVm
ZmVySWRlbnRpZmllciwgY29udGV4dEJvdW5kcywgY29udGV4dEJvdW5kcywgSW1hZ2VQYWludGlu
Z09wdGlvbnMgeyB9KTsKKyAgICBsaXN0LmFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oQ29s
b3I6OnJlZCk7CisgICAgbGlzdC5hcHBlbmQ8U3Ryb2tlTGluZT4oRmxvYXRQb2ludCB7IDAsIGNv
bnRleHRIZWlnaHQgfSwgRmxvYXRQb2ludCB7IGNvbnRleHRXaWR0aCwgMCB9KTsKKworICAgIHsK
KyAgICAgICAgRGlzcGxheUxpc3RSZXBsYXlEZWxlZ2F0ZSBkZWxlZ2F0ZTsKKyAgICAgICAgUmVw
bGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCBudWxscHRyLCBudWxscHRyLCAmZGVsZWdh
dGUgfTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAg
RVhQRUNUX0xUKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCwgbGlzdC5zaXplSW5CeXRlcygpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoZGVsZWdhdGUucmVhc29uRm9yU3RvcHBpbmcoKS5oYXNWYWx1
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCpkZWxlZ2F0ZS5yZWFzb25Gb3JTdG9wcGluZygpLCBS
ZXBsYXllcjo6RGVsZWdhdGU6OlN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZXMpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsK
KyAgICAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIGltYWdlQnVmZmVyTWFwOworICAgICAgICBpbWFn
ZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKKworICAgICAgICBEaXNwbGF5TGlzdFJlcGxheURlbGVnYXRlIGRlbGVnYXRl
OworICAgICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIGxpc3QsICZpbWFnZUJ1ZmZl
ck1hcCwgbnVsbHB0ciwgJmRlbGVnYXRlIH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5
ZXIucmVwbGF5KCk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQs
IGxpc3Quc2l6ZUluQnl0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkZWxlZ2F0ZS5yZWFz
b25Gb3JTdG9wcGluZygpLmhhc1ZhbHVlKCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gVVNFKENHKQo=
</data>
<flag name="commit-queue"
          id="431292"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414416</attachid>
            <date>2020-11-17 23:12:10 -0800</date>
            <delta_ts>2020-11-17 23:22:47 -0800</delta_ts>
            <desc>Fix debug builds</desc>
            <filename>bug-219067-20201117231209.patch</filename>
            <type>text/plain</type>
            <size>31207</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRlMWI3YWM4Njk3MzQ1
OGFlNmVkNDE1YjhjNmNmMWNhZWQyNTU5NC4uMjBiOWRjODI5NmM5Mjc0YWNjZDYxNjllMjQ2N2Uz
NGU0ODU1ODIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTExLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0cyB0byBwYXJ0aWFsbHkg
cmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIGl0IHBvc3NibGUgZm9yIGEgZGlzcGxheSBsaXN0IHJlcGxheWVyIHRvIHN0b3AgZWFybHkg
aW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nIGEgZGlzcGxheSBsaXN0LiBUaGlzCisgICAgICAg
IGNhcGFiaWxpdHkgaXMgYSBwcmVyZXF1aXNpdGUgdG8gdGhyZWUgaXRlbXM6CisKKyAgICAgICAg
LSAgIEFsbG93IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIGluIHRoZSBHUFUgcHJvY2VzcyB0byBw
YXVzZSB3aGVuIGVuY291bnRlcmluZyBtaXNzaW5nIGNhY2hlZCByZXNvdXJjZXMuCisgICAgICAg
IC0gICBBbGxvdyB0aGUgR1BVIHByb2Nlc3MgdG8gcmVwbGF5IGRpc3BsYXkgbGlzdCBpdGVtIGJ1
ZmZlcnMgdGhhdCBjb250YWluIGRpc3BsYXkgbGlzdCBkYXRhIHRhcmdldGluZyBkaWZmZXJlbnQK
KyAgICAgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlcnMuCisgICAgICAgIC0gICBBbGxv
dyB0aGUgR1BVIHByb2Nlc3MgdG8gcHJlbWF0dXJlbHkgaGFsdCBkaXNwbGF5IGxpc3QgcHJvY2Vz
c2luZyBhbmQgcGVyZm9ybSBhIE1FU1NBR0VfQ0hFQ0sgdG8gdGVybWluYXRlCisgICAgICAgICAg
ICB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcywgaW4gdGhlIGNhc2Ugb2YgYW4gaW52YWxpZCBkaXNw
bGF5IGxpc3QgaXRlbSAoZS5nLiBkZWNvZGluZyBmYWlsdXJlKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBEaXNwbGF5TGlzdFRlc3RzLlJl
cGxheVdpdGhNaXNzaW5nUmVzb3VyY2VzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnN1Ym1p
dERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgdGhlIGdlbmVyaWMgYHN1
Ym1pdERpc3BsYXlMaXN0YCBtZXRob2Qgb24gYEltYWdlQnVmZmVyYDsgaW5zdGVhZCwgY2FsbCBk
aXJlY3RseSBpbnRvCisgICAgICAgIGBSZW1vdGVJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxp
c3RgIHRvIHJlcGxheSBkaXNwbGF5IGxpc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6CisKKyAgICAgICAgQWRqdXN0IHNl
dmVyYWwgY2FsbCBzaXRlcyBvZiBgcmVwbGF5KClgIHRvIGdyYWIgdGhlIHRyYWNrZWQgZGlzcGxh
eSBsaXN0IGZyb20gdGhlIGBSZXBsYXlSZXN1bHRgLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgor
CisgICAgICAgIFB1bGwgdGhlIGl0ZXJhdG9yIHZhbHVlIG91dCBpbnRvIGEgc2VwYXJhdGUgYFZh
bHVlYCBzdHJ1Y3QsIGFuZCBpbmNsdWRlIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IGRpc3BsYXkg
bGlzdAorICAgICAgICBpdGVtIGluIHRoZSBpdGVtIGJ1ZmZlci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6cmVwbGF5RGlz
cGxheUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6YXBwbHlJdGVtKToKKworICAgICAgICBNYWtlIHRoaXMgcHJpdmF0ZSBoZWxwZXIgbWV0
aG9kIHJldHVybiBhbiBlbnVtIGluZGljYXRpbmcgd2hldGhlciBkaXNwbGF5IGxpc3QgcmVwbGF5
IHNob3VsZCBjb250aW51ZS4KKworICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxh
eWVyOjpyZXBsYXkpOgorCisgICAgICAgIE1ha2UgcmVwbGF5KCkgcmV0dXJuIGEgYFJlcGxheVJl
c3VsdGAsIHdoaWNoIGNvbnRhaW5zIHRoZSB0cmFja2VkIGRpc3BsYXkgbGlzdCAoaWYgdHJhY2tp
bmcgaXMgZW5hYmxlZCksIGFzIHdlbGwKKyAgICAgICAgYXMgdGhlIG51bWJlciBvZiBieXRlcyBv
ZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhIHRoYXQgd2VyZSBjb25zdW1lZC4KKworICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6IERlbGV0
ZWQuCisKKyAgICAgICAgTWFrZSB0aGVzZSB0ZW1wbGF0ZSBtZXRob2RzIGluc3RlYWQgc28gdGhh
dCB0aGV5IGNhbiBjYWxsIGludG8gYG1fZGVsZWdhdGVgLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OndpbGxTdG9wUmVwbGF5KToKKworICAg
ICAgICBBZGQgYSBtZXRob2QgdG8gbm90aWZ5IHRoZSByZXBsYXllciBkZWxlZ2F0ZSB3aGVuIGRp
c3BsYXkgbGlzdCByZXBsYXkgaXMgYWJvdXQgdG8gaGFsdCBlYXJseS4gV2UgYWRkaXRpb25hbGx5
CisgICAgICAgIHByb3ZpZGUgdGhlIGNsaWVudCB3aXRoIGFuIGVudW0gZmxhZyBpbmRpY2F0aW5n
IHdoeSBkaXNwbGF5IGxpc3QgcmVwbGF5IGZpbmlzaGVkIGVhcmx5IChmb3IgaW5zdGFuY2UsIGR1
ZSB0bworICAgICAgICBtaXNzaW5nIGNhY2hlZCByZXNvdXJjZXMpLgorCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlOYXRpdmVJbWFnZUl0ZW0p
OgorCiAyMDIwLTExLTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gSW1wbGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA2OWRkZTY2ZGQyNjNlOTgxZDBmOWUwMDI4MjQ5OGNhNTYzM2UyY2U2Li5mZTZhNzc1
NTE4ZDE3ZjdlNDM2YTk4NzMzNzQ1NWZjOWYyYWFkYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDIwLTExLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxh
eSBsaXN0cyB0byBwYXJ0aWFsbHkgcmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoK
KworICAgICAgICBNYWtlIGBzdWJtaXREaXNwbGF5TGlzdGAgb24gYFJlbW90ZUltYWdlQnVmZmVy
YCByZXR1cm4gYSBgUmVwbGF5UmVzdWx0YC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6CisK
IDIwMjAtMTEtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBBU1NFUlRJT04gRkFJTEVEOiBDb21wbGV0aW9uIGhhbmRsZXIgc2hvdWxkIGFsd2F5cyBi
ZSBjYWxsZWQgdW5kZXIgV2ViS2l0OjpHUFVQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggODJj
MzYxMmMwMGZlOTc1YmQzODk3MTU5MzIzYjZhYzgxMDFiOTI1My4uNjJhM2Y3ZmZhMzc3OGE4YzAx
MzkwMTYyNTQzNzUzYWE3YmQyYzIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0K
IAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKaW5kZXggYTA4NDUxMmE1MjM0ZTExYjdlMTAxY2IyOTI4Y2MyZjBhMzI3YmVhZC4uOTQ0OWY2
NTkwNGFhNWQwNjE3NzYxODQ1OGE3YTRhZWFjMGFiNjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0x
NjkxLDcgKzE2OTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFp
bnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbgogICAgICAgICBEaXNwbGF5
TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIoY29udGV4dCwgKm1fZGlzcGxheUxpc3QpOwogICAgICAg
ICAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzVHJhY2tpbmdEaXNwbGF5TGlzdFJlcGxheSgpKSkg
ewotICAgICAgICAgICAgYXV0byByZXBsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAsIGlz
VHJhY2tpbmdEaXNwbGF5TGlzdFJlcGxheSgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVwbGF5TGlz
dCA9IHJlcGxheWVyLnJlcGxheShjbGlwLCBpc1RyYWNraW5nRGlzcGxheUxpc3RSZXBsYXkoKSku
dHJhY2tlZERpc3BsYXlMaXN0OwogICAgICAgICAgICAgbGF5ZXJEaXNwbGF5TGlzdE1hcCgpLmFk
ZCh0aGlzLCBzdGQ6OnBhaXI8RmxvYXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0Pj4oY2xpcCwgV1RGTW92ZShyZXBsYXlMaXN0KSkpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheShjbGlwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwCmluZGV4IGJiZmM4NTVkNWQ2ZWY2ODkxNTliNGE1ZjIyODE0ODUxYTQ2YWM3NTguLjFl
MTVlMDUzMzJiOWFkNzY2MGU0MDU4NTM5NTEyYjIxYzgxZjhjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1
bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogU3RyaW5nIERp
c3BsYXlMaXN0Ojphc1RleHQoQXNUZXh0RmxhZ3MgZmxhZ3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0
cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVh
bTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0KTsKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVu
dF0gOiAqdGhpcykgeworICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVm
ZmVyXSA6ICp0aGlzKSB7CiAgICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBp
dGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBE
aXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICBUZXh0U3RyZWFtOjpH
cm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICB0cyA8PCAiZGlzcGxheSBsaXN0IjsKIAotICAgIGZv
ciAoYXV0byBbaXRlbSwgZXh0ZW50XSA6ICp0aGlzKSB7CisgICAgZm9yIChhdXRvIFtpdGVtLCBl
eHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKICAgICAgICAgVGV4dFN0cmVhbTo6
R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAgICAgIHRzIDw8IGl0ZW07CiAgICAgICAgIGlmIChp
dGVtLmlzRHJhd2luZ0l0ZW0oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggN2Y2MDc4Zjg4
NGZjMzVjNGY1YTgzODRlNWYyODhlMzcxODg0YTE3ZS4uMjZmYzk3MzA3MjExMjczMDM5M2UyZGNi
Yzg3ZDBjNmI5Y2E1NDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTExNyw3ICsxMTcs
MjEgQEAgcHVibGljOgogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90
aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBt
X2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgaXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgICAg
ICB2b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQotICAgICAgICBzdGQ6OnBhaXI8SXRl
bUhhbmRsZSwgT3B0aW9uYWw8RmxvYXRSZWN0Pj4gb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
eyBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBtX2N1cnJlbnRFeHRlbnQg
fTsgfQorCisgICAgICAgIHN0cnVjdCBWYWx1ZSB7CisgICAgICAgICAgICBJdGVtSGFuZGxlIGl0
ZW07CisgICAgICAgICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGV4dGVudDsKKyAgICAgICAgICAg
IHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OworICAgICAgICB9OworCisgICAgICAgIFZh
bHVlIG9wZXJhdG9yKigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRFeHRlbnQsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlcgorICAgICAgICAgICAgfTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JD
dXJyZW50SXRlbSA9IDI1NjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0LmNwcAppbmRleCBmOWIzMjNjNzQyNjZlZDFmNjFkNDRiMDQ3MmVmNTUxODUzZThj
N2I1Li41NGQ4NTQ3MTIzZjg5NDdkNmYyZmFjZDdmY2E2Zjk5NTE4MWEyNjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIHZvaWQgRHJhd2luZ0NvbnRleHQ6OnJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQpCiAKICAgICBSZXBsYXllciByZXBsYXllcihkZXN0Q29udGV4dCwg
bV9kaXNwbGF5TGlzdCk7CiAgICAgaWYgKG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpCi0gICAg
ICAgIG1fcmVwbGF5ZWREaXNwbGF5TGlzdCA9IHJlcGxheWVyLnJlcGxheSh7IH0sIG1fdHJhY2tz
RGlzcGxheUxpc3RSZXBsYXkpOworICAgICAgICBtX3JlcGxheWVkRGlzcGxheUxpc3QgPSByZXBs
YXllci5yZXBsYXkoeyB9LCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KS50cmFja2VkRGlzcGxh
eUxpc3Q7CiAgICAgZWxzZQogICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKICAgICBtX2Rpc3Bs
YXlMaXN0LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAK
aW5kZXggOWI3MTg5ZTk4OWRiMmNhMzdhZWRjNDA2ZDIyZTAxM2U0Yzg0Yjc5YS4uZWFiNTljMjMx
ZmQ3NWU0OTJjZDQyYTdkODQzODNmNWIzYjBkNTQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNDUsNDcgKzQ1LDI4IEBAIFJlcGxheWVyOjpSZXBsYXll
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgY29uCiAKIFJlcGxheWVyOjp+UmVwbGF5ZXIoKSA9IGRlZmF1bHQ7CiAKLXRlbXBsYXRlPGNs
YXNzIFQ+Ci1pbmxpbmUgc3RhdGljIGJvb2wgYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywg
SXRlbUhhbmRsZSBpdGVtKQorUmVwbGF5ZXI6OlNob3VsZENvbnRpbnVlIFJlcGxheWVyOjphcHBs
eUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewotICAgIGlmICghaXRlbS5pczxUPigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4o
KTsKLSAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0KGltYWdlQnVm
ZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSkpCi0gICAgICAgIGltYWdlQnVmZmVySXRl
bS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwotICAgIHJldHVybiB0cnVlOwotfQorICAg
IGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCisg
ICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogCi10ZW1wbGF0ZTxjbGFzcyBUPgot
aW5saW5lIHN0YXRpYyBib29sIGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5k
bGUgaXRlbSkKLXsKLSAgICBpZiAoIWl0ZW0uaXM8VD4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7Ci0gICAgaWYgKGF1
dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlm
aWVyKCkpKQotICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBpZiAoYXV0byByZXN1bHQgPSBhcHBseUltYWdlQnVm
ZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgaXRlbSkpCisgICAgICAgIHJldHVy
biAqcmVzdWx0OwogCi12b2lkIFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQot
ewotICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4
dCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byByZXN1bHQgPSBhcHBseUltYWdlQnVm
ZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBpdGVtKSkKKyAgICAgICAgcmV0
dXJuICpyZXN1bHQ7CiAKLSAgICBpZiAoYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVm
ZmVyPihtX2NvbnRleHQsIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9jb250ZXh0
LCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byBy
ZXN1bHQgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KG1fY29udGV4dCwg
aXRlbSkpCisgICAgICAgIHJldHVybiAqcmVzdWx0OwogCi0gICAgaWYgKGFwcGx5TmF0aXZlSW1h
Z2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRlbSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRl
cm4+KG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQotICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGF1dG8gcmVzdWx0ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1f
Y29udGV4dCwgaXRlbSkpCisgICAgICAgIHJldHVybiAqcmVzdWx0OwogCiAgICAgaXRlbS5hcHBs
eShtX2NvbnRleHQpOworICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCitSZXBsYXlSZXN1bHQgUmVwbGF5
ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5
TGlzdCkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxu
UmVwbGF5aW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBVTlVTRURfUEFSQU0o
aW5pdGlhbENsaXApOwpAQCAtOTcsMTQgKzc4LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5
TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29s
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIHNpemVfdCBpID0gMDsKICNlbmRpZgotICAgIGZvciAo
YXV0byBbaXRlbSwgZXh0ZW50XSA6IG1fZGlzcGxheUxpc3QpIHsKKyAgICBzaXplX3QgbnVtYmVy
T2ZCeXRlc1JlYWQgPSAwOworICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUlu
QnVmZmVyXSA6IG1fZGlzcGxheUxpc3QpIHsKICAgICAgICAgaWYgKCFpbml0aWFsQ2xpcC5pc1pl
cm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0cyhpbml0aWFsQ2xpcCkpIHsKICAg
ICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAic2tpcHBp
bmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOworICAgICAgICAgICAgbnVtYmVyT2ZCeXRlc1Jl
YWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJhcHBs
eWluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7Ci0gICAgICAgIGFwcGx5SXRlbShpdGVtKTsK
KyAgICAgICAgaWYgKGFwcGx5SXRlbShpdGVtKSA9PSBTaG91bGRDb250aW51ZTo6Tm8pCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBudW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUlu
QnVmZmVyOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKSB7CiAgICAg
ICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoaXRlbSk7CkBAIC0xMTMsNyArOTksNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgYm9vbAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJlcGxh
eUxpc3Q7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZXBsYXlMaXN0KSwgbnVtYmVyT2ZCeXRlc1Jl
YWQgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5oCmluZGV4IDJjMDE5ZWUwY2M4YTM2ZTJjNGY1ZDI1MzAyMDBmODc1
ZDE2YWRlMDAuLmM2MWI5NjBjMDVhNTJiNzIyNDFmZWYyNzBmZGI4M2E2ZDBiMjNmYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMzgsNiArMzgsMTEgQEAgY2xh
c3MgSW1hZ2VEYXRhOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCitzdHJ1Y3QgUmVwbGF5
UmVzdWx0IHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHRyYWNrZWREaXNwbGF5
TGlzdDsKKyAgICBzaXplX3QgbnVtYmVyT2ZCeXRlc1JlYWQgeyAwIH07Cit9OworCiBjbGFzcyBS
ZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5ZXIpOwogcHVibGljOgpA
QCAtNDUsMTcgKzUwLDYwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFz
aE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVs
ZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZh
bHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlSZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwog
CiAgICAgY2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVs
ZWdhdGUoKSB7IH0KKworICAgICAgICBlbnVtIGNsYXNzIFN0b3BSZXBsYXlSZWFzb24gOiB1aW50
OF90IHsKKyAgICAgICAgICAgIE1pc3NpbmdDYWNoZWRSZXNvdXJjZXMsCisgICAgICAgICAgICBE
ZWNvZGluZ0ZhaWx1cmUgLy8gRklYTUU6IFByb3BhZ2F0ZSBkZWNvZGluZyBlcnJvcnMgdG8gZGlz
cGxheSBsaXN0IHJlcGxheSBjbGllbnRzIHRocm91Z2ggdGhpcyBlbnVtIGFzIHdlbGwuCisgICAg
ICAgIH07CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcFJlcGxheShJdGVtSGFuZGxlLCBT
dG9wUmVwbGF5UmVhc29uKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0ZW1IYW5k
bGUsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKICAgICAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7Ci0gICAgCisgICAgZW51bSBj
bGFzcyBTaG91bGRDb250aW51ZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgU2hvdWxkQ29udGlu
dWUgYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBP
cHRpb25hbDxTaG91bGRDb250aW51ZT4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBJdGVtSGFuZGxlIGl0ZW0pCisgICAgeworICAgICAgICBpZiAoIWl0ZW0u
aXM8VD4oKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0
byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsKKyAgICAgICAgYXV0byogaW1hZ2VC
dWZmZXIgPSBtX2ltYWdlQnVmZmVycy5nZXQoaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRl
bnRpZmllcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgaWYg
KG1fZGVsZWdhdGUpCisgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbFN0b3BSZXBsYXko
aXRlbSwgRGVsZWdhdGU6OlN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZXMp
OworICAgICAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlOjpObzsKKyAgICAgICAgfQorCisg
ICAgICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOworICAg
ICAgICByZXR1cm4gU2hvdWxkQ29udGludWU6OlllczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBUPgorICAgIE9wdGlvbmFsPFNob3VsZENvbnRpbnVlPiBhcHBseU5hdGl2ZUltYWdlSXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEl0ZW1IYW5kbGUgaXRlbSkKKyAgICB7CisgICAg
ICAgIGlmICghaXRlbS5pczxUPigpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdldDxUPigpOworICAgICAg
ICBhdXRvKiBpbWFnZSA9IG1fbmF0aXZlSW1hZ2VzLmdldChuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJ
ZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoIWltYWdlKSB7CisgICAgICAgICAgICBpZiAobV9k
ZWxlZ2F0ZSkKKyAgICAgICAgICAgICAgICBtX2RlbGVnYXRlLT53aWxsU3RvcFJlcGxheShpdGVt
LCBEZWxlZ2F0ZTo6U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlcyk7Cisg
ICAgICAgICAgICByZXR1cm4gU2hvdWxkQ29udGludWU6Ok5vOworICAgICAgICB9CisKKyAgICAg
ICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZSk7CisgICAgICAgIHJldHVy
biBTaG91bGRDb250aW51ZTo6WWVzOworICAgIH0KKwogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9j
b250ZXh0OwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0
IEltYWdlQnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDQ3YjQz
NmJkNTYyZDFlMTcwNzcwNDU0MmRmOTU3NjA4NWI1ZjQ1MjAuLjQ1ZDYxM2Y2NjcxNmJlMTBhNjNk
NTM1ZjkwZTAyMzY1ZGFiYjgwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC02NSwxNSArNjUsMjEgQEAgcHVi
bGljOgogICAgICAgICAgICAgY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAKKyAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCisgICAgeworICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOworICAgICAgICBjb25z
dCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVz
b3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgp
LCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9OworICAg
ICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgfQorCiBwcml2YXRlOgotICAgIHZv
aWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxTdG9wUmVwbGF5KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXI6OkRlbGVnYXRlOjpTdG9wUmVwbGF5UmVhc29uKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
aWYgKCFkaXNwbGF5TGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIGlt
YWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hl
KCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMg
PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUlt
YWdlcygpOwotICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxh
eWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZp
bWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKLSAgICAgICAgICAgIHJlcGxheWVy
LnJlcGxheSgpOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBCcmVhayBvdXQgb2YgdGhl
IG1haW4gZGlzcGxheSBsaXN0IGFwcGxpY2F0aW9uIGxvb3AuCiAgICAgfQogCiAgICAgYm9vbCBh
cHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggODY5Y2VkMTkwMzlhZTYzYTM0ZjA0NDE1M2IyM2RmOTgzY2M1ODQ1My4uMGQwZjg5ZDc4MDYy
ZTI4ZjkwZTE5NDViOTNlZGMxYjU3ZjcwYjQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtMTQ4LDcgKzE0OCwxMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlz
cGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxheUxp
c3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzQWNjZWxlcmF0ZWQo
KSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIm
PihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CiAKICAg
ICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9mZnNldCA9IG9mZnNldDsKICAgICAgICAgY2hlY2tl
ZE9mZnNldCArPSBzaXplVG9SZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAw
NTdkY2FkNjY1Mjc4ZTI4MTYyNzdiMzBjZDJkYTg2OTdjMTNkNTkyLi44ZGJhODMyNmQyMWQwZTM2
MGQ1OGE3NTdlMGRiNTVlYzA0OWYxNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RSZWNvcmRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RSZXBsYXllci5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMjAwLDcgKzIwMSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgZGlzcGxh
eUxpc3QuY2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRl
CisgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggN2ZjYTg1MWQ1ZDU4ZmQ1NTM5MzRlNjYzODYwZGZiOWVlNmNkNzI5MC4uOGU2ZWVjNjRj
NTg2NDJlYWIwNGJhYTBhYWQzNjViNmE1NzQyM2UyNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTExLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJy
ZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0cyB0byBwYXJ0aWFs
bHkgcmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYSB0ZXN0IHRoYXQgZXhlcmNpc2VzIHBhcnRpYWwgZGlzcGxheSBsaXN0IHJlcGxheS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRpc3BsYXlMaXN0UmVwbGF5RGVsZWdhdGU6
OnJlYXNvbkZvclN0b3BwaW5nIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDIwLTExLTE3ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlnIFN1ciB0ZXN0ZXJzIGZhaWwgdG8gZmluZCBwcm9wZXIgYXJjaGl2ZXMgZHVlIHRvIGFy
Y2hpdGVjdHVyZSBrZXlzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMTA5ZTYwYTEzNGVm
OWFlMjAzYTEzOWYxY2ZiMTgwZjU5NTEwMjk4Li4zMTA5MmMyNmUzOGVkN2MxOTA3NmVmMmUyODNi
YjcwNzhhNmQ0ODMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0NSw2ICsxMTQ1LDcg
QEAKIAkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1MTdC
NjYyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovOyB9Owog
CQlGNDUzOEVGNzFFODQ3M0U2MDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1MzhFRjAx
RTg0NkI0MTAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUucG5nICovOyB9OwogCQlGNDU2QUIx
QzIxM0VEQkEzMDBDQjJDRUYgLyogRm9udE1hbmFnZXJUZXN0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTZBQjFCMjEzRURCQTMwMENCMkNFRiAv
KiBGb250TWFuYWdlclRlc3RzLm1tICovOyB9OworCQlGNDU3Mjc1RTI1NTc4RDA2MDA3QUNBMzQg
LyogRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTcyNzVEMjU1NzhEMDYwMDdBQ0EzNCAvKiBEaXNwbGF5TGlzdFRl
c3RzQ0cuY3BwICovOyB9OwogCQlGNDU3QTlCODIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhl
ZENvbnRlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDU3QTlCNjIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi87IH07
CiAJCUY0NTdBOUQ2MjAyRDY4QUYwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU3QTlCMzIw
MkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi87IH07CiAJCUY0NUI2M0ZCMUYx
OTdGNEEwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDVCNjNGQTFGMTk3RjMzMDA5RDM4QjkgLyog
aW1hZ2UtbWFwLmh0bWwgKi87IH07CkBAIC0yODg5LDYgKzI4OTAsNyBAQAogCQlGNDUxN0I2NjIw
NTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ1MzhFRjAxRTg0NkI0MTAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUu
cG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1h
Z2UucG5nOyBwYXRoID0gImxhcmdlLXJlZC1zcXVhcmUucG5nIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ1NkFCMUIyMTNFREJBMzAwQ0IyQ0VGIC8qIEZvbnRNYW5hZ2VyVGVzdHMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250TWFuYWdlclRlc3RzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDU3Mjc1RDI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxheUxp
c3RUZXN0c0NHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc3BsYXlMaXN0VGVzdHNDRy5jcHA7
IHBhdGggPSBjZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEYXRhVHJhbnNmZXIuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRD
b250ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVNaXhlZENvbnRlbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBp
bWFnZS1tYXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJpbWFnZS1tYXAuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNDg0LDYgKzM0ODYsNyBAQAogCQk0NDBBMUQzNjE0QTAxMDAwMDA4
QTY2RjIgLyogV2ViQ29yZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJRjQ1NzI3NUIyNTU3OEM5RTAwN0FDQTM0IC8qIGNnICovLAogCQkJCUNEODlEMDM3
MUM0RURCMTMwMDA0MEEwNCAvKiBjb2NvYSAqLywKIAkJCQlBMUVDMTE4NTFGNDI1M0Q5MDBEMDE0
NkUgLyogaW9zICovLAogCQkJCUFCRjUxMDYzMkExOUI4QUM3RUM0MEUxNyAvKiBBYm9ydGFibGVU
YXNrUXVldWUuY3BwICovLApAQCAtNDY5Miw2ICs0Njk1LDE0IEBACiAJCQlwYXRoID0gY29jb2E7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlGNDU3Mjc1QjI1NTc4QzlFMDA3
QUNBMzQgLyogY2cgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUY0NTcyNzVEMjU1NzhEMDYwMDdBQ0EzNCAvKiBEaXNwbGF5TGlzdFRlc3RzQ0cuY3BwICov
LAorCQkJKTsKKwkJCW5hbWUgPSBjZzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQg
c2VjdGlvbiAqLwpAQCAtNTE1MCw2ICs1MTYxLDcgQEAKIAkJCQlBRDU3QUMyMTFEQTc0NjVCMDBG
RjFCREUgLyogRGlkUmVtb3ZlRnJhbWVGcm9tSGllYXJjaHlJblBhZ2VDYWNoZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRUMyQTg1NDI0Q0U5NzVGMDBBREJDMzUgLyogRGlzYWxsb3dWTUVudHJ5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0MDk0Q0M3MjU1NDVCRDUwMDNENzNFMyAvKiBEaXNw
bGF5TGlzdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NTcyNzVFMjU1NzhEMDYwMDdB
Q0EzNCAvKiBEaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzNCRDcz
MTgyM0E4NDY1MDAwMjBGNDUwIC8qIERpc3BsYXlOYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE4RUU1MUIyMEE3OEQwMDAwRTAyNEYzIC8qIERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRl
QWZ0ZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEN0ZEMTkzMjI0MTkwODcwMDc4ODdG
MSAvKiBEb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAK
aW5kZXggYzc2MmExOWI4Y2VlYTkzOGJjNWVkZjgyNGZhNWU5MzEwY2YwMTJkZC4uM2UyODU5ZGIw
NjkwYTUxYTEwOWM3M2I3M2NiM2M4ZGUzZTQyNzk4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogICAgIEVYUEVDVF9G
QUxTRShsaXN0LmlzRW1wdHkoKSk7CiAKICAgICBib29sIG9ic2VydmVkVW5leHBlY3RlZEl0ZW0g
PSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50XSA6IGxpc3QpIHsKKyAgICBm
b3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IGxpc3QpIHsKICAgICAgICAgc3dpdGNo
IChoYW5kbGUudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNr
bmVzczogewogICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkp
OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMp
CiAKICAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwgMCwg
MTAwLCAxMDAgfSwgQ29sb3I6OmJsYWNrKTsKIAotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRl
bnRdIDogbGlzdCkgeworICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnQsIHNpemVdIDogbGlz
dCkgewogICAgICAgICBFWFBFQ1RfRVEoaGFuZGxlLnR5cGUoKSwgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aENvbG9yKTsKICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0V2l0aENv
bG9yPigpKTsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRl
bUJ1ZmZlckNsaWVudCkKICAgICBzaGFsbG93Q29weS5zZXRJdGVtQnVmZmVyQ2xpZW50KCZyZWFk
ZXIpOwogCiAgICAgVmVjdG9yPEl0ZW1UeXBlPiBpdGVtVHlwZXM7Ci0gICAgZm9yIChhdXRvIFto
YW5kbGUsIGV4dGVudF0gOiBzaGFsbG93Q29weSkKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0
ZW50LCBzaXplXSA6IHNoYWxsb3dDb3B5KQogICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGhhbmRs
ZS50eXBlKCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHNoYWxsb3dDb3B5LmlzRW1wdHkoKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxp
c3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNDNlYTM5YTQ5M2JiYjMzYTIwMzVmMTI3
YzM3ZDk5YWZmNTc1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMCwwICsxLDk4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKENHKQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJ
dGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q7Cit1
c2luZyBuYW1lc3BhY2UgRGlzcGxheUxpc3Q7CisKK2NsYXNzIERpc3BsYXlMaXN0UmVwbGF5RGVs
ZWdhdGUgOiBwdWJsaWMgUmVwbGF5ZXI6OkRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBPcHRpb25h
bDxTdG9wUmVwbGF5UmVhc29uPiByZWFzb25Gb3JTdG9wcGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhc29uRm9yU3RvcHBpbmc7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHdpbGxTdG9wUmVwbGF5
KEl0ZW1IYW5kbGUsIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgbV9yZWFzb25Gb3JTdG9wcGluZyA9IHJlYXNvbjsKKyAgICB9CisKKyAgICBPcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiBtX3JlYXNvbkZvclN0b3BwaW5nOworfTsKKworVEVTVChEaXNwbGF5
TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZ1Jlc291cmNlcykKK3sKKyAgICBjb25zdGV4cHIg
Q0dGbG9hdCBjb250ZXh0V2lkdGggPSAxMDA7CisgICAgY29uc3RleHByIENHRmxvYXQgY29udGV4
dEhlaWdodCA9IDEwMDsKKworICAgIEZsb2F0UmVjdCBjb250ZXh0Qm91bmRzIHsgMCwgMCwgY29u
dGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0IH07CisKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9w
dENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAg
YXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBj
b250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3Bh
Y2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworICAgIEdyYXBoaWNz
Q29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0LmdldCgpIH07CisKKyAgICBhdXRvIGltYWdlQnVm
ZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
KworICAgIERpc3BsYXlMaXN0IGxpc3Q7CisKKyAgICBsaXN0LmFwcGVuZDxTZXRJbmxpbmVGaWxs
Q29sb3I+KENvbG9yOjpncmVlbik7CisgICAgbGlzdC5hcHBlbmQ8RmlsbFJlY3Q+KGNvbnRleHRC
b3VuZHMpOworICAgIGxpc3QuYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLCBjb250ZXh0Qm91bmRzLCBjb250ZXh0Qm91bmRzLCBJbWFnZVBhaW50aW5nT3B0aW9u
cyB7IH0pOworICAgIGxpc3QuYXBwZW5kPFNldElubGluZVN0cm9rZUNvbG9yPihDb2xvcjo6cmVk
KTsKKyAgICBsaXN0LmFwcGVuZDxTdHJva2VMaW5lPihGbG9hdFBvaW50IHsgMCwgY29udGV4dEhl
aWdodCB9LCBGbG9hdFBvaW50IHsgY29udGV4dFdpZHRoLCAwIH0pOworCisgICAgeworICAgICAg
ICBEaXNwbGF5TGlzdFJlcGxheURlbGVnYXRlIGRlbGVnYXRlOworICAgICAgICBSZXBsYXllciBy
ZXBsYXllciB7IGNvbnRleHQsIGxpc3QsIG51bGxwdHIsIG51bGxwdHIsICZkZWxlZ2F0ZSB9Owor
ICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICBFWFBFQ1Rf
TFQocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkLCBsaXN0LnNpemVJbkJ5dGVzKCkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShkZWxlZ2F0ZS5yZWFzb25Gb3JTdG9wcGluZygpLmhhc1ZhbHVlKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoKmRlbGVnYXRlLnJlYXNvbkZvclN0b3BwaW5nKCksIFJlcGxheWVy
OjpEZWxlZ2F0ZTo6U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlcyk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAg
ICBJbWFnZUJ1ZmZlckhhc2hNYXAgaW1hZ2VCdWZmZXJNYXA7CisgICAgICAgIGltYWdlQnVmZmVy
TWFwLnNldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxs
KCkpOworCisgICAgICAgIERpc3BsYXlMaXN0UmVwbGF5RGVsZWdhdGUgZGVsZWdhdGU7CisgICAg
ICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY29udGV4dCwgbGlzdCwgJmltYWdlQnVmZmVyTWFwLCBu
dWxscHRyLCAmZGVsZWdhdGUgfTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBs
YXkoKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCwgbGlzdC5z
aXplSW5CeXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRlbGVnYXRlLnJlYXNvbkZvclN0
b3BwaW5nKCkuaGFzVmFsdWUoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCisKKyNlbmRpZiAvLyBVU0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414418</attachid>
            <date>2020-11-17 23:22:49 -0800</date>
            <delta_ts>2020-11-18 12:35:39 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-219067-20201117232248.patch</filename>
            <type>text/plain</type>
            <size>31247</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQzNzUxZTFlMzA5YWQw
YzFlZGNjMDlmZTY0NDZhMzIwY2NmYTY2ZS4uYjc0ZDk3ODZjYWE1YzdmOTZiYWJiMzFiMWExMjll
MWFmY2FmYzczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTExLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0cyB0byBwYXJ0aWFsbHkg
cmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIGl0IHBvc3NibGUgZm9yIGEgZGlzcGxheSBsaXN0IHJlcGxheWVyIHRvIHN0b3AgZWFybHkg
aW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nIGEgZGlzcGxheSBsaXN0LiBUaGlzCisgICAgICAg
IGNhcGFiaWxpdHkgaXMgYSBwcmVyZXF1aXNpdGUgdG8gdGhyZWUgaXRlbXM6CisKKyAgICAgICAg
LSAgIEFsbG93IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIGluIHRoZSBHUFUgcHJvY2VzcyB0byBw
YXVzZSB3aGVuIGVuY291bnRlcmluZyBtaXNzaW5nIGNhY2hlZCByZXNvdXJjZXMuCisgICAgICAg
IC0gICBBbGxvdyB0aGUgR1BVIHByb2Nlc3MgdG8gcmVwbGF5IGRpc3BsYXkgbGlzdCBpdGVtIGJ1
ZmZlcnMgdGhhdCBjb250YWluIGRpc3BsYXkgbGlzdCBkYXRhIHRhcmdldGluZyBkaWZmZXJlbnQK
KyAgICAgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlcnMuCisgICAgICAgIC0gICBBbGxv
dyB0aGUgR1BVIHByb2Nlc3MgdG8gcHJlbWF0dXJlbHkgaGFsdCBkaXNwbGF5IGxpc3QgcHJvY2Vz
c2luZyBhbmQgcGVyZm9ybSBhIE1FU1NBR0VfQ0hFQ0sgdG8gdGVybWluYXRlCisgICAgICAgICAg
ICB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcywgaW4gdGhlIGNhc2Ugb2YgYW4gaW52YWxpZCBkaXNw
bGF5IGxpc3QgaXRlbSAoZS5nLiBkZWNvZGluZyBmYWlsdXJlKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBEaXNwbGF5TGlzdFRlc3RzLlJl
cGxheVdpdGhNaXNzaW5nUmVzb3VyY2VzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnN1Ym1p
dERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgdGhlIGdlbmVyaWMgYHN1
Ym1pdERpc3BsYXlMaXN0YCBtZXRob2Qgb24gYEltYWdlQnVmZmVyYDsgaW5zdGVhZCwgY2FsbCBk
aXJlY3RseSBpbnRvCisgICAgICAgIGBSZW1vdGVJbWFnZUJ1ZmZlcjo6c3VibWl0RGlzcGxheUxp
c3RgIHRvIHJlcGxheSBkaXNwbGF5IGxpc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6CisKKyAgICAgICAgQWRqdXN0IHNl
dmVyYWwgY2FsbCBzaXRlcyBvZiBgcmVwbGF5KClgIHRvIGdyYWIgdGhlIHRyYWNrZWQgZGlzcGxh
eSBsaXN0IGZyb20gdGhlIGBSZXBsYXlSZXN1bHRgLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgor
CisgICAgICAgIFB1bGwgdGhlIGl0ZXJhdG9yIHZhbHVlIG91dCBpbnRvIGEgc2VwYXJhdGUgYFZh
bHVlYCBzdHJ1Y3QsIGFuZCBpbmNsdWRlIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IGRpc3BsYXkg
bGlzdAorICAgICAgICBpdGVtIGluIHRoZSBpdGVtIGJ1ZmZlci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6cmVwbGF5RGlz
cGxheUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6YXBwbHlJdGVtKToKKworICAgICAgICBNYWtlIHRoaXMgcHJpdmF0ZSBoZWxwZXIgbWV0
aG9kIHJldHVybiBhbiBlbnVtIGluZGljYXRpbmcgd2hldGhlciBkaXNwbGF5IGxpc3QgcmVwbGF5
IHNob3VsZCBjb250aW51ZS4KKworICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxh
eWVyOjpyZXBsYXkpOgorCisgICAgICAgIE1ha2UgcmVwbGF5KCkgcmV0dXJuIGEgYFJlcGxheVJl
c3VsdGAsIHdoaWNoIGNvbnRhaW5zIHRoZSB0cmFja2VkIGRpc3BsYXkgbGlzdCAoaWYgdHJhY2tp
bmcgaXMgZW5hYmxlZCksIGFzIHdlbGwKKyAgICAgICAgYXMgdGhlIG51bWJlciBvZiBieXRlcyBv
ZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhIHRoYXQgd2VyZSBjb25zdW1lZC4KKworICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6IERlbGV0
ZWQuCisKKyAgICAgICAgTWFrZSB0aGVzZSB0ZW1wbGF0ZSBtZXRob2RzIGluc3RlYWQgc28gdGhh
dCB0aGV5IGNhbiBjYWxsIGludG8gYG1fZGVsZWdhdGVgLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OndpbGxTdG9wUmVwbGF5KToKKworICAg
ICAgICBBZGQgYSBtZXRob2QgdG8gbm90aWZ5IHRoZSByZXBsYXllciBkZWxlZ2F0ZSB3aGVuIGRp
c3BsYXkgbGlzdCByZXBsYXkgaXMgYWJvdXQgdG8gaGFsdCBlYXJseS4gV2UgYWRkaXRpb25hbGx5
CisgICAgICAgIHByb3ZpZGUgdGhlIGNsaWVudCB3aXRoIGFuIGVudW0gZmxhZyBpbmRpY2F0aW5n
IHdoeSBkaXNwbGF5IGxpc3QgcmVwbGF5IGZpbmlzaGVkIGVhcmx5IChmb3IgaW5zdGFuY2UsIGR1
ZSB0bworICAgICAgICBtaXNzaW5nIGNhY2hlZCByZXNvdXJjZXMpLgorCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlOYXRpdmVJbWFnZUl0ZW0p
OgorCiAyMDIwLTExLTE3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjI2OTYxNCk6IFtpT1NdIFdlYkNvbnRlbnQgY3Jhc2hlcyB3aGVu
IGVudGVyaW5nIEZ1bGwgU2NyZWVuIHZpZGVvIHdpdGggdGV4dCBjYXB0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAxZGZlN2M5MTZlMzU2YWQ2NTM5MDZhOWQ0MTgzZmNhNzliZWEzZTlmLi41NjQzNjgxOWZhNjc5
NmE4YWFhMWUwMTg2MjIwNGJmNGFkMTVkMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIwLTExLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0
cyB0byBwYXJ0aWFsbHkgcmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKworICAg
ICAgICBNYWtlIGBzdWJtaXREaXNwbGF5TGlzdGAgb24gYFJlbW90ZUltYWdlQnVmZmVyYCByZXR1
cm4gYSBgUmVwbGF5UmVzdWx0YC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6c3VibWl0RGlzcGxheUxpc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6CisKIDIwMjAt
MTEtMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
R1BVLXByb2Nlc3MtaG9zdGVkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNob3VsZCBmbHVzaCBv
ZmYgdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAppbmRleCA4MmMzNjEyYzAwZmU5NzViZDM4OTcxNTkzMjNiNmFjODEwMWI5
MjUzLi42MmEzZjdmZmEzNzc4YThjMDEzOTAxNjI1NDM3NTNhYTdiZDJjMjFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTczLDcgKzcz
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNw
bGF5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29u
dGV4dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYpIHsgfQogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFz
ZVRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUo
KSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBhMDg0NTEyYTUyMzRlMTFiN2UxMDFjYjI5
MjhjYzJmMGEzMjdiZWFkLi45NDQ5ZjY1OTA0YWE1ZDA2MTc3NjE4NDU4YTdhNGFlYWMwYWI2NzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBo
aWNzQ29uCiAgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcihjb250ZXh0LCAq
bV9kaXNwbGF5TGlzdCk7CiAgICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkoaXNUcmFja2lu
Z0Rpc3BsYXlMaXN0UmVwbGF5KCkpKSB7Ci0gICAgICAgICAgICBhdXRvIHJlcGxheUxpc3QgPSBy
ZXBsYXllci5yZXBsYXkoY2xpcCwgaXNUcmFja2luZ0Rpc3BsYXlMaXN0UmVwbGF5KCkpOworICAg
ICAgICAgICAgYXV0byByZXBsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAsIGlzVHJhY2tp
bmdEaXNwbGF5TGlzdFJlcGxheSgpKS50cmFja2VkRGlzcGxheUxpc3Q7CiAgICAgICAgICAgICBs
YXllckRpc3BsYXlMaXN0TWFwKCkuYWRkKHRoaXMsIHN0ZDo6cGFpcjxGbG9hdFJlY3QsIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+PihjbGlwLCBXVEZNb3ZlKHJlcGxh
eUxpc3QpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KGNs
aXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggYmJmYzg1NWQ1ZDZlZjY4OTE1OWI0
YTVmMjI4MTQ4NTFhNDZhYzc1OC4uMWUxNWUwNTMzMmI5YWQ3NjYwZTQwNTg1Mzk1MTJiMjFjODFm
OGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgYm9v
bCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVt
SGFuZGxlIGl0ZW0pCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFn
cykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6
TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAg
IGZvciAoYXV0byBbaXRlbSwgZXh0ZW50XSA6ICp0aGlzKSB7CisgICAgZm9yIChhdXRvIFtpdGVt
LCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogKnRoaXMpIHsKICAgICAgICAgaWYgKCFzaG91
bGREdW1wRm9yRmxhZ3MoZmxhZ3MsIGl0ZW0pKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTEzMSw3ICsxMzEsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBj
b25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgIHRzIDw8ICJk
aXNwbGF5IGxpc3QiOwogCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnRdIDogKnRoaXMpIHsK
KyAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhpcykg
ewogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICAgICAgdHMg
PDwgaXRlbTsKICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAppbmRleCA3ZjYwNzhmODg0ZmMzNWM0ZjVhODM4NGU1ZjI4OGUzNzE4ODRhMTdlLi4y
NmZjOTczMDcyMTEyNzMwMzkzZTJkY2JjODdkMGM2YjljYTU0MjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaApAQCAtMTE3LDcgKzExNywyMSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZv
dGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9CiAgICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAgICAgICAgIHZvaWQgb3BlcmF0b3IrKygpIHsgYWR2YW5jZSgpOyB9
Ci0gICAgICAgIHN0ZDo6cGFpcjxJdGVtSGFuZGxlLCBPcHRpb25hbDxGbG9hdFJlY3Q+PiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiB7IEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJ
dGVtIH0sIG1fY3VycmVudEV4dGVudCB9OyB9CisKKyAgICAgICAgc3RydWN0IFZhbHVlIHsKKyAg
ICAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKKyAgICAgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZXh0ZW50OworICAgICAgICAgICAgc2l6ZV90IGl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Cisg
ICAgICAgIH07CisKKyAgICAgICAgVmFsdWUgb3BlcmF0b3IqKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSB9LAorICAgICAgICAgICAgICAgIG1fY3VycmVudEV4dGVudCwKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyCisgICAgICAgICAgICB9Owor
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID0gMjU2OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IGY5YjMyM2M3NDI2NmVk
MWY2MWQ0NGIwNDcyZWY1NTE4NTNlOGM3YjUuLjU0ZDg1NDcxMjNmODk0N2Q2ZjJmYWNkN2ZjYTZm
OTk1MTgxYTI2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBEcmF3aW5nQ29udGV4dDo6cmVwbGF5
RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCkKIAogICAgIFJlcGxheWVy
IHJlcGxheWVyKGRlc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0KTsKICAgICBpZiAobV90cmFja3NE
aXNwbGF5TGlzdFJlcGxheSkKLSAgICAgICAgbV9yZXBsYXllZERpc3BsYXlMaXN0ID0gcmVwbGF5
ZXIucmVwbGF5KHsgfSwgbV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSk7CisgICAgICAgIG1fcmVw
bGF5ZWREaXNwbGF5TGlzdCA9IHJlcGxheWVyLnJlcGxheSh7IH0sIG1fdHJhY2tzRGlzcGxheUxp
c3RSZXBsYXkpLnRyYWNrZWREaXNwbGF5TGlzdDsKICAgICBlbHNlCiAgICAgICAgIHJlcGxheWVy
LnJlcGxheSgpOwogICAgIG1fZGlzcGxheUxpc3QuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5YjcxODllOTg5ZGIyY2EzN2FlZGM0MDZkMjJl
MDEzZTRjODRiNzlhLi5lYWI1OWMyMzFmZDc1ZTQ5MmNkNDJhN2Q4NDM4M2Y1YjNiMGQ1NDE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00NSw0NyArNDUs
MjggQEAgUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb24KIAogUmVwbGF5ZXI6On5SZXBsYXllcigpID0g
ZGVmYXVsdDsKIAotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgYm9vbCBhcHBseUlt
YWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVy
SGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitSZXBsYXllcjo6U2hvdWxk
Q29udGludWUgUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7Ci0gICAgaWYg
KCFpdGVtLmlzPFQ+KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBpbWFnZUJ1
ZmZlckl0ZW0gPSBpdGVtLmdldDxUPigpOwotICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGlt
YWdlQnVmZmVycy5nZXQoaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKSkK
LSAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19CisgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBw
bHkoaXRlbSwgbV9jb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlOjpZZXM7
CiAKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIGJvb2wgYXBwbHlOYXRpdmVJbWFn
ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAm
IG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQotewotICAgIGlmICghaXRlbS5pczxUPigp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRl
bS5nZXQ8VD4oKTsKLSAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KG5hdGl2
ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKSkpCi0gICAgICAgIG5hdGl2ZUltYWdlSXRlbS5h
cHBseShjb250ZXh0LCAqaW1hZ2UpOwotICAgIHJldHVybiB0cnVlOwotfQorICAgIGlmIChhdXRv
IHJlc3VsdCA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4obV9jb250ZXh0
LCBpdGVtKSkKKyAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAKLXZvaWQgUmVwbGF5ZXI6OmFwcGx5
SXRlbShJdGVtSGFuZGxlIGl0ZW0pCi17Ci0gICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0
ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRv
IHJlc3VsdCA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRl
eHQsIGl0ZW0pKQorICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAotICAgIGlmIChhcHBseUltYWdl
QnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0
ZW0pKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBU
b0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKLSAgICAgICAg
cmV0dXJuOworICAgIGlmIChhdXRvIHJlc3VsdCA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdO
YXRpdmVJbWFnZT4obV9jb250ZXh0LCBpdGVtKSkKKyAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAK
LSAgICBpZiAoYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQs
IG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhcHBseU5h
dGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4obV9jb250ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRl
bSkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byByZXN1bHQgPSBhcHBseU5hdGl2ZUlt
YWdlSXRlbTxEcmF3UGF0dGVybj4obV9jb250ZXh0LCBpdGVtKSkKKyAgICAgICAgcmV0dXJuICpy
ZXN1bHQ7CiAKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CisgICAgcmV0dXJuIFNob3VsZENv
bnRpbnVlOjpZZXM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6
OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlz
dCkKK1JlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNw
bGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZXBsYXlpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENs
aXApOwogICAgIFVOVVNFRF9QQVJBTShpbml0aWFsQ2xpcCk7CkBAIC05NywxNCArNzgsMTkgQEAg
c3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgc2l6ZV90IGkg
PSAwOwogI2VuZGlmCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnRdIDogbV9kaXNwbGF5TGlz
dCkgeworICAgIHNpemVfdCBudW1iZXJPZkJ5dGVzUmVhZCA9IDA7CisgICAgZm9yIChhdXRvIFtp
dGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogbV9kaXNwbGF5TGlzdCkgewogICAgICAg
ICBpZiAoIWluaXRpYWxDbGlwLmlzWmVybygpICYmIGV4dGVudCAmJiAhZXh0ZW50LT5pbnRlcnNl
Y3RzKGluaXRpYWxDbGlwKSkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlM
aXN0cywgc3RyZWFtIDw8ICJza2lwcGluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CisgICAg
ICAgICAgICBudW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxh
eUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKLSAg
ICAgICAgYXBwbHlJdGVtKGl0ZW0pOworICAgICAgICBpZiAoYXBwbHlJdGVtKGl0ZW0pID09IFNo
b3VsZENvbnRpbnVlOjpObykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG51bWJlck9m
Qnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHRy
YWNrUmVwbGF5TGlzdCkpIHsKICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFwcGVuZChpdGVtKTsK
QEAgLTExMyw3ICs5OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6
OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICByZXR1cm4gcmVwbGF5TGlzdDsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJlcGxh
eUxpc3QpLCBudW1iZXJPZkJ5dGVzUmVhZCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMmMwMTllZTBj
YzhhMzZlMmM0ZjVkMjUzMDIwMGY4NzVkMTZhZGUwMC4uYzYxYjk2MGMwNWE1MmI3MjI0MWZlZjI3
MGZkYjgzYTZkMGIyM2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CkBAIC0zOCw2ICszOCwxMSBAQCBjbGFzcyBJbWFnZURhdGE7CiAKIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiAKK3N0cnVjdCBSZXBsYXlSZXN1bHQgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdD4gdHJhY2tlZERpc3BsYXlMaXN0OworICAgIHNpemVfdCBudW1iZXJPZkJ5dGVzUmVh
ZCB7IDAgfTsKK307CisKIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZXBsYXllcik7CiBwdWJsaWM6CkBAIC00NSwxNyArNTAsNjAgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0
JiwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdl
SGFzaE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+UmVwbGF5ZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJv
b2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJl
c3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFj
a1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKICAgICBjbGFzcyBEZWxlZ2F0ZSB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQorCisgICAgICAgIGVudW0gY2xhc3Mg
U3RvcFJlcGxheVJlYXNvbiA6IHVpbnQ4X3QgeworICAgICAgICAgICAgTWlzc2luZ0NhY2hlZFJl
c291cmNlcywKKyAgICAgICAgICAgIERlY29kaW5nRmFpbHVyZSAvLyBGSVhNRTogUHJvcGFnYXRl
IGRlY29kaW5nIGVycm9ycyB0byBkaXNwbGF5IGxpc3QgcmVwbGF5IGNsaWVudHMgdGhyb3VnaCB0
aGlzIGVudW0gYXMgd2VsbC4KKyAgICAgICAgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxT
dG9wUmVwbGF5KEl0ZW1IYW5kbGUsIFN0b3BSZXBsYXlSZWFzb24pIHsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB9OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SXRlbShJdGVtSGFu
ZGxlKTsKLSAgICAKKyAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKKyAgICBTaG91bGRDb250aW51ZSBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBUPgorICAgIE9wdGlvbmFsPFNob3VsZENvbnRpbnVlPiBhcHBseUltYWdl
QnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEl0ZW1IYW5kbGUgaXRlbSkKKyAg
ICB7CisgICAgICAgIGlmICghaXRlbS5pczxUPigpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBhdXRvJiBpbWFnZUJ1ZmZlckl0ZW0gPSBpdGVtLmdldDxUPigp
OworICAgICAgICBhdXRvKiBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJzLmdldChpbWFnZUJ1
ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyKSB7CisgICAgICAgICAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgICAgICAgICBtX2Rl
bGVnYXRlLT53aWxsU3RvcFJlcGxheShpdGVtLCBEZWxlZ2F0ZTo6U3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlcyk7CisgICAgICAgICAgICByZXR1cm4gU2hvdWxkQ29udGlu
dWU6Ok5vOworICAgICAgICB9CisKKyAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRl
eHQsICppbWFnZUJ1ZmZlcik7CisgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFQ+CisgICAgT3B0aW9uYWw8U2hvdWxkQ29udGlu
dWU+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSXRlbUhh
bmRsZSBpdGVtKQorICAgIHsKKyAgICAgICAgaWYgKCFpdGVtLmlzPFQ+KCkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9
IGl0ZW0uZ2V0PFQ+KCk7CisgICAgICAgIGF1dG8qIGltYWdlID0gbV9uYXRpdmVJbWFnZXMuZ2V0
KG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGlmICghaW1hZ2Up
IHsKKyAgICAgICAgICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICAgICAgICAgIG1fZGVsZWdh
dGUtPndpbGxTdG9wUmVwbGF5KGl0ZW0sIERlbGVnYXRlOjpTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2VzKTsKKyAgICAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6
Tm87CisgICAgICAgIH0KKworICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwg
KmltYWdlKTsKKyAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlOjpZZXM7CisgICAgfQorCiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1f
ZGlzcGxheUxpc3Q7CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKaW5kZXggNzlkNDg3ZDIwNjI2YjVhZWM3MGRhYTc4NjJkOGNhNzBkNmU1YjFi
Yi4uYjBkYmEwYmQyMzZhMzhkMjU2OGViZGQ4NTNlYzEzZjA2Yjg5NmY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
QEAgLTY1LDE1ICs2NSwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb250ZXh0KCkucmVzdG9y
ZSgpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3Vi
bWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCkKKyAgICB7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVy
cyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VC
dWZmZXJzKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7CisgICAg
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0
aXZlSW1hZ2VzLCB0aGlzIH07CisgICAgICAgIHJldHVybiByZXBsYXllci5yZXBsYXkoKTsKKyAg
ICB9CisKIHByaXZhdGU6Ci0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHZv
aWQgd2lsbFN0b3BSZXBsYXkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OlN0b3BSZXBsYXlSZWFzb24pIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgICAgIGNv
bnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVS
ZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29u
dGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9
OwotICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8g
RklYTUU6IEJyZWFrIG91dCBvZiB0aGUgbWFpbiBkaXNwbGF5IGxpc3QgYXBwbGljYXRpb24gbG9v
cC4KICAgICB9CiAKICAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA2YzczM2NkYTE5ZDY1ZWM1N2M1MDNiNzZmY2RjYWQ3
NWQwMzk5ZjhhLi4zYjJjNDU3YjJjMDkwYmMzNzc2OTQ4NmU5NjU1YjU2MjcxNmFjZjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDEwIEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKEltYWdlQnVmZmVyJiBk
ZXN0aW5hdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBkZXN0
aW5hdGlvbi5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGVz
dGluYXRpb24uaXNBY2NlbGVyYXRlZCgpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgq
ZGlzcGxheUxpc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxVbmFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxp
c3QoKmRpc3BsYXlMaXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0g
b2Zmc2V0OwogICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCmluZGV4IDcxOWZmMTkyOTNlNzMwOWRmYzYzYjI0ZmQ1ODM3ZGUyMDcz
MTYwZWIuLmZlMWJlMjY3YmQ1MmIxYWIyZTBjMDNiYTBiYzUxZGYxNjFlODQ5ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlz
dEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNp
bmcuaD4KQEAgLTIwNCw3ICsyMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAg
IHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDdlNTdlZGYxNTYxM2Q5ZmQ5ZGRmM2YwMGNiNWVhYTdjZGZlZGFlMmIuLmQwYWMxNzIyNDU2Zjhk
ZTg2YzY1ZWE3Mzk3YmYxODU5ZjE2Yjc3NTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0xNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29uY3VycmVudCBk
aXNwbGF5IGxpc3RzXSBBZGQgYSB3YXkgZm9yIGRpc3BsYXkgbGlzdHMgdG8gcGFydGlhbGx5IHJl
cGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgdGVzdCB0aGF0IGV4ZXJjaXNlcyBwYXJ0aWFsIGRpc3BsYXkgbGlzdCByZXBsYXkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RU
ZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEaXNwbGF5TGlzdFJlcGxheURlbGVnYXRlOjpyZWFz
b25Gb3JTdG9wcGluZyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAyMC0xMS0xNyAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtidWlsZGJvdF0gQWRkIGJ1aWxkQW5kVGVzdCBib3QgZm9yIFdlYktpdEdUSyAoR1RLNCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEwOWU2MGExMzRlZjlhZTIwM2ExMzlmMWNmYjE4
MGY1OTUxMDI5OC4uMzEwOTJjMjZlMzhlZDdjMTkwNzZlZjJlMjgzYmI3MDc4YTZkNDgzMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDUsNiArMTE0NSw3IEBACiAJCUY0NTE3QjY3MjA1
NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTE3QjY2MjA1NEM0OTUwMEMyNjcy
MSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNF
NjAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAv
KiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLzsgfTsKIAkJRjQ1NkFCMUMyMTNFREJBMzAwQ0IyQ0VG
IC8qIEZvbnRNYW5hZ2VyVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDU2QUIxQjIxM0VEQkEzMDBDQjJDRUYgLyogRm9udE1hbmFnZXJUZXN0
cy5tbSAqLzsgfTsKKwkJRjQ1NzI3NUUyNTU3OEQwNjAwN0FDQTM0IC8qIERpc3BsYXlMaXN0VGVz
dHNDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDU3Mjc1RDI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxheUxpc3RUZXN0c0NHLmNwcCAqLzsgfTsK
IAkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjYyMDJENUNE
QzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovOyB9OwogCQlGNDU3QTlENjIwMkQ2
OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sICovOyB9OwogCQlGNDVCNjNGQjFGMTk3RjRBMDA5RDM4QjkgLyog
aW1hZ2UtbWFwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ1QjYzRkExRjE5N0YzMzAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1sICov
OyB9OwpAQCAtMjg4OSw2ICsyODkwLDcgQEAKIAkJRjQ1MTdCNjYyMDU0QzQ5NTAwQzI2NzIxIC8q
IFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4
RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJs
YXJnZS1yZWQtc3F1YXJlLnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTZB
QjFCMjEzRURCQTMwMENCMkNFRiAvKiBGb250TWFuYWdlclRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRm9udE1hbmFnZXJUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQ1NzI3NUQyNTU3OEQwNjAwN0FDQTM0IC8qIERpc3BsYXlMaXN0VGVzdHNDRy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOyBwYXRoID0gY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1N0E5QjMy
MDJENTM1MzAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gRGF0YVRyYW5zZmVyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBhc3RlTWl4ZWRDb250ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDVCNjNGQTFGMTk3RjMzMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiaW1hZ2UtbWFwLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzQ4NCw2ICszNDg2LDcgQEAKIAkJNDQwQTFEMzYxNEEwMTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0NTcyNzVC
MjU1NzhDOUUwMDdBQ0EzNCAvKiBjZyAqLywKIAkJCQlDRDg5RDAzNzFDNEVEQjEzMDAwNDBBMDQg
LyogY29jb2EgKi8sCiAJCQkJQTFFQzExODUxRjQyNTNEOTAwRDAxNDZFIC8qIGlvcyAqLywKIAkJ
CQlBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcgLyogQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCAqLywK
QEAgLTQ2OTIsNiArNDY5NSwxNCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjQ1NzI3NUIyNTU3OEM5RTAwN0FDQTM0IC8qIGNnICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDU3Mjc1RDI1NTc4
RDA2MDA3QUNBMzQgLyogRGlzcGxheUxpc3RUZXN0c0NHLmNwcCAqLywKKwkJCSk7CisJCQluYW1l
ID0gY2c7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3Vw
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KQEAgLTUx
NTAsNiArNTE2MSw3IEBACiAJCQkJQUQ1N0FDMjExREE3NDY1QjAwRkYxQkRFIC8qIERpZFJlbW92
ZUZyYW1lRnJvbUhpZWFyY2h5SW5QYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVD
MkE4NTQyNENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGNDA5NENDNzI1NTQ1QkQ1MDAzRDczRTMgLyogRGlzcGxheUxpc3RUZXN0cy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGNDU3Mjc1RTI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxheUxp
c3RUZXN0c0NHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTczQkQ3MzE4MjNBODQ2NTAwMDIwRjQ1
MCAvKiBEaXNwbGF5TmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEVFNTFCMjBBNzhEMDAw
MEUwMjRGMyAvKiBEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZUFmdGVyQ3Jhc2gubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRDdGRDE5MzIyNDE5MDg3MDA3ODg3RjEgLyogRG9jdW1lbnRFZGl0
aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGM3NjJhMTliOGNl
ZWE5MzhiYzVlZGY4MjRmYTVlOTMxMGNmMDEyZGQuLjNlMjg1OWRiMDY5MGE1MWExMDljNzNiNzNj
YjNjOGRlM2U0Mjc5OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgVEVTVChEaXNw
bGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKICAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5
KCkpOwogCiAgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9y
IChhdXRvIFtoYW5kbGUsIGV4dGVudF0gOiBsaXN0KSB7CisgICAgZm9yIChhdXRvIFtoYW5kbGUs
IGV4dGVudCwgc2l6ZV0gOiBsaXN0KSB7CiAgICAgICAgIHN3aXRjaCAoaGFuZGxlLnR5cGUoKSkg
ewogICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKICAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogCiAgICAgbGlzdC5hcHBl
bmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7IDAsIDAsIDEwMCwgMTAwIH0sIENvbG9y
OjpibGFjayk7CiAKLSAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50XSA6IGxpc3QpIHsKKyAg
ICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IGxpc3QpIHsKICAgICAgICAgRVhQ
RUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7CiAKQEAgLTIy
Myw3ICsyMjMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVudCgmcmVhZGVyKTsKIAogICAgIFZlY3Rv
cjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAoYXV0byBbaGFuZGxlLCBleHRlbnRdIDog
c2hhbGxvd0NvcHkpCisgICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwgc2l6ZV0gOiBzaGFs
bG93Q29weSkKICAgICAgICAgaXRlbVR5cGVzLmFwcGVuZChoYW5kbGUudHlwZSgpKTsKIAogICAg
IEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MDQzZWEzOWE0OTNiYmIzM2EyMDM1ZjEyN2MzN2Q5OWFmZjU3NWE0Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYWRp
ZW50Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwordXNpbmcgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OwordXNpbmcgbmFtZXNwYWNlIERp
c3BsYXlMaXN0OworCitjbGFzcyBEaXNwbGF5TGlzdFJlcGxheURlbGVnYXRlIDogcHVibGljIFJl
cGxheWVyOjpEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNv
bj4gcmVhc29uRm9yU3RvcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlYXNvbkZvclN0b3BwaW5n
OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU3RvcFJlcGxheShJdGVtSGFuZGxlLCBTdG9w
UmVwbGF5UmVhc29uIHJlYXNvbikgZmluYWwKKyAgICB7CisgICAgICAgIG1fcmVhc29uRm9yU3Rv
cHBpbmcgPSByZWFzb247CisgICAgfQorCisgICAgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4g
bV9yZWFzb25Gb3JTdG9wcGluZzsKK307CisKK1RFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5
V2l0aE1pc3NpbmdSZXNvdXJjZXMpCit7CisgICAgY29uc3RleHByIENHRmxvYXQgY29udGV4dFdp
ZHRoID0gMTAwOworICAgIGNvbnN0ZXhwciBDR0Zsb2F0IGNvbnRleHRIZWlnaHQgPSAxMDA7CisK
KyAgICBGbG9hdFJlY3QgY29udGV4dEJvdW5kcyB7IDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4
dEhlaWdodCB9OworCisgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VD
cmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gY2dDb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCB7
IGNnQ29udGV4dC5nZXQoKSB9OworCisgICAgYXV0byBpbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisKKyAgICBEaXNwbGF5TGlz
dCBsaXN0OworCisgICAgbGlzdC5hcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPihDb2xvcjo6Z3Jl
ZW4pOworICAgIGxpc3QuYXBwZW5kPEZpbGxSZWN0Pihjb250ZXh0Qm91bmRzKTsKKyAgICBsaXN0
LmFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwgY29udGV4dEJv
dW5kcywgY29udGV4dEJvdW5kcywgSW1hZ2VQYWludGluZ09wdGlvbnMgeyB9KTsKKyAgICBsaXN0
LmFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oQ29sb3I6OnJlZCk7CisgICAgbGlzdC5hcHBl
bmQ8U3Ryb2tlTGluZT4oRmxvYXRQb2ludCB7IDAsIGNvbnRleHRIZWlnaHQgfSwgRmxvYXRQb2lu
dCB7IGNvbnRleHRXaWR0aCwgMCB9KTsKKworICAgIHsKKyAgICAgICAgRGlzcGxheUxpc3RSZXBs
YXlEZWxlZ2F0ZSBkZWxlZ2F0ZTsKKyAgICAgICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0
LCBsaXN0LCBudWxscHRyLCBudWxscHRyLCAmZGVsZWdhdGUgfTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAgRVhQRUNUX0xUKHJlc3VsdC5udW1iZXJP
ZkJ5dGVzUmVhZCwgbGlzdC5zaXplSW5CeXRlcygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGVs
ZWdhdGUucmVhc29uRm9yU3RvcHBpbmcoKS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCpkZWxlZ2F0ZS5yZWFzb25Gb3JTdG9wcGluZygpLCBSZXBsYXllcjo6RGVsZWdhdGU6OlN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZXMpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIGltYWdlQnVmZmVyTWFwOworICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgICAgICBE
aXNwbGF5TGlzdFJlcGxheURlbGVnYXRlIGRlbGVnYXRlOworICAgICAgICBSZXBsYXllciByZXBs
YXllciB7IGNvbnRleHQsIGxpc3QsICZpbWFnZUJ1ZmZlck1hcCwgbnVsbHB0ciwgJmRlbGVnYXRl
IH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgICAgIEVY
UEVDVF9FUShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIGxpc3Quc2l6ZUluQnl0ZXMoKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShkZWxlZ2F0ZS5yZWFzb25Gb3JTdG9wcGluZygpLmhhc1ZhbHVl
KCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYg
Ly8gVVNFKENHKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414486</attachid>
            <date>2020-11-18 14:42:55 -0800</date>
            <delta_ts>2020-11-18 17:21:12 -0800</delta_ts>
            <desc>Slightly simpler approach</desc>
            <filename>bug-219067-20201118144254.patch</filename>
            <type>text/plain</type>
            <size>29450</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ0ODcyNTgwNDE4YTlm
NmQzNzJkODk4NzNmZDM1NjBiMDMwNjU4My4uY2QxYThkN2I4ODgzNDQ4MzQwMWM4N2MzZjkxZTkz
MWFhYmE4NGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTExLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0cyB0byBwYXJ0aWFsbHkg
cmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIGl0IHBvc3NibGUgZm9yIGEgZGlzcGxheSBsaXN0IHJlcGxheWVyIHRvIHN0b3AgZWFybHkg
aW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nIGEgZGlzcGxheSBsaXN0LiBUaGlzCisgICAgICAg
IGNhcGFiaWxpdHkgaXMgYSBwcmVyZXF1aXNpdGUgdG8gdGhyZWUgaXRlbXM6CisKKyAgICAgICAg
LSAgIEFsbG93IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIGluIHRoZSBHUFUgcHJvY2VzcyB0byBw
YXVzZSB3aGVuIGVuY291bnRlcmluZyBtaXNzaW5nIGNhY2hlZCByZXNvdXJjZXMuCisgICAgICAg
IC0gICBBbGxvdyB0aGUgR1BVIHByb2Nlc3MgdG8gcmVwbGF5IGRpc3BsYXkgbGlzdCBpdGVtIGJ1
ZmZlcnMgdGhhdCBjb250YWluIGRpc3BsYXkgbGlzdCBkYXRhIHRhcmdldGluZyBkaWZmZXJlbnQK
KyAgICAgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlcnMuCisgICAgICAgIC0gICBBbGxv
dyB0aGUgR1BVIHByb2Nlc3MgdG8gcHJlbWF0dXJlbHkgaGFsdCBkaXNwbGF5IGxpc3QgcHJvY2Vz
c2luZyBhbmQgcGVyZm9ybSBhIE1FU1NBR0VfQ0hFQ0sgdG8gdGVybWluYXRlCisgICAgICAgICAg
ICB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcywgaW4gdGhlIGNhc2Ugb2YgYW4gaW52YWxpZCBkaXNw
bGF5IGxpc3QgaXRlbSAoZS5nLiBkZWNvZGluZyBmYWlsdXJlKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBEaXNwbGF5TGlzdFRlc3RzLlJl
cGxheVdpdGhNaXNzaW5nUmVzb3VyY2UKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5n
Q29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c3VibWl0
RGlzcGxheUxpc3QpOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSB0aGUgZ2VuZXJpYyBgc3Vi
bWl0RGlzcGxheUxpc3RgIG1ldGhvZCBvbiBgSW1hZ2VCdWZmZXJgOyBpbnN0ZWFkLCBjYWxsIGRp
cmVjdGx5IGludG8KKyAgICAgICAgYFJlbW90ZUltYWdlQnVmZmVyOjpzdWJtaXREaXNwbGF5TGlz
dGAgdG8gcmVwbGF5IGRpc3BsYXkgbGlzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKworICAgICAgICBBZGp1c3Qgc2V2
ZXJhbCBjYWxsIHNpdGVzIG9mIGByZXBsYXkoKWAgdG8gZ3JhYiB0aGUgdHJhY2tlZCBkaXNwbGF5
IGxpc3QgZnJvbSB0aGUgYFJlcGxheVJlc3VsdGAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisK
KyAgICAgICAgUHVsbCB0aGUgaXRlcmF0b3IgdmFsdWUgb3V0IGludG8gYSBzZXBhcmF0ZSBgVmFs
dWVgIHN0cnVjdCwgYW5kIGluY2x1ZGUgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgZGlzcGxheSBs
aXN0CisgICAgICAgIGl0ZW0gaW4gdGhlIGl0ZW0gYnVmZmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpyZXBsYXlEaXNw
bGF5TGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5
SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5h
dGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6
OmFwcGx5SXRlbSk6CisKKyAgICAgICAgTWFrZSB0aGlzIHByaXZhdGUgaGVscGVyIG1ldGhvZCBy
ZXR1cm4gYW4gb3B0aW9uYWwgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgZGlzcGxheSBsaXN0IHJl
cGxheSBzaG91bGQgc3RvcC4KKworICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxh
eWVyOjpyZXBsYXkpOgorCisgICAgICAgIE1ha2UgcmVwbGF5KCkgcmV0dXJuIGEgYFJlcGxheVJl
c3VsdGAsIHdoaWNoIGNvbnRhaW5zIHRoZSB0cmFja2VkIGRpc3BsYXkgbGlzdCAoaWYgdHJhY2tp
bmcgaXMgZW5hYmxlZCksIGFzIHdlbGwKKyAgICAgICAgYXMgdGhlIG51bWJlciBvZiBieXRlcyBv
ZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhIHRoYXQgd2VyZSBjb25zdW1lZCwgYW5kIHRoZSByZWFz
b24gd2h5IGRpc3BsYXkgbGlzdCByZXBsYXkKKyAgICAgICAgc3RvcHBlZCAodGhlIGRlZmF1bHQg
cmVhc29uIGJlaW5nIGBSZXBsYXllZEFsbEl0ZW1zYCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCiAyMDIwLTExLTE4ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtXUEVdW0dU
S10gVXBkYXRlIE91dGxvb2sgdXNlciBhZ2VudCBxdWlyawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0OWQ3M2ZkNjY3
OWIyZmViZGM1YWYzZDE4ZjVhODEyNDlmYzgzYjAxLi4zMmQ0YWY2NTk5ZmI4ZTQ0MmEzMjhmNDQ2
ODFkOWQ0NjY0YzY0ODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTExLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJy
ZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0cyB0byBwYXJ0aWFs
bHkgcmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKworICAgICAgICBNYWtlIGBz
dWJtaXREaXNwbGF5TGlzdGAgb24gYFJlbW90ZUltYWdlQnVmZmVyYCByZXR1cm4gYSBgUmVwbGF5
UmVzdWx0YC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6c3VibWl0RGlz
cGxheUxpc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFw
cGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6CisKIDIwMjAtMTEtMTggIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUHJvY2Vzc10gTWFpbiB0
aHJlYWQgb2YgdGhlIEdQVVByb2Nlc3Mgc2hvdWxkIGhhdmUgc2FtZSBwcmlvcml0eSBhcyBtYWlu
IHRocmVhZCBvZiB0aGUgV2ViQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggODJjMzYxMmMwMGZlOTc1YmQzODk3MTU5MzIzYjZh
YzgxMDFiOTI1My4uNjJhM2Y3ZmZhMzc3OGE4YzAxMzkwMTYyNTQzNzUzYWE3YmQyYzIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03
Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9u
Rm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFu
ZENvbW1pdCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0KIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2lj
YWxTaXplKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYTA4NDUxMmE1MjM0ZTExYjdl
MTAxY2IyOTI4Y2MyZjBhMzI3YmVhZC4uOTQ0OWY2NTkwNGFhNWQwNjE3NzYxODQ1OGE3YTRhZWFj
MGFiNjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbgogICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIoY29u
dGV4dCwgKm1fZGlzcGxheUxpc3QpOwogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZKGlz
VHJhY2tpbmdEaXNwbGF5TGlzdFJlcGxheSgpKSkgewotICAgICAgICAgICAgYXV0byByZXBsYXlM
aXN0ID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAsIGlzVHJhY2tpbmdEaXNwbGF5TGlzdFJlcGxheSgp
KTsKKyAgICAgICAgICAgIGF1dG8gcmVwbGF5TGlzdCA9IHJlcGxheWVyLnJlcGxheShjbGlwLCBp
c1RyYWNraW5nRGlzcGxheUxpc3RSZXBsYXkoKSkudHJhY2tlZERpc3BsYXlMaXN0OwogICAgICAg
ICAgICAgbGF5ZXJEaXNwbGF5TGlzdE1hcCgpLmFkZCh0aGlzLCBzdGQ6OnBhaXI8RmxvYXRSZWN0
LCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Pj4oY2xpcCwgV1RGTW92
ZShyZXBsYXlMaXN0KSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlcGxheWVyLnJl
cGxheShjbGlwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGJiZmM4NTVkNWQ2ZWY2
ODkxNTliNGE1ZjIyODE0ODUxYTQ2YWM3NTguLjFlMTVlMDUzMzJiOWFkNzY2MGU0MDU4NTM5NTEy
YjIxYzgxZjhjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMTE0LDcgKzExNCw3
IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFn
cywgSXRlbUhhbmRsZSBpdGVtKQogU3RyaW5nIERpc3BsYXlMaXN0Ojphc1RleHQoQXNUZXh0Rmxh
Z3MgZmxhZ3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGlu
ZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0
KTsKLSAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudF0gOiAqdGhpcykgeworICAgIGZvciAoYXV0
byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7CiAgICAgICAgIGlm
ICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFt
JiB0cykgY29uc3QKICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICB0
cyA8PCAiZGlzcGxheSBsaXN0IjsKIAotICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50XSA6ICp0
aGlzKSB7CisgICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDog
KnRoaXMpIHsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAg
ICAgIHRzIDw8IGl0ZW07CiAgICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKaW5kZXggN2Y2MDc4Zjg4NGZjMzVjNGY1YTgzODRlNWYyODhlMzcxODg0
YTE3ZS4uMjZmYzk3MzA3MjExMjczMDM5M2UyZGNiYzg3ZDBjNmI5Y2E1NDI1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKQEAgLTExNyw3ICsxMTcsMjEgQEAgcHVibGljOgogICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlz
dCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsg
fQogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogICAgICAgICB2b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFu
Y2UoKTsgfQotICAgICAgICBzdGQ6OnBhaXI8SXRlbUhhbmRsZSwgT3B0aW9uYWw8RmxvYXRSZWN0
Pj4gb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4geyBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSB9LCBtX2N1cnJlbnRFeHRlbnQgfTsgfQorCisgICAgICAgIHN0cnVjdCBWYWx1
ZSB7CisgICAgICAgICAgICBJdGVtSGFuZGxlIGl0ZW07CisgICAgICAgICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGV4dGVudDsKKyAgICAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsg
MCB9OworICAgICAgICB9OworCisgICAgICAgIFZhbHVlIG9wZXJhdG9yKigpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgSXRlbUhhbmRsZSB7
IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRFeHRl
bnQsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlcgorICAgICAgICAg
ICAgfTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRleCBmOWIzMjNj
NzQyNjZlZDFmNjFkNDRiMDQ3MmVmNTUxODUzZThjN2I1Li41NGQ4NTQ3MTIzZjg5NDdkNmYyZmFj
ZDdmY2E2Zjk5NTE4MWEyNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRHJhd2luZ0NvbnRleHQ6
OnJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQpCiAKICAgICBS
ZXBsYXllciByZXBsYXllcihkZXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCk7CiAgICAgaWYgKG1f
dHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpCi0gICAgICAgIG1fcmVwbGF5ZWREaXNwbGF5TGlzdCA9
IHJlcGxheWVyLnJlcGxheSh7IH0sIG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOworICAgICAg
ICBtX3JlcGxheWVkRGlzcGxheUxpc3QgPSByZXBsYXllci5yZXBsYXkoeyB9LCBtX3RyYWNrc0Rp
c3BsYXlMaXN0UmVwbGF5KS50cmFja2VkRGlzcGxheUxpc3Q7CiAgICAgZWxzZQogICAgICAgICBy
ZXBsYXllci5yZXBsYXkoKTsKICAgICBtX2Rpc3BsYXlMaXN0LmNsZWFyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggOWI3MTg5ZTk4OWRiMmNhMzdhZWRj
NDA2ZDIyZTAxM2U0Yzg0Yjc5YS4uYjIzNGMwNWE5NDgzNTY1OGU0NzI0NjljMzE0NzM1YjBmN2Zk
YTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNDYs
NDYgKzQ2LDUzIEBAIFJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uCiBSZXBsYXllcjo6flJlcGxheWVy
KCkgPSBkZWZhdWx0OwogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBib29sIGFw
cGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VC
dWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0
aWMgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVy
cywgSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmICghaXRlbS5pczxUPigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byYgaW1h
Z2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsKLSAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIg
PSBpbWFnZUJ1ZmZlcnMuZ2V0KGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIo
KSkpCisgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChpbWFnZUJ1
ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpKSB7CiAgICAgICAgIGltYWdlQnVmZmVy
SXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwotICAgIHJldHVybiB0cnVlOworICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5s
aW5lIHN0YXRpYyBib29sIGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUg
aXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gYXBwbHlOYXRp
dmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhh
c2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmICghaXRlbS5p
czxUPigpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKLSAgICBpZiAo
YXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50
aWZpZXIoKSkpCisgICAgaWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChuYXRpdmVJ
bWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpKSB7CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5h
cHBseShjb250ZXh0LCAqaW1hZ2UpOwotICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlOwogfQogCi12b2lkIFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRs
ZSBpdGVtKQorT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJ
dGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBw
bHkoaXRlbSwgbV9jb250ZXh0KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgaWYgKGF1dG8gcmVhc29uRm9yU3RvcHBpbmcgPSBhcHBseUltYWdl
QnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0
ZW0pKQorICAgICAgICByZXR1cm4gcmVhc29uRm9yU3RvcHBpbmc7CiAKLSAgICBpZiAoYXBwbHlJ
bWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1faW1hZ2VCdWZmZXJz
LCBpdGVtKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhcHBseUltYWdlQnVmZmVySXRlbTxD
bGlwVG9JbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAoYXV0byByZWFzb25Gb3JTdG9wcGluZyA9IGFwcGx5SW1hZ2VC
dWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1faW1hZ2VCdWZmZXJzLCBp
dGVtKSkKKyAgICAgICAgcmV0dXJuIHJlYXNvbkZvclN0b3BwaW5nOwogCi0gICAgaWYgKGFwcGx5
TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250ZXh0LCBtX25hdGl2ZUltYWdl
cywgaXRlbSkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXBwbHlOYXRpdmVJbWFnZUl0ZW08
RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKGF1dG8gcmVhc29uRm9yU3RvcHBpbmcgPSBhcHBseU5hdGl2ZUltYWdl
SXRlbTxEcmF3TmF0aXZlSW1hZ2U+KG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQor
ICAgICAgICByZXR1cm4gcmVhc29uRm9yU3RvcHBpbmc7CisKKyAgICBpZiAoYXV0byByZWFzb25G
b3JTdG9wcGluZyA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQs
IG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgcmV0dXJuIHJlYXNvbkZvclN0b3BwaW5n
OwogCiAgICAgaXRlbS5hcHBseShtX2NvbnRleHQpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdCkKK1JlcGxheVJl
c3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wg
dHJhY2tSZXBsYXlMaXN0KQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0
cmVhbSA8PCAiXG5SZXBsYXlpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwogICAgIFVO
VVNFRF9QQVJBTShpbml0aWFsQ2xpcCk7CkBAIC05NywxNCArMTA0LDIxIEBAIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBib29sCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIHNpemVfdCBpID0gMDsKICNlbmRp
ZgotICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50XSA6IG1fZGlzcGxheUxpc3QpIHsKKyAgICBS
ZXBsYXlSZXN1bHQgcmVzdWx0OworICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6
ZUluQnVmZmVyXSA6IG1fZGlzcGxheUxpc3QpIHsKICAgICAgICAgaWYgKCFpbml0aWFsQ2xpcC5p
c1plcm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0cyhpbml0aWFsQ2xpcCkpIHsK
ICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAic2tp
cHBpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOworICAgICAgICAgICAgcmVzdWx0Lm51bWJl
ck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVh
bSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwotICAgICAgICBhcHBseUl0
ZW0oaXRlbSk7CisgICAgICAgIGlmIChhdXRvIHJlYXNvbkZvclN0b3BwaW5nID0gYXBwbHlJdGVt
KGl0ZW0pKSB7CisgICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29u
Rm9yU3RvcHBpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJl
c3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogCiAgICAgICAgIGlm
IChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKSB7CiAgICAgICAgICAgICByZXBsYXlMaXN0LT5h
cHBlbmQoaXRlbSk7CkBAIC0xMTMsNyArMTI3LDggQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlM
aXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiByZXBsYXlMaXN0OworICAgIHJlc3VsdC50
cmFja2VkRGlzcGxheUxpc3QgPSBXVEZNb3ZlKHJlcGxheUxpc3QpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuaAppbmRleCAyYzAxOWVlMGNjOGEzNmUyYzRmNWQyNTMwMjAwZjg3NWQx
NmFkZTAwLi5lNjc4Yjg2MDYyY2VkYjYxMmFlOGJjZWQ3YzBiNzg4NDU2N2MzNzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTM4LDYgKzM4LDE4IEBAIGNsYXNz
IEltYWdlRGF0YTsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51bSBjbGFzcyBTdG9w
UmVwbGF5UmVhc29uIDogdWludDhfdCB7CisgICAgUmVwbGF5ZWRBbGxJdGVtcywKKyAgICBNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsCisgICAgRGVjb2RpbmdGYWlsdXJlIC8vIEZJWE1FOiBQcm9wYWdh
dGUgZGVjb2RpbmcgZXJyb3JzIHRvIGRpc3BsYXkgbGlzdCByZXBsYXkgY2xpZW50cyB0aHJvdWdo
IHRoaXMgZW51bSBhcyB3ZWxsLgorfTsKKworc3RydWN0IFJlcGxheVJlc3VsdCB7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiB0cmFja2VkRGlzcGxheUxpc3Q7CisgICAgc2l6ZV90
IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9OworICAgIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uRm9y
U3RvcHBpbmcgeyBTdG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zIH07Cit9OworCiBj
bGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5ZXIpOwogcHVi
bGljOgpAQCAtNDUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZl
ckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIs
IERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXko
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3Qg
PSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNl
KTsKIAogICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6CkBAIC01NCw4ICs2Niw4IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SXRlbShJdGVt
SGFuZGxlKTsKLSAgICAKKyAgICBPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiBhcHBseUl0ZW0o
SXRlbUhhbmRsZSk7CisKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25z
dCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hN
YXAmIG1faW1hZ2VCdWZmZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCA3OWQ0ODdkMjA2MjZiNWFlYzcwZGFh
Nzg2MmQ4Y2E3MGQ2ZTViMWJiLi41NmRmNDc1Yzc4ZmNiMDI0MDZhODRhOGUxZDQ3ODk3NTlkM2Ux
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXIuaApAQCAtNjUsMTcgKzY1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi1wcml2YXRlOgotICAgIHZvaWQgc3VibWl0
RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCkgb3ZlcnJpZGUKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QpCiAgICAgewotICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHko
KSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdl
cywgdGhpcyB9OwotICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisKKyAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKKyAgICAgICAgY29u
c3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJl
c291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKKyAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQo
KSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKKyAg
ICAgICAgcmV0dXJuIHJlcGxheWVyLnJlcGxheSgpOwogICAgIH0KIAorcHJpdmF0ZToKICAgICBi
b29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChp
dGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCA2YzczM2NkYTE5ZDY1ZWM1N2M1MDNiNzZmY2RjYWQ3NWQwMzk5
ZjhhLi4zYjJjNDU3YjJjMDkwYmMzNzc2OTQ4NmU5NjU1YjU2MjcxNmFjZjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDEwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKEltYWdlQnVmZmVyJiBkZXN0aW5h
dGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBkZXN0aW5hdGlv
bi5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGVzdGluYXRp
b24uaXNBY2NlbGVyYXRlZCgpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxh
eUxpc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRp
c3BsYXlMaXN0KTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0
OwogICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCmluZGV4IDcxOWZmMTkyOTNlNzMwOWRmYzYzYjI0ZmQ1ODM3ZGUyMDczMTYwZWIu
LmZlMWJlMjY3YmQ1MmIxYWIyZTBjMDNiYTBiYzUxZGYxNjFlODQ5ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1z
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4K
QEAgLTIwNCw3ICsyMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFy
KCk7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHZvaWQg
c3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0NWVk
ODJiNTcyZTc0NzNlNjJjODdmMmU0ZTJmYzVmZjgyMjI3MjAuLjA2ZDg1YmJlNmQxMGMxOTNjYTM4
YjU5NGFjNTM2ZDQ4OTkzYzY2YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMS0xOCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29uY3VycmVudCBkaXNwbGF5
IGxpc3RzXSBBZGQgYSB3YXkgZm9yIGRpc3BsYXkgbGlzdHMgdG8gcGFydGlhbGx5IHJlcGxheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDY3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVz
dCB0aGF0IGV4ZXJjaXNlcyBwYXJ0aWFsIGRpc3BsYXkgbGlzdCByZXBsYXkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMS0xOCAgTWljaGFlbCBDYXRhbnph
cm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICBbV1BFXVtHVEtdIFVwZGF0ZSBP
dXRsb29rIHVzZXIgYWdlbnQgcXVpcmsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEwOWU2
MGExMzRlZjlhZTIwM2ExMzlmMWNmYjE4MGY1OTUxMDI5OC4uMzEwOTJjMjZlMzhlZDdjMTkwNzZl
ZjJlMjgzYmI3MDc4YTZkNDgzMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDUsNiAr
MTE0NSw3IEBACiAJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSAq
LzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUucG5n
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLzsgfTsKIAkJ
RjQ1NkFCMUMyMTNFREJBMzAwQ0IyQ0VGIC8qIEZvbnRNYW5hZ2VyVGVzdHMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU2QUIxQjIxM0VEQkEzMDBD
QjJDRUYgLyogRm9udE1hbmFnZXJUZXN0cy5tbSAqLzsgfTsKKwkJRjQ1NzI3NUUyNTU3OEQwNjAw
N0FDQTM0IC8qIERpc3BsYXlMaXN0VGVzdHNDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU3Mjc1RDI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcCAqLzsgfTsKIAkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBh
c3RlTWl4ZWRDb250ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1t
ICovOyB9OwogCQlGNDU3QTlENjIwMkQ2OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1
N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sICovOyB9OwogCQlGNDVC
NjNGQjFGMTk3RjRBMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1QjYzRkExRjE5N0YzMzAwOUQz
OEI5IC8qIGltYWdlLW1hcC5odG1sICovOyB9OwpAQCAtMjg4OSw2ICsyODkwLDcgQEAKIAkJRjQ1
MTdCNjYyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQt
c3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLnBuZyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NTZBQjFCMjEzRURCQTMwMENCMkNFRiAvKiBGb250TWFuYWdl
clRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9udE1hbmFnZXJUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1NzI3NUQyNTU3OEQwNjAwN0FDQTM0IC8qIERp
c3BsYXlMaXN0VGVzdHNDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwOyBwYXRoID0gY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRGF0YVRyYW5zZmVyLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0
ZU1peGVkQ29udGVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlTWl4ZWRDb250ZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVCNjNGQTFGMTk3RjMzMDA5RDM4
QjkgLyogaW1hZ2UtbWFwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1hZ2UtbWFwLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ4NCw2ICszNDg2LDcgQEAKIAkJNDQwQTFEMzYxNEEw
MTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUY0NTcyNzVCMjU1NzhDOUUwMDdBQ0EzNCAvKiBjZyAqLywKIAkJCQlD
RDg5RDAzNzFDNEVEQjEzMDAwNDBBMDQgLyogY29jb2EgKi8sCiAJCQkJQTFFQzExODUxRjQyNTNE
OTAwRDAxNDZFIC8qIGlvcyAqLywKIAkJCQlBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcgLyogQWJv
cnRhYmxlVGFza1F1ZXVlLmNwcCAqLywKQEAgLTQ2OTIsNiArNDY5NSwxNCBAQAogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjQ1NzI3NUIyNTU3
OEM5RTAwN0FDQTM0IC8qIGNnICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlGNDU3Mjc1RDI1NTc4RDA2MDA3QUNBMzQgLyogRGlzcGxheUxpc3RUZXN0c0NH
LmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gY2c7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KQEAgLTUxNTAsNiArNTE2MSw3IEBACiAJCQkJQUQ1N0FDMjExREE3
NDY1QjAwRkYxQkRFIC8qIERpZFJlbW92ZUZyYW1lRnJvbUhpZWFyY2h5SW5QYWdlQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkVDMkE4NTQyNENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93
Vk1FbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDA5NENDNzI1NTQ1QkQ1MDAzRDczRTMg
LyogRGlzcGxheUxpc3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDU3Mjc1RTI1NTc4
RDA2MDA3QUNBMzQgLyogRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTczQkQ3MzE4MjNBODQ2NTAwMDIwRjQ1MCAvKiBEaXNwbGF5TmFtZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxOEVFNTFCMjBBNzhEMDAwMEUwMjRGMyAvKiBEb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZUFmdGVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDdGRDE5MzIyNDE5MDg3
MDA3ODg3RjEgLyogRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwCmluZGV4IGM3NjJhMTliOGNlZWE5MzhiYzVlZGY4MjRmYTVlOTMxMGNmMDEyZGQuLjNl
Mjg1OWRiMDY5MGE1MWExMDljNzNiNzNjYjNjOGRlM2U0Mjc5OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKICAgICBF
WFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOwogCiAgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0
ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudF0gOiBsaXN0KSB7
CisgICAgZm9yIChhdXRvIFtoYW5kbGUsIGV4dGVudCwgc2l6ZV0gOiBsaXN0KSB7CiAgICAgICAg
IHN3aXRjaCAoaGFuZGxlLnR5cGUoKSkgewogICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6IHsKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5n
SXRlbSgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVu
ZEl0ZW1zKQogCiAgICAgbGlzdC5hcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7
IDAsIDAsIDEwMCwgMTAwIH0sIENvbG9yOjpibGFjayk7CiAKLSAgICBmb3IgKGF1dG8gW2hhbmRs
ZSwgZXh0ZW50XSA6IGxpc3QpIHsKKyAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXpl
XSA6IGxpc3QpIHsKICAgICAgICAgRVhQRUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhDb2xvcik7CiAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVj
dFdpdGhDb2xvcj4oKSk7CiAKQEAgLTIyMyw3ICsyMjMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVz
dHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlckNsaWVu
dCgmcmVhZGVyKTsKIAogICAgIFZlY3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAo
YXV0byBbaGFuZGxlLCBleHRlbnRdIDogc2hhbGxvd0NvcHkpCisgICAgZm9yIChhdXRvIFtoYW5k
bGUsIGV4dGVudCwgc2l6ZV0gOiBzaGFsbG93Q29weSkKICAgICAgICAgaXRlbVR5cGVzLmFwcGVu
ZChoYW5kbGUudHlwZSgpKTsKIAogICAgIEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0VtcHR5
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDM1Y2NiZmY1NTEyNzEzYmI0
MjkwYzA3NDcwMjA5YzhlZDRiNjEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShDRykKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0SXRlbXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgRGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OwordXNpbmcgbmFtZXNwYWNlIERpc3BsYXlMaXN0OworCitURVNUKERpc3BsYXlMaXN0VGVz
dHMsIFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCit7CisgICAgY29uc3RleHByIENHRmxvYXQg
Y29udGV4dFdpZHRoID0gMTAwOworICAgIGNvbnN0ZXhwciBDR0Zsb2F0IGNvbnRleHRIZWlnaHQg
PSAxMDA7CisKKyAgICBGbG9hdFJlY3QgY29udGV4dEJvdW5kcyB7IDAsIDAsIGNvbnRleHRXaWR0
aCwgY29udGV4dEhlaWdodCB9OworCisgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gY2dD
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdp
ZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLmdldCgp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHQg
Y29udGV4dCB7IGNnQ29udGV4dC5nZXQoKSB9OworCisgICAgYXV0byBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisKKyAgICBE
aXNwbGF5TGlzdCBsaXN0OworCisgICAgbGlzdC5hcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPihD
b2xvcjo6Z3JlZW4pOworICAgIGxpc3QuYXBwZW5kPEZpbGxSZWN0Pihjb250ZXh0Qm91bmRzKTsK
KyAgICBsaXN0LmFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwg
Y29udGV4dEJvdW5kcywgY29udGV4dEJvdW5kcywgSW1hZ2VQYWludGluZ09wdGlvbnMgeyB9KTsK
KyAgICBsaXN0LmFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oQ29sb3I6OnJlZCk7CisgICAg
bGlzdC5hcHBlbmQ8U3Ryb2tlTGluZT4oRmxvYXRQb2ludCB7IDAsIGNvbnRleHRIZWlnaHQgfSwg
RmxvYXRQb2ludCB7IGNvbnRleHRXaWR0aCwgMCB9KTsKKworICAgIHsKKyAgICAgICAgUmVwbGF5
ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0IH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVw
bGF5ZXIucmVwbGF5KCk7CisgICAgICAgIEVYUEVDVF9MVChyZXN1bHQubnVtYmVyT2ZCeXRlc1Jl
YWQsIGxpc3Quc2l6ZUluQnl0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQucmVhc29u
Rm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAg
ICBJbWFnZUJ1ZmZlckhhc2hNYXAgaW1hZ2VCdWZmZXJNYXA7CisgICAgICAgIGltYWdlQnVmZmVy
TWFwLnNldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxs
KCkpOworCisgICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY29udGV4dCwgbGlzdCwgJmltYWdl
QnVmZmVyTWFwIH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7Cisg
ICAgICAgIEVYUEVDVF9FUShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIGxpc3Quc2l6ZUluQnl0
ZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BS
ZXBsYXlSZWFzb246OlJlcGxheWVkQWxsSXRlbXMpOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gVVNFKENHKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>