<?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>231992</bug_id>
          
          <creation_ts>2021-10-19 15:27:50 -0700</creation_ts>
          <short_desc>[Cocoa] Merge and simplify the nsColor family of functions</short_desc>
          <delta_ts>2021-10-21 11:26:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andersca</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1806373</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-19 15:27:50 -0700</bug_when>
    <thetext>Merge and simplify the nsColor family of functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806648</commentid>
    <comment_count>1</comment_count>
      <attachid>441886</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-20 09:04:52 -0700</bug_when>
    <thetext>Created attachment 441886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806696</commentid>
    <comment_count>2</comment_count>
      <attachid>441897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-20 10:52:46 -0700</bug_when>
    <thetext>Created attachment 441897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806720</commentid>
    <comment_count>3</comment_count>
      <attachid>441906</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-20 11:24:44 -0700</bug_when>
    <thetext>Created attachment 441906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806867</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-20 14:52:47 -0700</bug_when>
    <thetext>Passing all the EWS tests now so a good time for someone to review. Style feedback welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807148</commentid>
    <comment_count>5</comment_count>
      <attachid>441906</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2021-10-21 08:12:38 -0700</bug_when>
    <thetext>Comment on attachment 441906
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/ColorCocoa.mm:38
&gt; +RetainPtr&lt;UIColor&gt; cocoaColor(const Color&amp; color)

Can/should this assert if the passed in color is invalid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807261</commentid>
    <comment_count>6</comment_count>
      <attachid>441906</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-21 11:08:01 -0700</bug_when>
    <thetext>Comment on attachment 441906
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/ColorCocoa.mm:38
&gt;&gt; +RetainPtr&lt;UIColor&gt; cocoaColor(const Color&amp; color)
&gt; 
&gt; Can/should this assert if the passed in color is invalid?

Currently the behavior is to treat invalid colors as transparent. Removing this feature and instead requiring that no one pass any invalid colors would probably be OK, but I’d want to review that change one call site at a time.

If I was *sure* that no one needed the &quot;treat invalid as transparent&quot; behavior, I would be tempted to just merge the cocoaColorOrNil behavior in to the cocoaColor function and not have two.

This makes me re-discover why I like std::optional better than types like RefPtr, WTF::String, and WTF::Color that have the null value built-in. It’s not easy to see if nulls are expected or an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807280</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-21 11:25:16 -0700</bug_when>
    <thetext>Committed r284630 (243351@main): &lt;https://commits.webkit.org/243351@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807281</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-21 11:26:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84516075&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441886</attachid>
            <date>2021-10-20 09:04:52 -0700</date>
            <delta_ts>2021-10-20 10:52:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231992-20211020090451.patch</filename>
            <type>text/plain</type>
            <size>77974</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUxNmQ5MWU4OTdiNTU5
ZmQ0NGE3ZTYyOTAxMmMwZjQ4ZTA1Mjg0Yy4uYzFiMmUxYTk5ZGQ3OTdkMjBjZGEwNjMyYmJjY2Y0
YjEwOTE2NGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMS0xMC0xOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNZXJnZSBhbmQg
c2ltcGxpZnkgdGhlIG5zQ29sb3IgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRlZCBhIENvY29hQ29sb3IgdHlw
ZSB0aGF0IGlzIE5TL1VJQ29sb3IuCisgICAgICAgIC0gUmVuYW1lZCBwbGF0Zm9ybUNvbG9yIHRv
IGNvY29hQ29sb3IgdG8gYmUgbGVzcyB2YWd1ZS4KKyAgICAgICAgLSBSZW1vdmVkIG5zQ29sb3Iu
CisgICAgICAgIC0gQWRkZWQgY29jb2FDb2xvck9yTmlsLgorICAgICAgICAtIE1lcmdlZCBjb2xv
ckZyb21OU0NvbG9yIGFuZCBjb2xvckZyb21VSUNvbG9yIGludG8gYSBzaW5nbGUKKyAgICAgICAg
ICBjb2xvckZyb21Db2NvYUNvbG9yIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIENvbG9ySU9TLmguCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAg
ICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFk
IG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFy
eSBjb25zdCk6IFVzZSBjb2NvYUNvbG9yCisgICAgICAgIGluc3RlYWQgb2YgcGxhdGZvcm1Db2xv
ci4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdyBjb25zdCk6IERpdHRvLgorCisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZl
cnRlcjo6X2NvbG9yRm9yRWxlbWVudCk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAg
ICAgcGxhdGZvcm1Db2xvci4KKyAgICAgICAgKFdlYkNvcmU6OmVkaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICBuc0NvbG9yLgorCisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IKKyAgICAg
ICAgaW5zdGVhZCBvZiBjb2xvckZyb21OU0NvbG9yLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RHJhZ0ltYWdlRm9yQ29sb3IpOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mCisgICAgICAgIG5z
Q29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmg6
IEFkZGVkIGFuIGluY2x1ZGUgb2YKKyAgICAgICAgIkNvbG9yLmgiIHNvIHRoaXMgZnVuY3Rpb25z
IGFzIGFuIGFkZGl0aW9uIHRvIHRoYXQgaGVhZGVyCisgICAgICAgIGluc3RlYWQgb2Ygc29tZXRo
aW5nIGluZGVwZW5kZW50LiBBZGRlZCBhIFdlYkNvcmU6OkNvY29hQ29sb3IKKyAgICAgICAgdHlw
ZSwgbGlrZSB0aGUgb25lIHdlIGFscmVhZHkgaGF2ZSBpbiBXZWJLaXQsIHRvIGN1dCBkb3duIG9u
CisgICAgICAgIHRoZSBuZWVkIHRvIGRvICNpZiBhbmQgI2Vsc2Ugc28gbXVjaC4gUmVuYW1lZCB0
aGUKKyAgICAgICAgcGxhdGZvcm1Db2xvciBmdW5jdGlvbiB0byBjb2NvYUNvbG9yLCBhZGRlZCBh
CisgICAgICAgIGNvY29hQ29sb3JPck5pbCBmdW5jdGlvbiwgYW5kIHJlbmFtZWQgYm90aCBjb2xv
ckZyb21OU0NvbG9yCisgICAgICAgIGFuZCBjb2xvckZyb21VSUNvbG9yIHRvIGNvbG9yRnJvbUNv
Y29hQ29sb3IgYW5kIG1vdmVkIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Db2xvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29jb2FDb2xvcik6IFJlbmFt
ZWQgdGhlIGlPUyBwbGF0Zm9ybUNvbG9yIHRvIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpjb2Nv
YUNvbG9yT3JOaWwpOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5oOiBJbmNsdWRlIG9mICJDb2xvckNvY29hLmgiCisgICAgICAgIGluc3RlYWQgb2Yg
IkNvbG9yLmgiIGhlcmUuIE1vdmVkIGNvbG9yRnJvbU5TQ29sb3IgYW5kIG5zQ29sb3IuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKTogUmVuYW1lZCBmcm9tIGNvbG9yRnJvbU5TQ29sb3Iu
CisgICAgICAgIChXZWJDb3JlOjpjb2NvYUNvbG9yKTogUmVuYW1lZCBmcm9tIG5zQ29sb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQ29sb3JJT1MuaDogUmVtb3ZlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9Db2xvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yRnJvbUNv
Y29hQ29sb3IpOiBSZW5hbWVkIGZyb20gY29sb3JGcm9tVUlDb2xvci4KKworICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZAorICAg
ICAgICBvZiArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlOjpMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBv
ZiBuc0NvbG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IpOiBVc2Ug
Y29sb3JGcm9tQ29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3Iu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKTogVXNlIGNv
Y29hQ29sb3IgaW5zdGVhZAorICAgICAgICBvZiBuc0NvbG9yLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0NlbGxGb2N1c1JpbmdX
aXRoRnJhbWVBdFRpbWUpOiBVc2UgY29sb3JGcm9tQ29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFk
IG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRGb250QXR0cmli
dXRlQ2hhbmdlcyk6IERJdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZvY3VzUmluZ0Nv
bG9yKTogVXNlCisgICAgICAgIGNvbG9yRnJvbUNvY29hQ29sb3IgaW5zdGVhZCBvZiBjb2xvckZy
b21VSUNvbG9yLgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEFjdGlvbkNvbG9yKTogVXNl
IGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xv
cjpdIGFuZCBjYWNoZWRDR0NvbG9yIGFuZCByZXR1cm4gYQorICAgICAgICBSZXRhaW5QdHIgdG8g
YXZvaWQgYXV0b3JlbGVhc2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5m
bzo6UmVuZGVyQXR0YWNobWVudEluZm8pOiBVcGRhdGUgZm9yCisgICAgICAgIHRoZSB1c2VyIG9m
IHRoZSBSZXRhaW5QdHIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICBVc2UgY29sb3JGcm9tQ29jb2FDb2xv
ciBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
ciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRm
b3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUZvY3VzUmlu
Z0NvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1UZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybURlZmF1bHRCdXR0b25UZXh0Q29sb3Ig
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9yRm9yQXR0YWNo
bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6bGF5T3V0
VGl0bGUpOiBSZW1vdmVkIGluY29ycmVjdCBjYXN0IHRoYXQgc2FpZCBpdAorICAgICAgICB3YXMg
Y2FzdGluZyBhIENHQ29sb3JSZWYgdG8gYW4gTlNDb2xvciAqLCB3aGljaCBhcmUgbm90IHRvbGwt
ZnJlZSBicmlkZ2VkLiBUaGlzCisgICAgICAgIGNvZGUganVzdCBuZWVkcyBhIENHQ29sb3JSZWYg
aW4gYSBkaWN0aW9uYXJ5LCBzbyB3ZSBqdXN0IG5lZWQgdG8gY2FzdCB0byBpZCwKKyAgICAgICAg
bm90IHRvIGEgTlNDb2xvciAqLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6
bGF5T3V0U3VidGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVu
dFRpdGxlQmFja2dyb3VuZCk6IFVzZSBjb2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YKKyAg
ICAgICAgY29sb3JGcm9tTlNDb2xvci4KKwogMjAyMS0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgYXNzZXJ0aW9uIGluIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzU1MWI5MGU2YzcyYjAwMWUzOTQ0
Y2Q4MTc3YTU0OGUyNTBiYzI2My4uMDk3MDI2NGYxYzViYTg5YzYxNWQzYTcxNzZiMTUxMzIyZWFh
NjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAyMS0xMC0xOSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNZXJnZSBhbmQgc2ltcGxpZnkg
dGhlIG5zQ29sb3IgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbToKKyAgICAgICAgKElQQzo6ZW5jb2RlQ29sb3JJbnRlcm5hbCk6IE1lcmdlZCB0aGUgTlND
b2xvciBhbmQgVUlDb2xvcgorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgaW50byBhIHNpbmdsZSBv
bmUgdGhhdCB1c2VzIENvY29hQ29sb3IuCisgICAgICAgIChJUEM6OmRlY29kZUNvbG9ySW50ZXJu
YWwpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgdGhlbWVDb2xvcl0pOiBVc2UgY29jb2FDb2xvck9yTmls
IGluc3RlYWQKKyAgICAgICAgb2YgaXNWYWxpZCBhbmQgcGxhdGZvcm1Db2xvci4KKyAgICAgICAg
KC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOiBVc2UgY29jb2FDb2xvcgor
ICAgICAgICBpbnN0ZWFkIG9mIHBsYXRmb3JtQ29sb3IuCisgICAgICAgICgtW1dLV2ViVmlldyBf
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXSk6IFVzZSBjb2NvYUNvbG9yT3JOaWwKKyAgICAg
ICAgaW5zdGVhZCBvZiBpc1ZhbGlkIGFuZCBwbGF0Zm9ybUNvbG9yLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAgICAgICgtW19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgdGhlbWVDb2xvcl0pOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkCisg
ICAgICAgIG9mIHBsYXRmb3JtQ29sb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlU2Nyb2xsVmlld0Jh
Y2tncm91bmRdKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZAorICAgICAgICBvZiAtW1VJQ29sb3Ig
aW5pdFdpdGhDR0NvbG9yOl0gYW5kIGNhY2hlZENHQ29sb3IuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NlcmlhbGl6ZWRTZWxlY3Rpb25DYXJldEJhY2tncm91bmRDb2xvckZvclRlc3RpbmddKToKKyAg
ICAgICAgVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IgaW5zdGVhZCBvZiBjb2xvckZyb21VSUNvbG9y
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
LVtXS1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIF93a0NoYW5nZUNvbG9yOl0pOiBVc2UgY29j
b2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIG5zQ29sb3IuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIpOiBVc2UgY29sb3JGcm9tQ29jb2FDb2xvcgor
ICAgICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRVbmRlcmxheUNvbG9yKTogVXNlIGNvY29hQ29sb3JPck5pbCBpbnN0ZWFk
CisgICAgICAgIG9mIGlzVmFsaWQgYW5kIG5zQ29sb3IuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp1bmRlcmxheUNvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYW5nZUZvbnRDb2xvckZyb21TZW5kZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6ZXh0cmFjdFVuZGVybGluZXMpOiBVc2UgY29sb3JGcm9t
Q29jb2FDb2xvciBpbnN0ZWFkIG9mCisgICAgICAgIGNvbG9yRnJvbU5TQ29sb3IuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbToKKyAgICAgICAg
KFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkZWxpdmVyRGVsYXllZERyb3BQcmV2
aWV3KTogVXNlCisgICAgICAgIGNvY29hQ29sb3IgaW5zdGVhZCBvZiArW1VJQ29sb3IgY29sb3JX
aXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpEcmFnRHJv
cEludGVyYWN0aW9uU3RhdGU6OnByZXZpZXdGb3JEcmFnSXRlbSBjb25zdCk6IERpdHRvLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOiBV
c2UgY29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIC1bVUlDb2xvciBpbml0V2l0aENHQ29s
b3I6XSBhbmQgY2FjaGVkQ0dDb2xvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVU
YXBIaWdobGlnaHRdKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICAtW1VJQ29s
b3IgaW5pdFdpdGhDR0NvbG9yOl0gYW5kIGNhY2hlZENHQ29sb3IuCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2Nhc2NhZGVJbnRlcmFjdGlvblRpbnRDb2xvcl0pOiBVc2UgY29jb2FDb2xvcgor
ICAgICAgICBpbnN0ZWFkIG9mICtbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOl0gYW5kIGNhY2hl
ZENHQ29sb3IuCisgICAgICAgIChjb21wb3NpdGlvbkhpZ2hsaWdodHMpOiBVc2UgY29sb3JGcm9t
Q29jb2FDb2xvciBpbnN0ZWFkIG9mCisgICAgICAgIGNvbG9yRnJvbVVJQ29sb3IuCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZVRhcmdldGVkQ29udGV4dE1lbnVIaW50UHJldmlld0lm
UG9zc2libGVdKTogVXNlCisgICAgICAgIGNvY29hQ29sb3IgaW5zdGVhZCBvZiArW1VJQ29sb3Ig
Y29sb3JXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW06CisgICAgICAgICgtW1dLQ29sb3JQ
aWNrZXIgZm9jdXNlZEVsZW1lbnRTdWdnZXN0ZWRDb2xvcnNdKTogVXNlIGNyZWF0ZU5TQXJyYXkK
KyAgICAgICAgYW5kIGNvY29hQ29sb3IgaW5zdGVhZCBvZiArW05TTXV0YWJsZUFycmF5IGFycmF5
XSwgYSBmb3IgbG9vcCwKKyAgICAgICAgLVtOU011dGFibGVBcnJheSBhZGRPYmplY3Q6XSwgK1tV
SUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6XSwgYW5kIGNhY2hlZENHQ29sb3IKKyAgICAgICAgKC1b
V0tDb2xvclBpY2tlciB1cGRhdGVDb2xvclBpY2tlclN0YXRlXSk6IFVzZSBjb2NvYUNvbG9yIGlu
c3RlYWQgb2YKKyAgICAgICAgK1tVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6XSBhbmQgY2FjaGVk
Q0dDb2xvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2NlbnRDb2xvcik6IFVzZSBjb2Nv
YUNvbG9yIGluc3RlYWQgb2YgbnNDb2xvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29sb3JQaWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyTWFjOjpz
ZXRTZWxlY3RlZENvbG9yKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBvZiBuc0NvbG9yLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlck1hYzo6c2hvd0NvbG9yUGlja2VyKTogRGl0dG8u
CisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIHNldEFuZFNob3dQaWNrZXI6d2l0aENvbG9y
OnN1Z2dlc3Rpb25zOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tDb2xvclBvcG92ZXJNYWMgZGlk
Q2hvb3NlQ29sb3I6XSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6IFVzZQorICAgICAg
ICBjb2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YgY29sb3JGcm9tTlNDb2xvcgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY2NlbnRDb2xvcik6IFVz
ZSBjb2NvYUNvbG9yT3JOaWwgaW5zdGVhZCBvZgorICAgICAgICBpc1ZhbGlkIGFuZCBuc0NvbG9y
LgorCiAyMDIxLTEwLTE5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRm9sbG93LXVwICMyOiBXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVu
dGlhbFByaXZhdGVLZXkgbGVha3MgYW4gTlNNdXRhYmxlRGljdGlvbmFyeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDNlMDA0NGVjZjRlZTQyMjhlZmZmMzYyMzkyZTNiMTk4MGU3Zjk1
YWMuLjE1ODI5NDVhNDczZDgzN2FiZjFmNTI4M2EyMzdhNWViOThjNmExOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMS0xMC0xOSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNZXJnZSBhbmQgc2ltcGxp
ZnkgdGhlIG5zQ29sb3IgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NUkdCQ29sb3IubW06CisgICAgICAg
ICgtW0RPTVJHQkNvbG9yIGNvbG9yXSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YgbnNDb2xv
ci4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW06CisgICAgICAgICgt
W05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0ZXh0Q29sb3I6XSk6IFVzZSBjb2xvckZy
b21Db2NvYUNvbG9yCisgICAgICAgIGluc3RlYWQgb2YgY29sb3JGcm9tTlNDb2xvci4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF91cGRhdGVC
YWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuXSk6IFVzZQorICAgICAgICBjb2xvckZy
b21Db2NvYUNvbG9yIGluc3RlYWQgb2YgY29sb3JGcm9tTlNDb2xvci4KKyAgICAgICAgKC1bV2Vi
RnJhbWUgX2JvZHlCYWNrZ3JvdW5kQ29sb3JdKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBvZgor
ICAgICAgICBuc0NvbG9yLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAg
ICAgICAgKGV4dHJhY3RVbmRlcmxpbmVzKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IgaW5zdGVh
ZCBvZgorICAgICAgICBjb2xvckZyb21OU0NvbG9yLgorCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGluaXRXaXRoSW1hZ2U6
dGV4dEluZGljYXRvckRhdGE6c2NhbGU6XSk6CisgICAgICAgIFVzZSBjb2NvYUNvbG9yIGluc3Rl
YWQgb2YgLVtVSUNvbG9yIGluaXRXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorICAg
ICAgICAoLVtXZWJUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2ViQ2hhbmdlQ29sb3I6XSk6
IFVzZSBjb2xvckZyb21Db2NvYUNvbG9yCisgICAgICAgIGluc3RlYWQgb2YgY29sb3JGcm9tTlND
b2xvci4KKyAgICAgICAgKC1bV2ViVmlldyB1cGRhdGVUZXh0VG91Y2hCYXJdKTogVXNlIGNvY29h
Q29sb3IgaW5zdGVhZCBvZiBuc0NvbG9yLgorCiAyMDIxLTEwLTE5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgY2FjaGVkQ0dDb2xvcigpIGFuZCBuc0NvbG9yKCkg
c2hvdWxkIHJldHVybiBzbWFydCBwb2ludGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjNzM1OTk3OWQ5ZjdhMTIwOTQwZmI3
MmZmYTkzZjMzMzc2ZTNlZjguLjhjZGZkYjg0MGYwOTFiZTQwZmYyNGUwYTI2NDNlOWU5NDI3ZWRm
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ2MDAsNyArNDYwMCw2IEBACiAJCUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAv
KiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNDU5NDZGMjQxMjNDOTYwMDc4MDE5RiAvKiBBbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NTk0NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9T
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTUxNjlF
NTIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTVGQTI1NTIwOUU0OEM1MDA1MUQ3MDAgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTVGQTI1MzIwOUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3Vy
aXR5UG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0U2REFERkExQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNFNzk5Rjk4MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTc5OUY5NjFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5oICovOyB9OwpAQCAtMTU1NDUsNyArMTU1NDQsNiBAQAogCQlDRTI4NDk4
ODFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0
NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDY1MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDRTUxNjlFNTIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29sb3JJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1MTY5RTYy
MUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29s
b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUNCMUIzMTRFREFCNkYw
MEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVGQTI1MzIw
OUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oOyBwYXRoID0gY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUw
MTMsNyArMjUwMTEsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdGNTA2ODAw
REE2M0E2IC8qIHdhayAqLywKIAkJCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJh
Y3RQYXN0ZWJvYXJkLmggKi8sCi0JCQkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi8sCiAJCQkJQ0U1MTY5RTYyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLm1tICov
LAogCQkJCUExRUQ3NzhBMUJFMzI5M0YwMERDMTc5MSAvKiBEZXZpY2UuY3BwICovLAogCQkJCUEx
RUQ3NzhCMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2UuaCAqLywKQEAgLTMyMDc0LDcgKzMyMDcx
LDYgQEAKIAkJCQlDRDNFRUYzQzI1Nzk5RkFCMDA2NTYzQkIgLyogQ29sb3JHYW11dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9ySGFzaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29s
b3JJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBD
b2xvckx1bWluYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2
QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBF
NjFENTkgLyogQ29sb3JNYXRyaXguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAyZjI5MTg5ODk3Y2IzODVlMWM2YmRmMDVkNjg4MTdj
NmRkMmFlY2IxLi4xYjcxZGE1NDJjMGM0ZDMzZjI4OTQzMjMxODUyNTlmNzI3Nzg1MzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtODU0LDggKzg1NCw4IEBA
IHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250KGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvbnRUZXh0QXR0cmlidXRlLCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCksIHJhbmdlKTsKICAgICAKICAgICAvLyBz
ZXQgYmFzaWMgY29sb3JzCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5n
LCBOU0FjY2Vzc2liaWxpdHlGb3JlZ3JvdW5kQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKHN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSkuZ2V0KCksIHJhbmdl
KTsKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJp
bGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkuZ2V0KCksIHJhbmdlKTsK
KyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0
eUZvcmVncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3Ioc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKS5nZXQoKSwgcmFuZ2UpOworICAgIEFYQXR0
cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5QmFja2dyb3Vu
ZENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKS5nZXQoKSwgcmFuZ2UpOwogICAgIAogICAg
IC8vIHNldCBzdXBlci9zdWIgc2NyaXB0aW5nCiAgICAgVmVydGljYWxBbGlnbiBhbGlnbm1lbnQg
PSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CkBAIC04OTAsMTIgKzg5MCwxMiBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0
dHJTdHJpbmcsIFJlbgogCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRl
cmxpbmUpIHsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsK
LSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGRlY29yYXRpb25T
dHlsZXMudW5kZXJsaW5lQ29sb3IpLmdldCgpLCByYW5nZSk7CisgICAgICAgICAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNv
bG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNv
bG9yKS5nZXQoKSwgcmFuZ2UpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoZGVj
b3IgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHsKICAgICAgICAgICAgIEFYQXR0cmli
dXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91
Z2hUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xv
clRleHRBdHRyaWJ1dGUsIG5zQ29sb3IoZGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9y
KS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRl
LCBjb2NvYUNvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJh
bmdlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQppbmRleCAyYTNjMWU0ODYxZDJjYjM4
NTdjMjk4YWFkMWM5ZmM4MjA4ZWE5OWIyLi40NGI0ODdjMjIxOGQ0YjZiOTIwMDEwNzU2MDliOTli
YjhmZDQyMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRB
dHRyaWJ1dGVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250
QXR0cmlidXRlc0NvY29hLm1tCkBAIC05MSwxMCArOTEsMTAgQEAgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gRm9udEF0dHJpYnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdAogICAgICAgICBh
dHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdID0gZm9udC5nZXQoKTsKIAogICAgIGlmIChm
b3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBhdHRyaWJ1dGVzW05TRm9yZWdyb3Vu
ZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNvbG9yKGZvcmVncm91bmRDb2xvcikuZ2V0
KCk7CisgICAgICAgIGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSA9
IGNvY29hQ29sb3IoZm9yZWdyb3VuZENvbG9yKS5nZXQoKTsKIAogICAgIGlmIChiYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKQotICAgICAgICBhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0
cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNvbG9yKGJhY2tncm91bmRDb2xvcikuZ2V0KCk7CisgICAg
ICAgIGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSA9IGNvY29hQ29s
b3IoYmFja2dyb3VuZENvbG9yKS5nZXQoKTsKIAogICAgIGlmIChmb250U2hhZG93LmNvbG9yLmlz
VmFsaWQoKSAmJiAoIWZvbnRTaGFkb3cub2Zmc2V0LmlzWmVybygpIHx8IGZvbnRTaGFkb3cuYmx1
clJhZGl1cykpCiAgICAgICAgIGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSA9IGZv
bnRTaGFkb3cuY3JlYXRlU2hhZG93KCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCmluZGV4IDhlZjhhMDNjYmY1YTI0ZjA2Yzk3MTAw
M2MzOTFhYzU4MzI5ZjNkOGUuLmM1MGRiYmJlZGM3MjNmNjQ5YTkwOTk0NThjMWVkYjE1NzUxNDA2
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29h
Lm1tCkBAIC00Miw3ICs0Miw3IEBAIFJldGFpblB0cjxOU1NoYWRvdz4gRm9udFNoYWRvdzo6Y3Jl
YXRlU2hhZG93KCkgY29uc3QKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBz
aGFkb3cgPSBhZG9wdE5TKFtQQUw6OmdldE5TU2hhZG93Q2xhc3MoKSBuZXddKTsKICNlbmRpZgot
ICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6cGxhdGZvcm1Db2xvcihjb2xvcikuZ2V0KCldOwor
ICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6Y29jb2FDb2xvcihjb2xvcikuZ2V0KCldOwogICAg
IFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0Om9mZnNldF07CiAgICAgW3NoYWRvdyBzZXRTaGFkb3dC
bHVyUmFkaXVzOmJsdXJSYWRpdXNdOwogICAgIHJldHVybiBzaGFkb3c7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggNzljNGYxMjY0NWNjOTIz
MjkzNWU0NjQ1OGNkN2QyODNkN2UxOTNjYS4uZDk0NGQ5ODRkYzNmOGUxOTM5ZjFmYzc0M2Y4YTk0
MGExNzdhMWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQpAQCAtOTEwLDcgKzkxMCw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUNvbG9yPiBIVE1M
Q29udmVydGVyOjpfY29sb3JGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIENTU1ByCiAgICAg
Q29sb3IgcmVzdWx0ID0gX2NhY2hlcy0+Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50
LCBwcm9wZXJ0eUlkKTsKICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgYXV0byBwbGF0Zm9ybVJlc3VsdCA9IHBsYXRmb3JtQ29sb3IocmVzdWx0KTsK
KyAgICBhdXRvIHBsYXRmb3JtUmVzdWx0ID0gY29jb2FDb2xvcihyZXN1bHQpOwogICAgIGlmIChb
W1BsYXRmb3JtQ29sb3JDbGFzcyBjbGVhckNvbG9yXSBpc0VxdWFsOnBsYXRmb3JtUmVzdWx0Lmdl
dCgpXSB8fCAoW3BsYXRmb3JtUmVzdWx0IGFscGhhQ29tcG9uZW50XSA9PSAwLjApKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIHJldHVybiBwbGF0Zm9ybVJlc3VsdDsKQEAgLTI0MjYsMTMgKzI0
MjYsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UsIEluY2x1ZGVJbWFnZXMKIAogICAgICAgICBDb2xvciBmb3JlZ3Jv
dW5kQ29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NT
UHJvcGVydHlDb2xvcik7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkp
Ci0gICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5zQ29sb3IoZm9yZWdyb3VuZENvbG9yKS5n
ZXQoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAg
IFthdHRycyBzZXRPYmplY3Q6Y29jb2FDb2xvcihmb3JlZ3JvdW5kQ29sb3IpLmdldCgpIGZvcktl
eTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBbYXR0cnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV07CiAKICAgICAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
ICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1Zpc2libGUoKSkKLSAgICAgICAgICAgIFth
dHRycyBzZXRPYmplY3Q6bnNDb2xvcihiYWNrZ3JvdW5kQ29sb3IpLmdldCgpIGZvcktleTpOU0Jh
Y2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0dHJzIHNldE9iamVj
dDpjb2NvYUNvbG9yKGJhY2tncm91bmRDb2xvcikuZ2V0KCkgZm9yS2V5Ok5TQmFja2dyb3VuZENv
bG9yQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFthdHRycyByZW1v
dmVPYmplY3RGb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQppbmRleCBhMDdk
NjQ2YTJlODBjMWZlM2U1MTU0YWQ3ZThmNmUwMTQ4OWViOWZhLi5lMzhkYWY4ODVhMzY0N2MwMGZj
NDk5YjA1NGYwZGJkZTk0MzkzN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzAyLDcgKzMwMiw3IEBAIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGVsZW1lbnQsIFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpCiAKICAgICBHcmFwaGljc0NvbnRleHRDRyBjb250ZXh0KFtOU0dyYXBoaWNzQ29u
dGV4dCBjdXJyZW50Q29udGV4dF0uQ0dDb250ZXh0KTsKIAotICAgIGNvbnRleHQuZmlsbFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobGF5b3V0LmJvdW5kaW5nUmVjdCwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkobGlua0ltYWdlQ29ybmVyUmFkaXVzKSksIGNvbG9yRnJvbU5TQ29sb3IoW05T
Q29sb3IgY29udHJvbEJhY2tncm91bmRDb2xvcl0pKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGxheW91dC5ib3VuZGluZ1JlY3QsIEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpKGxpbmtJbWFnZUNvcm5lclJhZGl1cykpLCBjb2xvckZyb21Db2NvYUNvbG9yKFtO
U0NvbG9yIGNvbnRyb2xCYWNrZ3JvdW5kQ29sb3JdKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGxhYmVsIDogbGF5b3V0LmxhYmVscykgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHNhdmVyKGNvbnRleHQpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGb3JDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0CiAgICAgTlNCZXppZXJQYXRoICpwYXRoID0gW05TQmV6aWVyUGF0aCBiZXppZXJQYXRo
V2l0aFJvdW5kZWRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgQ29sb3JTd2F0Y2hXaWR0aCwgQ29sb3JT
d2F0Y2hXaWR0aCkgeFJhZGl1czpDb2xvclN3YXRjaENvcm5lclJhZGl1cyB5UmFkaXVzOkNvbG9y
U3dhdGNoQ29ybmVyUmFkaXVzXTsKICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6Q29sb3JTd2F0Y2hT
dHJva2VTaXplXTsKIAotICAgIFtuc0NvbG9yKGNvbG9yKSBzZXRGaWxsXTsKKyAgICBbY29jb2FD
b2xvcihjb2xvcikgc2V0RmlsbF07CiAgICAgW3BhdGggZmlsbF07CiAKICAgICBbW05TQ29sb3Ig
cXVhdGVybmFyeUxhYmVsQ29sb3JdIHNldFN0cm9rZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmgKaW5kZXggMGFkNDIzMTYzYTcy
ZWFiMjI0NjMwMWEyZWM1YWQ1OWYzOTJlYzc2Ny4uYTFlMDAwYTNiNTg4MWFhYzliZDg2MWE0N2Zm
MGQ4MjUzMWVmNjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQ29sb3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0NvbG9yQ29jb2EuaApAQCAtMjUsMTkgKzI1LDMwIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW1wb3J0ICJDb2xvci5oIgorCisjaWYgVVNFKEFQUEtJVCkKIE9CSkNfQ0xBU1MgTlND
b2xvcjsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlD
b2xvcjsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwogCiAj
aWYgVVNFKEFQUEtJVCkKLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0NvbG9yPiBwbGF0Zm9y
bUNvbG9yKGNvbnN0IENvbG9yJik7Cit1c2luZyBDb2NvYUNvbG9yID0gTlNDb2xvcjsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxV
SUNvbG9yPiBwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJik7Cit1c2luZyBDb2NvYUNvbG9yID0g
VUlDb2xvcjsKICNlbmRpZgogCitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q29jb2FDb2xvcj4g
Y29jb2FDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENvY29h
Q29sb3I+IGNvY29hQ29sb3JPck5pbChjb25zdCBDb2xvciYpOyAvLyBSZXR1cm5zIG5pbCBpZiB0
aGUgY29sb3IgaXMgaW52YWxpZC4KK1dFQkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yRnJvbUNvY29h
Q29sb3IoQ29jb2FDb2xvciAqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KaW5k
ZXggNTYxZTY4NTRhZmY4MDU2ZDA2ZGQ3N2JkN2RmODU3ZTQyOGYxNjFlYS4uZTY3ZjYxMDU5OGQy
OTAzM2RhZjMzMWExZDI5ZTVkNjM5YzJiNGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKIAotI2ltcG9ydCAi
Q29sb3JNYWMuaCIKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxwYWwvaW9z
L1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CkBAIC0z
NSwyMiArMzMsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKEFQUEtJVCkK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi1SZXRhaW5QdHI8TlNDb2xvcj4gcGxhdGZvcm1D
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCitSZXRhaW5QdHI8VUlDb2xvcj4gY29jb2FDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG5zQ29sb3IoY29sb3IpOworICAgIHJl
dHVybiBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFn
ZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpXTsKIH0KIAogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi1SZXRhaW5QdHI8VUlDb2xvcj4gcGxh
dGZvcm1Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCitSZXRhaW5QdHI8VUlDb2xvcj4gY29jb2FD
b2xvck9yTmlsKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICByZXR1cm4gW1BBTDo6Z2V0VUlD
b2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xv
cjpjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV07CisgICAgcmV0dXJuIGNvbG9yLmlzVmFsaWQo
KSA/IGNvY29hQ29sb3IoY29sb3IpIDogbmlsOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMuaAppbmRleCA4ZTFjNDkwNTVjODg1MzQ3MzBhNjA5NTc4MGEwNTVlZDRhODE5ZGNiLi4y
ZDc2YzEzMDczZGJlODkwMTUxZWZlYjNhNWFlYzhiMzNjNTY4N2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaApAQCAtMjgsMTcgKzI4LDEz
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xv
ckNvY29hLmgiCiAKICNpZiBVU0UoQVBQS0lUKQogCi1PQkpDX0NMQVNTIE5TQ29sb3I7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29sb3JGcm9tTlNDb2xv
cihOU0NvbG9yICopOwogQ29sb3Igc2VtYW50aWNDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKik7
Ci1XRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNDb2xvcj4gbnNDb2xvcihjb25zdCBDb2xvciYp
OwogCiBXRUJDT1JFX0VYUE9SVCBib29sIHVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKCk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCmlu
ZGV4IDg3Njg4ODQ1NGEyMmM1ZmIyZDU4YWYzYmVjODc4NjlmZjY1NTY1ODIuLjU5ZThmYjVmNTI2
ZWVjN2Q4YzZjZDU5ZTg2ZjA5YTYyYjc3MzFkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXBsZUNvbG9yRnJvbU5TQ29s
b3IoTlNDb2xvciAqY29sb3IpCiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90
Pj4oU1JHQkE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0YXRp
Y19jYXN0PGZsb2F0PihncmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlQ29t
cG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKIH0KIAotQ29sb3IgY29sb3JG
cm9tTlNDb2xvcihOU0NvbG9yICpjb2xvcikKK0NvbG9yIGNvbG9yRnJvbUNvY29hQ29sb3IoTlND
b2xvciAqY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKGNv
bG9yKTsKIH0KQEAgLTExMyw3ICsxMTMsNyBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29s
b3IoTlNDb2xvciAqY29sb3IpCiAgICAgcmV0dXJuIENvbG9yKG1ha2VTaW1wbGVDb2xvckZyb21O
U0NvbG9yKGNvbG9yKSwgQ29sb3I6OkZsYWdzOjpTZW1hbnRpYyk7CiB9CiAKLVJldGFpblB0cjxO
U0NvbG9yPiBuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK1JldGFpblB0cjxOU0NvbG9yPiBj
b2NvYUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoYXV0byBzcmdiID0gY29s
b3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpIHsKICAgICAgICAgc3dpdGNoIChQYWNrZWRDb2xvcjo6
UkdCQSB7ICpzcmdiIH0udmFsdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9Db2xvcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9T
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNDRjMWRmYjY2NjI2NjUxYWI3MDMz
MGFkNjIyMGI3ZDlmMTk1M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9TLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJDb2xvci5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotT0JKQ19DTEFTUyBV
SUNvbG9yOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdFQkNPUkVfRVhQT1JUIENvbG9yIGNv
bG9yRnJvbVVJQ29sb3IoVUlDb2xvciAqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQppbmRleCA3YjFmNDU3
MTk1YzEyNmFiOGU2ZmJkZDZlYzZjNDA5NTFhYTQ0MDk5Li40MTJkZjg2YWNjZmU1NDM5Y2FlMWM0
OWU0YWUyMzYyOTdjMGE3N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQ29sb3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9T
Lm1tCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJDb2xvcklPUy5oIgorI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNv
bG9yIGNvbG9yRnJvbVVJQ29sb3IoVUlDb2xvciAqY29sb3IpCitDb2xvciBjb2xvckZyb21Db2Nv
YUNvbG9yKFVJQ29sb3IgKmNvbG9yKQogewogICAgIGlmICghY29sb3IpCiAgICAgICAgIHJldHVy
biB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQppbmRleCAwNDE1ZjA1YWFmZjRlYWU0OWU1YzkwYTVmNjc1ZGNmYmIyMjhh
NTFjLi4xNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpbXBvcnQg
IkNvbG9yLmgiCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
CkBAIC00MjEsOCArNDIxLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJk
KFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0ICpyZXByZXMKIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0
byByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkluZm9MaXN0IGFsbG9jXSBpbml0XSk7Ci0gICAgVUlDb2xvciAqdWlDb2xvciA9
IFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihj
b2xvcikuZ2V0KCldOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6W05T
S2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDp1aUNvbG9yIHJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpOTyBlcnJvcjpuaWxdIGZvclR5cGU6VUlDb2xvclBib2FyZFR5cGVdOwor
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6W05TS2V5ZWRBcmNoaXZlciBh
cmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpjb2NvYUNvbG9yKGNvbG9yKS5nZXQoKSByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6Tk8gZXJyb3I6bmlsXSBmb3JUeXBlOlVJQ29sb3JQYm9hcmRUeXBlXTsK
ICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5n
ZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVh
cmFuY2UubW0KaW5kZXggMzFmNDIxZjg4OWNjYzJmYTE2ODFiNjBjMDc3NGI2ZDRjYTQzMjdkNy4u
OWJjMzVhMTBjNjY2NGNjMDkwMTYzYWFmNDZkOWQ1YjhiNjQ2YWJkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVh
cmFuY2UubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZTo6
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmMKICAgICBO
U0FwcGVhcmFuY2UgKmFwcGVhcmFuY2UgPSBbTlNBcHBlYXJhbmNlIGFwcGVhcmFuY2VOYW1lZDpt
X3VzaW5nRGFya0FwcGVhcmFuY2UgPyBOU0FwcGVhcmFuY2VOYW1lRGFya0FxdWEgOiBOU0FwcGVh
cmFuY2VOYW1lQXF1YV07CiAKICAgICBpZiAodGludENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAg
YXBwZWFyYW5jZSA9IFthcHBlYXJhbmNlIGFwcGVhcmFuY2VCeUFwcGx5aW5nVGludENvbG9yOm5z
Q29sb3IodGludENvbG9yKS5nZXQoKV07CisgICAgICAgIGFwcGVhcmFuY2UgPSBbYXBwZWFyYW5j
ZSBhcHBlYXJhbmNlQnlBcHBseWluZ1RpbnRDb2xvcjpjb2NvYUNvbG9yKHRpbnRDb2xvcikuZ2V0
KCldOwogCiAgICAgW05TQXBwZWFyYW5jZSBzZXRDdXJyZW50QXBwZWFyYW5jZTphcHBlYXJhbmNl
XTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDYw
MDJlYjRiNjdmNTEwY2E2Mjc0OTBlYTM4OTEyNDVjOWNlNzhhNzIuLmQ5YjdkMjQ4MDM4YzJkYjhh
YWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMzA1LDcgKzMwNSw3IEBAIFN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlw
ZUZvckRPTVRvUmVhZEFuZFdyaXRlCiAKIENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3Io
KQogewotICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGNvbG9yRnJvbVBhc3Rl
Ym9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbUNvY29hQ29s
b3IoW05TQ29sb3IgY29sb3JGcm9tUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldKTsKIH0K
IAogVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6dXJsKCkKQEAgLTM2OSw4ICszNjksNyBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3Rl
Ym9hcmRVUkwpCiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJkQ29sb3IgPSBuc0NvbG9yKGNvbG9y
KTsKLSAgICBbcGFzdGVib2FyZENvbG9yIHdyaXRlVG9QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5n
ZXQoKV07CisgICAgW2NvY29hQ29sb3IoY29sb3IpIHdyaXRlVG9QYXN0ZWJvYXJkOm1fcGFzdGVi
b2FyZC5nZXQoKV07CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBiY2VmY2RlYzk5YzhmNzYzZjk0YmNmMzY5
MDk4ZmE3YzQ3N2E4ZGZiLi5jODQ1M2ZmYmQ3ODhiODFiYTA3NzI1M2Y1MTQxZTc1ZDU4MWY1MzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zODEsNyArMzgx
LDcgQEAgc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxs
ICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1YKIAogICAgIC8vIEZJWE1FOiBUaGlzIGNvbG9y
IHNob3VsZCBiZSBzaGFyZWQgd2l0aCBSZW5kZXJUaGVtZU1hYy4gRm9yIG5vdyBqdXN0IHVzZSB0
aGUgc2FtZSBOU0NvbG9yIGNvbG9yLgogICAgIC8vIFRoZSBjb2xvciBpcyBleHBlY3RlZCB0byBi
ZSBvcGFxdWUsIHNpbmNlIENvcmVHcmFwaGljcyB3aWxsIGFwcGx5IG9wYWNpdHkgd2hlbiBkcmF3
aW5nIChiZWNhdXNlIG9wYWNpdHkgaXMgbm9ybWFsbHkgYW5pbWF0ZWQpLgotICAgIGF1dG8gY29s
b3IgPSBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGtleWJvYXJkRm9jdXNJbmRpY2F0b3JDb2xv
cl0pLm9wYXF1ZUNvbG9yKCk7CisgICAgYXV0byBjb2xvciA9IGNvbG9yRnJvbUNvY29hQ29sb3Io
W05TQ29sb3Iga2V5Ym9hcmRGb2N1c0luZGljYXRvckNvbG9yXSkub3BhcXVlQ29sb3IoKTsKICAg
ICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZm
b2N1c1JpbmdTdHlsZSwgY2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0KCkpKTsKICAgICBDR0NvbnRl
eHRTZXRTdHlsZShjZ0NvbnRleHQsIHN0eWxlLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCmlu
ZGV4IGVmMjliM2JjYzk1ZWExMzA3YzRhZjA1YzAwZGVmOTIzMTg4ODcyMDcuLmZhM2M5NmQwYmZj
OGNkYmZmMWZjNjIyNDE3Y2U5MzA2M2NkMjNhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KQEAgLTEy
NywxOCArMTI3LDE4IEBAIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJpYnV0
ZUNoYW5nZXMoTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIGlkCiAKICAgICBOU0NvbG9yICpj
b252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZv
cktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRC
YWNrZ3JvdW5kQ29sb3JBID09IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQiBvYmplY3RGb3JLZXk6TlNC
YWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSkKLSAgICAgICAgY2hhbmdlcy5zZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBID86IE5T
Q29sb3IuY2xlYXJDb2xvcikpOworICAgICAgICBjaGFuZ2VzLnNldEJhY2tncm91bmRDb2xvcihj
b2xvckZyb21Db2NvYUNvbG9yKGNvbnZlcnRlZEJhY2tncm91bmRDb2xvckEgPzogTlNDb2xvci5j
bGVhckNvbG9yKSk7CiAKICAgICBjaGFuZ2VzLnNldEZvbnRDaGFuZ2VzKGNvbXB1dGVkRm9udENo
YW5nZXMoZm9udE1hbmFnZXIsIG9yaWdpbmFsRm9udEEsIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQSBv
YmplY3RGb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV0sIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQiBv
YmplY3RGb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV0pKTsKIAogICAgIE5TQ29sb3IgKmNvbnZl
cnRlZEZvcmVncm91bmRDb2xvckEgPSBbY29udmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5
Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CiAgICAgaWYgKGNvbnZlcnRlZEZvcmVn
cm91bmRDb2xvckEgPT0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdKQotICAgICAgICBjaGFuZ2VzLnNldEZvcmVncm91bmRD
b2xvcihjb2xvckZyb21OU0NvbG9yKGNvbnZlcnRlZEZvcmVncm91bmRDb2xvckEgPzogTlNDb2xv
ci5ibGFja0NvbG9yKSk7CisgICAgICAgIGNoYW5nZXMuc2V0Rm9yZWdyb3VuZENvbG9yKGNvbG9y
RnJvbUNvY29hQ29sb3IoY29udmVydGVkRm9yZWdyb3VuZENvbG9yQSA/OiBOU0NvbG9yLmJsYWNr
Q29sb3IpKTsKIAogICAgIE5TU2hhZG93ICpjb252ZXJ0ZWRTaGFkb3cgPSBbY29udmVydGVkQXR0
cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5TU2hhZG93QXR0cmlidXRlTmFtZV07CiAgICAgaWYgKGNv
bnZlcnRlZFNoYWRvdykgewogICAgICAgICBGbG9hdFNpemUgb2Zmc2V0IHsgTGF5b3V0VW5pdDo6
ZnJvbUZsb2F0Um91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dP
ZmZzZXQud2lkdGgpKS50b0Zsb2F0KCksIExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKHN0YXRp
Y19jYXN0PGZsb2F0Pihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93T2Zmc2V0LmhlaWdodCkpLnRvRmxv
YXQoKSB9OwotICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IGNvbG9yRnJvbU5TQ29sb3IoY29u
dmVydGVkU2hhZG93LnNoYWRvd0NvbG9yID86IE5TQ29sb3IuYmxhY2tDb2xvciksIG9mZnNldCwg
Y29udmVydGVkU2hhZG93LnNoYWRvd0JsdXJSYWRpdXMgfSk7CisgICAgICAgIGNoYW5nZXMuc2V0
U2hhZG93KHsgY29sb3JGcm9tQ29jb2FDb2xvcihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Q29sb3Ig
PzogTlNDb2xvci5ibGFja0NvbG9yKSwgb2Zmc2V0LCBjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Qmx1
clJhZGl1cyB9KTsKICAgICB9IGVsc2UgaWYgKCFbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0
Rm9yS2V5Ok5TU2hhZG93QXR0cmlidXRlTmFtZV0pCiAgICAgICAgIGNoYW5nZXMuc2V0U2hhZG93
KHsgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCBlYmMxNjY3ZTgyNzNiYzgxNTAzZjAyODI3NzRlMzU1YmRlNmRlYmU3Li5lNWE3ZTQ5YmQ5Nzdm
OGU0ODVkYjIxOTZlZTBjZGYxM2M5ODM3MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJDU1NWYWx1ZUtl
eS5oIgogI2ltcG9ydCAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2ltcG9ydCAiQ29sb3JCbGVuZGlu
Zy5oIgotI2ltcG9ydCAiQ29sb3JJT1MuaCIKKyNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBv
cnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRHJh
d0dseXBoc1JlY29yZGVyLmgiCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBDb2xvciBSZW5kZXJUaGVt
ZUlPUzo6c3lzdGVtRm9jdXNSaW5nQ29sb3IoKQogewogICAgIGlmICghY2FjaGVkRm9jdXNSaW5n
Q29sb3IoKS5oYXNfdmFsdWUoKSkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIHVzaW5n
IC1rZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3IuIEZvciBub3csIHdvcmsgYXJvdW5kIDxyZGFy
Oi8vcHJvYmxlbS81MDgzODg4Nj4uCi0gICAgICAgIGNhY2hlZEZvY3VzUmluZ0NvbG9yKCkgPSBj
b2xvckZyb21VSUNvbG9yKFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIHN5c3RlbUJsdWVDb2xvcl0p
OworICAgICAgICBjYWNoZWRGb2N1c1JpbmdDb2xvcigpID0gY29sb3JGcm9tQ29jb2FDb2xvcihb
UEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1CbHVlQ29sb3JdKTsKICAgICB9CiAgICAgcmV0
dXJuICpjYWNoZWRGb2N1c1JpbmdDb2xvcigpOwogfQpAQCAtMTYzMCw5ICsxNjMwLDkgQEAgc3Rh
dGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGF0dGFjaG1lbnRBY3Rpb25Gb250KCkKICAgICByZXR1
cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZW1waGFzaXplZEZvbnRE
ZXNjcmlwdG9yLmdldCgpLCAwLCBudWxscHRyKSk7CiB9CiAKLXN0YXRpYyBVSUNvbG9yICphdHRh
Y2htZW50QWN0aW9uQ29sb3IoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKK3N0
YXRpYyBSZXRhaW5QdHI8VUlDb2xvcj4gYXR0YWNobWVudEFjdGlvbkNvbG9yKGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIFtQQUw6OmdldFVJQ29sb3JD
bGFzcygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihhdHRhY2htZW50LnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKS5nZXQoKV07CisgICAgcmV0
dXJuIGNvY29hQ29sb3IoYXR0YWNobWVudC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhdHRh
Y2htZW50VGl0bGVGb250KCkKQEAgLTE4NzAsNyArMTg3MCw3IEBAIFJlbmRlckF0dGFjaG1lbnRJ
bmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2ht
ZW50KQogICAgICAgICAgICAgeU9mZnNldCArPSBpY29uUmVjdC5oZWlnaHQoKSArIGF0dGFjaG1l
bnRJdGVtTWFyZ2luOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIGJ1aWxkV3JhcHBl
ZExpbmVzKGFjdGlvbiwgYXR0YWNobWVudEFjdGlvbkZvbnQoKS5nZXQoKSwgYXR0YWNobWVudEFj
dGlvbkNvbG9yKGF0dGFjaG1lbnQpLCBhdHRhY2htZW50V3JhcHBpbmdUZXh0TWF4aW11bUxpbmVD
b3VudCk7CisgICAgICAgIGJ1aWxkV3JhcHBlZExpbmVzKGFjdGlvbiwgYXR0YWNobWVudEFjdGlv
bkZvbnQoKS5nZXQoKSwgYXR0YWNobWVudEFjdGlvbkNvbG9yKGF0dGFjaG1lbnQpLmdldCgpLCBh
dHRhY2htZW50V3JhcHBpbmdUZXh0TWF4aW11bUxpbmVDb3VudCk7CiAKICAgICBib29sIGZvcmNl
U2luZ2xlTGluZVRpdGxlID0gIWFjdGlvbi5pc0VtcHR5KCkgfHwgIXN1YnRpdGxlLmlzRW1wdHko
KSB8fCBoYXNQcm9ncmVzczsKICAgICBidWlsZFdyYXBwZWRMaW5lcyh0aXRsZSwgYXR0YWNobWVu
dFRpdGxlRm9udCgpLmdldCgpLCBhdHRhY2htZW50VGl0bGVDb2xvcigpLCBmb3JjZVNpbmdsZUxp
bmVUaXRsZSA/IDEgOiBhdHRhY2htZW50V3JhcHBpbmdUZXh0TWF4aW11bUxpbmVDb3VudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNjMxMGNlZTM0
NGQxZDQzNmMyNGFhMjIzYzdjZjUxMjk4NTBmMmNjZi4uNmRmZDVhNjY3ZGQ5MjkxNzE5ZTEyZTJh
Njc3OGVjNmY5ZTM2Yzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQpAQCAtMjg3LDE3ICsyODcsMTcgQEAgTlNWaWV3ICpSZW5kZXJUaGVtZU1hYzo6ZG9j
dW1lbnRWaWV3Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYgbykgY29uc3QKIENvbG9yIFJlbmRlclRo
ZW1lTWFjOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8
U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9y
T3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xv
cihbTlNDb2xvciBzZWxlY3RlZFRleHRCYWNrZ3JvdW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29s
b3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBzZWxlY3RlZFRleHRCYWNrZ3JvdW5kQ29sb3JdKTsK
IH0KIAogQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRpb25zPiBvcHRpb25zKSBjb25zdAog
ewogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0
aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihb
TlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZFRleHRCYWNrZ3JvdW5kQ29sb3JdKTsKKyAgICBy
ZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZFRl
eHRCYWNrZ3JvdW5kQ29sb3JdKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwot
ICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIHVuZW1waGFzaXplZFNlbGVjdGVk
Q29udGVudEJhY2tncm91bmRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9y
KFtOU0NvbG9yIHVuZW1waGFzaXplZFNlbGVjdGVkQ29udGVudEJhY2tncm91bmRDb2xvcl0pOwog
I2VuZGlmCiB9CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxh
dGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sbwog
ewogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG9wdGlv
bnMuY29udGFpbnMoU3R5bGVDb2xvck9wdGlvbnM6OlVzZURhcmtBcHBlYXJhbmNlKSk7CiAgICAg
aWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgIHJldHVy
biBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIHNlbGVjdGVkVGV4dENvbG9yXSk7CisgICAgICAg
IHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIHNlbGVjdGVkVGV4dENvbG9yXSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzMyLDcgKzMzMiw3IEBAIENvbG9yIFJlbmRlclRo
ZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNl
dDxTdHlsZUNvCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKICAgICBMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNvbnRhaW5zKFN0eWxl
Q29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwogICAgIGlmIChsb2NhbEFwcGVhcmFu
Y2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xv
cihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZFRleHRDb2xvcl0pOworICAgICAgICByZXR1
cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZFRleHRD
b2xvcl0pOwogICAgIHJldHVybiB7IH07CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvcHRpb25z
KTsKQEAgLTM0NCwxMSArMzQ0LDExIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0CiB7CiAjaWYg
SEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKICAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3JPcHRpb25zOjpV
c2VEYXJrQXBwZWFyYW5jZSkpOwotICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9y
IHNlbGVjdGVkQ29udGVudEJhY2tncm91bmRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21D
b2NvYUNvbG9yKFtOU0NvbG9yIHNlbGVjdGVkQ29udGVudEJhY2tncm91bmRDb2xvcl0pOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBhbHRl
cm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNv
bG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yXSk7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIH0KQEAgLTM2MCwyNCArMzYwLDI0
IEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvcHRp
b25zKTsKICNlbmRpZgotICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIHVuZW1w
aGFzaXplZFNlbGVjdGVkQ29udGVudEJhY2tncm91bmRDb2xvcl0pOworICAgIHJldHVybiBjb2xv
ckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIHVuZW1waGFzaXplZFNlbGVjdGVkQ29udGVudEJhY2tn
cm91bmRDb2xvcl0pOwogCiB9CiAKIENvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRp
b25zPiBvcHRpb25zKSBjb25zdAogewogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvck9wdGlvbnM6OlVzZURh
cmtBcHBlYXJhbmNlKSk7Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgYWx0
ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbUNv
Y29hQ29sb3IoW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXSk7CiB9
CiAKIENvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNv
bnN0CiB7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKICAgICBMb2NhbERlZmF1bHRT
eXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29s
b3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwotICAgIHJldHVybiBjb2xvckZyb21OU0Nv
bG9yKFtOU0NvbG9yIHVuZW1waGFzaXplZFNlbGVjdGVkVGV4dENvbG9yXSk7CisgICAgcmV0dXJu
IGNvbG9yRnJvbUNvY29hQ29sb3IoW05TQ29sb3IgdW5lbXBoYXNpemVkU2VsZWN0ZWRUZXh0Q29s
b3JdKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIHJldHVybiBjb2xv
ckZyb21OU0NvbG9yKFtOU0NvbG9yIHNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOworICAgIHJl
dHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIHNlbGVjdGVkQ29udHJvbFRleHRDb2xv
cl0pOwogI2VuZGlmCiB9CiAKQEAgLTM4NywxMyArMzg3LDEzIEBAIENvbG9yIFJlbmRlclRoZW1l
TWFjOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4g
b3B0aW9uCiAgICAgICAgIHJldHVybiBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKICAgICBMb2Nh
bERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNvbnRhaW5z
KFN0eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwogICAgIC8vIFRoZSBjb2xv
ciBpcyBleHBlY3RlZCB0byBiZSBvcGFxdWUsIHNpbmNlIENvcmVHcmFwaGljcyB3aWxsIGFwcGx5
IG9wYWNpdHkgd2hlbiBkcmF3aW5nIChiZWNhdXNlIG9wYWNpdHkgaXMgbm9ybWFsbHkgYW5pbWF0
ZWQpLgotICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGtleWJvYXJkRm9jdXNJ
bmRpY2F0b3JDb2xvcl0pLm9wYXF1ZUNvbG9yKCk7CisgICAgcmV0dXJuIGNvbG9yRnJvbUNvY29h
Q29sb3IoW05TQ29sb3Iga2V5Ym9hcmRGb2N1c0luZGljYXRvckNvbG9yXSkub3BhcXVlQ29sb3Io
KTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtVGV4dFNlYXJjaEhpZ2hsaWdo
dENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAg
ICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNv
bnRhaW5zKFN0eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwotICAgIHJldHVy
biBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGZpbmRIaWdobGlnaHRDb2xvcl0pOworICAgIHJl
dHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIGZpbmRIaWdobGlnaHRDb2xvcl0pOwog
fQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQpAQCAtNDA3LDcgKzQwNyw3IEBAIENvbG9y
IFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUFwcEhpZ2hsaWdodENvbG9yKE9wdGlvblNldDxTdHls
ZUNvbG9yT3B0aW9ucz4pIGNvCiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1EZWZhdWx0
QnV0dG9uVGV4dENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4gb3B0aW9ucykgY29u
c3QKIHsKICAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShv
cHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwot
ICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29u
dHJvbFRleHRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9y
IGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOwogfQogCiBzdGF0aWMgQ29sb3Ig
YWN0aXZlQnV0dG9uVGV4dENvbG9yKCkKQEAgLTIyOTcsNyArMjI5Nyw3IEBAIHN0YXRpYyBDb2xv
ciB0aXRsZVRleHRDb2xvckZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0
YWNobWVudCwgQXR0CiAgICAgCiAgICAgaWYgKHN0eWxlID09IEF0dGFjaG1lbnRMYXlvdXRTdHls
ZTo6U2VsZWN0ZWQpIHsKICAgICAgICAgaWYgKGF0dGFjaG1lbnQuZnJhbWUoKS5zZWxlY3Rpb24o
KS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbG9yRnJvbU5T
Q29sb3IoW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNl
bGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1
bHQgPSBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvcjsKICAgICB9CkBAIC0yMzUxLDcg
KzIzNTEsNyBAQCB2b2lkIEF0dGFjaG1lbnRMYXlvdXQ6OmxheU91dFRpdGxlKGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1
dGVzID0gQHsKICAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lOiAoX19i
cmlkZ2UgaWQpZm9udC5nZXQoKSwKLSAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBOU0NvbG9yICopY2FjaGVkQ0dDb2xvcih0aXRs
ZVRleHRDb2xvckZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgc3R5bGUpKS5nZXQoKQorICAgICAg
ICAoX19icmlkZ2UgaWQpa0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKF9fYnJpZGdl
IGlkKWNhY2hlZENHQ29sb3IodGl0bGVUZXh0Q29sb3JGb3JBdHRhY2htZW50KGF0dGFjaG1lbnQs
IHN0eWxlKSkuZ2V0KCkKICAgICB9OwogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+
IGF0dHJpYnV0ZWRUaXRsZSA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBSZXRh
aW5QdHI8Q1RGcmFtZXNldHRlclJlZj4gdGl0bGVGcmFtZXNldHRlciA9IGFkb3B0Q0YoQ1RGcmFt
ZXNldHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYp
YXR0cmlidXRlZFRpdGxlLmdldCgpKSk7CkBAIC0yNDEwLDcgKzI0MTAsNyBAQCB2b2lkIEF0dGFj
aG1lbnRMYXlvdXQ6OmxheU91dFN1YnRpdGxlKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFj
aG1lbnQpCiAgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5n
dWFnZShrQ1RGb250VUlGb250U3lzdGVtLCBhdHRhY2htZW50U3VidGl0bGVGb250U2l6ZSwgbGFu
Z3VhZ2UpKTsKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsKICAgICAgICAg
KF9fYnJpZGdlIGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgaWQpZm9udC5nZXQo
KSwKLSAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6
IChfX2JyaWRnZSBOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihzdWJ0aXRsZUNvbG9yKS5nZXQoKQor
ICAgICAgICAoX19icmlkZ2UgaWQpa0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKF9f
YnJpZGdlIGlkKWNhY2hlZENHQ29sb3Ioc3VidGl0bGVDb2xvcikuZ2V0KCkKICAgICB9OwogICAg
IFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdWJ0aXRsZVRleHQgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpzdWJ0aXRs
ZVRleHQgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc10pOwogICAgIHN1YnRpdGxlTGluZSA9IGFk
b3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoKENGQXR0cmlidXRlZFN0cmlu
Z1JlZilhdHRyaWJ1dGVkU3VidGl0bGVUZXh0LmdldCgpKSk7CkBAIC0yNTk5LDcgKzI1OTksNyBA
QCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQoY29uc3QgUmVuZGVy
QXR0YWNobWVudCYgYXR0YWNobWVudCwgRwogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKICAg
ICBpZiAoYXR0YWNobWVudC5mcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgp
KSB7CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAg
IGJhY2tncm91bmRDb2xvciA9IGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgYWx0ZXJuYXRlU2Vs
ZWN0ZWRDb250cm9sQ29sb3JdKTsKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY29sb3JGcm9t
Q29jb2FDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0pOwogICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9IGVsc2UKICAgICAg
ICAgYmFja2dyb3VuZENvbG9yID0gYXR0YWNobWVudFRpdGxlSW5hY3RpdmVCYWNrZ3JvdW5kQ29s
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQppbmRleCBjNmZmZjY5MDZmYzIxNjVmOTMxNzMzOTE1OTMwZmE0OWY2NjE4NjQ3Li5kYTRk
MTFjOWMwYTI0YWY3YWZjNTFkMzFiZmY4NTcwNTcyYzcwNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTM0LDE4ICszNCwx
MyBAQAogI2ltcG9ydCAiQ29yZVRleHRIZWxwZXJzLmgiCiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZv
bnQuaD4KICNpbXBvcnQgPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3IuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
ICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1R5
cGVDYXN0c0NvY29hLmg+CiAKLSNpZiBVU0UoQVBQS0lUKQotI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ck1hYy5oPgotI2Vsc2UKLSNpbXBvcnQgPFdlYkNvcmUvQ29sb3JJT1MuaD4KLSNlbmRpZgotCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBv
cnQgPFVJS2l0L1VJRm9udC5oPgpAQCAtMjY3LDIzICsyNjIsOSBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVBcnJheUludGVybmFsKERlY29kZXImIGRlY29kZXIs
IE5TQXJyYQogCiAjcHJhZ21hIG1hcmsgLSBOU0NvbG9yIC8gVUlDb2xvcgogCi0jaWYgVVNFKEFQ
UEtJVCkKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVDb2xvckludGVybmFsKEVuY29kZXImIGVu
Y29kZXIsIE5TQ29sb3IgKmNvbG9yKQotewotICAgIGVuY29kZXIgPDwgY29sb3JGcm9tTlNDb2xv
cihjb2xvcik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+
PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgaW5saW5lIHZv
aWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBDb2NvYUNvbG9yICpjb2xv
cikKIHsKLSAgICBDb2xvciBjb2xvcjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBuc0NvbG9yKGNvbG9y
KSB9OwotfQotI2Vsc2UKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVDb2xvckludGVybmFsKEVu
Y29kZXImIGVuY29kZXIsIFVJQ29sb3IgKmNvbG9yKQotewotICAgIGVuY29kZXIgPDwgY29sb3JG
cm9tVUlDb2xvcihjb2xvcik7CisgICAgZW5jb2RlciA8PCBjb2xvckZyb21Db2NvYUNvbG9yKGNv
bG9yKTsKIH0KIAogc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKQEAgLTI5MSw5ICsyNzIsOCBAQCBz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJbnRl
cm5hbChEZWNvZGVyJiBkZWNvZGVyKQogICAgIENvbG9yIGNvbG9yOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29sb3IpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVy
biB7IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcikuZ2V0KCldKSB9OworICAgIHJldHVybiB7IGNvY29hQ29sb3IoY29sb3IpIH07CiB9
Ci0jZW5kaWYKIAogI3ByYWdtYSBtYXJrIC0gTlNEYXRhCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDJhNTVmNjc1YzRiNDM0MjQ1NGEw
ZGI4ZTg3YWMyMTNkYmQ0NGYzYTUuLmE2Y2QzOTNhMDEyZjU2Mjc1MDQ1MzJiMjc0YjgwYTE0MmY3
OTc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtMTc2NywxNSArMTc2NywxMiBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUgogCiAt
IChDb2NvYUNvbG9yICopdGhlbWVDb2xvcgogewotICAgIGF1dG8gdGhlbWVDb2xvciA9IF9wYWdl
LT50aGVtZUNvbG9yKCk7Ci0gICAgaWYgKCF0aGVtZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcih0aGVtZUNvbG9y
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBjb2NvYUNvbG9yT3JOaWwoX3BhZ2UtPnRoZW1l
Q29sb3IoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ29jb2FDb2xvciAqKXVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcgogewotICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKF9wYWdl
LT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
Y29jb2FDb2xvcihfcGFnZS0+dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9y
ICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKQEAgLTMyNjksMTggKzMyNjYsMTIg
QEAgLSAoQ29jb2FDb2xvciAqKV90aGVtZUNvbG9yCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtX
S1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5
NzMyPgogLSAoQ29jb2FDb2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKIHsKLSAg
ICBhdXRvIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IF9wYWdlLT5wYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IoKTsKLSAgICBpZiAoIXBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRm
b3JtQ29sb3IocGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBjb2NvYUNvbG9yT3JOaWwoX3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
cigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChDb2NvYUNvbG9yICopX3NhbXBsZWRQYWdlVG9w
Q29sb3IKIHsKLSAgICBhdXRvIHNhbXBsZWRQYWdlVG9wQ29sb3IgPSBfcGFnZS0+c2FtcGxlZFBh
Z2VUb3BDb2xvcigpOwotICAgIGlmICghc2FtcGxlZFBhZ2VUb3BDb2xvci5pc1ZhbGlkKCkpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3Ioc2Ft
cGxlZFBhZ2VUb3BDb2xvcikuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gY29jb2FDb2xvck9y
TmlsKF9wYWdlLT5zYW1wbGVkUGFnZVRvcENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KGlkIDxfV0tJbnB1dERlbGVnYXRlPilfaW5wdXREZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5t
bQppbmRleCA2ZmRmMDkwMjRkODY2MzU1YjcwYWNkZWZjMDM5YjIzMzQ3ZjExMTIwLi4wMzU5ZWI1
YjYwNDYzZGFjOWQyYmNmYWRjYjg2NzUwMjdlMWRiMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5t
bQpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKE5TVVJMICopc3RhcnRVUkwKIAogLSAoQ29jb2FDb2xv
ciAqKXRoZW1lQ29sb3IKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcihfYXBw
bGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLnRoZW1lQ29sb3IpLmF1dG9y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvY29hQ29sb3IoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFw
cGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0RGlzcGxheU1vZGUpZGlzcGxheU1vZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggYWYzMDQ2Yjky
YzU2MzZiNzFlZjM1ODRkNDdlNmNhM2ZmN2U0ZTM4YS4uZGI2YzljZDQyNzFlMGVjY2Y0YjZiN2Y3
YTFhNWY4MDQ5ZTE1MTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgIldlYklPU0V2ZW50
RmFjdG9yeS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJfV0tBY3RpdmF0
ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlv
bi5oPgpAQCAtNTQzLDkgKzU0NCw3IEBAIC0gKHZvaWQpX3VwZGF0ZVNjcm9sbFZpZXdCYWNrZ3Jv
dW5kCiAgICAgYXV0byBuZXdTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gc2Nyb2xsVmlld0Jh
Y2tncm91bmRDb2xvcihzZWxmLCBBbGxvd1BhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTo6WWVz
KTsKICAgICBpZiAoX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgIT0gbmV3U2Nyb2xsVmlld0Jh
Y2tncm91bmRDb2xvcikgewogICAgICAgICBfc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvciA9IG5l
d1Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3I7Ci0KLSAgICAgICAgYXV0byB1aUJhY2tncm91bmRD
b2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dD
b2xvcihuZXdTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKS5nZXQoKV0pOwotICAgICAgICBbX3Nj
cm9sbFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOnVpQmFja2dyb3VuZENvbG9yLmdldCgpXTsKKyAg
ICAgICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjpjb2NvYUNvbG9yKG5ld1Njcm9s
bFZpZXdCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXTsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgdGhl
IGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0aGUgbGlnaHRuZXNzL2RhcmtuZXNzIG9mIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IGM2YTUzMjFkY2FjMjA2MDIwZDBjYWYx
OWI4Yzk5NGNmYjY5M2Q3MDQuLjYwNDdkM2M3NDEyYmY2MDBiYjA5YzI2NjhlYjYyOTExYjEzMmYw
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1Rlc3RpbmdJT1MubW0KQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0NvbG9y
SU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q29sb3JTZXJpYWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+
CiAjaW1wb3J0IDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KQEAgLTQ3OCw3ICs0NzgsNyBAQCAtIChO
U1N0cmluZyAqKV9zZXJpYWxpemVkU2VsZWN0aW9uQ2FyZXRCYWNrZ3JvdW5kQ29sb3JGb3JUZXN0
aW5nCiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICByZXR1cm4gV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckNTUyhXZWJDb3JlOjpjb2xvckZyb21V
SUNvbG9yKGJhY2tncm91bmRDb2xvcikpOworICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9yQ1NT
KFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoYmFja2dyb3VuZENvbG9yKSk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
NjlmNDNhMDk2Mjc2MzdlZWY5NTYyYWIzYmY5MjY2OTE3YjEyZjEwZi4uZTliZDg4MDY0MTkxMzhi
ZWY0ZTBiZjMzNzc1YzVkODgwNGE2ZTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTk0OSw3ICs5NDksNyBAQCAtICh2b2lkKV93a0NoYW5n
ZUNvbG9yOihpZClzZW5kZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgX3RleHRDb2xvciA9IHNl
bGYuY29sb3JQaWNrZXJJdGVtLmNvbG9yOwotICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1
dGVFZGl0Q29tbWFuZCgiRm9yZUNvbG9yIiwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwo
V2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcihfdGV4dENvbG9yLmdldCgpKSkpOworICAgIF93ZWJW
aWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiRm9yZUNvbG9yIiwgV2ViQ29yZTo6
c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcihfdGV4dENv
bG9yLmdldCgpKSkpOwogfQogCiAtIChOU1ZpZXdDb250cm9sbGVyICopdGV4dExpc3RWaWV3Q29u
dHJvbGxlcgpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVGV4
dFRvdWNoQmFyKCkKICAgICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNl
dFRleHRJc0JvbGQ6KGJvb2wpKG1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgp
LnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVCb2xkKV07CiAgICAgICAgICAgICBbbV90ZXh0
VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0SXNJdGFsaWM6KGJvb2wpKG1fcGFnZS0+ZWRp
dG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVJ
dGFsaWNzKV07CiAgICAgICAgICAgICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRU
ZXh0SXNVbmRlcmxpbmVkOihib29sKShtX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERh
dGEoKS50eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlVW5kZXJsaW5lKV07Ci0gICAgICAgICAg
ICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0Q29sb3I6bnNDb2xvcihlZGl0
b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnRleHRDb2xvcikuZ2V0KCldOworICAgICAgICAgICAg
W21fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dENvbG9yOmNvY29hQ29sb3IoZWRp
dG9yU3RhdGUucG9zdExheW91dERhdGEoKS50ZXh0Q29sb3IpLmdldCgpXTsKICAgICAgICAgICAg
IFtbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciB0ZXh0TGlzdFRvdWNoQmFyVmlld0NvbnRy
b2xsZXJdIHNldEN1cnJlbnRMaXN0VHlwZTooTGlzdFR5cGUpbV9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnBvc3RMYXlvdXREYXRhKCkuZW5jbG9zaW5nTGlzdFR5cGVdOwogICAgICAgICAgICAgW21fdGV4
dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0Q3VycmVudFRleHRBbGlnbm1lbnQ6bnNUZXh0QWxp
Z25tZW50RnJvbVRleHRBbGlnbm1lbnQoKFRleHRBbGlnbm1lbnQpZWRpdG9yU3RhdGUucG9zdExh
eW91dERhdGEoKS50ZXh0QWxpZ25tZW50KV07CiAgICAgICAgIH0KQEAgLTI2MjIsMjUgKzI2MjIs
MTcgQEAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNw
YWNlKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICp1bmRl
cmxheUNvbG9yKQogewotICAgIG1fcGFnZS0+c2V0VW5kZXJsYXlDb2xvcihXZWJDb3JlOjpjb2xv
ckZyb21OU0NvbG9yKHVuZGVybGF5Q29sb3IpKTsKKyAgICBtX3BhZ2UtPnNldFVuZGVybGF5Q29s
b3IoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcih1bmRlcmxheUNvbG9yKSk7CiB9CiAKIFJl
dGFpblB0cjxOU0NvbG9yPiBXZWJWaWV3SW1wbDo6dW5kZXJsYXlDb2xvcigpIGNvbnN0CiB7Ci0g
ICAgV2ViQ29yZTo6Q29sb3Igd2ViQ29sb3IgPSBtX3BhZ2UtPnVuZGVybGF5Q29sb3IoKTsKLSAg
ICBpZiAoIXdlYkNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJl
dHVybiBXZWJDb3JlOjpuc0NvbG9yKHdlYkNvbG9yKTsKKyAgICByZXR1cm4gY29jb2FDb2xvck9y
TmlsKF9wYWdlLT51bmRlcmxheUNvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFJldGFpblB0
cjxOU0NvbG9yPiBXZWJWaWV3SW1wbDo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29u
c3QKIHsKLSAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IG1fcGFnZS0+cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6bnNDb2xvcihjb2xvcik7CisgICAgcmV0dXJu
IGNvY29hQ29sb3JPck5pbChfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3JvbGxiYXJT
dHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xs
YmFyU3R5bGUpCkBAIC0zMTgyLDcgKzMxNzQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjaGFuZ2VG
b250Q29sb3JGcm9tU2VuZGVyKGlkIHNlbmRlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMgY2hhbmdlczsKLSAgICBjaGFuZ2VzLnNldEZvcmVn
cm91bmRDb2xvcihXZWJDb3JlOjpjb2xvckZyb21OU0NvbG9yKChOU0NvbG9yICopY29sb3IpKTsK
KyAgICBjaGFuZ2VzLnNldEZvcmVncm91bmRDb2xvcihXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNv
bG9yKChOU0NvbG9yICopY29sb3IpKTsKICAgICBtX3BhZ2UtPmNoYW5nZUZvbnRBdHRyaWJ1dGVz
KFdURk1vdmUoY2hhbmdlcykpOwogfQogCkBAIC01MDE1LDggKzUwMDcsOCBAQCBzdGF0aWMgVmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBleHRyYWN0VW5kZXJsaW5lcyhOU0F0
dHJpYnV0ZWRTdHJpbgogICAgICAgICBpZiAoTlNOdW1iZXIgKnN0eWxlID0gW2F0dHJzIG9iamVj
dEZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0pIHsKICAgICAgICAgICAgIFdl
YkNvcmU6OkNvbG9yIGNvbG9yID0gV2ViQ29yZTo6Q29sb3I6OmJsYWNrOwogICAgICAgICAgICAg
V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciBjb21wb3NpdGlvblVuZGVybGluZUNv
bG9yID0gV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmVDb2xvcjo6VGV4dENvbG9yOwotICAg
ICAgICAgICAgaWYgKE5TQ29sb3IgKmNvbG9yQXR0ciA9IFthdHRycyBvYmplY3RGb3JLZXk6TlNV
bmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWVdKSB7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBX
ZWJDb3JlOjpjb2xvckZyb21OU0NvbG9yKGNvbG9yQXR0cik7CisgICAgICAgICAgICBpZiAoTlND
b2xvciAqY29sb3JBdHRyaWJ1dGUgPSBbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TVW5kZXJsaW5lQ29s
b3JBdHRyaWJ1dGVOYW1lXSkgeworICAgICAgICAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Y29s
b3JGcm9tQ29jb2FDb2xvcihjb2xvckF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgY29tcG9z
aXRpb25VbmRlcmxpbmVDb2xvciA9IFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3I6
OkdpdmVuQ29sb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdl
YkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lKHJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJh
bmdlKSwgY29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciwgY29sb3IsIHN0eWxlLmludFZhbHVlID4g
MSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUubW0KaW5kZXggMmQwZTY2NjkzNDc3MjljNmI0NGMxNzA3ZGNjMmU0Mjdk
Yzc0ZDVjYS4uMjVmMjY1NGQyZTRhZjczNTViOGYzYmIxNzcxNDQxMzU3YzEwMzA2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KQEAg
LTIyNiw3ICsyMjcsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRl
bGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHRleHRJbmRpY2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShpbmRpY2F0
b3IuY29udGVudEltYWdlLmdldCgpKTsKLSAgICBhdXRvIHByZXZpZXcgPSBjcmVhdGVUYXJnZXRl
ZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZp
ZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgW1VJQ29s
b3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNr
Z3JvdW5kQ29sb3IpLmdldCgpXSwgbmlsKTsKKyAgICBhdXRvIHByZXZpZXcgPSBjcmVhdGVUYXJn
ZXRlZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHBy
ZXZpZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgY29j
b2FDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQoKSwgbmlsKTsK
ICAgICBmb3IgKGF1dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVtUHJl
dmlld1Byb3ZpZGVycykKICAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92aWRlci5wcm92aWRlcihw
cmV2aWV3LmdldCgpKTsKICAgICBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy5jbGVhcigp
OwpAQCAtMzEzLDcgKzMxNCw3IEBAIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0oVUlEcmFnSXRlbSAqCiAgICAgaWYgKHNo
b3VsZFVzZVRleHRJbmRpY2F0b3JUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKHNvdXJjZSkp
IHsKICAgICAgICAgYXV0byBpbmRpY2F0b3IgPSBzb3VyY2UuaW5kaWNhdG9yRGF0YS52YWx1ZSgp
OwogICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShpbmRp
Y2F0b3IuY29udGVudEltYWdlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVRhcmdldGVk
RHJhZ1ByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBjb250ZW50VmlldywgcHJldmll
d0NvbnRhaW5lciwgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLCBbVUlDb2xv
ciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRlZEJhY2tn
cm91bmRDb2xvcikuZ2V0KCldLCBuaWwpLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBj
cmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVu
dFZpZXcsIHByZXZpZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGlu
YXRlcywgY29jb2FDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQo
KSwgbmlsKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbQppbmRleCBiYmJiMDI1NGZhYWExZDQ0MjM0ODA0Y2U3YTY4MjA3YWQyYTk5OTUxLi4xNGFk
OTRmOGI4Yjk2ODBjNWM2OWJkNGYxY2M0YzA3MGRkMmJjNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAg
LTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbkVkZ2VQYW5HZXN0dXJlUmVjb2du
aXplci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTIyNSw3ICsyMjYsNyBAQCB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0
aXZlVHJhbnNpdGlvbgogICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50
cyA9IHNuYXBzaG90LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgV2ViQ29yZTo6Q29sb3Ig
Y29yZUNvbG9yID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29y
ZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMo
W1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6V2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihj
b3JlQ29sb3IpLmdldCgpXSk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjb2NvYUNv
bG9yKGNvcmVDb2xvcik7CiAgICAgfQogCiAgICAgW21fc25hcHNob3RWaWV3IHNldEJhY2tncm91
bmRDb2xvcjpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYzNmMDg4
ZDU1MWExNDEzZWVjOWNlYmJmOTJkM2QyNTEwYTU2ZDdjYy4uOTQ5ZmQwMzRhZjIxMmRlMmRmMmVh
N2JiZGM0ZGY2MWQ1NDYxMmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05OSw4ICs5OSw3IEBACiAj
aW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFVuaWZv
cm1UeXBlSWRlbnRpZmllcnMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwSGln
aGxpZ2h0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Nv
bG9ySU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGln
aGxpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CkBAIC0yMDEyLDcg
KzIwMTEsNyBAQCAtICh2b2lkKV91cGRhdGVUYXBIaWdobGlnaHQKICAgICBpZiAoIVtfaGlnaGxp
Z2h0VmlldyBzdXBlcnZpZXddKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX2hpZ2hsaWdodFZp
ZXcgc2V0Q29sb3I6YWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNo
ZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xvcikuZ2V0KCldKS5nZXQoKV07
CisgICAgW19oaWdobGlnaHRWaWV3IHNldENvbG9yOmNvY29hQ29sb3IoX3RhcEhpZ2hsaWdodElu
Zm9ybWF0aW9uLmNvbG9yKS5nZXQoKV07CiAKICAgICBhdXRvJiBoaWdobGlnaHRlZFF1YWRzID0g
X3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLnF1YWRzOwogICAgIGJvb2wgYWxsUmVjdGlsaW5lYXIg
PSB0cnVlOwpAQCAtMzY4OSwxMCArMzY4OCwxMCBAQCAtIChVSUNvbG9yICopX2Nhc2NhZGVJbnRl
cmFjdGlvblRpbnRDb2xvcgogICAgICAgICByZXR1cm4gW1VJQ29sb3IgY2xlYXJDb2xvcl07CiAK
ICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7
Ci0gICAgICAgIFdlYkNvcmU6OkNvbG9yIGNhcmV0Q29sb3IgPSBfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5wb3N0TGF5b3V0RGF0YSgpLmNhcmV0Q29sb3I7Ci0gICAgICAgIGlmIChjYXJldENvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNh
Y2hlZENHQ29sb3IoY2FyZXRDb2xvcikuZ2V0KCldOworICAgICAgICBpZiAoYXV0byBjYXJldENv
bG9yID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5jYXJldENvbG9yOyBj
YXJldENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBjb2NvYUNvbG9yKGNhcmV0
Q29sb3IpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQorCiAgICAgcmV0dXJuIFtzZWxmIF9pbmhlcml0
ZWRJbnRlcmFjdGlvblRpbnRDb2xvcl07CiB9CiAKQEAgLTUxMTUsNyArNTExNCw3IEBAIHN0YXRp
YyBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+IGNvbXBvc2l0aW9uSGlnaGxp
Z2h0cyhOU0F0dHJpYnV0ZWRTCiAKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgaGlnaGxpZ2h0Q29s
b3IgeyBXZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVmYXVsdENvbXBvc2l0aW9uRmls
bENvbG9yIH07CiAgICAgICAgIGlmIChVSUNvbG9yICp1aUNvbG9yID0gYXR0cmlidXRlc1tOU0Jh
Y2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdKQotICAgICAgICAgICAgaGlnaGxpZ2h0Q29sb3Ig
PSBXZWJDb3JlOjpjb2xvckZyb21VSUNvbG9yKHVpQ29sb3IpOworICAgICAgICAgICAgaGlnaGxp
Z2h0Q29sb3IgPSBXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKHVpQ29sb3IpOwogICAgICAg
ICBoaWdobGlnaHRzLmFwcGVuZCh7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS5sb2NhdGlv
biksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihOU01heFJhbmdlKHJhbmdlKSksIGhpZ2hsaWdodENv
bG9yIH0pOwogICAgIH1dOwogCkBAIC04NTk3LDcgKzg1OTYsNyBAQCAtIChVSVRhcmdldGVkUHJl
dmlldyAqKV9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdJZlBvc3NpYmxlCiAg
ICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTGluayAmJiBfcG9zaXRpb25JbmZvcm1hdGlv
bi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkgewogICAgICAgICBhdXRvIGluZGljYXRvciA9
IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3I7CiAgICAgICAgIGF1dG8gdGV4dElu
ZGljYXRvckltYWdlID0gdWlJbWFnZUZvckltYWdlKGluZGljYXRvci5jb250ZW50SW1hZ2UuZ2V0
KCkpOwotICAgICAgICB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZFByZXZpZXcodGV4
dEluZGljYXRvckltYWdlLmdldCgpLCBzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRNZW51
SGludFByZXZpZXdzLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNv
bG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFj
a2dyb3VuZENvbG9yKS5nZXQoKV0pOworICAgICAgICB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVU
YXJnZXRlZFByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBzZWxmLCBzZWxmLmNvbnRh
aW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdzLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0
Q29vcmRpbmF0ZXMsIGNvY29hQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xv
cikuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAoKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzQXR0YWNo
bWVudCB8fCBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlKSAmJiBfcG9zaXRpb25JbmZvcm1h
dGlvbi5pbWFnZSkgewogICAgICAgICBhdXRvIGNnSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlv
bi5pbWFnZS0+bWFrZUNHSW1hZ2VDb3B5KCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRy
b2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250
cm9sLm1tCmluZGV4IGE2ZmIwYThjOWY2MTA3NzhkYjg0NmE0YWRjZjcxYjI2NzQxY2Q0YTQuLmQx
MWVkMDFhOGU5ZmZiNzFiZTllYTQ0NjIzNTljYjYzOTU3YTk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQpA
QCAtMzMsNyArMzMsOCBAQAogI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgiCiAjaW1wb3J0
ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgot
I2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI3ByYWdtYSBtYXJrIC0gV0tD
b2xvclBpY2tlcgogCkBAIC03MywyMSArNzQsMjAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAtIChOU0FycmF5PFVJQ29s
b3IgKj4gKilmb2N1c2VkRWxlbWVudFN1Z2dlc3RlZENvbG9ycwogewotICAgIHNpemVfdCBudW1D
b2xvclN1Z2dlc3Rpb25zID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zdWdnZXN0
ZWRDb2xvcnMuc2l6ZSgpOwotICAgIGlmICghbnVtQ29sb3JTdWdnZXN0aW9ucykKLSAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICBhdXRvJiBjb2xvcnMgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLnN1Z2dlc3RlZENvbG9yczsKIAotICAgIE5TTXV0YWJsZUFycmF5PFVJQ29sb3IgKj4g
KmNvbG9ycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IgOiBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnN1Z2dlc3Rl
ZENvbG9ycykKLSAgICAgICAgW2NvbG9ycyBhZGRPYmplY3Q6W1VJQ29sb3IgY29sb3JXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV1dOworICAgIGlmIChjb2xvcnMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGNvbG9yczsKKyAgICByZXR1
cm4gY3JlYXRlTlNBcnJheShjb2xvcnMsIFtdIChhdXRvJiBjb2xvcikgeworICAgICAgICByZXR1
cm4gY29jb2FDb2xvcihjb2xvcik7CisgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KICNlbmRpZgog
CiAtICh2b2lkKXVwZGF0ZUNvbG9yUGlja2VyU3RhdGUKIHsKLSAgICBbX2NvbG9yUGlja2VyVmll
d0NvbnRyb2xsZXIgc2V0U2VsZWN0ZWRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNh
Y2hlZENHQ29sb3IoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jb2xvclZhbHVlKS5n
ZXQoKV1dOworICAgIFtfY29sb3JQaWNrZXJWaWV3Q29udHJvbGxlciBzZXRTZWxlY3RlZENvbG9y
OmNvY29hQ29sb3IoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jb2xvclZhbHVlKS5n
ZXQoKV07CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKFtfY29sb3JQaWNr
ZXJWaWV3Q29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRTdWdnZXN0
ZWRDb2xvcnM6KV0pCiAgICAgICAgIFtfY29sb3JQaWNrZXJWaWV3Q29udHJvbGxlciBfc2V0U3Vn
Z2VzdGVkQ29sb3JzOltzZWxmIGZvY3VzZWRFbGVtZW50U3VnZ2VzdGVkQ29sb3JzXV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXgg
N2YxNTZkZGVmYWNmNzEwZGY0NTc4NmFjNjVkYTg5NDRmMDlkMTJkNy4uYWI3Mzk5NDg5OWM1NDdj
ZTE4NGI5OTYxYWEyNTdjZTFiYTliZmNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6bWFrZVZpZXdCbGFuayhib29sIG1ha2VCbGFuaykKICNpZiBIQVZFKEFQ
UF9BQ0NFTlRfQ09MT1JTKQogV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVudEltcGw6OmFjY2VudENv
bG9yKCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcihbTlNBcHAgX2Vm
ZmVjdGl2ZUFjY2VudENvbG9yXSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvbG9yRnJvbUNvY29h
Q29sb3IoW05TQXBwIF9lZmZlY3RpdmVBY2NlbnRDb2xvcl0pOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQppbmRleCA5
YzQ2YzU5MWYwZDk0NmNmYTJlMWU5NGY5ZTljNjA2YzQ0MTE2MWIxLi44MmIyMzhhMDk4NGFiOGE4
MGI2NTZkMDczZGYwZjhkYjMwZjViYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJD
b2xvclBpY2tlck1hYzo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpCiAgICAgaWYgKCFtX2NsaWVudCB8fCAhbV9jb2xvclBpY2tlclVJKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgW21fY29sb3JQaWNrZXJVSSBzZXRDb2xvcjpuc0NvbG9yKGNvbG9yKS5n
ZXQoKV07CisgICAgW21fY29sb3JQaWNrZXJVSSBzZXRDb2xvcjpjb2NvYUNvbG9yKGNvbG9yKS5n
ZXQoKV07CiB9CiAKIHZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6OmRpZENob29zZUNvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYkNvbG9y
UGlja2VyTWFjOjpzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQog
ICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX2NvbG9yUGlja2Vy
VUkgc2V0QW5kU2hvd1BpY2tlcjp0aGlzIHdpdGhDb2xvcjpuc0NvbG9yKGNvbG9yKS5nZXQoKSBz
dWdnZXN0aW9uczpXVEZNb3ZlKG1fc3VnZ2VzdGlvbnMpXTsKKyAgICBbbV9jb2xvclBpY2tlclVJ
IHNldEFuZFNob3dQaWNrZXI6dGhpcyB3aXRoQ29sb3I6Y29jb2FDb2xvcihjb2xvcikuZ2V0KCkg
c3VnZ2VzdGlvbnM6V1RGTW92ZShtX3N1Z2dlc3Rpb25zKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApAQCAtMjM3LDcgKzIzNyw3IEBAIC0gKHZvaWQpc2V0QW5kU2hvd1BpY2tlcjooV2Vi
S2l0OjpXZWJDb2xvclBpY2tlck1hYyopcGlja2VyIHdpdGhDb2xvcjooTlNDb2xvciAqCiAgICAg
aWYgKHN1Z2dlc3Rpb25zLnNpemUoKSkgewogICAgICAgICBzdWdnZXN0ZWRDb2xvcnMgPSBhZG9w
dE5TKFtbTlNDb2xvckxpc3QgYWxsb2NdIGluaXRdKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdGQ6Om1pbihzdWdnZXN0aW9ucy5zaXplKCksIG1heENvbG9yU3VnZ2VzdGlvbnMp
OyBpKyspCi0gICAgICAgICAgICBbc3VnZ2VzdGVkQ29sb3JzIGluc2VydENvbG9yOm5zQ29sb3Io
c3VnZ2VzdGlvbnMuYXQoaSkpLmdldCgpIGtleTpAKGkpLnN0cmluZ1ZhbHVlIGF0SW5kZXg6aV07
CisgICAgICAgICAgICBbc3VnZ2VzdGVkQ29sb3JzIGluc2VydENvbG9yOmNvY29hQ29sb3Ioc3Vn
Z2VzdGlvbnMuYXQoaSkpLmdldCgpIGtleTpAKGkpLnN0cmluZ1ZhbHVlIGF0SW5kZXg6aV07CiAg
ICAgfQogCiAgICAgW19wb3BvdmVyV2VsbCBzZXRTdWdnZXN0ZWRDb2xvcnM6c3VnZ2VzdGVkQ29s
b3JzLmdldCgpXTsKQEAgLTI4Nyw3ICsyODcsNyBAQCAtICh2b2lkKWRpZENob29zZUNvbG9yOihp
ZClzZW5kZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9waWNrZXItPmRpZENob29z
ZUNvbG9yKFdlYkNvcmU6OmNvbG9yRnJvbU5TQ29sb3IoW19wb3BvdmVyV2VsbCBjb2xvcl0pKTsK
KyAgICBfcGlja2VyLT5kaWRDaG9vc2VDb2xvcihXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9y
KFtfcG9wb3ZlcldlbGwgY29sb3JdKSk7CiB9CiAKIC0gKHZvaWQpc2V0Q29sb3I6KE5TQ29sb3Ig
Kiljb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQppbmRleCA3ZTlkZWQ4ZTkz
OGE0MmE5MTQ1MGI4YWZiZWI2NmZmMWQzYzZhNWZkLi45NzQ0NjU3NTc1ZmVjZTQxMDc4ODg2ZmRj
MWM0M2QzNmQ4NDUyMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAt
NzYsNyArNzYsNyBAQCBSZWY8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3Jl
YXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIGF1dG8mIHN0eWxlZEVsZW1lbnQgPSBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PihlbGVtZW50LmdldCgpKTsKIAogICAgIC8vIEZJWE1FOiBNYXRjaCBm
b250IHdlaWdodCBhbmQgc3R5bGUgYXMgd2VsbD8KLSAgICBzdHlsZWRFbGVtZW50LnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgc2VyaWFsaXphdGlvbkZvckhUTUwoY29s
b3JGcm9tTlNDb2xvcihjaG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xvcikpKTsKKyAgICBzdHlsZWRF
bGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgc2VyaWFsaXph
dGlvbkZvckhUTUwoY29sb3JGcm9tQ29jb2FDb2xvcihjaG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xv
cikpKTsKICAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250RmFtaWx5LCBjaG9pY2VBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CiAKICAgICBO
U0FycmF5ICpjaG9pY2VzID0gY2hvaWNlQW5ub3RhdGlvbi5jaG9pY2VzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tCmluZGV4IDc0OTVlMDQzNmM0MDc0M2Y0Y2VkZmJlNmViYzY2MDQ4ZjY5
ODU3NTEuLmQ3NDVmMDIwOTQ4NGY0ZWMyYjc0YTU1Mzc0ZDFiY2U5MWNhNjc4NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5u
b3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTk1LDcgKzk1LDcgQEAgUmVmPEVsZW1lbnQ+IFBE
RlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAgICAgICAg
IHJldHVybiBlbGVtZW50OwogCiAgICAgLy8gRklYTUU6IE1hdGNoIGZvbnQgd2VpZ2h0IGFuZCBz
dHlsZSBhcyB3ZWxsPwotICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUNvbG9yLCBzZXJpYWxpemF0aW9uRm9ySFRNTChjb2xvckZyb21OU0NvbG9yKHRl
eHRBbm5vdGF0aW9uLmZvbnRDb2xvcikpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgc2VyaWFsaXphdGlvbkZvckhUTUwoY29sb3JG
cm9tQ29jb2FDb2xvcih0ZXh0QW5ub3RhdGlvbi5mb250Q29sb3IpKSk7CiAgICAgc3R5bGVkRWxl
bWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFu
bm90YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKICAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGNzc0FsaWdubWVudFZhbHVlRm9yTlNU
ZXh0QWxpZ25tZW50KHRleHRBbm5vdGF0aW9uLmFsaWdubWVudCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDA2MGY4
ZTBkNmU2N2NiODRmOWMzYjI4ZjBiMjM1ZTY2NjA0MDczNGEuLjFlMjNhZmZlZGVjYWZkYmNkYTMx
MDM4YzkxYmY4MDhkYWE4ODNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBib29sIFdl
YlBhZ2U6OnNob3VsZEF2b2lkQ29tcHV0aW5nUG9zdExheW91dERhdGFGb3JFZGl0b3JTdGF0ZSgp
IGNvbnN0CiAKIHZvaWQgV2ViUGFnZTo6c2V0QWNjZW50Q29sb3IoV2ViQ29yZTo6Q29sb3IgY29s
b3IpCiB7Ci0gICAgW05TQXBwIF9zZXRBY2NlbnRDb2xvcjpjb2xvci5pc1ZhbGlkKCkgPyBXZWJD
b3JlOjpuc0NvbG9yKGNvbG9yKS5nZXQoKSA6IG5pbF07CisgICAgW05TQXBwIF9zZXRBY2NlbnRD
b2xvcjpjb2NvYUNvbG9yT3JOaWwoY29sb3IpLmdldCgpXTsKIH0KIAogI2VuZGlmIC8vIEhBVkUo
QVBQX0FDQ0VOVF9DT0xPUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NUkdCQ29sb3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29s
b3IubW0KaW5kZXggNjVkZTQ2MThhOWFmMDk0OWY3OWU0MjZhMDNjYWE5ZjU4ZGUyMWEwNy4uZmQy
M2NiOThiN2IzOTRlZmJhNzQ0YjU4MjMyYjU4NjY0MmNmMjVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01SR0JDb2xvci5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAi
RE9NSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhj
ZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgpAQCAtODUsNyArODYsNyBAQCAtIChET01DU1NQcmltaXRpdmVWYWx1ZSAqKWFscGhh
CiAtIChOU0NvbG9yICopY29sb3IKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Om5zQ29sb3IoSU1QTC0+Y29sb3IoKSkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gY29jb2FDb2xvcihJTVBMLT5jb2xvcigpKS5hdXRvcmVs
ZWFzZSgpOwogfQogI2Vsc2UKIC0gKENHQ29sb3JSZWYpY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDc4MzI1
NjE5YzFhYzc3NDRlODhmZDQ5MjUzNmM5NTdhMDQyNDRmN2UuLjI0NmRmNDVhMGJiM2JjYWU3NDRl
ZmQwNDA0YzE4YTU3ZmRiZTRiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtODUsNyArODUsNyBAQCAtICh2b2lk
KV93ZWJfZHJhd0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgZm9udDooTlNGb250ICopZm9udCB0ZXh0
Q29sb3I6KE5TQ29sb3IgKgogICAgICAgICBpZiAoIWZsaXBwZWQpCiAgICAgICAgICAgICBDR0Nv
bnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKIAotICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKGNvbG9yRnJvbU5TQ29sb3IodGV4dENvbG9yKSk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3JGcm9tQ29jb2FDb2xvcih0ZXh0Q29sb3Ip
KTsKICAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZs
b2F0UG9pbnQocG9pbnQueCwgZmxpcHBlZCA/IHBvaW50LnkgOiAtcG9pbnQueSkpOwogCiAgICAg
ICAgIGlmICghZmxpcHBlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDViYmM2ZjZkNzlhZGZmZWY4MjljOWNhN2E5ZGNmMjllMGFhNzNjYWMuLmY5
MDc3MTEzYjdmMWFiZmMyMzJiMzYxMDY2NjQxMTBkZjNiZDNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNDQwLDcgKzQ0MCw3IEBAIC0gKHZv
aWQpX3VwZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW4KICAgICAgICAgICAg
IHZpZXctPnNldFRyYW5zcGFyZW50KCFkcmF3c0JhY2tncm91bmQpOwogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KLSAgICAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JGcm9t
TlNDb2xvcihbYmFja2dyb3VuZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0Rldmlj
ZVJHQkNvbG9yU3BhY2VdKTsKKyAgICAgICAgICAgIGF1dG8gY29sb3IgPSBXZWJDb3JlOjpjb2xv
ckZyb21Db2NvYUNvbG9yKFtiYWNrZ3JvdW5kQ29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1l
Ok5TRGV2aWNlUkdCQ29sb3JTcGFjZV0pOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAjZWxzZQogICAgICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3Io
V2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShiYWNrZ3JvdW5kQ29sb3IpKTsKQEAg
LTEwMTQsNyArMTAxNCw3IEBAIC0gKENHQ29sb3JSZWYpX2JvZHlCYWNrZ3JvdW5kQ29sb3IKICAg
ICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gbnNDb2xvcihjb2xvcikuYXV0b3JlbGVhc2UoKTsK
KyAgICByZXR1cm4gY29jb2FDb2xvcihjb2xvcikuYXV0b3JlbGVhc2UoKTsKICNlbHNlCiAgICAg
cmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IpLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDRiMDc4
NTQ5ZGM0MjAyZmJiNmMyNzJlZjIwNWFiMzk0ZTM5NDcxNjMuLmMxNzY1Y2ZiNGU2NjVjOGVhNzg3
NWM3YWNkNDVlNDllMWE1MzE4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNjQ5MSw3ICs2NDkxLDcgQEAgc3RhdGljIHZvaWQgZXh0
cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3MKICAgICAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gV2ViQ29yZTo6Q29s
b3I6OmJsYWNrOwogICAgICAgICAgICAgYXV0byBjb21wb3NpdGlvblVuZGVybGluZUNvbG9yID0g
V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmVDb2xvcjo6VGV4dENvbG9yOwogICAgICAgICAg
ICAgaWYgKE5TQ29sb3IgKmNvbG9yQXR0ciA9IFthdHRycyBvYmplY3RGb3JLZXk6TlNVbmRlcmxp
bmVDb2xvckF0dHJpYnV0ZU5hbWVdKSB7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBXZWJDb3Jl
Ojpjb2xvckZyb21OU0NvbG9yKGNvbG9yQXR0cik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBX
ZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKGNvbG9yQXR0cik7CiAgICAgICAgICAgICAgICAg
Y29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciA9IFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Q29sb3I6OkdpdmVuQ29sb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lKHJhbmdlLmxvY2F0aW9uLCBOU01heFJh
bmdlKHJhbmdlKSwgY29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciwgY29sb3IsIFtzdHlsZSBpbnRW
YWx1ZV0gPiAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggM2IxMGRmYWZmYzk3YjRiODBlM2UwMzIxMzM0MTIyYWM2MzQ3ZGRmZi4uOTZhYjQ0YjMw
MmY2MzQ5YTJlMzAxZmQyMDRhNzExMTI3ZmVkZmM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODgyLDcgKzg4Miw3IEBAIC0gKFdlYlVJVGV4dElu
ZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0
b3JEYXRhOihjCiAgICAgfQogCiAgICAgaWYgKGluZGljYXRvckRhdGEub3B0aW9ucy5jb250YWlu
cyhXZWJDb3JlOjpUZXh0SW5kaWNhdG9yT3B0aW9uOjpDb21wdXRlRXN0aW1hdGVkQmFja2dyb3Vu
ZENvbG9yKSkKLSAgICAgICAgX2VzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IFtQQUw6OmFsbG9j
VUlDb2xvckluc3RhbmNlKCkgaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9y
RGF0YS5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXTsKKyAgICAgICAgX2VzdGltYXRl
ZEJhY2tncm91bmRDb2xvciA9IGNvY29hQ29sb3IoaW5kaWNhdG9yRGF0YS5lc3RpbWF0ZWRCYWNr
Z3JvdW5kQ29sb3IpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTI0Niw3
ICsxMjQ2LDcgQEAgLSAodm9pZClzZXRUZXh0Q29sb3I6KE5TQ29sb3IgKiljb2xvcgogLSAodm9p
ZClfd2ViQ2hhbmdlQ29sb3I6KGlkKXNlbmRlcgogewogICAgIF90ZXh0Q29sb3IgPSBzZWxmLmNv
bG9yUGlja2VySXRlbS5jb2xvcjsKLSAgICBbX3dlYlZpZXcgX2V4ZWN1dGVDb3JlQ29tbWFuZEJ5
TmFtZTpAIkZvcmVDb2xvciIgdmFsdWU6IFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdl
YkNvcmU6OmNvbG9yRnJvbU5TQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpXTsKKyAgICBbX3dlYlZp
ZXcgX2V4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZTpAIkZvcmVDb2xvciIgdmFsdWU6V2ViQ29yZTo6
c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcihfdGV4dENv
bG9yLmdldCgpKSldOwogfQogCiAtIChOU1ZpZXdDb250cm9sbGVyICopdGV4dExpc3RWaWV3Q29u
dHJvbGxlcgpAQCAtOTUxMCw3ICs5NTEwLDcgQEAgLSAodm9pZCl1cGRhdGVUZXh0VG91Y2hCYXIK
IAogICAgICAgICAgICAgICAgIENvbG9yIHRleHRDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRDb2xv
ci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHNldFRleHRDb2xvcjpuc0NvbG9yKHRleHRDb2xvcikuZ2V0KCldOwor
ICAgICAgICAgICAgICAgICAgICBbX3ByaXZhdGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxl
ciBzZXRUZXh0Q29sb3I6Y29jb2FDb2xvcih0ZXh0Q29sb3IpLmdldCgpXTsKIAogICAgICAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldEN1cnJlbnRU
ZXh0QWxpZ25tZW50Om5zVGV4dEFsaWdubWVudEZyb21SZW5kZXJTdHlsZShzdHlsZSldOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441897</attachid>
            <date>2021-10-20 10:52:46 -0700</date>
            <delta_ts>2021-10-20 11:36:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231992-20211020105245.patch</filename>
            <type>text/plain</type>
            <size>77960</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM4NTk1NzFhYmQ2ZDAx
NTBiNzQ0ZjI0MmZlNGJhYWE4OGVlNDE5My4uMzk3M2YxYTM1MzFlZWU4Njk0YWY1NmMwNjA5MTQ4
ZDU4ZDgwNDkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMS0xMC0xOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNZXJnZSBhbmQg
c2ltcGxpZnkgdGhlIG5zQ29sb3IgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRlZCBhIENvY29hQ29sb3IgdHlw
ZSB0aGF0IGlzIE5TL1VJQ29sb3IuCisgICAgICAgIC0gUmVuYW1lZCBwbGF0Zm9ybUNvbG9yIHRv
IGNvY29hQ29sb3IgdG8gYmUgbGVzcyB2YWd1ZS4KKyAgICAgICAgLSBSZW1vdmVkIG5zQ29sb3Iu
CisgICAgICAgIC0gQWRkZWQgY29jb2FDb2xvck9yTmlsLgorICAgICAgICAtIE1lcmdlZCBjb2xv
ckZyb21OU0NvbG9yIGFuZCBjb2xvckZyb21VSUNvbG9yIGludG8gYSBzaW5nbGUKKyAgICAgICAg
ICBjb2xvckZyb21Db2NvYUNvbG9yIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIENvbG9ySU9TLmguCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAg
ICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFk
IG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFy
eSBjb25zdCk6IFVzZSBjb2NvYUNvbG9yCisgICAgICAgIGluc3RlYWQgb2YgcGxhdGZvcm1Db2xv
ci4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdyBjb25zdCk6IERpdHRvLgorCisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZl
cnRlcjo6X2NvbG9yRm9yRWxlbWVudCk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAg
ICAgcGxhdGZvcm1Db2xvci4KKyAgICAgICAgKFdlYkNvcmU6OmVkaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICBuc0NvbG9yLgorCisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IKKyAgICAg
ICAgaW5zdGVhZCBvZiBjb2xvckZyb21OU0NvbG9yLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RHJhZ0ltYWdlRm9yQ29sb3IpOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mCisgICAgICAgIG5z
Q29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmg6
IEFkZGVkIGFuIGluY2x1ZGUgb2YKKyAgICAgICAgIkNvbG9yLmgiIHNvIHRoaXMgZnVuY3Rpb25z
IGFzIGFuIGFkZGl0aW9uIHRvIHRoYXQgaGVhZGVyCisgICAgICAgIGluc3RlYWQgb2Ygc29tZXRo
aW5nIGluZGVwZW5kZW50LiBBZGRlZCBhIFdlYkNvcmU6OkNvY29hQ29sb3IKKyAgICAgICAgdHlw
ZSwgbGlrZSB0aGUgb25lIHdlIGFscmVhZHkgaGF2ZSBpbiBXZWJLaXQsIHRvIGN1dCBkb3duIG9u
CisgICAgICAgIHRoZSBuZWVkIHRvIGRvICNpZiBhbmQgI2Vsc2Ugc28gbXVjaC4gUmVuYW1lZCB0
aGUKKyAgICAgICAgcGxhdGZvcm1Db2xvciBmdW5jdGlvbiB0byBjb2NvYUNvbG9yLCBhZGRlZCBh
CisgICAgICAgIGNvY29hQ29sb3JPck5pbCBmdW5jdGlvbiwgYW5kIHJlbmFtZWQgYm90aCBjb2xv
ckZyb21OU0NvbG9yCisgICAgICAgIGFuZCBjb2xvckZyb21VSUNvbG9yIHRvIGNvbG9yRnJvbUNv
Y29hQ29sb3IgYW5kIG1vdmVkIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Db2xvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29jb2FDb2xvcik6IFJlbmFt
ZWQgdGhlIGlPUyBwbGF0Zm9ybUNvbG9yIHRvIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpjb2Nv
YUNvbG9yT3JOaWwpOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5oOiBJbmNsdWRlIG9mICJDb2xvckNvY29hLmgiCisgICAgICAgIGluc3RlYWQgb2Yg
IkNvbG9yLmgiIGhlcmUuIE1vdmVkIGNvbG9yRnJvbU5TQ29sb3IgYW5kIG5zQ29sb3IuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKTogUmVuYW1lZCBmcm9tIGNvbG9yRnJvbU5TQ29sb3Iu
CisgICAgICAgIChXZWJDb3JlOjpjb2NvYUNvbG9yKTogUmVuYW1lZCBmcm9tIG5zQ29sb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQ29sb3JJT1MuaDogUmVtb3ZlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9Db2xvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yRnJvbUNv
Y29hQ29sb3IpOiBSZW5hbWVkIGZyb20gY29sb3JGcm9tVUlDb2xvci4KKworICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZAorICAg
ICAgICBvZiArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlOjpMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBv
ZiBuc0NvbG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IpOiBVc2Ug
Y29sb3JGcm9tQ29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3Iu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKTogVXNlIGNv
Y29hQ29sb3IgaW5zdGVhZAorICAgICAgICBvZiBuc0NvbG9yLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0NlbGxGb2N1c1JpbmdX
aXRoRnJhbWVBdFRpbWUpOiBVc2UgY29sb3JGcm9tQ29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFk
IG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRGb250QXR0cmli
dXRlQ2hhbmdlcyk6IERJdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZvY3VzUmluZ0Nv
bG9yKTogVXNlCisgICAgICAgIGNvbG9yRnJvbUNvY29hQ29sb3IgaW5zdGVhZCBvZiBjb2xvckZy
b21VSUNvbG9yLgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEFjdGlvbkNvbG9yKTogVXNl
IGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xv
cjpdIGFuZCBjYWNoZWRDR0NvbG9yIGFuZCByZXR1cm4gYQorICAgICAgICBSZXRhaW5QdHIgdG8g
YXZvaWQgYXV0b3JlbGVhc2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5m
bzo6UmVuZGVyQXR0YWNobWVudEluZm8pOiBVcGRhdGUgZm9yCisgICAgICAgIHRoZSB1c2VyIG9m
IHRoZSBSZXRhaW5QdHIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICBVc2UgY29sb3JGcm9tQ29jb2FDb2xv
ciBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
ciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRm
b3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUZvY3VzUmlu
Z0NvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1UZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybURlZmF1bHRCdXR0b25UZXh0Q29sb3Ig
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9yRm9yQXR0YWNo
bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6bGF5T3V0
VGl0bGUpOiBSZW1vdmVkIGluY29ycmVjdCBjYXN0IHRoYXQgc2FpZCBpdAorICAgICAgICB3YXMg
Y2FzdGluZyBhIENHQ29sb3JSZWYgdG8gYW4gTlNDb2xvciAqLCB3aGljaCBhcmUgbm90IHRvbGwt
ZnJlZSBicmlkZ2VkLiBUaGlzCisgICAgICAgIGNvZGUganVzdCBuZWVkcyBhIENHQ29sb3JSZWYg
aW4gYSBkaWN0aW9uYXJ5LCBzbyB3ZSBqdXN0IG5lZWQgdG8gY2FzdCB0byBpZCwKKyAgICAgICAg
bm90IHRvIGEgTlNDb2xvciAqLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6
bGF5T3V0U3VidGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVu
dFRpdGxlQmFja2dyb3VuZCk6IFVzZSBjb2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YKKyAg
ICAgICAgY29sb3JGcm9tTlNDb2xvci4KKwogMjAyMS0xMC0yMCAgUm9iIEJ1aXMgIDxyYnVpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBwZXJjZW50YWdlcyBvbiBvcnRob2dvbmFsIHJlcGxh
Y2VkIGNoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDViZDVmNWFkMmQwZmQxMzk3M2E2MjE4NTYzY2U4ODEx
ZTRiNTRmODMuLjJlZDExY2UxZWUyZGFhOTNlMWQ4NDExOTBkNGQyMmYwMmVjOTNkZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjEtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gTWVyZ2UgYW5kIHNpbXBsaWZ5IHRoZSBuc0NvbG9y
IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAg
ICAgIChJUEM6OmVuY29kZUNvbG9ySW50ZXJuYWwpOiBNZXJnZWQgdGhlIE5TQ29sb3IgYW5kIFVJ
Q29sb3IKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIGludG8gYSBzaW5nbGUgb25lIHRoYXQgdXNl
cyBDb2NvYUNvbG9yLgorICAgICAgICAoSVBDOjpkZWNvZGVDb2xvckludGVybmFsKTogRGl0dG8u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdKTogVXNlIGNvY29hQ29sb3JPck5pbCBpbnN0ZWFkCisg
ICAgICAgIG9mIGlzVmFsaWQgYW5kIHBsYXRmb3JtQ29sb3IuCisgICAgICAgICgtW1dLV2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdKTogVXNlIGNvY29hQ29sb3IKKyAgICAgICAgaW5z
dGVhZCBvZiBwbGF0Zm9ybUNvbG9yLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl0pOiBVc2UgY29jb2FDb2xvck9yTmlsCisgICAgICAgIGluc3RlYWQg
b2YgaXNWYWxpZCBhbmQgcGxhdGZvcm1Db2xvci4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zYW1w
bGVkUGFnZVRvcENvbG9yXSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0IHRoZW1lQ29sb3JdKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZAorICAgICAgICBvZiBw
bGF0Zm9ybUNvbG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdCYWNrZ3JvdW5kXSk6
IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQKKyAgICAgICAgb2YgLVtVSUNvbG9yIGluaXRXaXRoQ0dD
b2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXJpYWxpemVk
U2VsZWN0aW9uQ2FyZXRCYWNrZ3JvdW5kQ29sb3JGb3JUZXN0aW5nXSk6CisgICAgICAgIFVzZSBj
b2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YgY29sb3JGcm9tVUlDb2xvci4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKC1bV0tUZXh0VG91
Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tDaGFuZ2VDb2xvcjpdKTogVXNlIGNvY29hQ29sb3IKKyAg
ICAgICAgaW5zdGVhZCBvZiBuc0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlVGV4dFRvdWNoQmFyKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IKKyAgICAgICAgaW5z
dGVhZCBvZiBjb2xvckZyb21OU0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0VW5kZXJsYXlDb2xvcik6IFVzZSBjb2NvYUNvbG9yT3JOaWwgaW5zdGVhZAorICAgICAgICBv
ZiBpc1ZhbGlkIGFuZCBuc0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5k
ZXJsYXlDb2xvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpjaGFuZ2VGb250Q29sb3JGcm9tU2VuZGVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OmV4dHJhY3RVbmRlcmxpbmVzKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3Ig
aW5zdGVhZCBvZgorICAgICAgICBjb2xvckZyb21OU0NvbG9yLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OkRy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyk6IFVzZQor
ICAgICAgICBjb2NvYUNvbG9yIGluc3RlYWQgb2YgK1tVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6
XSBhbmQgY2FjaGVkQ0dDb2xvci4KKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKTogVXNlIGNvY29hQ29s
b3IKKyAgICAgICAgaW5zdGVhZCBvZiAtW1VJQ29sb3IgaW5pdFdpdGhDR0NvbG9yOl0gYW5kIGNh
Y2hlZENHQ29sb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0
XSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAgICAgLVtVSUNvbG9yIGluaXRXaXRo
Q0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9j
YXNjYWRlSW50ZXJhY3Rpb25UaW50Q29sb3JdKTogVXNlIGNvY29hQ29sb3IKKyAgICAgICAgaW5z
dGVhZCBvZiArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgor
ICAgICAgICAoY29tcG9zaXRpb25IaWdobGlnaHRzKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3Ig
aW5zdGVhZCBvZgorICAgICAgICBjb2xvckZyb21VSUNvbG9yLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdJZlBvc3NpYmxlXSk6
IFVzZQorICAgICAgICBjb2NvYUNvbG9yIGluc3RlYWQgb2YgK1tVSUNvbG9yIGNvbG9yV2l0aENH
Q29sb3I6XSBhbmQgY2FjaGVkQ0dDb2xvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtQ29sb3JDb250cm9sLm1tOgorICAgICAgICAoLVtXS0NvbG9yUGlja2VyIGZvY3Vz
ZWRFbGVtZW50U3VnZ2VzdGVkQ29sb3JzXSk6IFVzZSBjcmVhdGVOU0FycmF5CisgICAgICAgIGFu
ZCBjb2NvYUNvbG9yIGluc3RlYWQgb2YgK1tOU011dGFibGVBcnJheSBhcnJheV0sIGEgZm9yIGxv
b3AsCisgICAgICAgIC1bTlNNdXRhYmxlQXJyYXkgYWRkT2JqZWN0Ol0sICtbVUlDb2xvciBjb2xv
cldpdGhDR0NvbG9yOl0sIGFuZCBjYWNoZWRDR0NvbG9yCisgICAgICAgICgtW1dLQ29sb3JQaWNr
ZXIgdXBkYXRlQ29sb3JQaWNrZXJTdGF0ZV0pOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mCisg
ICAgICAgICtbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOl0gYW5kIGNhY2hlZENHQ29sb3IuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNjZW50Q29sb3IpOiBVc2UgY29jb2FDb2xvciBpbnN0
ZWFkIG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2Vy
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlck1hYzo6c2V0U2VsZWN0ZWRD
b2xvcik6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YgbnNDb2xvci4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xvclBpY2tlcik6IERpdHRvLgorICAgICAgICAo
LVtXS0NvbG9yUG9wb3Zlck1hYyBzZXRBbmRTaG93UGlja2VyOndpdGhDb2xvcjpzdWdnZXN0aW9u
czpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIGRpZENob29zZUNvbG9y
Ol0pOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBVc2UKKyAgICAgICAgY29sb3JGcm9t
Q29jb2FDb2xvciBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBE
aXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWNjZW50Q29sb3IpOiBVc2UgY29jb2FDb2xv
ck9yTmlsIGluc3RlYWQgb2YKKyAgICAgICAgaXNWYWxpZCBhbmQgbnNDb2xvci4KKwogMjAyMS0x
MC0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBFbnN1cmUgdGhlIENBIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHN5bmNocm9ub3VzbHkgY29tbWl0
dGVkIGJlZm9yZSBzbmFwc2hvdHRpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCAzZTAwNDRlY2Y0ZWU0MjI4ZWZmZjM2MjM5MmUzYjE5ODBlN2Y5NWFjLi4xNTgyOTQ1YTQ3M2Q4
MzdhYmYxZjUyODNhMjM3YTVlYjk4YzZhMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gTWVyZ2UgYW5kIHNpbXBsaWZ5IHRoZSBuc0NvbG9yIGZh
bWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRE9NL0RPTVJHQkNvbG9yLm1tOgorICAgICAgICAoLVtET01SR0JDb2xvciBj
b2xvcl0pOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBN
aXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2Ry
YXdBdFBvaW50OmZvbnQ6dGV4dENvbG9yOl0pOiBVc2UgY29sb3JGcm9tQ29jb2FDb2xvcgorICAg
ICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0
ZXNXaGlsZU9mZnNjcmVlbl0pOiBVc2UKKyAgICAgICAgY29sb3JGcm9tQ29jb2FDb2xvciBpbnN0
ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFja2dy
b3VuZENvbG9yXSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAgICAgbnNDb2xvci4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChleHRyYWN0VW5k
ZXJsaW5lcyk6IFVzZSBjb2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAgICAgY29s
b3JGcm9tTlNDb2xvci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRh
OnNjYWxlOl0pOgorICAgICAgICBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mIC1bVUlDb2xvciBp
bml0V2l0aENHQ29sb3I6XSBhbmQgY2FjaGVkQ0dDb2xvci4KKyAgICAgICAgKC1bV2ViVGV4dFRv
dWNoQmFySXRlbUNvbnRyb2xsZXIgX3dlYkNoYW5nZUNvbG9yOl0pOiBVc2UgY29sb3JGcm9tQ29j
b2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICgt
W1dlYlZpZXcgdXBkYXRlVGV4dFRvdWNoQmFyXSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2Yg
bnNDb2xvci4KKwogMjAyMS0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIGNhY2hlZENHQ29sb3IoKSBhbmQgbnNDb2xvcigpIHNob3VsZCByZXR1cm4gc21h
cnQgcG9pbnRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAzNDBlNDIwYmFiNTliYmY3OGFiMGFmNjVmYTRkOWYzMTIwNjcxM2Q3
Li5lODQwYWEyODI0MjY0ZjY5MWVlMzM5YzAzNzExNTExNzdhNDQxMTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NjAzLDcg
KzQ2MDMsNiBAQAogCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTI4NDk4NzFD
QTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNB
MzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICov
OyB9OwogCQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4
IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNkRB
REZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkRB
REY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RTc5OUY5ODFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3OTlG
OTYxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCAq
LzsgfTsKQEAgLTE1NTU2LDcgKzE1NTU1LDYgQEAKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5
RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0U1MTY5RTUy
MUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAv
KiBDb2xvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9ySU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRT
ZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQuaDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDMyLDcgKzI1MDMwLDYgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8s
CiAJCQkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICov
LAotCQkJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovLAogCQkJCUNF
NTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5tbSAqLywKIAkJCQlBMUVENzc4QTFC
RTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNwcCAqLywKIAkJCQlBMUVENzc4QjFCRTMyOTQwMDBE
QzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0zMjA5Niw3ICszMjA5Myw2IEBACiAJCQkJQ0QzRUVG
M0MyNTc5OUZBQjAwNjU2M0JCIC8qIENvbG9yR2FtdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MDNCN0RGMURCMDE1NjcwMDhCQjg5MCAvKiBDb2xvckhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzRBMjNFQzI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JMdW1pbmFuY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KaW5kZXggNjZiZjkzNTNkZjU0NzVmZjhjNmY4MDY4MDYwYWUxYjU1MjNiN2FjYi4uOTQ4MzA1
MDdiMmZiNThlODk4Mjc4ZWEzMTM0ZThkNzM2OGUwMDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTg1NSw4ICs4NTUsOCBAQCBzdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJp
bmcsIFJlbgogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udChhdHRyU3RyaW5nLCBOU0FjY2Vz
c2liaWxpdHlGb250VGV4dEF0dHJpYnV0ZSwgc3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9u
dCgpLmdldENURm9udCgpLCByYW5nZSk7CiAgICAgCiAgICAgLy8gc2V0IGJhc2ljIGNvbG9ycwot
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
Rm9yZWdyb3VuZENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpLmdldCgpLCByYW5nZSk7Ci0gICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlCYWNrZ3JvdW5kQ29s
b3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikpLmdldCgpLCByYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlGb3JlZ3JvdW5kQ29sb3JU
ZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUNvbG9yKSkuZ2V0KCksIHJhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENv
bG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1
dGUsIGNvY29hQ29sb3Ioc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKSkuZ2V0KCksIHJhbmdlKTsKICAgICAKICAgICAvLyBzZXQgc3VwZXIvc3Vi
IHNjcmlwdGluZwogICAgIFZlcnRpY2FsQWxpZ24gYWxpZ25tZW50ID0gc3R5bGUudmVydGljYWxB
bGlnbigpOwpAQCAtODkxLDEyICs4OTEsMTIgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KIAog
ICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSB7CiAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0
dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGlu
ZUNvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNv
bG9yKS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xv
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUs
IGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdl
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJl
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwg
QFlFUywgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRy
U3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBu
c0NvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsK
KyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNv
cmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IpLmdldCgpLCByYW5nZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Zv
bnRBdHRyaWJ1dGVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRB
dHRyaWJ1dGVzQ29jb2EubW0KaW5kZXggMmEzYzFlNDg2MWQyY2IzODU3YzI5OGFhZDFjOWZjODIw
OGVhOTliMi4uNDRiNDg3YzIyMThkNGI2YjkyMDAxMDc1NjA5Yjk5YmI4ZmQ0MjJiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5t
bQpAQCAtOTEsMTAgKzkxLDEwIEBAIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IEZvbnRBdHRyaWJ1
dGVzOjpjcmVhdGVEaWN0aW9uYXJ5KCkgY29uc3QKICAgICAgICAgYXR0cmlidXRlc1tOU0ZvbnRB
dHRyaWJ1dGVOYW1lXSA9IGZvbnQuZ2V0KCk7CiAKICAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWVdID0gcGxhdGZvcm1Db2xvcihmb3JlZ3JvdW5kQ29sb3IpLmdldCgpOworICAgICAgICBhdHRy
aWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBjb2NvYUNvbG9yKGZvcmVn
cm91bmRDb2xvcikuZ2V0KCk7CiAKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
LSAgICAgICAgYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdID0gcGxh
dGZvcm1Db2xvcihiYWNrZ3JvdW5kQ29sb3IpLmdldCgpOworICAgICAgICBhdHRyaWJ1dGVzW05T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBjb2NvYUNvbG9yKGJhY2tncm91bmRDb2xv
cikuZ2V0KCk7CiAKICAgICBpZiAoZm9udFNoYWRvdy5jb2xvci5pc1ZhbGlkKCkgJiYgKCFmb250
U2hhZG93Lm9mZnNldC5pc1plcm8oKSB8fCBmb250U2hhZG93LmJsdXJSYWRpdXMpKQogICAgICAg
ICBhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0gPSBmb250U2hhZG93LmNyZWF0ZVNo
YWRvdygpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9G
b250U2hhZG93Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFk
b3dDb2NvYS5tbQppbmRleCA4ZWY4YTAzY2JmNWEyNGYwNmM5NzEwMDNjMzkxYWM1ODMyOWYzZDhl
Li5jNTBkYmJiZWRjNzIzZjY0OWE5MDk5NDU4YzFlZGIxNTc1MTQwNmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQpAQCAtNDIsNyArNDIs
NyBAQCBSZXRhaW5QdHI8TlNTaGFkb3c+IEZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdygpIGNvbnN0
CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhb
UEFMOjpnZXROU1NoYWRvd0NsYXNzKCkgbmV3XSk7CiAjZW5kaWYKLSAgICBbc2hhZG93IHNldFNo
YWRvd0NvbG9yOnBsYXRmb3JtQ29sb3IoY29sb3IpLmdldCgpXTsKKyAgICBbc2hhZG93IHNldFNo
YWRvd0NvbG9yOmNvY29hQ29sb3IoY29sb3IpLmdldCgpXTsKICAgICBbc2hhZG93IHNldFNoYWRv
d09mZnNldDpvZmZzZXRdOwogICAgIFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpibHVyUmFk
aXVzXTsKICAgICByZXR1cm4gc2hhZG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDc5YzRmMTI2NDVjYzkyMzI5MzVlNDY0NThjZDdkMjgz
ZDdlMTkzY2EuLmQ5NDRkOTg0ZGMzZjhlMTkzOWYxZmM3NDNmOGE5NDBhMTc3YTFlMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTkxMCw3
ICs5MTAsNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1Db2xvcj4gSFRNTENvbnZlcnRlcjo6X2NvbG9y
Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcgogICAgIENvbG9yIHJlc3VsdCA9IF9j
YWNoZXMtPmNvbG9yUHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgcHJvcGVydHlJZCk7CiAg
ICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIGF1dG8g
cGxhdGZvcm1SZXN1bHQgPSBwbGF0Zm9ybUNvbG9yKHJlc3VsdCk7CisgICAgYXV0byBwbGF0Zm9y
bVJlc3VsdCA9IGNvY29hQ29sb3IocmVzdWx0KTsKICAgICBpZiAoW1tQbGF0Zm9ybUNvbG9yQ2xh
c3MgY2xlYXJDb2xvcl0gaXNFcXVhbDpwbGF0Zm9ybVJlc3VsdC5nZXQoKV0gfHwgKFtwbGF0Zm9y
bVJlc3VsdCBhbHBoYUNvbXBvbmVudF0gPT0gMC4wKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICByZXR1cm4gcGxhdGZvcm1SZXN1bHQ7CkBAIC0yNDI2LDEzICsyNDI2LDEzIEBAIEF0dHJpYnV0
ZWRTdHJpbmcgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBJbmNsdWRlSW1hZ2VzCiAKICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpOwog
ICAgICAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgW2F0
dHJzIHNldE9iamVjdDpuc0NvbG9yKGZvcmVncm91bmRDb2xvcikuZ2V0KCkgZm9yS2V5Ok5TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0
OmNvY29hQ29sb3IoZm9yZWdyb3VuZENvbG9yKS5nZXQoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW2F0dHJzIHJlbW92
ZU9iamVjdEZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCiAgICAgICAg
IENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhD
b2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiYWNr
Z3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5z
Q29sb3IoYmFja2dyb3VuZENvbG9yKS5nZXQoKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXTsKKyAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6Y29jb2FDb2xvcihiYWNr
Z3JvdW5kQ29sb3IpLmdldCgpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVd
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBbYXR0cnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0RyYWdJbWFnZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW0KaW5kZXggYTA3ZDY0NmEyZTgwYzFmZTNlNTE1
NGFkN2U4ZjZlMDE0ODllYjlmYS4uZTM4ZGFmODg1YTM2NDdjMDBmYzQ5OWIwNTRmMGRiZGU5NDM5
MzdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29j
b2EubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
TGluayhFbGVtZW50JiBlbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aQogCiAgICAg
R3JhcGhpY3NDb250ZXh0Q0cgY29udGV4dChbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRl
eHRdLkNHQ29udGV4dCk7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGxheW91dC5ib3VuZGluZ1JlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKGxpbmtJ
bWFnZUNvcm5lclJhZGl1cykpLCBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGNvbnRyb2xCYWNr
Z3JvdW5kQ29sb3JdKSk7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChsYXlvdXQuYm91bmRpbmdSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShsaW5rSW1h
Z2VDb3JuZXJSYWRpdXMpKSwgY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBjb250cm9sQmFj
a2dyb3VuZENvbG9yXSkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBsYWJlbCA6IGxheW91dC5s
YWJlbHMpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0
KTsKQEAgLTMyNCw3ICszMjQsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdAogICAgIE5TQmV6
aWVyUGF0aCAqcGF0aCA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdpdGhSb3VuZGVkUmVjdDpO
U01ha2VSZWN0KDAsIDAsIENvbG9yU3dhdGNoV2lkdGgsIENvbG9yU3dhdGNoV2lkdGgpIHhSYWRp
dXM6Q29sb3JTd2F0Y2hDb3JuZXJSYWRpdXMgeVJhZGl1czpDb2xvclN3YXRjaENvcm5lclJhZGl1
c107CiAgICAgW3BhdGggc2V0TGluZVdpZHRoOkNvbG9yU3dhdGNoU3Ryb2tlU2l6ZV07CiAKLSAg
ICBbbnNDb2xvcihjb2xvcikgc2V0RmlsbF07CisgICAgW2NvY29hQ29sb3IoY29sb3IpIHNldEZp
bGxdOwogICAgIFtwYXRoIGZpbGxdOwogCiAgICAgW1tOU0NvbG9yIHF1YXRlcm5hcnlMYWJlbENv
bG9yXSBzZXRTdHJva2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQ29sb3JDb2NvYS5oCmluZGV4IDBhZDQyMzE2M2E3MmVhYjIyNDYzMDFhMmVjNWFk
NTlmMzkyZWM3NjcuLmExZTAwMGEzYjU4ODFhYWM5YmQ4NjFhNDdmZjBkODI1MzFlZjY4OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNv
Y29hLmgKQEAgLTI1LDE5ICsyNSwzMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2ltcG9ydCAiQ29s
b3IuaCIKKworI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIE5TQ29sb3I7CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NMQVNTIFVJQ29sb3I7CisjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKIAogI2lmIFVTRShBUFBLSVQpCi1X
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNDb2xvcj4gcGxhdGZvcm1Db2xvcihjb25zdCBDb2xv
ciYpOwordXNpbmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi1XRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8VUlDb2xvcj4gcGxhdGZvcm1D
b2xvcihjb25zdCBDb2xvciYpOwordXNpbmcgQ29jb2FDb2xvciA9IFVJQ29sb3I7CiAjZW5kaWYK
IAorV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENvY29hQ29sb3I+IGNvY29hQ29sb3IoY29uc3Qg
Q29sb3ImKTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDb2NvYUNvbG9yPiBjb2NvYUNvbG9y
T3JOaWwoY29uc3QgQ29sb3ImKTsgLy8gUmV0dXJucyBuaWwgaWYgdGhlIGNvbG9yIGlzIGludmFs
aWQuCitXRUJDT1JFX0VYUE9SVCBDb2xvciBjb2xvckZyb21Db2NvYUNvbG9yKENvY29hQ29sb3Ig
Kik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCmluZGV4IDU2MWU2ODU0YWZmODA1
NmQwNmRkNzdiZDdkZjg1N2U0MjhmMTYxZWEuLjNkNWRlMDNlOWVlYWEzZWQyZmI3ZWM0YTQ1OTUy
NDAwNDQ5MzE1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0NvbG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQ29sb3JDb2NvYS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAKLSNpbXBvcnQgIkNvbG9yTWFjLmgiCi0KICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgpAQCAtMzUsMjIgKzMzLDE4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShBUFBLSVQpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAotUmV0YWluUHRyPE5TQ29sb3I+IHBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQorUmV0YWluUHRyPFVJQ29sb3I+IGNvY29hQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogewotICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0VUlD
b2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xv
cjpjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV07CiB9CiAKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLQotUmV0YWluUHRyPFVJQ29sb3I+IHBsYXRmb3JtQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQorUmV0YWluUHRyPENvY29hQ29sb3I+IGNvY29hQ29sb3JPck5pbChjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIF9k
aXNhbWJpZ3VhdGVkX2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcikuZ2V0KCldOworICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgPyBjb2NvYUNvbG9y
KGNvbG9yKSA6IG5pbDsKIH0KIAotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKaW5kZXgg
OGUxYzQ5MDU1Yzg4NTM0NzMwYTYwOTU3ODBhMDU1ZWQ0YTgxOWRjYi4uMmQ3NmMxMzA3M2RiZTg5
MDE1MWVmZWIzYTVhZWM4YjMzYzU2ODdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKQEAgLTI4LDE3ICsyOCwxMyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ29sb3JDb2NvYS5oIgogCiAj
aWYgVVNFKEFQUEtJVCkKIAotT0JKQ19DTEFTUyBOU0NvbG9yOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdFQkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqKTsK
IENvbG9yIHNlbWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICopOwotV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TQ29sb3I+IG5zQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogV0VCQ09SRV9F
WFBPUlQgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpOwogV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRleCA4NzY4ODg0NTRh
MjJjNWZiMmQ1OGFmM2JlYzg3ODY5ZmY2NTU2NTgyLi41OWU4ZmI1ZjUyNmVlYzdkOGM2Y2Q1OWU4
NmYwOWE2MmI3NzMxZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNv
bG9yKQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBPGZsb2F0
PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
Z3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRp
Y19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CiB9CiAKLUNvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlND
b2xvciAqY29sb3IpCitDb2xvciBjb2xvckZyb21Db2NvYUNvbG9yKE5TQ29sb3IgKmNvbG9yKQog
ewogICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihjb2xvcik7CiB9CkBAIC0x
MTMsNyArMTEzLDcgQEAgQ29sb3Igc2VtYW50aWNDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNv
bG9yKQogICAgIHJldHVybiBDb2xvcihtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihjb2xvciks
IENvbG9yOjpGbGFnczo6U2VtYW50aWMpOwogfQogCi1SZXRhaW5QdHI8TlNDb2xvcj4gbnNDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCitSZXRhaW5QdHI8TlNDb2xvcj4gY29jb2FDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGF1dG8gc3JnYiA9IGNvbG9yLnRyeUdldEFzU1JH
QkFCeXRlcygpKSB7CiAgICAgICAgIHN3aXRjaCAoUGFja2VkQ29sb3I6OlJHQkEgeyAqc3JnYiB9
LnZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJ
T1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwZTQ0YzFkZmI2NjYyNjY1MWFiNzAzMzBhZDYyMjBiN2Q5ZjE5
NTNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29sb3IuaCIK
LQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLU9CSkNfQ0xBU1MgVUlDb2xvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1XRUJDT1JFX0VYUE9SVCBDb2xvciBjb2xvckZyb21VSUNvbG9y
KFVJQ29sb3IgKik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0KaW5kZXggN2IxZjQ1NzE5NWMxMjZhYjhlNmZi
ZGQ2ZWM2YzQwOTUxYWE0NDA5OS4uNDEyZGY4NmFjY2ZlNTQzOWNhZTFjNDllNGFlMjM2Mjk3YzBh
NzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQpAQCAtMjQsNyAr
MjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ29sb3JJT1MuaCIK
KyNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db2xvciBjb2xvckZyb21V
SUNvbG9yKFVJQ29sb3IgKmNvbG9yKQorQ29sb3IgY29sb3JGcm9tQ29jb2FDb2xvcihVSUNvbG9y
ICpjb2xvcikKIHsKICAgICBpZiAoIWNvbG9yKQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggMDQxNWYwNWFhZmY0ZWFlNDllNWM5MGE1ZjY3NWRjZmJiMjI4YTUxYy4uMTY3Y2VmMDJk
NzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJDb2xvci5oIgorI2lt
cG9ydCAiQ29sb3JDb2NvYS5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9h
cmQuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtNDIxLDggKzQy
MSw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvTGlzdCAqcmVwcmVzCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdCBhbGxvY10gaW5pdF0pOwotICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbUEFMOjpnZXRVSUNv
bG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpXTsK
LSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltOU0tleWVkQXJjaGl2ZXIg
YXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dWlDb2xvciByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6
Tk8gZXJyb3I6bmlsXSBmb3JUeXBlOlVJQ29sb3JQYm9hcmRUeXBlXTsKKyAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6Y29jb2FDb2xvcihjb2xvcikuZ2V0KCkgcmVxdWlyaW5nU2VjdXJlQ29kaW5n
Ok5PIGVycm9yOm5pbF0gZm9yVHlwZTpVSUNvbG9yUGJvYXJkVHlwZV07CiAgICAgcmVnaXN0ZXJJ
dGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVi
b2FyZC5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCmluZGV4
IDMxZjQyMWY4ODljY2MyZmExNjgxYjYwYzA3NzRiNmQ0Y2E0MzI3ZDcuLjliYzM1YTEwYzY2NjRj
YzA5MDE2M2FhZjQ2ZDlkNWI4YjY0NmFiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCkBAIC00
Niw3ICs0Niw3IEBAIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2U6OkxvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jCiAgICAgTlNBcHBlYXJhbmNlICph
cHBlYXJhbmNlID0gW05TQXBwZWFyYW5jZSBhcHBlYXJhbmNlTmFtZWQ6bV91c2luZ0RhcmtBcHBl
YXJhbmNlID8gTlNBcHBlYXJhbmNlTmFtZURhcmtBcXVhIDogTlNBcHBlYXJhbmNlTmFtZUFxdWFd
OwogCiAgICAgaWYgKHRpbnRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGFwcGVhcmFuY2UgPSBb
YXBwZWFyYW5jZSBhcHBlYXJhbmNlQnlBcHBseWluZ1RpbnRDb2xvcjpuc0NvbG9yKHRpbnRDb2xv
cikuZ2V0KCldOworICAgICAgICBhcHBlYXJhbmNlID0gW2FwcGVhcmFuY2UgYXBwZWFyYW5jZUJ5
QXBwbHlpbmdUaW50Q29sb3I6Y29jb2FDb2xvcih0aW50Q29sb3IpLmdldCgpXTsKIAogICAgIFtO
U0FwcGVhcmFuY2Ugc2V0Q3VycmVudEFwcGVhcmFuY2U6YXBwZWFyYW5jZV07CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCA2MDAyZWI0YjY3ZjUxMGNh
NjI3NDkwZWEzODkxMjQ1YzljZTc4YTcyLi5kOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2
ZjJjYjRjZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTMwNSw3ICszMDUsNyBAQCBTdHJpbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRB
bmRXcml0ZQogCiBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKIHsKLSAgICByZXR1
cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBjb2xvckZyb21QYXN0ZWJvYXJkOm1fcGFzdGVi
b2FyZC5nZXQoKV0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIGNv
bG9yRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXSk7CiB9CiAKIFVSTCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnVybCgpCkBAIC0zNjksOCArMzY5LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogCiBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ewotICAgIGF1dG8gcGFzdGVib2FyZENvbG9yID0gbnNDb2xvcihjb2xvcik7Ci0gICAgW3Bhc3Rl
Ym9hcmRDb2xvciB3cml0ZVRvUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOworICAgIFtj
b2NvYUNvbG9yKGNvbG9yKSB3cml0ZVRvUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwog
ICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0KaW5kZXggYmNlZmNkZWM5OWM4Zjc2M2Y5NGJjZjM2OTA5OGZhN2M0NzdhOGRm
Yi4uYzg0NTNmZmJkNzg4YjgxYmEwNzcyNTNmNTE0MWU3NWQ1ODFmNTMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0YXRpYyBi
b29sIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKE5TQ2VsbCAqY2VsbCwgTlNSZWN0
IGNlbGxGcmFtZSwgTlNWCiAKICAgICAvLyBGSVhNRTogVGhpcyBjb2xvciBzaG91bGQgYmUgc2hh
cmVkIHdpdGggUmVuZGVyVGhlbWVNYWMuIEZvciBub3cganVzdCB1c2UgdGhlIHNhbWUgTlNDb2xv
ciBjb2xvci4KICAgICAvLyBUaGUgY29sb3IgaXMgZXhwZWN0ZWQgdG8gYmUgb3BhcXVlLCBzaW5j
ZSBDb3JlR3JhcGhpY3Mgd2lsbCBhcHBseSBvcGFjaXR5IHdoZW4gZHJhd2luZyAoYmVjYXVzZSBv
cGFjaXR5IGlzIG5vcm1hbGx5IGFuaW1hdGVkKS4KLSAgICBhdXRvIGNvbG9yID0gY29sb3JGcm9t
TlNDb2xvcihbTlNDb2xvciBrZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3JdKS5vcGFxdWVDb2xv
cigpOworICAgIGF1dG8gY29sb3IgPSBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIGtleWJv
YXJkRm9jdXNJbmRpY2F0b3JDb2xvcl0pLm9wYXF1ZUNvbG9yKCk7CiAgICAgYXV0byBzdHlsZSA9
IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUs
IGNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpKSk7CiAgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dD
b250ZXh0LCBzdHlsZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQppbmRleCBlZjI5YjNiY2M5
NWVhMTMwN2M0YWYwNWMwMGRlZjkyMzE4ODg3MjA3Li5mYTNjOTZkMGJmYzhjZGJmZjFmYzYyMjQx
N2NlOTMwNjNjZDIzYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCkBAIC0xMjcsMTggKzEyNywxOCBA
QCBGb250QXR0cmlidXRlQ2hhbmdlcyBjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9u
dE1hbmFnZXIgKmZvbnRNYW5hZ2VyLCBpZAogCiAgICAgTlNDb2xvciAqY29udmVydGVkQmFja2dy
b3VuZENvbG9yQSA9IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQSBvYmplY3RGb3JLZXk6TlNCYWNrZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICBpZiAoY29udmVydGVkQmFja2dyb3VuZENvbG9y
QSA9PSBbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0Rm9yS2V5Ok5TQmFja2dyb3VuZENvbG9y
QXR0cmlidXRlTmFtZV0pCi0gICAgICAgIGNoYW5nZXMuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9y
RnJvbU5TQ29sb3IoY29udmVydGVkQmFja2dyb3VuZENvbG9yQSA/OiBOU0NvbG9yLmNsZWFyQ29s
b3IpKTsKKyAgICAgICAgY2hhbmdlcy5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3JGcm9tQ29jb2FD
b2xvcihjb252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBID86IE5TQ29sb3IuY2xlYXJDb2xvcikpOwog
CiAgICAgY2hhbmdlcy5zZXRGb250Q2hhbmdlcyhjb21wdXRlZEZvbnRDaGFuZ2VzKGZvbnRNYW5h
Z2VyLCBvcmlnaW5hbEZvbnRBLCBbY29udmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5T
Rm9udEF0dHJpYnV0ZU5hbWVdLCBbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0Rm9yS2V5Ok5T
Rm9udEF0dHJpYnV0ZU5hbWVdKSk7CiAKICAgICBOU0NvbG9yICpjb252ZXJ0ZWRGb3JlZ3JvdW5k
Q29sb3JBID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRGb3JlZ3JvdW5kQ29sb3JBID09
IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQiBvYmplY3RGb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSkKLSAgICAgICAgY2hhbmdlcy5zZXRGb3JlZ3JvdW5kQ29sb3IoY29sb3JGcm9t
TlNDb2xvcihjb252ZXJ0ZWRGb3JlZ3JvdW5kQ29sb3JBID86IE5TQ29sb3IuYmxhY2tDb2xvcikp
OworICAgICAgICBjaGFuZ2VzLnNldEZvcmVncm91bmRDb2xvcihjb2xvckZyb21Db2NvYUNvbG9y
KGNvbnZlcnRlZEZvcmVncm91bmRDb2xvckEgPzogTlNDb2xvci5ibGFja0NvbG9yKSk7CiAKICAg
ICBOU1NoYWRvdyAqY29udmVydGVkU2hhZG93ID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVj
dEZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRTaGFkb3cp
IHsKICAgICAgICAgRmxvYXRTaXplIG9mZnNldCB7IExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5k
KHN0YXRpY19jYXN0PGZsb2F0Pihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93T2Zmc2V0LndpZHRoKSku
dG9GbG9hdCgpLCBMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4o
Y29udmVydGVkU2hhZG93LnNoYWRvd09mZnNldC5oZWlnaHQpKS50b0Zsb2F0KCkgfTsKLSAgICAg
ICAgY2hhbmdlcy5zZXRTaGFkb3coeyBjb2xvckZyb21OU0NvbG9yKGNvbnZlcnRlZFNoYWRvdy5z
aGFkb3dDb2xvciA/OiBOU0NvbG9yLmJsYWNrQ29sb3IpLCBvZmZzZXQsIGNvbnZlcnRlZFNoYWRv
dy5zaGFkb3dCbHVyUmFkaXVzIH0pOworICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IGNvbG9y
RnJvbUNvY29hQ29sb3IoY29udmVydGVkU2hhZG93LnNoYWRvd0NvbG9yID86IE5TQ29sb3IuYmxh
Y2tDb2xvciksIG9mZnNldCwgY29udmVydGVkU2hhZG93LnNoYWRvd0JsdXJSYWRpdXMgfSk7CiAg
ICAgfSBlbHNlIGlmICghW2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU1NoYWRv
d0F0dHJpYnV0ZU5hbWVdKQogICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZWJjMTY2N2U4Mjcz
YmM4MTUwM2YwMjgyNzc0ZTM1NWJkZTZkZWJlNy4uZTVhN2U0OWJkOTc3ZjhlNDg1ZGIyMTk2ZWUw
Y2RmMTNjOTgzNzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiQ1NTVmFsdWVLZXkuaCIKICNpbXBvcnQg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbXBvcnQgIkNvbG9yQmxlbmRpbmcuaCIKLSNpbXBvcnQg
IkNvbG9ySU9TLmgiCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0ICJEYXRlQ29tcG9u
ZW50cy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkRyYXdHbHlwaHNSZWNvcmRl
ci5oIgpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZv
Y3VzUmluZ0NvbG9yKCkKIHsKICAgICBpZiAoIWNhY2hlZEZvY3VzUmluZ0NvbG9yKCkuaGFzX3Zh
bHVlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSB1c2luZyAta2V5Ym9hcmRGb2N1
c0luZGljYXRvckNvbG9yLiBGb3Igbm93LCB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTA4
Mzg4ODY+LgotICAgICAgICBjYWNoZWRGb2N1c1JpbmdDb2xvcigpID0gY29sb3JGcm9tVUlDb2xv
cihbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1CbHVlQ29sb3JdKTsKKyAgICAgICAgY2Fj
aGVkRm9jdXNSaW5nQ29sb3IoKSA9IGNvbG9yRnJvbUNvY29hQ29sb3IoW1BBTDo6Z2V0VUlDb2xv
ckNsYXNzKCkgc3lzdGVtQmx1ZUNvbG9yXSk7CiAgICAgfQogICAgIHJldHVybiAqY2FjaGVkRm9j
dXNSaW5nQ29sb3IoKTsKIH0KQEAgLTE2MzAsOSArMTYzMCw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q1RGb250UmVmPiBhdHRhY2htZW50QWN0aW9uRm9udCgpCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RG
b250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGVtcGhhc2l6ZWRGb250RGVzY3JpcHRvci5nZXQo
KSwgMCwgbnVsbHB0cikpOwogfQogCi1zdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudEFjdGlvbkNv
bG9yKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCitzdGF0aWMgUmV0YWluUHRy
PFVJQ29sb3I+IGF0dGFjaG1lbnRBY3Rpb25Db2xvcihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50KQogewotICAgIHJldHVybiBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBjb2xvcldp
dGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoYXR0YWNobWVudC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSkuZ2V0KCldOworICAgIHJldHVybiBjb2NvYUNvbG9y
KGF0dGFjaG1lbnQuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
cikpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudFRpdGxlRm9u
dCgpCkBAIC0xODcwLDcgKzE4NzAsNyBAQCBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0
YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICAgICAg
ICAgIHlPZmZzZXQgKz0gaWNvblJlY3QuaGVpZ2h0KCkgKyBhdHRhY2htZW50SXRlbU1hcmdpbjsK
ICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBidWlsZFdyYXBwZWRMaW5lcyhhY3Rpb24s
IGF0dGFjaG1lbnRBY3Rpb25Gb250KCkuZ2V0KCksIGF0dGFjaG1lbnRBY3Rpb25Db2xvcihhdHRh
Y2htZW50KSwgYXR0YWNobWVudFdyYXBwaW5nVGV4dE1heGltdW1MaW5lQ291bnQpOworICAgICAg
ICBidWlsZFdyYXBwZWRMaW5lcyhhY3Rpb24sIGF0dGFjaG1lbnRBY3Rpb25Gb250KCkuZ2V0KCks
IGF0dGFjaG1lbnRBY3Rpb25Db2xvcihhdHRhY2htZW50KS5nZXQoKSwgYXR0YWNobWVudFdyYXBw
aW5nVGV4dE1heGltdW1MaW5lQ291bnQpOwogCiAgICAgYm9vbCBmb3JjZVNpbmdsZUxpbmVUaXRs
ZSA9ICFhY3Rpb24uaXNFbXB0eSgpIHx8ICFzdWJ0aXRsZS5pc0VtcHR5KCkgfHwgaGFzUHJvZ3Jl
c3M7CiAgICAgYnVpbGRXcmFwcGVkTGluZXModGl0bGUsIGF0dGFjaG1lbnRUaXRsZUZvbnQoKS5n
ZXQoKSwgYXR0YWNobWVudFRpdGxlQ29sb3IoKSwgZm9yY2VTaW5nbGVMaW5lVGl0bGUgPyAxIDog
YXR0YWNobWVudFdyYXBwaW5nVGV4dE1heGltdW1MaW5lQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDYzMTBjZWUzNDRkMWQ0MzZjMjRhYTIy
M2M3Y2Y1MTI5ODUwZjJjY2YuLjZkZmQ1YTY2N2RkOTI5MTcxOWUxMmUyYTY3NzhlYzZmOWUzNmM3
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI4
NywxNyArMjg3LDE3IEBAIE5TVmlldyAqUmVuZGVyVGhlbWVNYWM6OmRvY3VtZW50Vmlld0Zvcihj
b25zdCBSZW5kZXJPYmplY3QmIG8pIGNvbnN0CiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRp
b25zPiBvcHRpb25zKSBjb25zdAogewogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvck9wdGlvbnM6OlVzZURh
cmtBcHBlYXJhbmNlKSk7Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3Igc2Vs
ZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9yXSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbUNvY29hQ29s
b3IoW05TQ29sb3Igc2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9yXSk7CiB9CiAKIENvbG9yIFJl
bmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKE9w
dGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvck9wdGlvbnM6OlVzZURhcmtB
cHBlYXJhbmNlKSk7Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgdW5lbXBo
YXNpemVkU2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9yXSk7CisgICAgcmV0dXJuIGNvbG9yRnJv
bUNvY29hQ29sb3IoW05TQ29sb3IgdW5lbXBoYXNpemVkU2VsZWN0ZWRUZXh0QmFja2dyb3VuZENv
bG9yXSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAgICByZXR1cm4gY29s
b3JGcm9tTlNDb2xvcihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZENvbnRlbnRCYWNrZ3Jv
dW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciB1bmVt
cGhhc2l6ZWRTZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsKICNlbmRpZgogfQogCkBA
IC0zMjMsNyArMzIzLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZlU2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG8KIHsKICAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNvbnRhaW5zKFN0
eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwogICAgIGlmIChsb2NhbEFwcGVh
cmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICByZXR1cm4gY29sb3JGcm9tTlND
b2xvcihbTlNDb2xvciBzZWxlY3RlZFRleHRDb2xvcl0pOworICAgICAgICByZXR1cm4gY29sb3JG
cm9tQ29jb2FDb2xvcihbTlNDb2xvciBzZWxlY3RlZFRleHRDb2xvcl0pOwogICAgIHJldHVybiB7
IH07CiB9CiAKQEAgLTMzMiw3ICszMzIsNyBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZv
cm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDbwogI2lm
IEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0aW9uczo6
VXNlRGFya0FwcGVhcmFuY2UpKTsKICAgICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0Fw
cGVhcmFuY2UoKSkKLSAgICAgICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgdW5l
bXBoYXNpemVkU2VsZWN0ZWRUZXh0Q29sb3JdKTsKKyAgICAgICAgcmV0dXJuIGNvbG9yRnJvbUNv
Y29hQ29sb3IoW05TQ29sb3IgdW5lbXBoYXNpemVkU2VsZWN0ZWRUZXh0Q29sb3JdKTsKICAgICBy
ZXR1cm4geyB9OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CkBAIC0zNDQsMTEg
KzM0NCwxMSBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKE9wdGlvblNldDxTdAogewogI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVh
cmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0aW9uczo6VXNlRGFya0FwcGVhcmFu
Y2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBzZWxlY3RlZENvbnRl
bnRCYWNrZ3JvdW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlND
b2xvciBzZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKG9wdGlvbnMpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRD
b250cm9sQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBh
bHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogI2VuZGlmCiB9CkBAIC0zNjAsMjQgKzM2MCwyNCBAQCBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoT3B0aW9uU2V0PAogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYK
LSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3Rl
ZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xv
cihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsK
IAogfQogCiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4gb3B0aW9ucykg
Y29uc3QKIHsKICAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5j
ZShvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkp
OwotICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVk
Q29udHJvbFRleHRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0Nv
bG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOwogfQogCiBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRpb25zPiBvcHRpb25zKSBjb25zdAogewogI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0aW9uczo6VXNl
RGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciB1
bmVtcGhhc2l6ZWRTZWxlY3RlZFRleHRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2Nv
YUNvbG9yKFtOU0NvbG9yIHVuZW1waGFzaXplZFNlbGVjdGVkVGV4dENvbG9yXSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihb
TlNDb2xvciBzZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9t
Q29jb2FDb2xvcihbTlNDb2xvciBzZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdKTsKICNlbmRpZgog
fQogCkBAIC0zODcsMTMgKzM4NywxMyBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1G
b2N1c1JpbmdDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbgogICAgICAg
ICByZXR1cm4gb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCk7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0
aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKICAgICAvLyBUaGUgY29sb3IgaXMgZXhwZWN0ZWQg
dG8gYmUgb3BhcXVlLCBzaW5jZSBDb3JlR3JhcGhpY3Mgd2lsbCBhcHBseSBvcGFjaXR5IHdoZW4g
ZHJhd2luZyAoYmVjYXVzZSBvcGFjaXR5IGlzIG5vcm1hbGx5IGFuaW1hdGVkKS4KLSAgICByZXR1
cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBrZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3Jd
KS5vcGFxdWVDb2xvcigpOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9y
IGtleWJvYXJkRm9jdXNJbmRpY2F0b3JDb2xvcl0pLm9wYXF1ZUNvbG9yKCk7CiB9CiAKIENvbG9y
IFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcihPcHRpb25T
ZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgTG9jYWxEZWZhdWx0
U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNv
bG9yT3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlND
b2xvcihbTlNDb2xvciBmaW5kSGlnaGxpZ2h0Q29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9t
Q29jb2FDb2xvcihbTlNDb2xvciBmaW5kSGlnaGxpZ2h0Q29sb3JdKTsKIH0KIAogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKQEAgLTQwNyw3ICs0MDcsNyBAQCBDb2xvciBSZW5kZXJUaGVtZU1h
Yzo6cGxhdGZvcm1BcHBIaWdobGlnaHRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+
KSBjbwogQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtRGVmYXVsdEJ1dHRvblRleHRDb2xv
cihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlu
cyhTdHlsZUNvbG9yT3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29s
b3JGcm9tTlNDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3Jd
KTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxl
Y3RlZENvbnRyb2xUZXh0Q29sb3JdKTsKIH0KIAogc3RhdGljIENvbG9yIGFjdGl2ZUJ1dHRvblRl
eHRDb2xvcigpCkBAIC0yMjk3LDcgKzIyOTcsNyBAQCBzdGF0aWMgQ29sb3IgdGl0bGVUZXh0Q29s
b3JGb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEF0dAog
ICAgIAogICAgIGlmIChzdHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6OlNlbGVjdGVkKSB7
CiAgICAgICAgIGlmIChhdHRhY2htZW50LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5k
QWN0aXZlKCkpCi0gICAgICAgICAgICByZXN1bHQgPSBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9y
IGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOworICAgICAgICAgICAgcmVzdWx0
ID0gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xU
ZXh0Q29sb3JdKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gYXR0YWNobWVu
dFRpdGxlSW5hY3RpdmVUZXh0Q29sb3I7CiAgICAgfQpAQCAtMjM1MSw3ICsyMzUxLDcgQEAgdm9p
ZCBBdHRhY2htZW50TGF5b3V0OjpsYXlPdXRUaXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50KQogCiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAg
ICAgIChfX2JyaWRnZSBpZClrQ1RGb250QXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIGlkKWZvbnQu
Z2V0KCksCi0gICAgICAgIChfX2JyaWRnZSBpZClrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVO
YW1lOiAoX19icmlkZ2UgTlNDb2xvciAqKWNhY2hlZENHQ29sb3IodGl0bGVUZXh0Q29sb3JGb3JB
dHRhY2htZW50KGF0dGFjaG1lbnQsIHN0eWxlKSkuZ2V0KCkKKyAgICAgICAgKF9fYnJpZGdlIGlk
KWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBpZCljYWNoZWRDR0Nv
bG9yKHRpdGxlVGV4dENvbG9yRm9yQXR0YWNobWVudChhdHRhY2htZW50LCBzdHlsZSkpLmdldCgp
CiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkVGl0
bGUgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0
aXRsZSBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAgICAgUmV0YWluUHRyPENURnJhbWVz
ZXR0ZXJSZWY+IHRpdGxlRnJhbWVzZXR0ZXIgPSBhZG9wdENGKENURnJhbWVzZXR0ZXJDcmVhdGVX
aXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRUaXRs
ZS5nZXQoKSkpOwpAQCAtMjQxMCw3ICsyNDEwLDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0Ojps
YXlPdXRTdWJ0aXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGF1
dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJ
Rm9udFN5c3RlbSwgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7CiAgICAg
TlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBpZClr
Q1RGb250QXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIGlkKWZvbnQuZ2V0KCksCi0gICAgICAgIChf
X2JyaWRnZSBpZClrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgTlND
b2xvciAqKWNhY2hlZENHQ29sb3Ioc3VidGl0bGVDb2xvcikuZ2V0KCkKKyAgICAgICAgKF9fYnJp
ZGdlIGlkKWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBpZCljYWNo
ZWRDR0NvbG9yKHN1YnRpdGxlQ29sb3IpLmdldCgpCiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3VidGl0bGVUZXh0ID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VidGl0bGVUZXh0IGF0dHJpYnV0
ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBzdWJ0aXRsZUxpbmUgPSBhZG9wdENGKENUTGluZUNy
ZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRl
ZFN1YnRpdGxlVGV4dC5nZXQoKSkpOwpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIEcKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKGF0dGFjaG1l
bnQuZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkgewogICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENv
bG9yXSk7CisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNvbG9yRnJvbUNvY29hQ29sb3IoW05T
Q29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sQ29sb3JdKTsKICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfSBlbHNlCiAgICAgICAgIGJhY2tncm91bmRD
b2xvciA9IGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggYzZm
ZmY2OTA2ZmMyMTY1ZjkzMTczMzkxNTkzMGZhNDlmNjYxODY0Ny4uZGE0ZDExYzljMGEyNGFmN2Fm
YzUxZDMxYmZmODU3MDU3MmM3MDRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zNCwxOCArMzQsMTMgQEAKICNpbXBvcnQg
IkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0
IDxDb3JlVGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29j
b2EuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5o
PgogCi0jaWYgVVNFKEFQUEtJVCkKLSNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KLSNlbHNl
Ci0jaW1wb3J0IDxXZWJDb3JlL0NvbG9ySU9TLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUZv
bnQuaD4KQEAgLTI2NywyMyArMjYyLDkgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRy
PGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmEKIAogI3By
YWdtYSBtYXJrIC0gTlNDb2xvciAvIFVJQ29sb3IKIAotI2lmIFVTRShBUFBLSVQpCi1zdGF0aWMg
aW5saW5lIHZvaWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU0NvbG9y
ICpjb2xvcikKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yRnJvbU5TQ29sb3IoY29sb3IpOwotfQot
Ci1zdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJ
bnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUNvbG9y
SW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgQ29jb2FDb2xvciAqY29sb3IpCiB7Ci0gICAgQ29s
b3IgY29sb3I7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHsgbnNDb2xvcihjb2xvcikgfTsKLX0KLSNlbHNl
Ci1zdGF0aWMgaW5saW5lIHZvaWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVy
LCBVSUNvbG9yICpjb2xvcikKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yRnJvbVVJQ29sb3IoY29s
b3IpOworICAgIGVuY29kZXIgPDwgY29sb3JGcm9tQ29jb2FDb2xvcihjb2xvcik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVy
bmFsKERlY29kZXImIGRlY29kZXIpCkBAIC0yOTEsOSArMjcyLDggQEAgc3RhdGljIGlubGluZSBz
dGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBDb2xvciBjb2xvcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9y
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBhZG9wdE5TKFtb
VUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgp
XSkgfTsKKyAgICByZXR1cm4geyBjb2NvYUNvbG9yKGNvbG9yKSB9OwogfQotI2VuZGlmCiAKICNw
cmFnbWEgbWFyayAtIE5TRGF0YQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCBkZTU1YTBmZjVmZTY3MjUxY2Y5NmMzZDdiNmFkNmI5OTI2
Y2NlODdhLi4yNjgwYjZjNzU0ZGZmZTE3NDliNjc1NTQ4ZThjYzNlMmQ5NGM2ZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE3Njgs
MTUgKzE3NjgsMTIgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IGFsbG93aW5nUmVhZEFjY2Vzc1RvVVIKIAogLSAoQ29jb2FDb2xvciAq
KXRoZW1lQ29sb3IKIHsKLSAgICBhdXRvIHRoZW1lQ29sb3IgPSBfcGFnZS0+dGhlbWVDb2xvcigp
OwotICAgIGlmICghdGhlbWVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IodGhlbWVDb2xvcikuYXV0b3JlbGVhc2Uo
KTsKKyAgICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT50aGVtZUNvbG9yKCkpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcihfcGFnZS0+dW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvY29hQ29sb3IoX3Bh
Z2UtPnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2
b2lkKXNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjooQ29jb2FDb2xvciAqKXVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck92ZXJyaWRlCkBAIC0zMjcwLDE4ICszMjY3LDEyIEBAIC0gKENvY29hQ29s
b3IgKilfdGhlbWVDb2xvcgogLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KIC0gKENvY29h
Q29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7Ci0gICAgYXV0byBwYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
KCk7Ci0gICAgaWYgKCFwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvcikuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gY29jb2FD
b2xvck9yTmlsKF9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoQ29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCiB7Ci0gICAg
YXV0byBzYW1wbGVkUGFnZVRvcENvbG9yID0gX3BhZ2UtPnNhbXBsZWRQYWdlVG9wQ29sb3IoKTsK
LSAgICBpZiAoIXNhbXBsZWRQYWdlVG9wQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHNhbXBsZWRQYWdlVG9wQ29s
b3IpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvY29hQ29sb3JPck5pbChfcGFnZS0+c2Ft
cGxlZFBhZ2VUb3BDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8X1dLSW5wdXRE
ZWxlZ2F0ZT4pX2lucHV0RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KaW5kZXggNmZkZjA5
MDI0ZDg2NjM1NWI3MGFjZGVmYzAzOWIyMzM0N2YxMTEyMC4uMDM1OWViNWI2MDQ2M2RhYzlkMmJj
ZmFkY2I4Njc1MDI3ZTFkYjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KQEAgLTEzOSw3ICsx
MzksNyBAQCAtIChOU1VSTCAqKXN0YXJ0VVJMCiAKIC0gKENvY29hQ29sb3IgKil0aGVtZUNvbG9y
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IoX2FwcGxpY2F0aW9uTWFuaWZl
c3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBjb2NvYUNvbG9yKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlm
ZXN0KCkudGhlbWVDb2xvcikuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoX1dLQXBwbGljYXRpb25N
YW5pZmVzdERpc3BsYXlNb2RlKWRpc3BsYXlNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDFhNDYxYTE2YjhlOTJlZjRjNjk5Njlk
MWQyMGRjMjY1ZDIzZjliM2YuLjBjYzIyYjQyOTY5MDYxZjc1MzMwNDU3NzM1ZDQyOTk5OGVlYjFm
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCkBAIC01Myw2ICs1Myw3IEBACiAjaW1wb3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9J
bnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaD4KQEAgLTU0Myw5
ICs1NDQsNyBAQCAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3QmFja2dyb3VuZAogICAgIGF1dG8g
bmV3U2Nyb2xsVmlld0JhY2tncm91bmRDb2xvciA9IHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Io
c2VsZiwgQWxsb3dQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU6Olllcyk7CiAgICAgaWYgKF9z
Y3JvbGxWaWV3QmFja2dyb3VuZENvbG9yICE9IG5ld1Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Ip
IHsKICAgICAgICAgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBuZXdTY3JvbGxWaWV3QmFj
a2dyb3VuZENvbG9yOwotCi0gICAgICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5T
KFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IobmV3U2Nyb2xs
Vmlld0JhY2tncm91bmRDb2xvcikuZ2V0KCldKTsKLSAgICAgICAgW19zY3JvbGxWaWV3IHNldEJh
Y2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CisgICAgICAgIFtfc2Nyb2xs
VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29jb2FDb2xvcihuZXdTY3JvbGxWaWV3QmFja2dyb3Vu
ZENvbG9yKS5nZXQoKV07CiAgICAgfQogCiAgICAgLy8gVXBkYXRlIHRoZSBpbmRpY2F0b3Igc3R5
bGUgYmFzZWQgb24gdGhlIGxpZ2h0bmVzcy9kYXJrbmVzcyBvZiB0aGUgYmFja2dyb3VuZCBjb2xv
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
VGVzdGluZ0lPUy5tbQppbmRleCBjNmE1MzIxZGNhYzIwNjAyMGQwY2FmMTliOGM5OTRjZmI2OTNk
NzA0Li42MDQ3ZDNjNzQxMmJmNjAwYmIwOWMyNjY4ZWI2MjkxMWIxMzJmMGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tCkBAIC0zOCw3ICszOCw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQg
Il9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1RleHRJbnB1
dENvbnRleHRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9Db2xvcklPUy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXph
dGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgogI2ltcG9ydCA8d3Rm
L1NvcnRlZEFycmF5TWFwLmg+CkBAIC00NzgsNyArNDc4LDcgQEAgLSAoTlNTdHJpbmcgKilfc2Vy
aWFsaXplZFNlbGVjdGlvbkNhcmV0QmFja2dyb3VuZENvbG9yRm9yVGVzdGluZwogICAgIGlmICgh
YmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFdlYkNv
cmU6OnNlcmlhbGl6YXRpb25Gb3JDU1MoV2ViQ29yZTo6Y29sb3JGcm9tVUlDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IpKTsKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhXZWJDb3JlOjpjb2xv
ckZyb21Db2NvYUNvbG9yKGJhY2tncm91bmRDb2xvcikpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDY5ZjQzYTA5NjI3NjM3
ZWVmOTU2MmFiM2JmOTI2NjkxN2IxMmYxMGYuLmU5YmQ4ODA2NDE5MTM4YmVmNGUwYmYzMzc3NWM1
ZDg4MDRhNmUzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC05NDksNyArOTQ5LDcgQEAgLSAodm9pZClfd2tDaGFuZ2VDb2xvcjooaWQpc2Vu
ZGVyCiAgICAgICAgIHJldHVybjsKIAogICAgIF90ZXh0Q29sb3IgPSBzZWxmLmNvbG9yUGlja2Vy
SXRlbS5jb2xvcjsKLSAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQo
IkZvcmVDb2xvciIsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9y
RnJvbU5TQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsKKyAgICBfd2ViVmlld0ltcGwtPnBhZ2Uo
KS5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciIsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25G
b3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsK
IH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTEz
MTUsNyArMTMxNSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVRleHRUb3VjaEJhcigpCiAg
ICAgICAgICAgICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0SXNCb2xkOihi
b29sKShtX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS50eXBpbmdBdHRyaWJ1
dGVzICYgQXR0cmlidXRlQm9sZCldOwogICAgICAgICAgICAgW21fdGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgc2V0VGV4dElzSXRhbGljOihib29sKShtX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9z
dExheW91dERhdGEoKS50eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlSXRhbGljcyldOwogICAg
ICAgICAgICAgW21fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dElzVW5kZXJsaW5l
ZDooYm9vbCkobV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkudHlwaW5nQXR0
cmlidXRlcyAmIEF0dHJpYnV0ZVVuZGVybGluZSldOwotICAgICAgICAgICAgW21fdGV4dFRvdWNo
QmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dENvbG9yOm5zQ29sb3IoZWRpdG9yU3RhdGUucG9zdExh
eW91dERhdGEoKS50ZXh0Q29sb3IpLmdldCgpXTsKKyAgICAgICAgICAgIFttX3RleHRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHNldFRleHRDb2xvcjpjb2NvYUNvbG9yKGVkaXRvclN0YXRlLnBvc3RM
YXlvdXREYXRhKCkudGV4dENvbG9yKS5nZXQoKV07CiAgICAgICAgICAgICBbW21fdGV4dFRvdWNo
QmFySXRlbUNvbnRyb2xsZXIgdGV4dExpc3RUb3VjaEJhclZpZXdDb250cm9sbGVyXSBzZXRDdXJy
ZW50TGlzdFR5cGU6KExpc3RUeXBlKW1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0
YSgpLmVuY2xvc2luZ0xpc3RUeXBlXTsKICAgICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0ZW1D
b250cm9sbGVyIHNldEN1cnJlbnRUZXh0QWxpZ25tZW50Om5zVGV4dEFsaWdubWVudEZyb21UZXh0
QWxpZ25tZW50KChUZXh0QWxpZ25tZW50KWVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkudGV4
dEFsaWdubWVudCldOwogICAgICAgICB9CkBAIC0yNjIyLDI1ICsyNjIyLDE3IEBAIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCiAKIHZvaWQg
V2ViVmlld0ltcGw6OnNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKIHsK
LSAgICBtX3BhZ2UtPnNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcih1
bmRlcmxheUNvbG9yKSk7CisgICAgbV9wYWdlLT5zZXRVbmRlcmxheUNvbG9yKFdlYkNvcmU6OmNv
bG9yRnJvbUNvY29hQ29sb3IodW5kZXJsYXlDb2xvcikpOwogfQogCiBSZXRhaW5QdHI8TlNDb2xv
cj4gV2ViVmlld0ltcGw6OnVuZGVybGF5Q29sb3IoKSBjb25zdAogewotICAgIFdlYkNvcmU6OkNv
bG9yIHdlYkNvbG9yID0gbV9wYWdlLT51bmRlcmxheUNvbG9yKCk7Ci0gICAgaWYgKCF3ZWJDb2xv
ci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6
bnNDb2xvcih3ZWJDb2xvcik7CisgICAgcmV0dXJuIGNvY29hQ29sb3JPck5pbChfcGFnZS0+dW5k
ZXJsYXlDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiBSZXRhaW5QdHI8TlNDb2xvcj4gV2Vi
Vmlld0ltcGw6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgV2Vi
Q29yZTo6Q29sb3IgY29sb3IgPSBtX3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigp
OwotICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
cmV0dXJuIFdlYkNvcmU6Om5zQ29sb3IoY29sb3IpOworICAgIHJldHVybiBjb2NvYUNvbG9yT3JO
aWwoX3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQpAQCAt
MzE4Miw3ICszMTc0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udENvbG9yRnJvbVNl
bmRlcihpZCBzZW5kZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNvcmU6OkZvbnRBdHRy
aWJ1dGVDaGFuZ2VzIGNoYW5nZXM7Ci0gICAgY2hhbmdlcy5zZXRGb3JlZ3JvdW5kQ29sb3IoV2Vi
Q29yZTo6Y29sb3JGcm9tTlNDb2xvcigoTlNDb2xvciAqKWNvbG9yKSk7CisgICAgY2hhbmdlcy5z
ZXRGb3JlZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcigoTlNDb2xvciAq
KWNvbG9yKSk7CiAgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5n
ZXMpKTsKIH0KIApAQCAtNTAxNSw4ICs1MDA3LDggQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW4K
ICAgICAgICAgaWYgKE5TTnVtYmVyICpzdHlsZSA9IFthdHRycyBvYmplY3RGb3JLZXk6TlNVbmRl
cmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdKSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpDb2xvciBj
b2xvciA9IFdlYkNvcmU6OkNvbG9yOjpibGFjazsKICAgICAgICAgICAgIFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lQ29sb3IgY29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciA9IFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3I6OlRleHRDb2xvcjsKLSAgICAgICAgICAgIGlmIChO
U0NvbG9yICpjb2xvckF0dHIgPSBbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TVW5kZXJsaW5lQ29sb3JB
dHRyaWJ1dGVOYW1lXSkgewotICAgICAgICAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JG
cm9tTlNDb2xvcihjb2xvckF0dHIpOworICAgICAgICAgICAgaWYgKE5TQ29sb3IgKmNvbG9yQXR0
cmlidXRlID0gW2F0dHJzIG9iamVjdEZvcktleTpOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFt
ZV0pIHsKKyAgICAgICAgICAgICAgICBjb2xvciA9IFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29s
b3IoY29sb3JBdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9uVW5kZXJsaW5l
Q29sb3IgPSBXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZUNvbG9yOjpHaXZlbkNvbG9yOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZShyYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyYW5nZSksIGNvbXBvc2l0
aW9uVW5kZXJsaW5lQ29sb3IsIGNvbG9yLCBzdHlsZS5pbnRWYWx1ZSA+IDEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lm1tCmluZGV4IDJkMGU2NjY5MzQ3NzI5YzZiNDRjMTcwN2RjYzJlNDI3ZGM3NGQ1Y2EuLjI1ZjI2
NTRkMmU0YWY3MzU1YjhmM2JiMTc3MTQ0MTM1N2MxMDMwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAt
MjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2Nv
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFn
ZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CkBAIC0yMjYsNyArMjI3LDcg
QEAgdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRlbGl2ZXJEZWxheWVkRHJvcFByZXZp
ZXcoVUlWaWV3ICpjb250ZW50VmlldywgVUkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB0
ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZS5nZXQoKSk7Ci0gICAgYXV0byBwcmV2aWV3ID0gY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyh0
ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVyLCBp
bmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9y
LnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENH
Q29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5n
ZXQoKV0sIG5pbCk7CisgICAgYXV0byBwcmV2aWV3ID0gY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmll
dyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVy
LCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNh
dG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIGNvY29hQ29sb3IoaW5kaWNh
dG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikuZ2V0KCksIG5pbCk7CiAgICAgZm9yIChhdXRv
JiBpdGVtQW5kUHJldmlld1Byb3ZpZGVyIDogbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMp
CiAgICAgICAgIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIucHJvdmlkZXIocHJldmlldy5nZXQoKSk7
CiAgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKQEAgLTMxMyw3ICsz
MTQsNyBAQCBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6
cHJldmlld0ZvckRyYWdJdGVtKFVJRHJhZ0l0ZW0gKgogICAgIGlmIChzaG91bGRVc2VUZXh0SW5k
aWNhdG9yVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShzb3VyY2UpKSB7CiAgICAgICAgIGF1
dG8gaW5kaWNhdG9yID0gc291cmNlLmluZGljYXRvckRhdGEudmFsdWUoKTsKICAgICAgICAgYXV0
byB0ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJ
bWFnZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRl
eHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIGlu
ZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3Iu
dGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdl
dCgpXSwgbmlsKS5hdXRvcmVsZWFzZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlVGFyZ2V0ZWRE
cmFnUHJldmlldyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3
Q29udGFpbmVyLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIGNvY29hQ29s
b3IoaW5kaWNhdG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikuZ2V0KCksIG5pbCkuYXV0b3Jl
bGVhc2UoKTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggYmJi
YjAyNTRmYWFhMWQ0NDIzNDgwNGNlN2E2ODIwN2FkMmE5OTk1MS4uMTRhZDk0ZjhiOGI5NjgwYzVj
NjliZDRmMWNjNGMwNzBkZDJiYzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5FZGdlUGFuR2VzdHVyZVJlY29nbml6ZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1dl
YWtPYmpDUHRyLmg+CkBAIC0yMjUsNyArMjI2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24K
ICAgICAgICAgICAgIFttX3NuYXBzaG90VmlldyBsYXllcl0uY29udGVudHMgPSBzbmFwc2hvdC0+
YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvcmVDb2xvciA9IHNu
YXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGNvcmVDb2xvci5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxv
Y10gaW5pdFdpdGhDR0NvbG9yOldlYkNvcmU6OmNhY2hlZENHQ29sb3IoY29yZUNvbG9yKS5nZXQo
KV0pOworICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY29jb2FDb2xvcihjb3JlQ29sb3Ip
OwogICAgIH0KIAogICAgIFttX3NuYXBzaG90VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFja2dy
b3VuZENvbG9yLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGMzZjA4OGQ1NTFhMTQxM2VlYzlj
ZWJiZjkyZDNkMjUxMGE1NmQ3Y2MuLjk0OWZkMDM0YWYyMTJkZTJkZjJlYTdiYmRjNGRmNjFkNTQ2
MTJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtOTksOCArOTksNyBAQAogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxVbmlmb3JtVHlwZUlkZW50aWZp
ZXJzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FwcEhpZ2hsaWdodC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9Db2xvcklPUy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFs
aXphdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgpAQCAtMjAxMiw3ICsyMDExLDcgQEAgLSAo
dm9pZClfdXBkYXRlVGFwSGlnaGxpZ2h0CiAgICAgaWYgKCFbX2hpZ2hsaWdodFZpZXcgc3VwZXJ2
aWV3XSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW19oaWdobGlnaHRWaWV3IHNldENvbG9yOmFk
b3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihfdGFw
SGlnaGxpZ2h0SW5mb3JtYXRpb24uY29sb3IpLmdldCgpXSkuZ2V0KCldOworICAgIFtfaGlnaGxp
Z2h0VmlldyBzZXRDb2xvcjpjb2NvYUNvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xv
cikuZ2V0KCldOwogCiAgICAgYXV0byYgaGlnaGxpZ2h0ZWRRdWFkcyA9IF90YXBIaWdobGlnaHRJ
bmZvcm1hdGlvbi5xdWFkczsKICAgICBib29sIGFsbFJlY3RpbGluZWFyID0gdHJ1ZTsKQEAgLTM2
ODksMTAgKzM2ODgsMTAgQEAgLSAoVUlDb2xvciAqKV9jYXNjYWRlSW50ZXJhY3Rpb25UaW50Q29s
b3IKICAgICAgICAgcmV0dXJuIFtVSUNvbG9yIGNsZWFyQ29sb3JdOwogCiAgICAgaWYgKCFfcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewotICAgICAgICBXZWJD
b3JlOjpDb2xvciBjYXJldENvbG9yID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERh
dGEoKS5jYXJldENvbG9yOwotICAgICAgICBpZiAoY2FyZXRDb2xvci5pc1ZhbGlkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNh
cmV0Q29sb3IpLmdldCgpXTsKKyAgICAgICAgaWYgKGF1dG8gY2FyZXRDb2xvciA9IF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRDb2xvcjsgY2FyZXRDb2xvci5pc1Zh
bGlkKCkpCisgICAgICAgICAgICByZXR1cm4gY29jb2FDb2xvcihjYXJldENvbG9yKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KKwogICAgIHJldHVybiBbc2VsZiBfaW5oZXJpdGVkSW50ZXJhY3Rpb25U
aW50Q29sb3JdOwogfQogCkBAIC01MTE1LDcgKzUxMTQsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiBjb21wb3NpdGlvbkhpZ2hsaWdodHMoTlNBdHRyaWJ1
dGVkUwogCiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGhpZ2hsaWdodENvbG9yIHsgV2ViQ29yZTo6
Q29tcG9zaXRpb25IaWdobGlnaHQ6OmRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciB9OwogICAg
ICAgICBpZiAoVUlDb2xvciAqdWlDb2xvciA9IGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JB
dHRyaWJ1dGVOYW1lXSkKLSAgICAgICAgICAgIGhpZ2hsaWdodENvbG9yID0gV2ViQ29yZTo6Y29s
b3JGcm9tVUlDb2xvcih1aUNvbG9yKTsKKyAgICAgICAgICAgIGhpZ2hsaWdodENvbG9yID0gV2Vi
Q29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcih1aUNvbG9yKTsKICAgICAgICAgaGlnaGxpZ2h0cy5h
cHBlbmQoeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UubG9jYXRpb24pLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTlNNYXhSYW5nZShyYW5nZSkpLCBoaWdobGlnaHRDb2xvciB9KTsKICAgICB9
XTsKIApAQCAtODU5Nyw3ICs4NTk2LDcgQEAgLSAoVUlUYXJnZXRlZFByZXZpZXcgKilfY3JlYXRl
VGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3SWZQb3NzaWJsZQogICAgIGlmIChfcG9zaXRp
b25JbmZvcm1hdGlvbi5pc0xpbmsgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRv
ci5jb250ZW50SW1hZ2UpIHsKICAgICAgICAgYXV0byBpbmRpY2F0b3IgPSBfcG9zaXRpb25JbmZv
cm1hdGlvbi5saW5rSW5kaWNhdG9yOwogICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3JJbWFnZSA9
IHVpSW1hZ2VGb3JJbWFnZShpbmRpY2F0b3IuY29udGVudEltYWdlLmdldCgpKTsKLSAgICAgICAg
dGFyZ2V0ZWRQcmV2aWV3ID0gY3JlYXRlVGFyZ2V0ZWRQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFn
ZS5nZXQoKSwgc2VsZiwgc2VsZi5jb250YWluZXJGb3JDb250ZXh0TWVudUhpbnRQcmV2aWV3cywg
aW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGluZGljYXRv
ci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLCBbVUlDb2xvciBjb2xvcldpdGhD
R0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvciku
Z2V0KCldKTsKKyAgICAgICAgdGFyZ2V0ZWRQcmV2aWV3ID0gY3JlYXRlVGFyZ2V0ZWRQcmV2aWV3
KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgc2VsZiwgc2VsZi5jb250YWluZXJGb3JDb250ZXh0
TWVudUhpbnRQcmV2aWV3cywgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLCBj
b2NvYUNvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpKTsKICAg
ICB9IGVsc2UgaWYgKChfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0F0dGFjaG1lbnQgfHwgX3Bvc2l0
aW9uSW5mb3JtYXRpb24uaXNJbWFnZSkgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UpIHsK
ICAgICAgICAgYXV0byBjZ0ltYWdlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UtPm1ha2VD
R0ltYWdlQ29weSgpOwogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQppbmRleCBh
NmZiMGE4YzlmNjEwNzc4ZGI4NDZhNGFkY2Y3MWIyNjc0MWNkNGE0Li5kMTFlZDAxYThlOWZmYjcx
YmU5ZWE0NDYyMzU5Y2I2Mzk1N2E5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KQEAgLTMzLDcgKzMzLDgg
QEAKICNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJZGlvbS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNwcmFnbWEgbWFyayAtIFdLQ29sb3JQaWNrZXIKIApA
QCAtNzMsMjEgKzc0LDIwIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogLSAoTlNBcnJheTxVSUNvbG9yICo+ICopZm9jdXNl
ZEVsZW1lbnRTdWdnZXN0ZWRDb2xvcnMKIHsKLSAgICBzaXplX3QgbnVtQ29sb3JTdWdnZXN0aW9u
cyA9IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uc3VnZ2VzdGVkQ29sb3JzLnNpemUo
KTsKLSAgICBpZiAoIW51bUNvbG9yU3VnZ2VzdGlvbnMpCi0gICAgICAgIHJldHVybiBuaWw7Cisg
ICAgYXV0byYgY29sb3JzID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zdWdnZXN0
ZWRDb2xvcnM7CiAKLSAgICBOU011dGFibGVBcnJheTxVSUNvbG9yICo+ICpjb2xvcnMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZvciAoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
IDogX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zdWdnZXN0ZWRDb2xvcnMpCi0gICAg
ICAgIFtjb2xvcnMgYWRkT2JqZWN0OltVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dD
b2xvcihjb2xvcikuZ2V0KCldXTsKKyAgICBpZiAoY29sb3JzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBjb2xvcnM7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJy
YXkoY29sb3JzLCBbXSAoYXV0byYgY29sb3IpIHsKKyAgICAgICAgcmV0dXJuIGNvY29hQ29sb3Io
Y29sb3IpOworICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9CiAjZW5kaWYKIAogLSAodm9pZCl1cGRh
dGVDb2xvclBpY2tlclN0YXRlCiB7Ci0gICAgW19jb2xvclBpY2tlclZpZXdDb250cm9sbGVyIHNl
dFNlbGVjdGVkQ29sb3I6W1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF92
aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY29sb3JWYWx1ZSkuZ2V0KCldXTsKKyAgICBb
X2NvbG9yUGlja2VyVmlld0NvbnRyb2xsZXIgc2V0U2VsZWN0ZWRDb2xvcjpjb2NvYUNvbG9yKF92
aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY29sb3JWYWx1ZSkuZ2V0KCldOwogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChbX2NvbG9yUGlja2VyVmlld0NvbnRyb2xs
ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U3VnZ2VzdGVkQ29sb3JzOildKQog
ICAgICAgICBbX2NvbG9yUGlja2VyVmlld0NvbnRyb2xsZXIgX3NldFN1Z2dlc3RlZENvbG9yczpb
c2VsZiBmb2N1c2VkRWxlbWVudFN1Z2dlc3RlZENvbG9yc11dOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDdmMTU2ZGRlZmFjZjcx
MGRmNDU3ODZhYzY1ZGE4OTQ0ZjA5ZDEyZDcuLmFiNzM5OTQ4OTljNTQ3Y2UxODRiOTk2MWFhMjU3
Y2UxYmE5YmZjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KQEAgLTEwMTksNyArMTAxOSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6
Om1ha2VWaWV3QmxhbmsoYm9vbCBtYWtlQmxhbmspCiAjaWYgSEFWRShBUFBfQUNDRU5UX0NPTE9S
UykKIFdlYkNvcmU6OkNvbG9yIFBhZ2VDbGllbnRJbXBsOjphY2NlbnRDb2xvcigpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmNvbG9yRnJvbU5TQ29sb3IoW05TQXBwIF9lZmZlY3RpdmVBY2NlbnRD
b2xvcl0pOworICAgIHJldHVybiBXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKFtOU0FwcCBf
ZWZmZWN0aXZlQWNjZW50Q29sb3JdKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KaW5kZXggOWM0NmM1OTFmMGQ5NDZj
ZmEyZTFlOTRmOWU5YzYwNmM0NDExNjFiMS4uODJiMjM4YTA5ODRhYjhhODBiNjU2ZDA3M2RmMGY4
ZGIzMGY1YmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bG9yUGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xv
clBpY2tlck1hYy5tbQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6
OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIGlmICgh
bV9jbGllbnQgfHwgIW1fY29sb3JQaWNrZXJVSSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IFttX2NvbG9yUGlja2VyVUkgc2V0Q29sb3I6bnNDb2xvcihjb2xvcikuZ2V0KCldOworICAgIFtt
X2NvbG9yUGlja2VyVUkgc2V0Q29sb3I6Y29jb2FDb2xvcihjb2xvcikuZ2V0KCldOwogfQogCiB2
b2lkIFdlYkNvbG9yUGlja2VyTWFjOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYgY29sb3IpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBXZWJDb2xvclBpY2tlck1hYzo6c2hv
d0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBpZiAoIW1fY2xp
ZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV9jb2xvclBpY2tlclVJIHNldEFuZFNob3dQ
aWNrZXI6dGhpcyB3aXRoQ29sb3I6bnNDb2xvcihjb2xvcikuZ2V0KCkgc3VnZ2VzdGlvbnM6V1RG
TW92ZShtX3N1Z2dlc3Rpb25zKV07CisgICAgW21fY29sb3JQaWNrZXJVSSBzZXRBbmRTaG93UGlj
a2VyOnRoaXMgd2l0aENvbG9yOmNvY29hQ29sb3IoY29sb3IpLmdldCgpIHN1Z2dlc3Rpb25zOldU
Rk1vdmUobV9zdWdnZXN0aW9ucyldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTIz
Nyw3ICsyMzcsNyBAQCAtICh2b2lkKXNldEFuZFNob3dQaWNrZXI6KFdlYktpdDo6V2ViQ29sb3JQ
aWNrZXJNYWMqKXBpY2tlciB3aXRoQ29sb3I6KE5TQ29sb3IgKgogICAgIGlmIChzdWdnZXN0aW9u
cy5zaXplKCkpIHsKICAgICAgICAgc3VnZ2VzdGVkQ29sb3JzID0gYWRvcHROUyhbW05TQ29sb3JM
aXN0IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RkOjpt
aW4oc3VnZ2VzdGlvbnMuc2l6ZSgpLCBtYXhDb2xvclN1Z2dlc3Rpb25zKTsgaSsrKQotICAgICAg
ICAgICAgW3N1Z2dlc3RlZENvbG9ycyBpbnNlcnRDb2xvcjpuc0NvbG9yKHN1Z2dlc3Rpb25zLmF0
KGkpKS5nZXQoKSBrZXk6QChpKS5zdHJpbmdWYWx1ZSBhdEluZGV4OmldOworICAgICAgICAgICAg
W3N1Z2dlc3RlZENvbG9ycyBpbnNlcnRDb2xvcjpjb2NvYUNvbG9yKHN1Z2dlc3Rpb25zLmF0KGkp
KS5nZXQoKSBrZXk6QChpKS5zdHJpbmdWYWx1ZSBhdEluZGV4OmldOwogICAgIH0KIAogICAgIFtf
cG9wb3ZlcldlbGwgc2V0U3VnZ2VzdGVkQ29sb3JzOnN1Z2dlc3RlZENvbG9ycy5nZXQoKV07CkBA
IC0yODcsNyArMjg3LDcgQEAgLSAodm9pZClkaWRDaG9vc2VDb2xvcjooaWQpc2VuZGVyCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfcGlja2VyLT5kaWRDaG9vc2VDb2xvcihXZWJDb3Jl
Ojpjb2xvckZyb21OU0NvbG9yKFtfcG9wb3ZlcldlbGwgY29sb3JdKSk7CisgICAgX3BpY2tlci0+
ZGlkQ2hvb3NlQ29sb3IoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcihbX3BvcG92ZXJXZWxs
IGNvbG9yXSkpOwogfQogCiAtICh2b2lkKXNldENvbG9yOihOU0NvbG9yICopY29sb3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9p
Y2VBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggN2U5ZGVkOGU5MzhhNDJhOTE0NTBiOGFm
YmViNjZmZjFkM2M2YTVmZC4uOTc0NDY1NzU3NWZlY2U0MTA3ODg4NmZkYzFjNDNkMzZkODQ1MjJh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkNob2ljZUFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KQEAgLTc2LDcgKzc2LDcgQEAg
UmVmPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25F
bGVtZW50KCkKICAgICBhdXRvJiBzdHlsZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVu
dD4oZWxlbWVudC5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQgYW5k
IHN0eWxlIGFzIHdlbGw/Ci0gICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5Q29sb3IsIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbG9yRnJvbU5TQ29sb3Io
Y2hvaWNlQW5ub3RhdGlvbi5mb250Q29sb3IpKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNv
bG9yRnJvbUNvY29hQ29sb3IoY2hvaWNlQW5ub3RhdGlvbi5mb250Q29sb3IpKSk7CiAgICAgc3R5
bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwg
Y2hvaWNlQW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOwogCiAgICAgTlNBcnJheSAqY2hvaWNl
cyA9IGNob2ljZUFubm90YXRpb24uY2hvaWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bQppbmRleCA3NDk1ZTA0MzZjNDA3NDNmNGNlZGZiZTZlYmM2NjA0OGY2OTg1NzUxLi5kNzQ1ZjAy
MDk0ODRmNGVjMmI3NGE1NTM3NGQxYmNlOTFjYTY3ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5v
dGF0aW9uLm1tCkBAIC05NSw3ICs5NSw3IEBAIFJlZjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgICAgICByZXR1cm4gZWxlbWVu
dDsKIAogICAgIC8vIEZJWE1FOiBNYXRjaCBmb250IHdlaWdodCBhbmQgc3R5bGUgYXMgd2VsbD8K
LSAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xv
ciwgc2VyaWFsaXphdGlvbkZvckhUTUwoY29sb3JGcm9tTlNDb2xvcih0ZXh0QW5ub3RhdGlvbi5m
b250Q29sb3IpKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5Q29sb3IsIHNlcmlhbGl6YXRpb25Gb3JIVE1MKGNvbG9yRnJvbUNvY29hQ29sb3Io
dGV4dEFubm90YXRpb24uZm9udENvbG9yKSkpOwogICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIHRleHRBbm5vdGF0aW9uLmZvbnQu
ZmFtaWx5TmFtZSk7CiAgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudCh0
ZXh0QW5ub3RhdGlvbi5hbGlnbm1lbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAwNjBmOGUwZDZlNjdjYjg0Zjlj
M2IyOGYwYjIzNWU2NjYwNDA3MzRhLi4xZTIzYWZmZWRlY2FmZGJjZGEzMTAzOGM5MWJmODA4ZGFh
ODgzZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBXZWJQYWdlOjpzaG91bGRB
dm9pZENvbXB1dGluZ1Bvc3RMYXlvdXREYXRhRm9yRWRpdG9yU3RhdGUoKSBjb25zdAogCiB2b2lk
IFdlYlBhZ2U6OnNldEFjY2VudENvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQogewotICAgIFtO
U0FwcCBfc2V0QWNjZW50Q29sb3I6Y29sb3IuaXNWYWxpZCgpID8gV2ViQ29yZTo6bnNDb2xvcihj
b2xvcikuZ2V0KCkgOiBuaWxdOworICAgIFtOU0FwcCBfc2V0QWNjZW50Q29sb3I6Y29jb2FDb2xv
ck9yTmlsKGNvbG9yKS5nZXQoKV07CiB9CiAKICNlbmRpZiAvLyBIQVZFKEFQUF9BQ0NFTlRfQ09M
T1JTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9y
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCmluZGV4IDY1
ZGU0NjE4YTlhZjA5NDlmNzllNDI2YTAzY2FhOWY1OGRlMjFhMDcuLmZkMjNjYjk4YjdiMzk0ZWZi
YTc0NGI1ODIzMmI1ODY2NDJjZjI1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01SR0JDb2xvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NUkdCQ29sb3IubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkRPTUludGVybmFsLmgi
CiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJz
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVwcmVjYXRl
ZENTU09NUkdCQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KQEAgLTg1
LDcgKzg2LDcgQEAgLSAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilhbHBoYQogLSAoTlNDb2xvciAq
KWNvbG9yCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBXZWJDb3JlOjpuc0NvbG9yKElNUEwtPmNvbG9yKCkpLmF1dG9yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGNvY29hQ29sb3IoSU1QTC0+Y29sb3IoKSkuYXV0b3JlbGVhc2UoKTsKIH0KICNl
bHNlCiAtIChDR0NvbG9yUmVmKWNvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQppbmRleCA3ODMyNTYxOWMxYWM3NzQ0ZTg4
ZmQ0OTI1MzZjOTU3YTA0MjQ0ZjdlLi4yNDZkZjQ1YTBiYjNiY2FlNzQ0ZWZkMDQwNGMxOGE1N2Zk
YmU0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KQEAgLTg1LDcgKzg1LDcgQEAgLSAodm9pZClfd2ViX2RyYXdBdFBv
aW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9y
ICoKICAgICAgICAgaWYgKCFmbGlwcGVkKQogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0o
Y2dDb250ZXh0LCAxLCAtMSk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihjb2xvckZyb21OU0NvbG9yKHRleHRDb2xvcikpOworICAgICAgICBncmFwaGljc0NvbnRleHQu
c2V0RmlsbENvbG9yKGNvbG9yRnJvbUNvY29hQ29sb3IodGV4dENvbG9yKSk7CiAgICAgICAgIHdl
YkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50
LngsIGZsaXBwZWQgPyBwb2ludC55IDogLXBvaW50LnkpKTsKIAogICAgICAgICBpZiAoIWZsaXBw
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA1
YmJjNmY2ZDc5YWRmZmVmODI5YzljYTdhOWRjZjI5ZTBhYTczY2FjLi5mOTA3NzExM2I3ZjFhYmZj
MjMyYjM2MTA2NjY0MTEwZGYzYmQzYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKV91cGRhdGVCYWNr
Z3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuCiAgICAgICAgICAgICB2aWV3LT5zZXRUcmFu
c3BhcmVudCghZHJhd3NCYWNrZ3JvdW5kKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAg
ICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OmNvbG9yRnJvbU5TQ29sb3IoW2JhY2tn
cm91bmRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNl
XSk7CisgICAgICAgICAgICBhdXRvIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xv
cihbYmFja2dyb3VuZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNv
bG9yU3BhY2VdKTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogI2Vsc2UKICAgICAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKFdlYkNvcmU6OnJvdW5k
QW5kQ2xhbXBUb1NSR0JBTG9zc3koYmFja2dyb3VuZENvbG9yKSk7CkBAIC0xMDE0LDcgKzEwMTQs
NyBAQCAtIChDR0NvbG9yUmVmKV9ib2R5QmFja2dyb3VuZENvbG9yCiAgICAgaWYgKCFjb2xvci5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgcmV0dXJuIG5zQ29sb3IoY29sb3IpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNv
Y29hQ29sb3IoY29sb3IpLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQogICAgIHJldHVybiBjYWNoZWRD
R0NvbG9yKGNvbG9yKS5hdXRvcmVsZWFzZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA0YjA3ODU0OWRjNDIwMmZiYjZj
MjcyZWYyMDVhYjM5NGUzOTQ3MTYzLi5jMTc2NWNmYjRlNjY1YzhlYTc4NzVjN2FjZDQ1ZTQ5ZTFh
NTMxODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KQEAgLTY0OTEsNyArNjQ5MSw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zCiAgICAg
ICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yOjpibGFjazsKICAg
ICAgICAgICAgIGF1dG8gY29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciA9IFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lQ29sb3I6OlRleHRDb2xvcjsKICAgICAgICAgICAgIGlmIChOU0NvbG9y
ICpjb2xvckF0dHIgPSBbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1
dGVOYW1lXSkgewotICAgICAgICAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JGcm9tTlND
b2xvcihjb2xvckF0dHIpOworICAgICAgICAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JG
cm9tQ29jb2FDb2xvcihjb2xvckF0dHIpOwogICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9uVW5k
ZXJsaW5lQ29sb3IgPSBXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZUNvbG9yOjpHaXZlbkNv
bG9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZShyYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyYW5nZSksIGNv
bXBvc2l0aW9uVW5kZXJsaW5lQ29sb3IsIGNvbG9yLCBbc3R5bGUgaW50VmFsdWVdID4gMSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDNiMTBkZmFm
ZmM5N2I0YjgwZTNlMDMyMTMzNDEyMmFjNjM0N2RkZmYuLjk2YWI0NGIzMDJmNjM0OWEyZTMwMWZk
MjA0YTcxMTEyN2ZlZGZjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTg4Miw3ICs4ODIsNyBAQCAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICop
aW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooYwogICAg
IH0KIAogICAgIGlmIChpbmRpY2F0b3JEYXRhLm9wdGlvbnMuY29udGFpbnMoV2ViQ29yZTo6VGV4
dEluZGljYXRvck9wdGlvbjo6Q29tcHV0ZUVzdGltYXRlZEJhY2tncm91bmRDb2xvcikpCi0gICAg
ICAgIF9lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBbUEFMOjphbGxvY1VJQ29sb3JJbnN0YW5j
ZSgpIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGluZGljYXRvckRhdGEuZXN0aW1hdGVk
QmFja2dyb3VuZENvbG9yKS5nZXQoKV07CisgICAgICAgIF9lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29s
b3IgPSBjb2NvYUNvbG9yKGluZGljYXRvckRhdGEuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5s
ZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEyNDYsNyArMTI0Niw3IEBAIC0g
KHZvaWQpc2V0VGV4dENvbG9yOihOU0NvbG9yICopY29sb3IKIC0gKHZvaWQpX3dlYkNoYW5nZUNv
bG9yOihpZClzZW5kZXIKIHsKICAgICBfdGV4dENvbG9yID0gc2VsZi5jb2xvclBpY2tlckl0ZW0u
Y29sb3I7Ci0gICAgW193ZWJWaWV3IF9leGVjdXRlQ29yZUNvbW1hbmRCeU5hbWU6QCJGb3JlQ29s
b3IiIHZhbHVlOiBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3JlOjpjb2xvckZy
b21OU0NvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKV07CisgICAgW193ZWJWaWV3IF9leGVjdXRlQ29y
ZUNvbW1hbmRCeU5hbWU6QCJGb3JlQ29sb3IiIHZhbHVlOldlYkNvcmU6OnNlcmlhbGl6YXRpb25G
b3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpXTsK
IH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTk1
MTAsNyArOTUxMCw3IEBAIC0gKHZvaWQpdXBkYXRlVGV4dFRvdWNoQmFyCiAKICAgICAgICAgICAg
ICAgICBDb2xvciB0ZXh0Q29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Q29sb3IpOwogICAgICAgICAgICAgICAgIGlmICh0ZXh0Q29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICAgICAgICAgICAgICBbX3ByaXZhdGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxl
ciBzZXRUZXh0Q29sb3I6bnNDb2xvcih0ZXh0Q29sb3IpLmdldCgpXTsKKyAgICAgICAgICAgICAg
ICAgICAgW19wcml2YXRlLT5fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dENvbG9y
OmNvY29hQ29sb3IodGV4dENvbG9yKS5nZXQoKV07CiAKICAgICAgICAgICAgICAgICBbX3ByaXZh
dGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRDdXJyZW50VGV4dEFsaWdubWVudDpu
c1RleHRBbGlnbm1lbnRGcm9tUmVuZGVyU3R5bGUoc3R5bGUpXTsKIAo=
</data>
<flag name="commit-queue"
          id="466302"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441906</attachid>
            <date>2021-10-20 11:24:44 -0700</date>
            <delta_ts>2021-10-21 08:12:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231992-20211020112443.patch</filename>
            <type>text/plain</type>
            <size>77962</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM4NTk1NzFhYmQ2ZDAx
NTBiNzQ0ZjI0MmZlNGJhYWE4OGVlNDE5My4uMzk3M2YxYTM1MzFlZWU4Njk0YWY1NmMwNjA5MTQ4
ZDU4ZDgwNDkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMS0xMC0xOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNZXJnZSBhbmQg
c2ltcGxpZnkgdGhlIG5zQ29sb3IgZmFtaWx5IG9mIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRlZCBhIENvY29hQ29sb3IgdHlw
ZSB0aGF0IGlzIE5TL1VJQ29sb3IuCisgICAgICAgIC0gUmVuYW1lZCBwbGF0Zm9ybUNvbG9yIHRv
IGNvY29hQ29sb3IgdG8gYmUgbGVzcyB2YWd1ZS4KKyAgICAgICAgLSBSZW1vdmVkIG5zQ29sb3Iu
CisgICAgICAgIC0gQWRkZWQgY29jb2FDb2xvck9yTmlsLgorICAgICAgICAtIE1lcmdlZCBjb2xv
ckZyb21OU0NvbG9yIGFuZCBjb2xvckZyb21VSUNvbG9yIGludG8gYSBzaW5nbGUKKyAgICAgICAg
ICBjb2xvckZyb21Db2NvYUNvbG9yIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIENvbG9ySU9TLmguCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAg
ICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFk
IG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFy
eSBjb25zdCk6IFVzZSBjb2NvYUNvbG9yCisgICAgICAgIGluc3RlYWQgb2YgcGxhdGZvcm1Db2xv
ci4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdyBjb25zdCk6IERpdHRvLgorCisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZl
cnRlcjo6X2NvbG9yRm9yRWxlbWVudCk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAg
ICAgcGxhdGZvcm1Db2xvci4KKyAgICAgICAgKFdlYkNvcmU6OmVkaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICBuc0NvbG9yLgorCisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IKKyAgICAg
ICAgaW5zdGVhZCBvZiBjb2xvckZyb21OU0NvbG9yLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RHJhZ0ltYWdlRm9yQ29sb3IpOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mCisgICAgICAgIG5z
Q29sb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmg6
IEFkZGVkIGFuIGluY2x1ZGUgb2YKKyAgICAgICAgIkNvbG9yLmgiIHNvIHRoaXMgZnVuY3Rpb25z
IGFzIGFuIGFkZGl0aW9uIHRvIHRoYXQgaGVhZGVyCisgICAgICAgIGluc3RlYWQgb2Ygc29tZXRo
aW5nIGluZGVwZW5kZW50LiBBZGRlZCBhIFdlYkNvcmU6OkNvY29hQ29sb3IKKyAgICAgICAgdHlw
ZSwgbGlrZSB0aGUgb25lIHdlIGFscmVhZHkgaGF2ZSBpbiBXZWJLaXQsIHRvIGN1dCBkb3duIG9u
CisgICAgICAgIHRoZSBuZWVkIHRvIGRvICNpZiBhbmQgI2Vsc2Ugc28gbXVjaC4gUmVuYW1lZCB0
aGUKKyAgICAgICAgcGxhdGZvcm1Db2xvciBmdW5jdGlvbiB0byBjb2NvYUNvbG9yLCBhZGRlZCBh
CisgICAgICAgIGNvY29hQ29sb3JPck5pbCBmdW5jdGlvbiwgYW5kIHJlbmFtZWQgYm90aCBjb2xv
ckZyb21OU0NvbG9yCisgICAgICAgIGFuZCBjb2xvckZyb21VSUNvbG9yIHRvIGNvbG9yRnJvbUNv
Y29hQ29sb3IgYW5kIG1vdmVkIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Db2xvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29jb2FDb2xvcik6IFJlbmFt
ZWQgdGhlIGlPUyBwbGF0Zm9ybUNvbG9yIHRvIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpjb2Nv
YUNvbG9yT3JOaWwpOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5oOiBJbmNsdWRlIG9mICJDb2xvckNvY29hLmgiCisgICAgICAgIGluc3RlYWQgb2Yg
IkNvbG9yLmgiIGhlcmUuIE1vdmVkIGNvbG9yRnJvbU5TQ29sb3IgYW5kIG5zQ29sb3IuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKTogUmVuYW1lZCBmcm9tIGNvbG9yRnJvbU5TQ29sb3Iu
CisgICAgICAgIChXZWJDb3JlOjpjb2NvYUNvbG9yKTogUmVuYW1lZCBmcm9tIG5zQ29sb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQ29sb3JJT1MuaDogUmVtb3ZlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9Db2xvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yRnJvbUNv
Y29hQ29sb3IpOiBSZW5hbWVkIGZyb20gY29sb3JGcm9tVUlDb2xvci4KKworICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZAorICAg
ICAgICBvZiArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlOjpMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgVXNlIGNvY29hQ29sb3IgaW5zdGVhZCBv
ZiBuc0NvbG9yLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IpOiBVc2Ug
Y29sb3JGcm9tQ29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3Iu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKTogVXNlIGNv
Y29hQ29sb3IgaW5zdGVhZAorICAgICAgICBvZiBuc0NvbG9yLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0NlbGxGb2N1c1JpbmdX
aXRoRnJhbWVBdFRpbWUpOiBVc2UgY29sb3JGcm9tQ29jb2FDb2xvcgorICAgICAgICBpbnN0ZWFk
IG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRGb250QXR0cmli
dXRlQ2hhbmdlcyk6IERJdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZvY3VzUmluZ0Nv
bG9yKTogVXNlCisgICAgICAgIGNvbG9yRnJvbUNvY29hQ29sb3IgaW5zdGVhZCBvZiBjb2xvckZy
b21VSUNvbG9yLgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEFjdGlvbkNvbG9yKTogVXNl
IGNvY29hQ29sb3IgaW5zdGVhZCBvZgorICAgICAgICArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xv
cjpdIGFuZCBjYWNoZWRDR0NvbG9yIGFuZCByZXR1cm4gYQorICAgICAgICBSZXRhaW5QdHIgdG8g
YXZvaWQgYXV0b3JlbGVhc2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5m
bzo6UmVuZGVyQXR0YWNobWVudEluZm8pOiBVcGRhdGUgZm9yCisgICAgICAgIHRoZSB1c2VyIG9m
IHRoZSBSZXRhaW5QdHIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICBVc2UgY29sb3JGcm9tQ29jb2FDb2xv
ciBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
ciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRm
b3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUZvY3VzUmlu
Z0NvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1UZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybURlZmF1bHRCdXR0b25UZXh0Q29sb3Ig
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9yRm9yQXR0YWNo
bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6bGF5T3V0
VGl0bGUpOiBSZW1vdmVkIGluY29ycmVjdCBjYXN0IHRoYXQgc2FpZCBpdAorICAgICAgICB3YXMg
Y2FzdGluZyBhIENHQ29sb3JSZWYgdG8gYW4gTlNDb2xvciAqLCB3aGljaCBhcmUgbm90IHRvbGwt
ZnJlZSBicmlkZ2VkLiBUaGlzCisgICAgICAgIGNvZGUganVzdCBuZWVkcyBhIENHQ29sb3JSZWYg
aW4gYSBkaWN0aW9uYXJ5LCBzbyB3ZSBqdXN0IG5lZWQgdG8gY2FzdCB0byBpZCwKKyAgICAgICAg
bm90IHRvIGEgTlNDb2xvciAqLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6
bGF5T3V0U3VidGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVu
dFRpdGxlQmFja2dyb3VuZCk6IFVzZSBjb2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YKKyAg
ICAgICAgY29sb3JGcm9tTlNDb2xvci4KKwogMjAyMS0xMC0yMCAgUm9iIEJ1aXMgIDxyYnVpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBwZXJjZW50YWdlcyBvbiBvcnRob2dvbmFsIHJlcGxh
Y2VkIGNoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDViZDVmNWFkMmQwZmQxMzk3M2E2MjE4NTYzY2U4ODEx
ZTRiNTRmODMuLjJlZDExY2UxZWUyZGFhOTNlMWQ4NDExOTBkNGQyMmYwMmVjOTNkZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjEtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gTWVyZ2UgYW5kIHNpbXBsaWZ5IHRoZSBuc0NvbG9y
IGZhbWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAg
ICAgIChJUEM6OmVuY29kZUNvbG9ySW50ZXJuYWwpOiBNZXJnZWQgdGhlIE5TQ29sb3IgYW5kIFVJ
Q29sb3IKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIGludG8gYSBzaW5nbGUgb25lIHRoYXQgdXNl
cyBDb2NvYUNvbG9yLgorICAgICAgICAoSVBDOjpkZWNvZGVDb2xvckludGVybmFsKTogRGl0dG8u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdKTogVXNlIGNvY29hQ29sb3JPck5pbCBpbnN0ZWFkCisg
ICAgICAgIG9mIGlzVmFsaWQgYW5kIHBsYXRmb3JtQ29sb3IuCisgICAgICAgICgtW1dLV2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdKTogVXNlIGNvY29hQ29sb3IKKyAgICAgICAgaW5z
dGVhZCBvZiBwbGF0Zm9ybUNvbG9yLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl0pOiBVc2UgY29jb2FDb2xvck9yTmlsCisgICAgICAgIGluc3RlYWQg
b2YgaXNWYWxpZCBhbmQgcGxhdGZvcm1Db2xvci4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zYW1w
bGVkUGFnZVRvcENvbG9yXSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0IHRoZW1lQ29sb3JdKTogVXNlIGNvY29hQ29sb3IgaW5zdGVhZAorICAgICAgICBvZiBw
bGF0Zm9ybUNvbG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdCYWNrZ3JvdW5kXSk6
IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQKKyAgICAgICAgb2YgLVtVSUNvbG9yIGluaXRXaXRoQ0dD
b2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXJpYWxpemVk
U2VsZWN0aW9uQ2FyZXRCYWNrZ3JvdW5kQ29sb3JGb3JUZXN0aW5nXSk6CisgICAgICAgIFVzZSBj
b2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YgY29sb3JGcm9tVUlDb2xvci4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKC1bV0tUZXh0VG91
Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tDaGFuZ2VDb2xvcjpdKTogVXNlIGNvY29hQ29sb3IKKyAg
ICAgICAgaW5zdGVhZCBvZiBuc0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlVGV4dFRvdWNoQmFyKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3IKKyAgICAgICAgaW5z
dGVhZCBvZiBjb2xvckZyb21OU0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0VW5kZXJsYXlDb2xvcik6IFVzZSBjb2NvYUNvbG9yT3JOaWwgaW5zdGVhZAorICAgICAgICBv
ZiBpc1ZhbGlkIGFuZCBuc0NvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5k
ZXJsYXlDb2xvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpjaGFuZ2VGb250Q29sb3JGcm9tU2VuZGVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OmV4dHJhY3RVbmRlcmxpbmVzKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3Ig
aW5zdGVhZCBvZgorICAgICAgICBjb2xvckZyb21OU0NvbG9yLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OkRy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyk6IFVzZQor
ICAgICAgICBjb2NvYUNvbG9yIGluc3RlYWQgb2YgK1tVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6
XSBhbmQgY2FjaGVkQ0dDb2xvci4KKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKTogVXNlIGNvY29hQ29s
b3IKKyAgICAgICAgaW5zdGVhZCBvZiAtW1VJQ29sb3IgaW5pdFdpdGhDR0NvbG9yOl0gYW5kIGNh
Y2hlZENHQ29sb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0
XSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAgICAgLVtVSUNvbG9yIGluaXRXaXRo
Q0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9j
YXNjYWRlSW50ZXJhY3Rpb25UaW50Q29sb3JdKTogVXNlIGNvY29hQ29sb3IKKyAgICAgICAgaW5z
dGVhZCBvZiArW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpdIGFuZCBjYWNoZWRDR0NvbG9yLgor
ICAgICAgICAoY29tcG9zaXRpb25IaWdobGlnaHRzKTogVXNlIGNvbG9yRnJvbUNvY29hQ29sb3Ig
aW5zdGVhZCBvZgorICAgICAgICBjb2xvckZyb21VSUNvbG9yLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdJZlBvc3NpYmxlXSk6
IFVzZQorICAgICAgICBjb2NvYUNvbG9yIGluc3RlYWQgb2YgK1tVSUNvbG9yIGNvbG9yV2l0aENH
Q29sb3I6XSBhbmQgY2FjaGVkQ0dDb2xvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtQ29sb3JDb250cm9sLm1tOgorICAgICAgICAoLVtXS0NvbG9yUGlja2VyIGZvY3Vz
ZWRFbGVtZW50U3VnZ2VzdGVkQ29sb3JzXSk6IFVzZSBjcmVhdGVOU0FycmF5CisgICAgICAgIGFu
ZCBjb2NvYUNvbG9yIGluc3RlYWQgb2YgK1tOU011dGFibGVBcnJheSBhcnJheV0sIGEgZm9yIGxv
b3AsCisgICAgICAgIC1bTlNNdXRhYmxlQXJyYXkgYWRkT2JqZWN0Ol0sICtbVUlDb2xvciBjb2xv
cldpdGhDR0NvbG9yOl0sIGFuZCBjYWNoZWRDR0NvbG9yCisgICAgICAgICgtW1dLQ29sb3JQaWNr
ZXIgdXBkYXRlQ29sb3JQaWNrZXJTdGF0ZV0pOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mCisg
ICAgICAgICtbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOl0gYW5kIGNhY2hlZENHQ29sb3IuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNjZW50Q29sb3IpOiBVc2UgY29jb2FDb2xvciBpbnN0
ZWFkIG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2Vy
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlck1hYzo6c2V0U2VsZWN0ZWRD
b2xvcik6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YgbnNDb2xvci4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xvclBpY2tlcik6IERpdHRvLgorICAgICAgICAo
LVtXS0NvbG9yUG9wb3Zlck1hYyBzZXRBbmRTaG93UGlja2VyOndpdGhDb2xvcjpzdWdnZXN0aW9u
czpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIGRpZENob29zZUNvbG9y
Ol0pOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBVc2UKKyAgICAgICAgY29sb3JGcm9t
Q29jb2FDb2xvciBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBE
aXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWNjZW50Q29sb3IpOiBVc2UgY29jb2FDb2xv
ck9yTmlsIGluc3RlYWQgb2YKKyAgICAgICAgaXNWYWxpZCBhbmQgbnNDb2xvci4KKwogMjAyMS0x
MC0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBFbnN1cmUgdGhlIENBIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHN5bmNocm9ub3VzbHkgY29tbWl0
dGVkIGJlZm9yZSBzbmFwc2hvdHRpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCAzZTAwNDRlY2Y0ZWU0MjI4ZWZmZjM2MjM5MmUzYjE5ODBlN2Y5NWFjLi4xNTgyOTQ1YTQ3M2Q4
MzdhYmYxZjUyODNhMjM3YTVlYjk4YzZhMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gTWVyZ2UgYW5kIHNpbXBsaWZ5IHRoZSBuc0NvbG9yIGZh
bWlseSBvZiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRE9NL0RPTVJHQkNvbG9yLm1tOgorICAgICAgICAoLVtET01SR0JDb2xvciBj
b2xvcl0pOiBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mIG5zQ29sb3IuCisKKyAgICAgICAgKiBN
aXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2Ry
YXdBdFBvaW50OmZvbnQ6dGV4dENvbG9yOl0pOiBVc2UgY29sb3JGcm9tQ29jb2FDb2xvcgorICAg
ICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0
ZXNXaGlsZU9mZnNjcmVlbl0pOiBVc2UKKyAgICAgICAgY29sb3JGcm9tQ29jb2FDb2xvciBpbnN0
ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFja2dy
b3VuZENvbG9yXSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAgICAgbnNDb2xvci4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChleHRyYWN0VW5k
ZXJsaW5lcyk6IFVzZSBjb2xvckZyb21Db2NvYUNvbG9yIGluc3RlYWQgb2YKKyAgICAgICAgY29s
b3JGcm9tTlNDb2xvci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRh
OnNjYWxlOl0pOgorICAgICAgICBVc2UgY29jb2FDb2xvciBpbnN0ZWFkIG9mIC1bVUlDb2xvciBp
bml0V2l0aENHQ29sb3I6XSBhbmQgY2FjaGVkQ0dDb2xvci4KKyAgICAgICAgKC1bV2ViVGV4dFRv
dWNoQmFySXRlbUNvbnRyb2xsZXIgX3dlYkNoYW5nZUNvbG9yOl0pOiBVc2UgY29sb3JGcm9tQ29j
b2FDb2xvcgorICAgICAgICBpbnN0ZWFkIG9mIGNvbG9yRnJvbU5TQ29sb3IuCisgICAgICAgICgt
W1dlYlZpZXcgdXBkYXRlVGV4dFRvdWNoQmFyXSk6IFVzZSBjb2NvYUNvbG9yIGluc3RlYWQgb2Yg
bnNDb2xvci4KKwogMjAyMS0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIGNhY2hlZENHQ29sb3IoKSBhbmQgbnNDb2xvcigpIHNob3VsZCByZXR1cm4gc21h
cnQgcG9pbnRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAzNDBlNDIwYmFiNTliYmY3OGFiMGFmNjVmYTRkOWYzMTIwNjcxM2Q3
Li5lODQwYWEyODI0MjY0ZjY5MWVlMzM5YzAzNzExNTExNzdhNDQxMTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NjAzLDcg
KzQ2MDMsNiBAQAogCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTI4NDk4NzFD
QTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNB
MzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICov
OyB9OwogCQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4
IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNkRB
REZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkRB
REY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RTc5OUY5ODFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3OTlG
OTYxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCAq
LzsgfTsKQEAgLTE1NTU2LDcgKzE1NTU1LDYgQEAKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5
RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0U1MTY5RTUy
MUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAv
KiBDb2xvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9ySU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRT
ZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQuaDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDMyLDcgKzI1MDMwLDYgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8s
CiAJCQkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICov
LAotCQkJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovLAogCQkJCUNF
NTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5tbSAqLywKIAkJCQlBMUVENzc4QTFC
RTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNwcCAqLywKIAkJCQlBMUVENzc4QjFCRTMyOTQwMDBE
QzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0zMjA5Niw3ICszMjA5Myw2IEBACiAJCQkJQ0QzRUVG
M0MyNTc5OUZBQjAwNjU2M0JCIC8qIENvbG9yR2FtdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MDNCN0RGMURCMDE1NjcwMDhCQjg5MCAvKiBDb2xvckhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzRBMjNFQzI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JMdW1pbmFuY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0
cml4LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KaW5kZXggNjZiZjkzNTNkZjU0NzVmZjhjNmY4MDY4MDYwYWUxYjU1MjNiN2FjYi4uOTQ4MzA1
MDdiMmZiNThlODk4Mjc4ZWEzMTM0ZThkNzM2OGUwMDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTg1NSw4ICs4NTUsOCBAQCBzdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJp
bmcsIFJlbgogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udChhdHRyU3RyaW5nLCBOU0FjY2Vz
c2liaWxpdHlGb250VGV4dEF0dHJpYnV0ZSwgc3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9u
dCgpLmdldENURm9udCgpLCByYW5nZSk7CiAgICAgCiAgICAgLy8gc2V0IGJhc2ljIGNvbG9ycwot
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
Rm9yZWdyb3VuZENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpLmdldCgpLCByYW5nZSk7Ci0gICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlCYWNrZ3JvdW5kQ29s
b3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikpLmdldCgpLCByYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlGb3JlZ3JvdW5kQ29sb3JU
ZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUNvbG9yKSkuZ2V0KCksIHJhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENv
bG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1
dGUsIGNvY29hQ29sb3Ioc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKSkuZ2V0KCksIHJhbmdlKTsKICAgICAKICAgICAvLyBzZXQgc3VwZXIvc3Vi
IHNjcmlwdGluZwogICAgIFZlcnRpY2FsQWxpZ24gYWxpZ25tZW50ID0gc3R5bGUudmVydGljYWxB
bGlnbigpOwpAQCAtODkxLDEyICs4OTEsMTIgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KIAog
ICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSB7CiAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0
dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGlu
ZUNvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNv
bG9yKS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xv
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUs
IGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdl
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJl
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwg
QFlFUywgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRy
U3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBu
c0NvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsK
KyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNv
cmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IpLmdldCgpLCByYW5nZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Zv
bnRBdHRyaWJ1dGVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRB
dHRyaWJ1dGVzQ29jb2EubW0KaW5kZXggMmEzYzFlNDg2MWQyY2IzODU3YzI5OGFhZDFjOWZjODIw
OGVhOTliMi4uNDRiNDg3YzIyMThkNGI2YjkyMDAxMDc1NjA5Yjk5YmI4ZmQ0MjJiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5t
bQpAQCAtOTEsMTAgKzkxLDEwIEBAIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IEZvbnRBdHRyaWJ1
dGVzOjpjcmVhdGVEaWN0aW9uYXJ5KCkgY29uc3QKICAgICAgICAgYXR0cmlidXRlc1tOU0ZvbnRB
dHRyaWJ1dGVOYW1lXSA9IGZvbnQuZ2V0KCk7CiAKICAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWVdID0gcGxhdGZvcm1Db2xvcihmb3JlZ3JvdW5kQ29sb3IpLmdldCgpOworICAgICAgICBhdHRy
aWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBjb2NvYUNvbG9yKGZvcmVn
cm91bmRDb2xvcikuZ2V0KCk7CiAKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
LSAgICAgICAgYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdID0gcGxh
dGZvcm1Db2xvcihiYWNrZ3JvdW5kQ29sb3IpLmdldCgpOworICAgICAgICBhdHRyaWJ1dGVzW05T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBjb2NvYUNvbG9yKGJhY2tncm91bmRDb2xv
cikuZ2V0KCk7CiAKICAgICBpZiAoZm9udFNoYWRvdy5jb2xvci5pc1ZhbGlkKCkgJiYgKCFmb250
U2hhZG93Lm9mZnNldC5pc1plcm8oKSB8fCBmb250U2hhZG93LmJsdXJSYWRpdXMpKQogICAgICAg
ICBhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0gPSBmb250U2hhZG93LmNyZWF0ZVNo
YWRvdygpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9G
b250U2hhZG93Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFk
b3dDb2NvYS5tbQppbmRleCA4ZWY4YTAzY2JmNWEyNGYwNmM5NzEwMDNjMzkxYWM1ODMyOWYzZDhl
Li5jNTBkYmJiZWRjNzIzZjY0OWE5MDk5NDU4YzFlZGIxNTc1MTQwNmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQpAQCAtNDIsNyArNDIs
NyBAQCBSZXRhaW5QdHI8TlNTaGFkb3c+IEZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdygpIGNvbnN0
CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhb
UEFMOjpnZXROU1NoYWRvd0NsYXNzKCkgbmV3XSk7CiAjZW5kaWYKLSAgICBbc2hhZG93IHNldFNo
YWRvd0NvbG9yOnBsYXRmb3JtQ29sb3IoY29sb3IpLmdldCgpXTsKKyAgICBbc2hhZG93IHNldFNo
YWRvd0NvbG9yOmNvY29hQ29sb3IoY29sb3IpLmdldCgpXTsKICAgICBbc2hhZG93IHNldFNoYWRv
d09mZnNldDpvZmZzZXRdOwogICAgIFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpibHVyUmFk
aXVzXTsKICAgICByZXR1cm4gc2hhZG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDc5YzRmMTI2NDVjYzkyMzI5MzVlNDY0NThjZDdkMjgz
ZDdlMTkzY2EuLmQ5NDRkOTg0ZGMzZjhlMTkzOWYxZmM3NDNmOGE5NDBhMTc3YTFlMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTkxMCw3
ICs5MTAsNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1Db2xvcj4gSFRNTENvbnZlcnRlcjo6X2NvbG9y
Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcgogICAgIENvbG9yIHJlc3VsdCA9IF9j
YWNoZXMtPmNvbG9yUHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgcHJvcGVydHlJZCk7CiAg
ICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIGF1dG8g
cGxhdGZvcm1SZXN1bHQgPSBwbGF0Zm9ybUNvbG9yKHJlc3VsdCk7CisgICAgYXV0byBwbGF0Zm9y
bVJlc3VsdCA9IGNvY29hQ29sb3IocmVzdWx0KTsKICAgICBpZiAoW1tQbGF0Zm9ybUNvbG9yQ2xh
c3MgY2xlYXJDb2xvcl0gaXNFcXVhbDpwbGF0Zm9ybVJlc3VsdC5nZXQoKV0gfHwgKFtwbGF0Zm9y
bVJlc3VsdCBhbHBoYUNvbXBvbmVudF0gPT0gMC4wKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICByZXR1cm4gcGxhdGZvcm1SZXN1bHQ7CkBAIC0yNDI2LDEzICsyNDI2LDEzIEBAIEF0dHJpYnV0
ZWRTdHJpbmcgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBJbmNsdWRlSW1hZ2VzCiAKICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpOwog
ICAgICAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgW2F0
dHJzIHNldE9iamVjdDpuc0NvbG9yKGZvcmVncm91bmRDb2xvcikuZ2V0KCkgZm9yS2V5Ok5TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0
OmNvY29hQ29sb3IoZm9yZWdyb3VuZENvbG9yKS5nZXQoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW2F0dHJzIHJlbW92
ZU9iamVjdEZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCiAgICAgICAg
IENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhD
b2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiYWNr
Z3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5z
Q29sb3IoYmFja2dyb3VuZENvbG9yKS5nZXQoKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXTsKKyAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6Y29jb2FDb2xvcihiYWNr
Z3JvdW5kQ29sb3IpLmdldCgpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVd
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBbYXR0cnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0RyYWdJbWFnZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW0KaW5kZXggYTA3ZDY0NmEyZTgwYzFmZTNlNTE1
NGFkN2U4ZjZlMDE0ODllYjlmYS4uZTM4ZGFmODg1YTM2NDdjMDBmYzQ5OWIwNTRmMGRiZGU5NDM5
MzdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29j
b2EubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
TGluayhFbGVtZW50JiBlbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aQogCiAgICAg
R3JhcGhpY3NDb250ZXh0Q0cgY29udGV4dChbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRl
eHRdLkNHQ29udGV4dCk7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGxheW91dC5ib3VuZGluZ1JlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKGxpbmtJ
bWFnZUNvcm5lclJhZGl1cykpLCBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGNvbnRyb2xCYWNr
Z3JvdW5kQ29sb3JdKSk7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChsYXlvdXQuYm91bmRpbmdSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShsaW5rSW1h
Z2VDb3JuZXJSYWRpdXMpKSwgY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBjb250cm9sQmFj
a2dyb3VuZENvbG9yXSkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBsYWJlbCA6IGxheW91dC5s
YWJlbHMpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0
KTsKQEAgLTMyNCw3ICszMjQsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdAogICAgIE5TQmV6
aWVyUGF0aCAqcGF0aCA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdpdGhSb3VuZGVkUmVjdDpO
U01ha2VSZWN0KDAsIDAsIENvbG9yU3dhdGNoV2lkdGgsIENvbG9yU3dhdGNoV2lkdGgpIHhSYWRp
dXM6Q29sb3JTd2F0Y2hDb3JuZXJSYWRpdXMgeVJhZGl1czpDb2xvclN3YXRjaENvcm5lclJhZGl1
c107CiAgICAgW3BhdGggc2V0TGluZVdpZHRoOkNvbG9yU3dhdGNoU3Ryb2tlU2l6ZV07CiAKLSAg
ICBbbnNDb2xvcihjb2xvcikgc2V0RmlsbF07CisgICAgW2NvY29hQ29sb3IoY29sb3IpIHNldEZp
bGxdOwogICAgIFtwYXRoIGZpbGxdOwogCiAgICAgW1tOU0NvbG9yIHF1YXRlcm5hcnlMYWJlbENv
bG9yXSBzZXRTdHJva2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQ29sb3JDb2NvYS5oCmluZGV4IDBhZDQyMzE2M2E3MmVhYjIyNDYzMDFhMmVjNWFk
NTlmMzkyZWM3NjcuLmExZTAwMGEzYjU4ODFhYWM5YmQ4NjFhNDdmZjBkODI1MzFlZjY4OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNv
Y29hLmgKQEAgLTI1LDE5ICsyNSwzMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2ltcG9ydCAiQ29s
b3IuaCIKKworI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIE5TQ29sb3I7CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NMQVNTIFVJQ29sb3I7CisjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKIAogI2lmIFVTRShBUFBLSVQpCi1X
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNDb2xvcj4gcGxhdGZvcm1Db2xvcihjb25zdCBDb2xv
ciYpOwordXNpbmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi1XRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8VUlDb2xvcj4gcGxhdGZvcm1D
b2xvcihjb25zdCBDb2xvciYpOwordXNpbmcgQ29jb2FDb2xvciA9IFVJQ29sb3I7CiAjZW5kaWYK
IAorV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENvY29hQ29sb3I+IGNvY29hQ29sb3IoY29uc3Qg
Q29sb3ImKTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDb2NvYUNvbG9yPiBjb2NvYUNvbG9y
T3JOaWwoY29uc3QgQ29sb3ImKTsgLy8gUmV0dXJucyBuaWwgaWYgdGhlIGNvbG9yIGlzIGludmFs
aWQuCitXRUJDT1JFX0VYUE9SVCBDb2xvciBjb2xvckZyb21Db2NvYUNvbG9yKENvY29hQ29sb3Ig
Kik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCmluZGV4IDU2MWU2ODU0YWZmODA1
NmQwNmRkNzdiZDdkZjg1N2U0MjhmMTYxZWEuLjNkNWRlMDNlOWVlYWEzZWQyZmI3ZWM0YTQ1OTUy
NDAwNDQ5MzE1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0NvbG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQ29sb3JDb2NvYS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAKLSNpbXBvcnQgIkNvbG9yTWFjLmgiCi0KICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgpAQCAtMzUsMjIgKzMzLDE4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShBUFBLSVQpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAotUmV0YWluUHRyPE5TQ29sb3I+IHBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQorUmV0YWluUHRyPFVJQ29sb3I+IGNvY29hQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogewotICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0VUlD
b2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xv
cjpjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV07CiB9CiAKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLQotUmV0YWluUHRyPFVJQ29sb3I+IHBsYXRmb3JtQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQorUmV0YWluUHRyPENvY29hQ29sb3I+IGNvY29hQ29sb3JPck5pbChjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIF9k
aXNhbWJpZ3VhdGVkX2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcikuZ2V0KCldOworICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgPyBjb2NvYUNvbG9y
KGNvbG9yKSA6IG5pbDsKIH0KIAotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKaW5kZXgg
OGUxYzQ5MDU1Yzg4NTM0NzMwYTYwOTU3ODBhMDU1ZWQ0YTgxOWRjYi4uMmQ3NmMxMzA3M2RiZTg5
MDE1MWVmZWIzYTVhZWM4YjMzYzU2ODdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKQEAgLTI4LDE3ICsyOCwxMyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ29sb3JDb2NvYS5oIgogCiAj
aWYgVVNFKEFQUEtJVCkKIAotT0JKQ19DTEFTUyBOU0NvbG9yOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdFQkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqKTsK
IENvbG9yIHNlbWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICopOwotV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TQ29sb3I+IG5zQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogV0VCQ09SRV9F
WFBPUlQgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpOwogV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRleCA4NzY4ODg0NTRh
MjJjNWZiMmQ1OGFmM2JlYzg3ODY5ZmY2NTU2NTgyLi41OWU4ZmI1ZjUyNmVlYzdkOGM2Y2Q1OWU4
NmYwOWE2MmI3NzMxZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNv
bG9yKQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBPGZsb2F0
PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
Z3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRp
Y19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CiB9CiAKLUNvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlND
b2xvciAqY29sb3IpCitDb2xvciBjb2xvckZyb21Db2NvYUNvbG9yKE5TQ29sb3IgKmNvbG9yKQog
ewogICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihjb2xvcik7CiB9CkBAIC0x
MTMsNyArMTEzLDcgQEAgQ29sb3Igc2VtYW50aWNDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNv
bG9yKQogICAgIHJldHVybiBDb2xvcihtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihjb2xvciks
IENvbG9yOjpGbGFnczo6U2VtYW50aWMpOwogfQogCi1SZXRhaW5QdHI8TlNDb2xvcj4gbnNDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCitSZXRhaW5QdHI8TlNDb2xvcj4gY29jb2FDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGF1dG8gc3JnYiA9IGNvbG9yLnRyeUdldEFzU1JH
QkFCeXRlcygpKSB7CiAgICAgICAgIHN3aXRjaCAoUGFja2VkQ29sb3I6OlJHQkEgeyAqc3JnYiB9
LnZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJ
T1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwZTQ0YzFkZmI2NjYyNjY1MWFiNzAzMzBhZDYyMjBiN2Q5ZjE5
NTNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29sb3IuaCIK
LQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLU9CSkNfQ0xBU1MgVUlDb2xvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1XRUJDT1JFX0VYUE9SVCBDb2xvciBjb2xvckZyb21VSUNvbG9y
KFVJQ29sb3IgKik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0KaW5kZXggN2IxZjQ1NzE5NWMxMjZhYjhlNmZi
ZGQ2ZWM2YzQwOTUxYWE0NDA5OS4uNDEyZGY4NmFjY2ZlNTQzOWNhZTFjNDllNGFlMjM2Mjk3YzBh
NzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQpAQCAtMjQsNyAr
MjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ29sb3JJT1MuaCIK
KyNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db2xvciBjb2xvckZyb21V
SUNvbG9yKFVJQ29sb3IgKmNvbG9yKQorQ29sb3IgY29sb3JGcm9tQ29jb2FDb2xvcihVSUNvbG9y
ICpjb2xvcikKIHsKICAgICBpZiAoIWNvbG9yKQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggMDQxNWYwNWFhZmY0ZWFlNDllNWM5MGE1ZjY3NWRjZmJiMjI4YTUxYy4uMTY3Y2VmMDJk
NzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJDb2xvci5oIgorI2lt
cG9ydCAiQ29sb3JDb2NvYS5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9h
cmQuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtNDIxLDggKzQy
MSw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvTGlzdCAqcmVwcmVzCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdCBhbGxvY10gaW5pdF0pOwotICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbUEFMOjpnZXRVSUNv
bG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpXTsK
LSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltOU0tleWVkQXJjaGl2ZXIg
YXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dWlDb2xvciByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6
Tk8gZXJyb3I6bmlsXSBmb3JUeXBlOlVJQ29sb3JQYm9hcmRUeXBlXTsKKyAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6Y29jb2FDb2xvcihjb2xvcikuZ2V0KCkgcmVxdWlyaW5nU2VjdXJlQ29kaW5n
Ok5PIGVycm9yOm5pbF0gZm9yVHlwZTpVSUNvbG9yUGJvYXJkVHlwZV07CiAgICAgcmVnaXN0ZXJJ
dGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVi
b2FyZC5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCmluZGV4
IDMxZjQyMWY4ODljY2MyZmExNjgxYjYwYzA3NzRiNmQ0Y2E0MzI3ZDcuLjliYzM1YTEwYzY2NjRj
YzA5MDE2M2FhZjQ2ZDlkNWI4YjY0NmFiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCkBAIC00
Niw3ICs0Niw3IEBAIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2U6OkxvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jCiAgICAgTlNBcHBlYXJhbmNlICph
cHBlYXJhbmNlID0gW05TQXBwZWFyYW5jZSBhcHBlYXJhbmNlTmFtZWQ6bV91c2luZ0RhcmtBcHBl
YXJhbmNlID8gTlNBcHBlYXJhbmNlTmFtZURhcmtBcXVhIDogTlNBcHBlYXJhbmNlTmFtZUFxdWFd
OwogCiAgICAgaWYgKHRpbnRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGFwcGVhcmFuY2UgPSBb
YXBwZWFyYW5jZSBhcHBlYXJhbmNlQnlBcHBseWluZ1RpbnRDb2xvcjpuc0NvbG9yKHRpbnRDb2xv
cikuZ2V0KCldOworICAgICAgICBhcHBlYXJhbmNlID0gW2FwcGVhcmFuY2UgYXBwZWFyYW5jZUJ5
QXBwbHlpbmdUaW50Q29sb3I6Y29jb2FDb2xvcih0aW50Q29sb3IpLmdldCgpXTsKIAogICAgIFtO
U0FwcGVhcmFuY2Ugc2V0Q3VycmVudEFwcGVhcmFuY2U6YXBwZWFyYW5jZV07CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCA2MDAyZWI0YjY3ZjUxMGNh
NjI3NDkwZWEzODkxMjQ1YzljZTc4YTcyLi5kOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2
ZjJjYjRjZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTMwNSw3ICszMDUsNyBAQCBTdHJpbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRB
bmRXcml0ZQogCiBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKIHsKLSAgICByZXR1
cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBjb2xvckZyb21QYXN0ZWJvYXJkOm1fcGFzdGVi
b2FyZC5nZXQoKV0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIGNv
bG9yRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXSk7CiB9CiAKIFVSTCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnVybCgpCkBAIC0zNjksOCArMzY5LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogCiBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ewotICAgIGF1dG8gcGFzdGVib2FyZENvbG9yID0gbnNDb2xvcihjb2xvcik7Ci0gICAgW3Bhc3Rl
Ym9hcmRDb2xvciB3cml0ZVRvUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOworICAgIFtj
b2NvYUNvbG9yKGNvbG9yKSB3cml0ZVRvUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwog
ICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0KaW5kZXggYmNlZmNkZWM5OWM4Zjc2M2Y5NGJjZjM2OTA5OGZhN2M0NzdhOGRm
Yi4uYzg0NTNmZmJkNzg4YjgxYmEwNzcyNTNmNTE0MWU3NWQ1ODFmNTMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0YXRpYyBi
b29sIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKE5TQ2VsbCAqY2VsbCwgTlNSZWN0
IGNlbGxGcmFtZSwgTlNWCiAKICAgICAvLyBGSVhNRTogVGhpcyBjb2xvciBzaG91bGQgYmUgc2hh
cmVkIHdpdGggUmVuZGVyVGhlbWVNYWMuIEZvciBub3cganVzdCB1c2UgdGhlIHNhbWUgTlNDb2xv
ciBjb2xvci4KICAgICAvLyBUaGUgY29sb3IgaXMgZXhwZWN0ZWQgdG8gYmUgb3BhcXVlLCBzaW5j
ZSBDb3JlR3JhcGhpY3Mgd2lsbCBhcHBseSBvcGFjaXR5IHdoZW4gZHJhd2luZyAoYmVjYXVzZSBv
cGFjaXR5IGlzIG5vcm1hbGx5IGFuaW1hdGVkKS4KLSAgICBhdXRvIGNvbG9yID0gY29sb3JGcm9t
TlNDb2xvcihbTlNDb2xvciBrZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3JdKS5vcGFxdWVDb2xv
cigpOworICAgIGF1dG8gY29sb3IgPSBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9yIGtleWJv
YXJkRm9jdXNJbmRpY2F0b3JDb2xvcl0pLm9wYXF1ZUNvbG9yKCk7CiAgICAgYXV0byBzdHlsZSA9
IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUs
IGNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpKSk7CiAgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dD
b250ZXh0LCBzdHlsZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQppbmRleCBlZjI5YjNiY2M5
NWVhMTMwN2M0YWYwNWMwMGRlZjkyMzE4ODg3MjA3Li5mYTNjOTZkMGJmYzhjZGJmZjFmYzYyMjQx
N2NlOTMwNjNjZDIzYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCkBAIC0xMjcsMTggKzEyNywxOCBA
QCBGb250QXR0cmlidXRlQ2hhbmdlcyBjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9u
dE1hbmFnZXIgKmZvbnRNYW5hZ2VyLCBpZAogCiAgICAgTlNDb2xvciAqY29udmVydGVkQmFja2dy
b3VuZENvbG9yQSA9IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQSBvYmplY3RGb3JLZXk6TlNCYWNrZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICBpZiAoY29udmVydGVkQmFja2dyb3VuZENvbG9y
QSA9PSBbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0Rm9yS2V5Ok5TQmFja2dyb3VuZENvbG9y
QXR0cmlidXRlTmFtZV0pCi0gICAgICAgIGNoYW5nZXMuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9y
RnJvbU5TQ29sb3IoY29udmVydGVkQmFja2dyb3VuZENvbG9yQSA/OiBOU0NvbG9yLmNsZWFyQ29s
b3IpKTsKKyAgICAgICAgY2hhbmdlcy5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3JGcm9tQ29jb2FD
b2xvcihjb252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBID86IE5TQ29sb3IuY2xlYXJDb2xvcikpOwog
CiAgICAgY2hhbmdlcy5zZXRGb250Q2hhbmdlcyhjb21wdXRlZEZvbnRDaGFuZ2VzKGZvbnRNYW5h
Z2VyLCBvcmlnaW5hbEZvbnRBLCBbY29udmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5T
Rm9udEF0dHJpYnV0ZU5hbWVdLCBbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0Rm9yS2V5Ok5T
Rm9udEF0dHJpYnV0ZU5hbWVdKSk7CiAKICAgICBOU0NvbG9yICpjb252ZXJ0ZWRGb3JlZ3JvdW5k
Q29sb3JBID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRGb3JlZ3JvdW5kQ29sb3JBID09
IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQiBvYmplY3RGb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSkKLSAgICAgICAgY2hhbmdlcy5zZXRGb3JlZ3JvdW5kQ29sb3IoY29sb3JGcm9t
TlNDb2xvcihjb252ZXJ0ZWRGb3JlZ3JvdW5kQ29sb3JBID86IE5TQ29sb3IuYmxhY2tDb2xvcikp
OworICAgICAgICBjaGFuZ2VzLnNldEZvcmVncm91bmRDb2xvcihjb2xvckZyb21Db2NvYUNvbG9y
KGNvbnZlcnRlZEZvcmVncm91bmRDb2xvckEgPzogTlNDb2xvci5ibGFja0NvbG9yKSk7CiAKICAg
ICBOU1NoYWRvdyAqY29udmVydGVkU2hhZG93ID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVj
dEZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRTaGFkb3cp
IHsKICAgICAgICAgRmxvYXRTaXplIG9mZnNldCB7IExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5k
KHN0YXRpY19jYXN0PGZsb2F0Pihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93T2Zmc2V0LndpZHRoKSku
dG9GbG9hdCgpLCBMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4o
Y29udmVydGVkU2hhZG93LnNoYWRvd09mZnNldC5oZWlnaHQpKS50b0Zsb2F0KCkgfTsKLSAgICAg
ICAgY2hhbmdlcy5zZXRTaGFkb3coeyBjb2xvckZyb21OU0NvbG9yKGNvbnZlcnRlZFNoYWRvdy5z
aGFkb3dDb2xvciA/OiBOU0NvbG9yLmJsYWNrQ29sb3IpLCBvZmZzZXQsIGNvbnZlcnRlZFNoYWRv
dy5zaGFkb3dCbHVyUmFkaXVzIH0pOworICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IGNvbG9y
RnJvbUNvY29hQ29sb3IoY29udmVydGVkU2hhZG93LnNoYWRvd0NvbG9yID86IE5TQ29sb3IuYmxh
Y2tDb2xvciksIG9mZnNldCwgY29udmVydGVkU2hhZG93LnNoYWRvd0JsdXJSYWRpdXMgfSk7CiAg
ICAgfSBlbHNlIGlmICghW2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU1NoYWRv
d0F0dHJpYnV0ZU5hbWVdKQogICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZWJjMTY2N2U4Mjcz
YmM4MTUwM2YwMjgyNzc0ZTM1NWJkZTZkZWJlNy4uZTVhN2U0OWJkOTc3ZjhlNDg1ZGIyMTk2ZWUw
Y2RmMTNjOTgzNzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiQ1NTVmFsdWVLZXkuaCIKICNpbXBvcnQg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbXBvcnQgIkNvbG9yQmxlbmRpbmcuaCIKLSNpbXBvcnQg
IkNvbG9ySU9TLmgiCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0ICJEYXRlQ29tcG9u
ZW50cy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkRyYXdHbHlwaHNSZWNvcmRl
ci5oIgpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZv
Y3VzUmluZ0NvbG9yKCkKIHsKICAgICBpZiAoIWNhY2hlZEZvY3VzUmluZ0NvbG9yKCkuaGFzX3Zh
bHVlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSB1c2luZyAta2V5Ym9hcmRGb2N1
c0luZGljYXRvckNvbG9yLiBGb3Igbm93LCB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTA4
Mzg4ODY+LgotICAgICAgICBjYWNoZWRGb2N1c1JpbmdDb2xvcigpID0gY29sb3JGcm9tVUlDb2xv
cihbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1CbHVlQ29sb3JdKTsKKyAgICAgICAgY2Fj
aGVkRm9jdXNSaW5nQ29sb3IoKSA9IGNvbG9yRnJvbUNvY29hQ29sb3IoW1BBTDo6Z2V0VUlDb2xv
ckNsYXNzKCkgc3lzdGVtQmx1ZUNvbG9yXSk7CiAgICAgfQogICAgIHJldHVybiAqY2FjaGVkRm9j
dXNSaW5nQ29sb3IoKTsKIH0KQEAgLTE2MzAsOSArMTYzMCw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q1RGb250UmVmPiBhdHRhY2htZW50QWN0aW9uRm9udCgpCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RG
b250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGVtcGhhc2l6ZWRGb250RGVzY3JpcHRvci5nZXQo
KSwgMCwgbnVsbHB0cikpOwogfQogCi1zdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudEFjdGlvbkNv
bG9yKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCitzdGF0aWMgUmV0YWluUHRy
PFVJQ29sb3I+IGF0dGFjaG1lbnRBY3Rpb25Db2xvcihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50KQogewotICAgIHJldHVybiBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBjb2xvcldp
dGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoYXR0YWNobWVudC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSkuZ2V0KCldOworICAgIHJldHVybiBjb2NvYUNvbG9y
KGF0dGFjaG1lbnQuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
cikpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudFRpdGxlRm9u
dCgpCkBAIC0xODcwLDcgKzE4NzAsNyBAQCBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0
YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICAgICAg
ICAgIHlPZmZzZXQgKz0gaWNvblJlY3QuaGVpZ2h0KCkgKyBhdHRhY2htZW50SXRlbU1hcmdpbjsK
ICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBidWlsZFdyYXBwZWRMaW5lcyhhY3Rpb24s
IGF0dGFjaG1lbnRBY3Rpb25Gb250KCkuZ2V0KCksIGF0dGFjaG1lbnRBY3Rpb25Db2xvcihhdHRh
Y2htZW50KSwgYXR0YWNobWVudFdyYXBwaW5nVGV4dE1heGltdW1MaW5lQ291bnQpOworICAgICAg
ICBidWlsZFdyYXBwZWRMaW5lcyhhY3Rpb24sIGF0dGFjaG1lbnRBY3Rpb25Gb250KCkuZ2V0KCks
IGF0dGFjaG1lbnRBY3Rpb25Db2xvcihhdHRhY2htZW50KS5nZXQoKSwgYXR0YWNobWVudFdyYXBw
aW5nVGV4dE1heGltdW1MaW5lQ291bnQpOwogCiAgICAgYm9vbCBmb3JjZVNpbmdsZUxpbmVUaXRs
ZSA9ICFhY3Rpb24uaXNFbXB0eSgpIHx8ICFzdWJ0aXRsZS5pc0VtcHR5KCkgfHwgaGFzUHJvZ3Jl
c3M7CiAgICAgYnVpbGRXcmFwcGVkTGluZXModGl0bGUsIGF0dGFjaG1lbnRUaXRsZUZvbnQoKS5n
ZXQoKSwgYXR0YWNobWVudFRpdGxlQ29sb3IoKSwgZm9yY2VTaW5nbGVMaW5lVGl0bGUgPyAxIDog
YXR0YWNobWVudFdyYXBwaW5nVGV4dE1heGltdW1MaW5lQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDYzMTBjZWUzNDRkMWQ0MzZjMjRhYTIy
M2M3Y2Y1MTI5ODUwZjJjY2YuLjZkZmQ1YTY2N2RkOTI5MTcxOWUxMmUyYTY3NzhlYzZmOWUzNmM3
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI4
NywxNyArMjg3LDE3IEBAIE5TVmlldyAqUmVuZGVyVGhlbWVNYWM6OmRvY3VtZW50Vmlld0Zvcihj
b25zdCBSZW5kZXJPYmplY3QmIG8pIGNvbnN0CiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRp
b25zPiBvcHRpb25zKSBjb25zdAogewogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvck9wdGlvbnM6OlVzZURh
cmtBcHBlYXJhbmNlKSk7Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3Igc2Vs
ZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9yXSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbUNvY29hQ29s
b3IoW05TQ29sb3Igc2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9yXSk7CiB9CiAKIENvbG9yIFJl
bmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKE9w
dGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvck9wdGlvbnM6OlVzZURhcmtB
cHBlYXJhbmNlKSk7Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgdW5lbXBo
YXNpemVkU2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9yXSk7CisgICAgcmV0dXJuIGNvbG9yRnJv
bUNvY29hQ29sb3IoW05TQ29sb3IgdW5lbXBoYXNpemVkU2VsZWN0ZWRUZXh0QmFja2dyb3VuZENv
bG9yXSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAgICByZXR1cm4gY29s
b3JGcm9tTlNDb2xvcihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZENvbnRlbnRCYWNrZ3Jv
dW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciB1bmVt
cGhhc2l6ZWRTZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsKICNlbmRpZgogfQogCkBA
IC0zMjMsNyArMzIzLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZlU2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG8KIHsKICAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvcHRpb25zLmNvbnRhaW5zKFN0
eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwogICAgIGlmIChsb2NhbEFwcGVh
cmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICByZXR1cm4gY29sb3JGcm9tTlND
b2xvcihbTlNDb2xvciBzZWxlY3RlZFRleHRDb2xvcl0pOworICAgICAgICByZXR1cm4gY29sb3JG
cm9tQ29jb2FDb2xvcihbTlNDb2xvciBzZWxlY3RlZFRleHRDb2xvcl0pOwogICAgIHJldHVybiB7
IH07CiB9CiAKQEAgLTMzMiw3ICszMzIsNyBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZv
cm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDbwogI2lm
IEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0aW9uczo6
VXNlRGFya0FwcGVhcmFuY2UpKTsKICAgICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0Fw
cGVhcmFuY2UoKSkKLSAgICAgICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgdW5l
bXBoYXNpemVkU2VsZWN0ZWRUZXh0Q29sb3JdKTsKKyAgICAgICAgcmV0dXJuIGNvbG9yRnJvbUNv
Y29hQ29sb3IoW05TQ29sb3IgdW5lbXBoYXNpemVkU2VsZWN0ZWRUZXh0Q29sb3JdKTsKICAgICBy
ZXR1cm4geyB9OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CkBAIC0zNDQsMTEg
KzM0NCwxMSBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKE9wdGlvblNldDxTdAogewogI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVh
cmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0aW9uczo6VXNlRGFya0FwcGVhcmFu
Y2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBzZWxlY3RlZENvbnRl
bnRCYWNrZ3JvdW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlND
b2xvciBzZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKG9wdGlvbnMpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
Ci0gICAgcmV0dXJuIGNvbG9yRnJvbU5TQ29sb3IoW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRD
b250cm9sQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBh
bHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogI2VuZGlmCiB9CkBAIC0zNjAsMjQgKzM2MCwyNCBAQCBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoT3B0aW9uU2V0PAogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYK
LSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3Rl
ZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xv
cihbTlNDb2xvciB1bmVtcGhhc2l6ZWRTZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kQ29sb3JdKTsK
IAogfQogCiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yT3B0aW9ucz4gb3B0aW9ucykg
Y29uc3QKIHsKICAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5j
ZShvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3JPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSkp
OwotICAgIHJldHVybiBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVk
Q29udHJvbFRleHRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0Nv
bG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOwogfQogCiBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRpb25zPiBvcHRpb25zKSBjb25zdAogewogI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0aW9uczo6VXNl
RGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciB1
bmVtcGhhc2l6ZWRTZWxlY3RlZFRleHRDb2xvcl0pOworICAgIHJldHVybiBjb2xvckZyb21Db2Nv
YUNvbG9yKFtOU0NvbG9yIHVuZW1waGFzaXplZFNlbGVjdGVkVGV4dENvbG9yXSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlNDb2xvcihb
TlNDb2xvciBzZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9t
Q29jb2FDb2xvcihbTlNDb2xvciBzZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdKTsKICNlbmRpZgog
fQogCkBAIC0zODcsMTMgKzM4NywxMyBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1G
b2N1c1JpbmdDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbgogICAgICAg
ICByZXR1cm4gb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCk7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yT3B0
aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKICAgICAvLyBUaGUgY29sb3IgaXMgZXhwZWN0ZWQg
dG8gYmUgb3BhcXVlLCBzaW5jZSBDb3JlR3JhcGhpY3Mgd2lsbCBhcHBseSBvcGFjaXR5IHdoZW4g
ZHJhd2luZyAoYmVjYXVzZSBvcGFjaXR5IGlzIG5vcm1hbGx5IGFuaW1hdGVkKS4KLSAgICByZXR1
cm4gY29sb3JGcm9tTlNDb2xvcihbTlNDb2xvciBrZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3Jd
KS5vcGFxdWVDb2xvcigpOworICAgIHJldHVybiBjb2xvckZyb21Db2NvYUNvbG9yKFtOU0NvbG9y
IGtleWJvYXJkRm9jdXNJbmRpY2F0b3JDb2xvcl0pLm9wYXF1ZUNvbG9yKCk7CiB9CiAKIENvbG9y
IFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcihPcHRpb25T
ZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgTG9jYWxEZWZhdWx0
U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlucyhTdHlsZUNv
bG9yT3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tTlND
b2xvcihbTlNDb2xvciBmaW5kSGlnaGxpZ2h0Q29sb3JdKTsKKyAgICByZXR1cm4gY29sb3JGcm9t
Q29jb2FDb2xvcihbTlNDb2xvciBmaW5kSGlnaGxpZ2h0Q29sb3JdKTsKIH0KIAogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKQEAgLTQwNyw3ICs0MDcsNyBAQCBDb2xvciBSZW5kZXJUaGVtZU1h
Yzo6cGxhdGZvcm1BcHBIaWdobGlnaHRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+
KSBjbwogQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtRGVmYXVsdEJ1dHRvblRleHRDb2xv
cihPcHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3B0aW9ucy5jb250YWlu
cyhTdHlsZUNvbG9yT3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpKTsKLSAgICByZXR1cm4gY29s
b3JGcm9tTlNDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3Jd
KTsKKyAgICByZXR1cm4gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxl
Y3RlZENvbnRyb2xUZXh0Q29sb3JdKTsKIH0KIAogc3RhdGljIENvbG9yIGFjdGl2ZUJ1dHRvblRl
eHRDb2xvcigpCkBAIC0yMjk3LDcgKzIyOTcsNyBAQCBzdGF0aWMgQ29sb3IgdGl0bGVUZXh0Q29s
b3JGb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEF0dAog
ICAgIAogICAgIGlmIChzdHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6OlNlbGVjdGVkKSB7
CiAgICAgICAgIGlmIChhdHRhY2htZW50LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5k
QWN0aXZlKCkpCi0gICAgICAgICAgICByZXN1bHQgPSBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9y
IGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl0pOworICAgICAgICAgICAgcmVzdWx0
ID0gY29sb3JGcm9tQ29jb2FDb2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xU
ZXh0Q29sb3JdKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gYXR0YWNobWVu
dFRpdGxlSW5hY3RpdmVUZXh0Q29sb3I7CiAgICAgfQpAQCAtMjM1MSw3ICsyMzUxLDcgQEAgdm9p
ZCBBdHRhY2htZW50TGF5b3V0OjpsYXlPdXRUaXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50KQogCiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAg
ICAgIChfX2JyaWRnZSBpZClrQ1RGb250QXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIGlkKWZvbnQu
Z2V0KCksCi0gICAgICAgIChfX2JyaWRnZSBpZClrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVO
YW1lOiAoX19icmlkZ2UgTlNDb2xvciAqKWNhY2hlZENHQ29sb3IodGl0bGVUZXh0Q29sb3JGb3JB
dHRhY2htZW50KGF0dGFjaG1lbnQsIHN0eWxlKSkuZ2V0KCkKKyAgICAgICAgKF9fYnJpZGdlIGlk
KWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBpZCljYWNoZWRDR0Nv
bG9yKHRpdGxlVGV4dENvbG9yRm9yQXR0YWNobWVudChhdHRhY2htZW50LCBzdHlsZSkpLmdldCgp
CiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkVGl0
bGUgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0
aXRsZSBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAgICAgUmV0YWluUHRyPENURnJhbWVz
ZXR0ZXJSZWY+IHRpdGxlRnJhbWVzZXR0ZXIgPSBhZG9wdENGKENURnJhbWVzZXR0ZXJDcmVhdGVX
aXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRUaXRs
ZS5nZXQoKSkpOwpAQCAtMjQxMCw3ICsyNDEwLDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0Ojps
YXlPdXRTdWJ0aXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGF1
dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJ
Rm9udFN5c3RlbSwgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7CiAgICAg
TlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBpZClr
Q1RGb250QXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIGlkKWZvbnQuZ2V0KCksCi0gICAgICAgIChf
X2JyaWRnZSBpZClrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgTlND
b2xvciAqKWNhY2hlZENHQ29sb3Ioc3VidGl0bGVDb2xvcikuZ2V0KCkKKyAgICAgICAgKF9fYnJp
ZGdlIGlkKWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBpZCljYWNo
ZWRDR0NvbG9yKHN1YnRpdGxlQ29sb3IpLmdldCgpCiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3VidGl0bGVUZXh0ID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VidGl0bGVUZXh0IGF0dHJpYnV0
ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBzdWJ0aXRsZUxpbmUgPSBhZG9wdENGKENUTGluZUNy
ZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRl
ZFN1YnRpdGxlVGV4dC5nZXQoKSkpOwpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIEcKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKGF0dGFjaG1l
bnQuZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkgewogICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBjb2xvckZyb21OU0NvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENv
bG9yXSk7CisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNvbG9yRnJvbUNvY29hQ29sb3IoW05T
Q29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sQ29sb3JdKTsKICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfSBlbHNlCiAgICAgICAgIGJhY2tncm91bmRD
b2xvciA9IGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggYzZm
ZmY2OTA2ZmMyMTY1ZjkzMTczMzkxNTkzMGZhNDlmNjYxODY0Ny4uZGE0ZDExYzljMGEyNGFmN2Fm
YzUxZDMxYmZmODU3MDU3MmM3MDRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zNCwxOCArMzQsMTMgQEAKICNpbXBvcnQg
IkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0
IDxDb3JlVGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29j
b2EuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5o
PgogCi0jaWYgVVNFKEFQUEtJVCkKLSNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KLSNlbHNl
Ci0jaW1wb3J0IDxXZWJDb3JlL0NvbG9ySU9TLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUZv
bnQuaD4KQEAgLTI2NywyMyArMjYyLDkgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRy
PGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmEKIAogI3By
YWdtYSBtYXJrIC0gTlNDb2xvciAvIFVJQ29sb3IKIAotI2lmIFVTRShBUFBLSVQpCi1zdGF0aWMg
aW5saW5lIHZvaWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU0NvbG9y
ICpjb2xvcikKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yRnJvbU5TQ29sb3IoY29sb3IpOwotfQot
Ci1zdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJ
bnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUNvbG9y
SW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgQ29jb2FDb2xvciAqY29sb3IpCiB7Ci0gICAgQ29s
b3IgY29sb3I7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHsgbnNDb2xvcihjb2xvcikgfTsKLX0KLSNlbHNl
Ci1zdGF0aWMgaW5saW5lIHZvaWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVy
LCBVSUNvbG9yICpjb2xvcikKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yRnJvbVVJQ29sb3IoY29s
b3IpOworICAgIGVuY29kZXIgPDwgY29sb3JGcm9tQ29jb2FDb2xvcihjb2xvcik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVy
bmFsKERlY29kZXImIGRlY29kZXIpCkBAIC0yOTEsOSArMjcyLDggQEAgc3RhdGljIGlubGluZSBz
dGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBDb2xvciBjb2xvcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9y
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBhZG9wdE5TKFtb
VUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgp
XSkgfTsKKyAgICByZXR1cm4geyBjb2NvYUNvbG9yKGNvbG9yKSB9OwogfQotI2VuZGlmCiAKICNw
cmFnbWEgbWFyayAtIE5TRGF0YQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCBkZTU1YTBmZjVmZTY3MjUxY2Y5NmMzZDdiNmFkNmI5OTI2
Y2NlODdhLi4yNjgwYjZjNzU0ZGZmZTE3NDliNjc1NTQ4ZThjYzNlMmQ5NGM2ZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE3Njgs
MTUgKzE3NjgsMTIgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IGFsbG93aW5nUmVhZEFjY2Vzc1RvVVIKIAogLSAoQ29jb2FDb2xvciAq
KXRoZW1lQ29sb3IKIHsKLSAgICBhdXRvIHRoZW1lQ29sb3IgPSBfcGFnZS0+dGhlbWVDb2xvcigp
OwotICAgIGlmICghdGhlbWVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IodGhlbWVDb2xvcikuYXV0b3JlbGVhc2Uo
KTsKKyAgICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT50aGVtZUNvbG9yKCkpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcihfcGFnZS0+dW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvY29hQ29sb3IoX3Bh
Z2UtPnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2
b2lkKXNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjooQ29jb2FDb2xvciAqKXVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck92ZXJyaWRlCkBAIC0zMjcwLDE4ICszMjY3LDEyIEBAIC0gKENvY29hQ29s
b3IgKilfdGhlbWVDb2xvcgogLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KIC0gKENvY29h
Q29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7Ci0gICAgYXV0byBwYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
KCk7Ci0gICAgaWYgKCFwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvcikuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gY29jb2FD
b2xvck9yTmlsKF9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoQ29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCiB7Ci0gICAg
YXV0byBzYW1wbGVkUGFnZVRvcENvbG9yID0gX3BhZ2UtPnNhbXBsZWRQYWdlVG9wQ29sb3IoKTsK
LSAgICBpZiAoIXNhbXBsZWRQYWdlVG9wQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHNhbXBsZWRQYWdlVG9wQ29s
b3IpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvY29hQ29sb3JPck5pbChfcGFnZS0+c2Ft
cGxlZFBhZ2VUb3BDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8X1dLSW5wdXRE
ZWxlZ2F0ZT4pX2lucHV0RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KaW5kZXggNmZkZjA5
MDI0ZDg2NjM1NWI3MGFjZGVmYzAzOWIyMzM0N2YxMTEyMC4uMDM1OWViNWI2MDQ2M2RhYzlkMmJj
ZmFkY2I4Njc1MDI3ZTFkYjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KQEAgLTEzOSw3ICsx
MzksNyBAQCAtIChOU1VSTCAqKXN0YXJ0VVJMCiAKIC0gKENvY29hQ29sb3IgKil0aGVtZUNvbG9y
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IoX2FwcGxpY2F0aW9uTWFuaWZl
c3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBjb2NvYUNvbG9yKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlm
ZXN0KCkudGhlbWVDb2xvcikuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoX1dLQXBwbGljYXRpb25N
YW5pZmVzdERpc3BsYXlNb2RlKWRpc3BsYXlNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDFhNDYxYTE2YjhlOTJlZjRjNjk5Njlk
MWQyMGRjMjY1ZDIzZjliM2YuLjBjYzIyYjQyOTY5MDYxZjc1MzMwNDU3NzM1ZDQyOTk5OGVlYjFm
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCkBAIC01Myw2ICs1Myw3IEBACiAjaW1wb3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9J
bnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaD4KQEAgLTU0Myw5
ICs1NDQsNyBAQCAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3QmFja2dyb3VuZAogICAgIGF1dG8g
bmV3U2Nyb2xsVmlld0JhY2tncm91bmRDb2xvciA9IHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Io
c2VsZiwgQWxsb3dQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU6Olllcyk7CiAgICAgaWYgKF9z
Y3JvbGxWaWV3QmFja2dyb3VuZENvbG9yICE9IG5ld1Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Ip
IHsKICAgICAgICAgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBuZXdTY3JvbGxWaWV3QmFj
a2dyb3VuZENvbG9yOwotCi0gICAgICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5T
KFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IobmV3U2Nyb2xs
Vmlld0JhY2tncm91bmRDb2xvcikuZ2V0KCldKTsKLSAgICAgICAgW19zY3JvbGxWaWV3IHNldEJh
Y2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CisgICAgICAgIFtfc2Nyb2xs
VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29jb2FDb2xvcihuZXdTY3JvbGxWaWV3QmFja2dyb3Vu
ZENvbG9yKS5nZXQoKV07CiAgICAgfQogCiAgICAgLy8gVXBkYXRlIHRoZSBpbmRpY2F0b3Igc3R5
bGUgYmFzZWQgb24gdGhlIGxpZ2h0bmVzcy9kYXJrbmVzcyBvZiB0aGUgYmFja2dyb3VuZCBjb2xv
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
VGVzdGluZ0lPUy5tbQppbmRleCBjNmE1MzIxZGNhYzIwNjAyMGQwY2FmMTliOGM5OTRjZmI2OTNk
NzA0Li42MDQ3ZDNjNzQxMmJmNjAwYmIwOWMyNjY4ZWI2MjkxMWIxMzJmMGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tCkBAIC0zOCw3ICszOCw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQg
Il9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1RleHRJbnB1
dENvbnRleHRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9Db2xvcklPUy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXph
dGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgogI2ltcG9ydCA8d3Rm
L1NvcnRlZEFycmF5TWFwLmg+CkBAIC00NzgsNyArNDc4LDcgQEAgLSAoTlNTdHJpbmcgKilfc2Vy
aWFsaXplZFNlbGVjdGlvbkNhcmV0QmFja2dyb3VuZENvbG9yRm9yVGVzdGluZwogICAgIGlmICgh
YmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFdlYkNv
cmU6OnNlcmlhbGl6YXRpb25Gb3JDU1MoV2ViQ29yZTo6Y29sb3JGcm9tVUlDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IpKTsKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhXZWJDb3JlOjpjb2xv
ckZyb21Db2NvYUNvbG9yKGJhY2tncm91bmRDb2xvcikpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDY5ZjQzYTA5NjI3NjM3
ZWVmOTU2MmFiM2JmOTI2NjkxN2IxMmYxMGYuLmJiZDI1OTlkOWVhZjM1NDMxMmVjYTFjZmJhMTM2
MmMxMzgzNjlhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC05NDksNyArOTQ5LDcgQEAgLSAodm9pZClfd2tDaGFuZ2VDb2xvcjooaWQpc2Vu
ZGVyCiAgICAgICAgIHJldHVybjsKIAogICAgIF90ZXh0Q29sb3IgPSBzZWxmLmNvbG9yUGlja2Vy
SXRlbS5jb2xvcjsKLSAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQo
IkZvcmVDb2xvciIsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9y
RnJvbU5TQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsKKyAgICBfd2ViVmlld0ltcGwtPnBhZ2Uo
KS5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciIsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25G
b3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsK
IH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTEz
MTUsNyArMTMxNSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVRleHRUb3VjaEJhcigpCiAg
ICAgICAgICAgICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0SXNCb2xkOihi
b29sKShtX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS50eXBpbmdBdHRyaWJ1
dGVzICYgQXR0cmlidXRlQm9sZCldOwogICAgICAgICAgICAgW21fdGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgc2V0VGV4dElzSXRhbGljOihib29sKShtX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9z
dExheW91dERhdGEoKS50eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlSXRhbGljcyldOwogICAg
ICAgICAgICAgW21fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dElzVW5kZXJsaW5l
ZDooYm9vbCkobV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkudHlwaW5nQXR0
cmlidXRlcyAmIEF0dHJpYnV0ZVVuZGVybGluZSldOwotICAgICAgICAgICAgW21fdGV4dFRvdWNo
QmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dENvbG9yOm5zQ29sb3IoZWRpdG9yU3RhdGUucG9zdExh
eW91dERhdGEoKS50ZXh0Q29sb3IpLmdldCgpXTsKKyAgICAgICAgICAgIFttX3RleHRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHNldFRleHRDb2xvcjpjb2NvYUNvbG9yKGVkaXRvclN0YXRlLnBvc3RM
YXlvdXREYXRhKCkudGV4dENvbG9yKS5nZXQoKV07CiAgICAgICAgICAgICBbW21fdGV4dFRvdWNo
QmFySXRlbUNvbnRyb2xsZXIgdGV4dExpc3RUb3VjaEJhclZpZXdDb250cm9sbGVyXSBzZXRDdXJy
ZW50TGlzdFR5cGU6KExpc3RUeXBlKW1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0
YSgpLmVuY2xvc2luZ0xpc3RUeXBlXTsKICAgICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0ZW1D
b250cm9sbGVyIHNldEN1cnJlbnRUZXh0QWxpZ25tZW50Om5zVGV4dEFsaWdubWVudEZyb21UZXh0
QWxpZ25tZW50KChUZXh0QWxpZ25tZW50KWVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkudGV4
dEFsaWdubWVudCldOwogICAgICAgICB9CkBAIC0yNjIyLDI1ICsyNjIyLDE3IEBAIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCiAKIHZvaWQg
V2ViVmlld0ltcGw6OnNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKIHsK
LSAgICBtX3BhZ2UtPnNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcih1
bmRlcmxheUNvbG9yKSk7CisgICAgbV9wYWdlLT5zZXRVbmRlcmxheUNvbG9yKFdlYkNvcmU6OmNv
bG9yRnJvbUNvY29hQ29sb3IodW5kZXJsYXlDb2xvcikpOwogfQogCiBSZXRhaW5QdHI8TlNDb2xv
cj4gV2ViVmlld0ltcGw6OnVuZGVybGF5Q29sb3IoKSBjb25zdAogewotICAgIFdlYkNvcmU6OkNv
bG9yIHdlYkNvbG9yID0gbV9wYWdlLT51bmRlcmxheUNvbG9yKCk7Ci0gICAgaWYgKCF3ZWJDb2xv
ci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6
bnNDb2xvcih3ZWJDb2xvcik7CisgICAgcmV0dXJuIGNvY29hQ29sb3JPck5pbChtX3BhZ2UtPnVu
ZGVybGF5Q29sb3IoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogUmV0YWluUHRyPE5TQ29sb3I+IFdl
YlZpZXdJbXBsOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewotICAgIFdl
YkNvcmU6OkNvbG9yIGNvbG9yID0gbV9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Io
KTsKLSAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IHJldHVybiBXZWJDb3JlOjpuc0NvbG9yKGNvbG9yKTsKKyAgICByZXR1cm4gY29jb2FDb2xvck9y
TmlsKG1fcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBA
IC0zMTgyLDcgKzMxNzQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjaGFuZ2VGb250Q29sb3JGcm9t
U2VuZGVyKGlkIHNlbmRlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZUNoYW5nZXMgY2hhbmdlczsKLSAgICBjaGFuZ2VzLnNldEZvcmVncm91bmRDb2xvcihX
ZWJDb3JlOjpjb2xvckZyb21OU0NvbG9yKChOU0NvbG9yICopY29sb3IpKTsKKyAgICBjaGFuZ2Vz
LnNldEZvcmVncm91bmRDb2xvcihXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKChOU0NvbG9y
ICopY29sb3IpKTsKICAgICBtX3BhZ2UtPmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hh
bmdlcykpOwogfQogCkBAIC01MDE1LDggKzUwMDcsOCBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJp
bgogICAgICAgICBpZiAoTlNOdW1iZXIgKnN0eWxlID0gW2F0dHJzIG9iamVjdEZvcktleTpOU1Vu
ZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0pIHsKICAgICAgICAgICAgIFdlYkNvcmU6OkNvbG9y
IGNvbG9yID0gV2ViQ29yZTo6Q29sb3I6OmJsYWNrOwogICAgICAgICAgICAgV2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmVDb2xvciBjb21wb3NpdGlvblVuZGVybGluZUNvbG9yID0gV2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmVDb2xvcjo6VGV4dENvbG9yOwotICAgICAgICAgICAgaWYg
KE5TQ29sb3IgKmNvbG9yQXR0ciA9IFthdHRycyBvYmplY3RGb3JLZXk6TlNVbmRlcmxpbmVDb2xv
ckF0dHJpYnV0ZU5hbWVdKSB7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpjb2xv
ckZyb21OU0NvbG9yKGNvbG9yQXR0cik7CisgICAgICAgICAgICBpZiAoTlNDb2xvciAqY29sb3JB
dHRyaWJ1dGUgPSBbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVO
YW1lXSkgeworICAgICAgICAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FD
b2xvcihjb2xvckF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgY29tcG9zaXRpb25VbmRlcmxp
bmVDb2xvciA9IFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3I6OkdpdmVuQ29sb3I7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lKHJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJhbmdlKSwgY29tcG9z
aXRpb25VbmRlcmxpbmVDb2xvciwgY29sb3IsIHN0eWxlLmludFZhbHVlID4gMSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUubW0KaW5kZXggMmQwZTY2NjkzNDc3MjljNmI0NGMxNzA3ZGNjMmU0MjdkYzc0ZDVjYS4uMjVm
MjY1NGQyZTRhZjczNTViOGYzYmIxNzcxNDQxMzU3YzEwMzA2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNv
Y29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lt
YWdlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KQEAgLTIyNiw3ICsyMjcs
NyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9wUHJl
dmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IHRleHRJbmRpY2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShpbmRpY2F0b3IuY29udGVudElt
YWdlLmdldCgpKTsKLSAgICBhdXRvIHByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3
KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIs
IGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0
b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3Ip
LmdldCgpXSwgbmlsKTsKKyAgICBhdXRvIHByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZERyYWdQcmV2
aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWlu
ZXIsIGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRp
Y2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgY29jb2FDb2xvcihpbmRp
Y2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQoKSwgbmlsKTsKICAgICBmb3IgKGF1
dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVy
cykKICAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92aWRlci5wcm92aWRlcihwcmV2aWV3LmdldCgp
KTsKICAgICBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy5jbGVhcigpOwpAQCAtMzEzLDcg
KzMxNCw3IEBAIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
OjpwcmV2aWV3Rm9yRHJhZ0l0ZW0oVUlEcmFnSXRlbSAqCiAgICAgaWYgKHNob3VsZFVzZVRleHRJ
bmRpY2F0b3JUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKHNvdXJjZSkpIHsKICAgICAgICAg
YXV0byBpbmRpY2F0b3IgPSBzb3VyY2UuaW5kaWNhdG9yRGF0YS52YWx1ZSgpOwogICAgICAgICBh
dXRvIHRleHRJbmRpY2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShpbmRpY2F0b3IuY29udGVu
dEltYWdlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXco
dGV4dEluZGljYXRvckltYWdlLmdldCgpLCBjb250ZW50VmlldywgcHJldmlld0NvbnRhaW5lciwg
aW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGluZGljYXRv
ci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLCBbVUlDb2xvciBjb2xvcldpdGhD
R0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvciku
Z2V0KCldLCBuaWwpLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRl
ZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZp
ZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgY29jb2FD
b2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQoKSwgbmlsKS5hdXRv
cmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQppbmRleCBi
YmJiMDI1NGZhYWExZDQ0MjM0ODA0Y2U3YTY4MjA3YWQyYTk5OTUxLi4xNGFkOTRmOGI4Yjk2ODBj
NWM2OWJkNGYxY2M0YzA3MGRkMmJjNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTQyLDYgKzQyLDcg
QEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbkVkZ2VQYW5HZXN0dXJlUmVjb2duaXplci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYv
V2Vha09iakNQdHIuaD4KQEAgLTIyNSw3ICsyMjYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlv
bgogICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50cyA9IHNuYXBzaG90
LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29yZUNvbG9yID0g
c25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNvbG9yLmlzVmFs
aWQoKSkKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFs
bG9jXSBpbml0V2l0aENHQ29sb3I6V2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IpLmdl
dCgpXSk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjb2NvYUNvbG9yKGNvcmVDb2xv
cik7CiAgICAgfQogCiAgICAgW21fc25hcHNob3RWaWV3IHNldEJhY2tncm91bmRDb2xvcjpiYWNr
Z3JvdW5kQ29sb3IuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYzNmMDg4ZDU1MWExNDEzZWVj
OWNlYmJmOTJkM2QyNTEwYTU2ZDdjYy4uOTQ5ZmQwMzRhZjIxMmRlMmRmMmVhN2JiZGM0ZGY2MWQ1
NDYxMmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05OSw4ICs5OSw3IEBACiAjaW1wb3J0IDxNb2Jp
bGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFVuaWZvcm1UeXBlSWRlbnRp
ZmllcnMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NvbG9ySU9TLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJp
YWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CkBAIC0yMDEyLDcgKzIwMTEsNyBAQCAt
ICh2b2lkKV91cGRhdGVUYXBIaWdobGlnaHQKICAgICBpZiAoIVtfaGlnaGxpZ2h0VmlldyBzdXBl
cnZpZXddKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6
YWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF90
YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xvcikuZ2V0KCldKS5nZXQoKV07CisgICAgW19oaWdo
bGlnaHRWaWV3IHNldENvbG9yOmNvY29hQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNv
bG9yKS5nZXQoKV07CiAKICAgICBhdXRvJiBoaWdobGlnaHRlZFF1YWRzID0gX3RhcEhpZ2hsaWdo
dEluZm9ybWF0aW9uLnF1YWRzOwogICAgIGJvb2wgYWxsUmVjdGlsaW5lYXIgPSB0cnVlOwpAQCAt
MzY4OSwxMCArMzY4OCwxMCBAQCAtIChVSUNvbG9yICopX2Nhc2NhZGVJbnRlcmFjdGlvblRpbnRD
b2xvcgogICAgICAgICByZXR1cm4gW1VJQ29sb3IgY2xlYXJDb2xvcl07CiAKICAgICBpZiAoIV9w
YWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkNvbG9yIGNhcmV0Q29sb3IgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0
RGF0YSgpLmNhcmV0Q29sb3I7Ci0gICAgICAgIGlmIChjYXJldENvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3Io
Y2FyZXRDb2xvcikuZ2V0KCldOworICAgICAgICBpZiAoYXV0byBjYXJldENvbG9yID0gX3BhZ2Ut
PmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5jYXJldENvbG9yOyBjYXJldENvbG9yLmlz
VmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBjb2NvYUNvbG9yKGNhcmV0Q29sb3IpLmF1dG9y
ZWxlYXNlKCk7CiAgICAgfQorCiAgICAgcmV0dXJuIFtzZWxmIF9pbmhlcml0ZWRJbnRlcmFjdGlv
blRpbnRDb2xvcl07CiB9CiAKQEAgLTUxMTUsNyArNTExNCw3IEBAIHN0YXRpYyBWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+IGNvbXBvc2l0aW9uSGlnaGxpZ2h0cyhOU0F0dHJp
YnV0ZWRTCiAKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgaGlnaGxpZ2h0Q29sb3IgeyBXZWJDb3Jl
OjpDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yIH07CiAg
ICAgICAgIGlmIChVSUNvbG9yICp1aUNvbG9yID0gYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWVdKQotICAgICAgICAgICAgaGlnaGxpZ2h0Q29sb3IgPSBXZWJDb3JlOjpj
b2xvckZyb21VSUNvbG9yKHVpQ29sb3IpOworICAgICAgICAgICAgaGlnaGxpZ2h0Q29sb3IgPSBX
ZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKHVpQ29sb3IpOwogICAgICAgICBoaWdobGlnaHRz
LmFwcGVuZCh7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS5sb2NhdGlvbiksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihOU01heFJhbmdlKHJhbmdlKSksIGhpZ2hsaWdodENvbG9yIH0pOwogICAg
IH1dOwogCkBAIC04NTk3LDcgKzg1OTYsNyBAQCAtIChVSVRhcmdldGVkUHJldmlldyAqKV9jcmVh
dGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdJZlBvc3NpYmxlCiAgICAgaWYgKF9wb3Np
dGlvbkluZm9ybWF0aW9uLmlzTGluayAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNh
dG9yLmNvbnRlbnRJbWFnZSkgewogICAgICAgICBhdXRvIGluZGljYXRvciA9IF9wb3NpdGlvbklu
Zm9ybWF0aW9uLmxpbmtJbmRpY2F0b3I7CiAgICAgICAgIGF1dG8gdGV4dEluZGljYXRvckltYWdl
ID0gdWlJbWFnZUZvckltYWdlKGluZGljYXRvci5jb250ZW50SW1hZ2UuZ2V0KCkpOwotICAgICAg
ICB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZFByZXZpZXcodGV4dEluZGljYXRvcklt
YWdlLmdldCgpLCBzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdz
LCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNh
dG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0
aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
KS5nZXQoKV0pOworICAgICAgICB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZFByZXZp
ZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRl
eHRNZW51SGludFByZXZpZXdzLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMs
IGNvY29hQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikuZ2V0KCkpOwog
ICAgIH0gZWxzZSBpZiAoKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzQXR0YWNobWVudCB8fCBfcG9z
aXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlKSAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZSkg
ewogICAgICAgICBhdXRvIGNnSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS0+bWFr
ZUNHSW1hZ2VDb3B5KCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tCmluZGV4
IGE2ZmIwYThjOWY2MTA3NzhkYjg0NmE0YWRjZjcxYjI2NzQxY2Q0YTQuLmQxMWVkMDFhOGU5ZmZi
NzFiZTllYTQ0NjIzNTljYjYzOTU3YTk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQpAQCAtMzMsNyArMzMs
OCBAQAogI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI3ByYWdtYSBtYXJrIC0gV0tDb2xvclBpY2tlcgog
CkBAIC03MywyMSArNzQsMjAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAtIChOU0FycmF5PFVJQ29sb3IgKj4gKilmb2N1
c2VkRWxlbWVudFN1Z2dlc3RlZENvbG9ycwogewotICAgIHNpemVfdCBudW1Db2xvclN1Z2dlc3Rp
b25zID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zdWdnZXN0ZWRDb2xvcnMuc2l6
ZSgpOwotICAgIGlmICghbnVtQ29sb3JTdWdnZXN0aW9ucykKLSAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBhdXRvJiBjb2xvcnMgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnN1Z2dl
c3RlZENvbG9yczsKIAotICAgIE5TTXV0YWJsZUFycmF5PFVJQ29sb3IgKj4gKmNvbG9ycyA9IFtO
U011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IgOiBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnN1Z2dlc3RlZENvbG9ycykKLSAg
ICAgICAgW2NvbG9ycyBhZGRPYmplY3Q6W1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRD
R0NvbG9yKGNvbG9yKS5nZXQoKV1dOworICAgIGlmIChjb2xvcnMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGNvbG9yczsKKyAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShjb2xvcnMsIFtdIChhdXRvJiBjb2xvcikgeworICAgICAgICByZXR1cm4gY29jb2FDb2xv
cihjb2xvcik7CisgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KICNlbmRpZgogCiAtICh2b2lkKXVw
ZGF0ZUNvbG9yUGlja2VyU3RhdGUKIHsKLSAgICBbX2NvbG9yUGlja2VyVmlld0NvbnRyb2xsZXIg
c2V0U2VsZWN0ZWRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3Io
X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jb2xvclZhbHVlKS5nZXQoKV1dOworICAg
IFtfY29sb3JQaWNrZXJWaWV3Q29udHJvbGxlciBzZXRTZWxlY3RlZENvbG9yOmNvY29hQ29sb3Io
X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jb2xvclZhbHVlKS5nZXQoKV07CiAjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKFtfY29sb3JQaWNrZXJWaWV3Q29udHJv
bGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRTdWdnZXN0ZWRDb2xvcnM6KV0p
CiAgICAgICAgIFtfY29sb3JQaWNrZXJWaWV3Q29udHJvbGxlciBfc2V0U3VnZ2VzdGVkQ29sb3Jz
OltzZWxmIGZvY3VzZWRFbGVtZW50U3VnZ2VzdGVkQ29sb3JzXV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggN2YxNTZkZGVmYWNm
NzEwZGY0NTc4NmFjNjVkYTg5NDRmMDlkMTJkNy4uYWI3Mzk5NDg5OWM1NDdjZTE4NGI5OTYxYWEy
NTdjZTFiYTliZmNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6bWFrZVZpZXdCbGFuayhib29sIG1ha2VCbGFuaykKICNpZiBIQVZFKEFQUF9BQ0NFTlRfQ09M
T1JTKQogV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVudEltcGw6OmFjY2VudENvbG9yKCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcihbTlNBcHAgX2VmZmVjdGl2ZUFjY2Vu
dENvbG9yXSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoW05TQXBw
IF9lZmZlY3RpdmVBY2NlbnRDb2xvcl0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQppbmRleCA5YzQ2YzU5MWYwZDk0
NmNmYTJlMWU5NGY5ZTljNjA2YzQ0MTE2MWIxLi44MmIyMzhhMDk4NGFiOGE4MGI2NTZkMDczZGYw
ZjhkYjMwZjViYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29sb3JQaWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bG9yUGlja2VyTWFjLm1tCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJDb2xvclBpY2tlck1h
Yzo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgaWYg
KCFtX2NsaWVudCB8fCAhbV9jb2xvclBpY2tlclVJKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgW21fY29sb3JQaWNrZXJVSSBzZXRDb2xvcjpuc0NvbG9yKGNvbG9yKS5nZXQoKV07CisgICAg
W21fY29sb3JQaWNrZXJVSSBzZXRDb2xvcjpjb2NvYUNvbG9yKGNvbG9yKS5nZXQoKV07CiB9CiAK
IHZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYkNvbG9yUGlja2VyTWFjOjpz
aG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIGlmICghbV9j
bGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX2NvbG9yUGlja2VyVUkgc2V0QW5kU2hv
d1BpY2tlcjp0aGlzIHdpdGhDb2xvcjpuc0NvbG9yKGNvbG9yKS5nZXQoKSBzdWdnZXN0aW9uczpX
VEZNb3ZlKG1fc3VnZ2VzdGlvbnMpXTsKKyAgICBbbV9jb2xvclBpY2tlclVJIHNldEFuZFNob3dQ
aWNrZXI6dGhpcyB3aXRoQ29sb3I6Y29jb2FDb2xvcihjb2xvcikuZ2V0KCkgc3VnZ2VzdGlvbnM6
V1RGTW92ZShtX3N1Z2dlc3Rpb25zKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAt
MjM3LDcgKzIzNyw3IEBAIC0gKHZvaWQpc2V0QW5kU2hvd1BpY2tlcjooV2ViS2l0OjpXZWJDb2xv
clBpY2tlck1hYyopcGlja2VyIHdpdGhDb2xvcjooTlNDb2xvciAqCiAgICAgaWYgKHN1Z2dlc3Rp
b25zLnNpemUoKSkgewogICAgICAgICBzdWdnZXN0ZWRDb2xvcnMgPSBhZG9wdE5TKFtbTlNDb2xv
ckxpc3QgYWxsb2NdIGluaXRdKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6
Om1pbihzdWdnZXN0aW9ucy5zaXplKCksIG1heENvbG9yU3VnZ2VzdGlvbnMpOyBpKyspCi0gICAg
ICAgICAgICBbc3VnZ2VzdGVkQ29sb3JzIGluc2VydENvbG9yOm5zQ29sb3Ioc3VnZ2VzdGlvbnMu
YXQoaSkpLmdldCgpIGtleTpAKGkpLnN0cmluZ1ZhbHVlIGF0SW5kZXg6aV07CisgICAgICAgICAg
ICBbc3VnZ2VzdGVkQ29sb3JzIGluc2VydENvbG9yOmNvY29hQ29sb3Ioc3VnZ2VzdGlvbnMuYXQo
aSkpLmdldCgpIGtleTpAKGkpLnN0cmluZ1ZhbHVlIGF0SW5kZXg6aV07CiAgICAgfQogCiAgICAg
W19wb3BvdmVyV2VsbCBzZXRTdWdnZXN0ZWRDb2xvcnM6c3VnZ2VzdGVkQ29sb3JzLmdldCgpXTsK
QEAgLTI4Nyw3ICsyODcsNyBAQCAtICh2b2lkKWRpZENob29zZUNvbG9yOihpZClzZW5kZXIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9waWNrZXItPmRpZENob29zZUNvbG9yKFdlYkNv
cmU6OmNvbG9yRnJvbU5TQ29sb3IoW19wb3BvdmVyV2VsbCBjb2xvcl0pKTsKKyAgICBfcGlja2Vy
LT5kaWRDaG9vc2VDb2xvcihXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKFtfcG9wb3Zlcldl
bGwgY29sb3JdKSk7CiB9CiAKIC0gKHZvaWQpc2V0Q29sb3I6KE5TQ29sb3IgKiljb2xvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQppbmRleCA3ZTlkZWQ4ZTkzOGE0MmE5MTQ1MGI4
YWZiZWI2NmZmMWQzYzZhNWZkLi45NzQ0NjU3NTc1ZmVjZTQxMDc4ODg2ZmRjMWM0M2QzNmQ4NDUy
MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAtNzYsNyArNzYsNyBA
QCBSZWY8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlv
bkVsZW1lbnQoKQogICAgIGF1dG8mIHN0eWxlZEVsZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVt
ZW50PihlbGVtZW50LmdldCgpKTsKIAogICAgIC8vIEZJWE1FOiBNYXRjaCBmb250IHdlaWdodCBh
bmQgc3R5bGUgYXMgd2VsbD8KLSAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlDb2xvciwgc2VyaWFsaXphdGlvbkZvckhUTUwoY29sb3JGcm9tTlNDb2xv
cihjaG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xvcikpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgc2VyaWFsaXphdGlvbkZvckhUTUwo
Y29sb3JGcm9tQ29jb2FDb2xvcihjaG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xvcikpKTsKICAgICBz
dHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5
LCBjaG9pY2VBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CiAKICAgICBOU0FycmF5ICpjaG9p
Y2VzID0gY2hvaWNlQW5ub3RhdGlvbi5jaG9pY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9u
Lm1tCmluZGV4IDc0OTVlMDQzNmM0MDc0M2Y0Y2VkZmJlNmViYzY2MDQ4ZjY5ODU3NTEuLmQ3NDVm
MDIwOTQ4NGY0ZWMyYjc0YTU1Mzc0ZDFiY2U5MWNhNjc4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFu
bm90YXRpb24ubW0KQEAgLTk1LDcgKzk1LDcgQEAgUmVmPEVsZW1lbnQ+IFBERlBsdWdpblRleHRB
bm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAgICAgICAgIHJldHVybiBlbGVt
ZW50OwogCiAgICAgLy8gRklYTUU6IE1hdGNoIGZvbnQgd2VpZ2h0IGFuZCBzdHlsZSBhcyB3ZWxs
PwotICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNv
bG9yLCBzZXJpYWxpemF0aW9uRm9ySFRNTChjb2xvckZyb21OU0NvbG9yKHRleHRBbm5vdGF0aW9u
LmZvbnRDb2xvcikpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlDb2xvciwgc2VyaWFsaXphdGlvbkZvckhUTUwoY29sb3JGcm9tQ29jb2FDb2xv
cih0ZXh0QW5ub3RhdGlvbi5mb250Q29sb3IpKSk7CiAgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRpb24uZm9u
dC5mYW1pbHlOYW1lKTsKICAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlUZXh0QWxpZ24sIGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50
KHRleHRBbm5vdGF0aW9uLmFsaWdubWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDA2MGY4ZTBkNmU2N2NiODRm
OWMzYjI4ZjBiMjM1ZTY2NjA0MDczNGEuLjFlMjNhZmZlZGVjYWZkYmNkYTMxMDM4YzkxYmY4MDhk
YWE4ODNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBib29sIFdlYlBhZ2U6OnNob3Vs
ZEF2b2lkQ29tcHV0aW5nUG9zdExheW91dERhdGFGb3JFZGl0b3JTdGF0ZSgpIGNvbnN0CiAKIHZv
aWQgV2ViUGFnZTo6c2V0QWNjZW50Q29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiB7Ci0gICAg
W05TQXBwIF9zZXRBY2NlbnRDb2xvcjpjb2xvci5pc1ZhbGlkKCkgPyBXZWJDb3JlOjpuc0NvbG9y
KGNvbG9yKS5nZXQoKSA6IG5pbF07CisgICAgW05TQXBwIF9zZXRBY2NlbnRDb2xvcjpjb2NvYUNv
bG9yT3JOaWwoY29sb3IpLmdldCgpXTsKIH0KIAogI2VuZGlmIC8vIEhBVkUoQVBQX0FDQ0VOVF9D
T0xPUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29s
b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3IubW0KaW5kZXgg
NjVkZTQ2MThhOWFmMDk0OWY3OWU0MjZhMDNjYWE5ZjU4ZGUyMWEwNy4uZmQyM2NiOThiN2IzOTRl
ZmJhNzQ0YjU4MjMyYjU4NjY0MmNmMjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01SR0JDb2xvci5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiRE9NSW50ZXJuYWwu
aCIKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EZXByZWNh
dGVkQ1NTT01SR0JDb2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgpAQCAt
ODUsNyArODYsNyBAQCAtIChET01DU1NQcmltaXRpdmVWYWx1ZSAqKWFscGhhCiAtIChOU0NvbG9y
ICopY29sb3IKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6Om5zQ29sb3IoSU1QTC0+Y29sb3IoKSkuYXV0b3JlbGVhc2UoKTsK
KyAgICByZXR1cm4gY29jb2FDb2xvcihJTVBMLT5jb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQog
I2Vsc2UKIC0gKENHQ29sb3JSZWYpY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDc4MzI1NjE5YzFhYzc3NDRl
ODhmZDQ5MjUzNmM5NTdhMDQyNDRmN2UuLjI0NmRmNDVhMGJiM2JjYWU3NDRlZmQwNDA0YzE4YTU3
ZmRiZTRiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtODUsNyArODUsNyBAQCAtICh2b2lkKV93ZWJfZHJhd0F0
UG9pbnQ6KE5TUG9pbnQpcG9pbnQgZm9udDooTlNGb250ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29s
b3IgKgogICAgICAgICBpZiAoIWZsaXBwZWQpCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNU
TShjZ0NvbnRleHQsIDEsIC0xKTsKIAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKGNvbG9yRnJvbU5TQ29sb3IodGV4dENvbG9yKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IoY29sb3JGcm9tQ29jb2FDb2xvcih0ZXh0Q29sb3IpKTsKICAgICAgICAg
d2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9p
bnQueCwgZmxpcHBlZCA/IHBvaW50LnkgOiAtcG9pbnQueSkpOwogCiAgICAgICAgIGlmICghZmxp
cHBlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IDViYmM2ZjZkNzlhZGZmZWY4MjljOWNhN2E5ZGNmMjllMGFhNzNjYWMuLmY5MDc3MTEzYjdmMWFi
ZmMyMzJiMzYxMDY2NjQxMTBkZjNiZDNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNDQwLDcgKzQ0MCw3IEBAIC0gKHZvaWQpX3VwZGF0ZUJh
Y2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW4KICAgICAgICAgICAgIHZpZXctPnNldFRy
YW5zcGFyZW50KCFkcmF3c0JhY2tncm91bmQpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAg
ICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcihbYmFj
a2dyb3VuZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3Bh
Y2VdKTsKKyAgICAgICAgICAgIGF1dG8gY29sb3IgPSBXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNv
bG9yKFtiYWNrZ3JvdW5kQ29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdC
Q29sb3JTcGFjZV0pOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAjZWxzZQogICAgICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoV2ViQ29yZTo6cm91
bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShiYWNrZ3JvdW5kQ29sb3IpKTsKQEAgLTEwMTQsNyArMTAx
NCw3IEBAIC0gKENHQ29sb3JSZWYpX2JvZHlCYWNrZ3JvdW5kQ29sb3IKICAgICBpZiAoIWNvbG9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICByZXR1cm4gbnNDb2xvcihjb2xvcikuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
Y29jb2FDb2xvcihjb2xvcikuYXV0b3JlbGVhc2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIGNhY2hl
ZENHQ29sb3IoY29sb3IpLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDRiMDc4NTQ5ZGM0MjAyZmJi
NmMyNzJlZjIwNWFiMzk0ZTM5NDcxNjMuLmMxNzY1Y2ZiNGU2NjVjOGVhNzg3NWM3YWNkNDVlNDll
MWE1MzE4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtNjQ5MSw3ICs2NDkxLDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGlu
ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3MKICAg
ICAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gV2ViQ29yZTo6Q29sb3I6OmJsYWNrOwog
ICAgICAgICAgICAgYXV0byBjb21wb3NpdGlvblVuZGVybGluZUNvbG9yID0gV2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmVDb2xvcjo6VGV4dENvbG9yOwogICAgICAgICAgICAgaWYgKE5TQ29s
b3IgKmNvbG9yQXR0ciA9IFthdHRycyBvYmplY3RGb3JLZXk6TlNVbmRlcmxpbmVDb2xvckF0dHJp
YnV0ZU5hbWVdKSB7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpjb2xvckZyb21O
U0NvbG9yKGNvbG9yQXR0cik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpjb2xv
ckZyb21Db2NvYUNvbG9yKGNvbG9yQXR0cik7CiAgICAgICAgICAgICAgICAgY29tcG9zaXRpb25V
bmRlcmxpbmVDb2xvciA9IFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3I6OkdpdmVu
Q29sb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lKHJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJhbmdlKSwg
Y29tcG9zaXRpb25VbmRlcmxpbmVDb2xvciwgY29sb3IsIFtzdHlsZSBpbnRWYWx1ZV0gPiAxKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggM2IxMGRm
YWZmYzk3YjRiODBlM2UwMzIxMzM0MTIyYWM2MzQ3ZGRmZi4uOTZhYjQ0YjMwMmY2MzQ5YTJlMzAx
ZmQyMDRhNzExMTI3ZmVkZmM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtODgyLDcgKzg4Miw3IEBAIC0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEg
Kilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JEYXRhOihjCiAg
ICAgfQogCiAgICAgaWYgKGluZGljYXRvckRhdGEub3B0aW9ucy5jb250YWlucyhXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yT3B0aW9uOjpDb21wdXRlRXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKSkKLSAg
ICAgICAgX2VzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IFtQQUw6OmFsbG9jVUlDb2xvckluc3Rh
bmNlKCkgaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yRGF0YS5lc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXTsKKyAgICAgICAgX2VzdGltYXRlZEJhY2tncm91bmRD
b2xvciA9IGNvY29hQ29sb3IoaW5kaWNhdG9yRGF0YS5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3Ip
LmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTI0Niw3ICsxMjQ2LDcgQEAg
LSAodm9pZClzZXRUZXh0Q29sb3I6KE5TQ29sb3IgKiljb2xvcgogLSAodm9pZClfd2ViQ2hhbmdl
Q29sb3I6KGlkKXNlbmRlcgogewogICAgIF90ZXh0Q29sb3IgPSBzZWxmLmNvbG9yUGlja2VySXRl
bS5jb2xvcjsKLSAgICBbX3dlYlZpZXcgX2V4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZTpAIkZvcmVD
b2xvciIgdmFsdWU6IFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9y
RnJvbU5TQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpXTsKKyAgICBbX3dlYlZpZXcgX2V4ZWN1dGVD
b3JlQ29tbWFuZEJ5TmFtZTpAIkZvcmVDb2xvciIgdmFsdWU6V2ViQ29yZTo6c2VyaWFsaXphdGlv
bkZvckhUTUwoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcihfdGV4dENvbG9yLmdldCgpKSld
OwogfQogCiAtIChOU1ZpZXdDb250cm9sbGVyICopdGV4dExpc3RWaWV3Q29udHJvbGxlcgpAQCAt
OTUxMCw3ICs5NTEwLDcgQEAgLSAodm9pZCl1cGRhdGVUZXh0VG91Y2hCYXIKIAogICAgICAgICAg
ICAgICAgIENvbG9yIHRleHRDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvcik7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRDb2xvci5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIHNldFRleHRDb2xvcjpuc0NvbG9yKHRleHRDb2xvcikuZ2V0KCldOworICAgICAgICAgICAg
ICAgICAgICBbX3ByaXZhdGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0Q29s
b3I6Y29jb2FDb2xvcih0ZXh0Q29sb3IpLmdldCgpXTsKIAogICAgICAgICAgICAgICAgIFtfcHJp
dmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldEN1cnJlbnRUZXh0QWxpZ25tZW50
Om5zVGV4dEFsaWdubWVudEZyb21SZW5kZXJTdHlsZShzdHlsZSldOwogCg==
</data>
<flag name="review"
          id="466298"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>