<?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>237242</bug_id>
          
          <creation_ts>2022-02-26 16:54:42 -0800</creation_ts>
          <short_desc>Invoking &quot;Markup Image&quot; should preserve the existing selection range</short_desc>
          <delta_ts>2022-02-27 19:26:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846361</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-26 16:54:42 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846460</commentid>
    <comment_count>1</comment_count>
      <attachid>453349</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-27 10:30:39 -0800</bug_when>
    <thetext>Created attachment 453349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846462</commentid>
    <comment_count>2</comment_count>
      <attachid>453350</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-27 10:35:12 -0800</bug_when>
    <thetext>Created attachment 453350
Fix watchOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846464</commentid>
    <comment_count>3</comment_count>
      <attachid>453350</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-27 11:07:01 -0800</bug_when>
    <thetext>Comment on attachment 453350
Fix watchOS build

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

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:494
&gt; +    RefPtr&lt;Element&gt; selectionHost = originalSelection.rootEditableElement() ?: document-&gt;body();

Should be able to just write RefPtr here, not RefPtr&lt;Element&gt;.

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:518
&gt; +        auto newSelectionRange = resolveCharacterRange(makeRangeSelectingNodeContents(*selectionHost), *rangeToRestore, iteratorOptions);

Seems like this will do the wrong thing if the replacement doesn’t have the same number of characters as the selection beforehand. We may need some other form of selection preservation to handle interesting cases well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846473</commentid>
    <comment_count>4</comment_count>
      <attachid>453350</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-27 12:20:07 -0800</bug_when>
    <thetext>Comment on attachment 453350
Fix watchOS build

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

Thanks for the review!

&gt;&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:494
&gt;&gt; +    RefPtr&lt;Element&gt; selectionHost = originalSelection.rootEditableElement() ?: document-&gt;body();
&gt; 
&gt; Should be able to just write RefPtr here, not RefPtr&lt;Element&gt;.

Fixed!

&gt;&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:518
&gt;&gt; +        auto newSelectionRange = resolveCharacterRange(makeRangeSelectingNodeContents(*selectionHost), *rangeToRestore, iteratorOptions);
&gt; 
&gt; Seems like this will do the wrong thing if the replacement doesn’t have the same number of characters as the selection beforehand. We may need some other form of selection preservation to handle interesting cases well.

Ah, that&apos;s a good point!

For the time being, this should only ever be invoked in circumstances where we&apos;re swapping one image element with another (which should preserve the character count), but if this codepath is ever used to replace a node with text, this restoration logic won&apos;t work at all.

I&apos;ll add an early return for now to avoid trying to restore the selection if the number of visible characters underneath the editable root has changed, with a FIXME for smarter handling around this in the future, should we need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846496</commentid>
    <comment_count>5</comment_count>
      <attachid>453356</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-27 15:25:14 -0800</bug_when>
    <thetext>Created attachment 453356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846528</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-27 19:25:33 -0800</bug_when>
    <thetext>Committed r290578 (247856@main): &lt;https://commits.webkit.org/247856@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453356.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846532</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-27 19:26:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/89537723&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453349</attachid>
            <date>2022-02-27 10:30:39 -0800</date>
            <delta_ts>2022-02-27 10:49:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237242-20220227103038.patch</filename>
            <type>text/plain</type>
            <size>17978</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM4OWU0MWY5NWI4ZDY1
NDBhNWFmM2Y2NDU2NTQyM2I3OTFkZWY4YS4uODM1NTFjYmI2MzRhYmFmMTIyNWM0MDllNmUyYjZk
MTM4MGJkNjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludm9raW5nICJN
YXJrdXAgSW1hZ2UiIHNob3VsZCBwcmVzZXJ2ZSB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIHJhbmdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyNDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZGAgb3V0IG9mIHRo
ZSBtYWNPUy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmaWxlIGFuZCBpbnRvCisgICAgICAgIEVk
aXRvckNvY29hIGluc3RlYWQsIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBvbiBib3RoIGlPUyBhbmQg
bWFjT1MgdG8gaGFuZGxlIHRoZSAiTWFya3VwIEltYWdlIiBhY3Rpb24uIFNlZSBXZWJLaXQKKyAg
ICAgICAgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjptYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKworICAgICAgICBB
bHNvIG1ha2UgYSBmZXcgbWlub3IgYWRqdXN0bWVudHMgd2hpbGUgd2UncmUgbW92aW5nIHRoaXMg
Y29kZToKKyAgICAgICAgLSAgIE1ha2UgdGhpcyB0YWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2Yg
YSBwb2ludGVyICh0aGUgbWV0aG9kIGFsd2F5cyBleHBlY3RzIGEgbm9uLW51bGwgTm9kZSBwb2lu
dGVyIGFueXdheXMpLgorICAgICAgICAtICAgQWRkIGEgRklYTUUgbWVudGlvbmluZyB0aGF0IHdl
IGNhbiBqdXN0IGRlbGV0ZSBgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZGAgYWx0b2dldGhlciBvbmNl
IE1haWwgY29tcG9zZSBvbgorICAgICAgICAgICAgbWFjT1MgdXNlcyBXZWJLaXQyLgorICAgICAg
ICAtICAgVW5jb25kaXRpb25hbGx5IHBhc3MgYGZhbHNlYCBmb3Igd2hldGhlciBvciBub3Qgd2Ug
c2hvdWxkIGVuYWJsZSBzbWFydCBwYXN0ZSB3aGVuIHJlcGxhY2luZyB0aGUgbm9kZS4gVGhpcwor
ICAgICAgICAgICAgcHJldmVudHMgdXMgZnJvbSBpbnNlcnRpbmcgc3BhY2VzIGFyb3VuZCB0aGUg
cmVwbGFjZW1lbnQgaW1hZ2UgZWxlbWVudCB3aGVuIHRyaWdnZXJpbmcgdGhlICJNYXJrdXAgSW1h
Z2UiCisgICAgICAgICAgICBpdGVtLgorICAgICAgICAtICAgVXNlIGBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlYCBpbnN0ZWFkIG9mIGBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHNgIHdoZW4g
c2VsZWN0aW5nIHRoZSBub2RlIHRvIHJlcGxhY2UuCisgICAgICAgICAgICBUaGlzIGFsbG93cyB1
cyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIG5vZGUgdG8gcmVwbGFjZSBjYW5ub3QgY29u
dGFpbiBjaGlsZHJlbiBmb3IgZWRpdGluZyAoaW4KKyAgICAgICAgICAgIHBhcnRpY3VsYXIsIGlt
YWdlIGVsZW1lbnRzKS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBjb2RlcGF0aCAoYHJlcGxh
Y2VOb2RlRnJvbVBhc3RlYm9hcmRgKSBpcyBjdXJyZW50bHkgb25seSBleGVyY2lzZWQgYnkgV2Vi
S2l0TGVnYWN5IHNlcnZpY2UKKyAgICAgICAgY29udHJvbHMgY29kZSB0aGF0IHdhcyBvcmlnaW5h
bGx5IGludGVuZGVkIGZvciB1c2UgYnkgTWFpbCBjb21wb3NlLCBidXQgbmV2ZXIgZW5kZWQgdXAg
YmVpbmcgdXNlZC4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjptYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKTogRGVsZXRlZC4K
KwogMjAyMi0wMi0yNiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W1JlbmRlclRyZWVCdWlsZGVyXSBDbGVhbiB1cCBkZXNjZW5kYW50IGZsb2F0cyB3aGVuIGEgYmxv
Y2sgY29udGFpbmVyIGJlY29tZXMgZmxvYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjY2NzJiZDI3NmM2OTM1ZThk
YTdjYjY5NzcxZmFiYTI3MTEzZmQ0OC4uNzQ3ZTk4NjM0ZWI2YTc4NmMwMzY2NTg2NGFmZTY2ZmQy
NDQ1OGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMi0wMi0yNiAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnZva2luZyAiTWFya3Vw
IEltYWdlIiBzaG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhIGZldyBh
ZGp1c3RtZW50cyB0byBgcmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YWAsIHN1Y2ggdGhhdCBpdCBh
dHRlbXB0cyB0byByZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24KKyAgICAgICAgcmFuZ2Ug
YWZ0ZXIgcmVwbGFjaW5nIHRoZSB0YXJnZXQgZWxlbWVudC4gSWYgdGhlIHByZXZpb3VzIHNlbGVj
dGlvbiBpcyBubyBsb25nZXIgdmFsaWQgKGkuZS4sIGl0IHdhcyBvcnBoYW5lZCBhcworICAgICAg
ICBhIHJlc3VsdCBvZiB0aGUgZWRpdGluZyBjb21tYW5kIHVzZWQgdG8gcmVwbGFjZSB0aGUgZWxl
bWVudCksIHRoZW4gd2UgZmFsbCBiYWNrIHRvIHJlc3RvcmluZyB0aGUgdmlzaWJsZQorICAgICAg
ICBjaGFyYWN0ZXIgcmFuZ2Ugb2YgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiwgcmVsYXRpdmUgdG8g
dGhlIGVkaXRhYmxlIHJvb3QgKG9yIHRoZSBib2R5IGlmIHRoZXJlIGlzIG5vbmUpLgorCisgICAg
ICAgIEFQSSB0ZXN0cyB3aWxsIGJlIGFkZGVkIGluIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzNjUx
OSwgb25jZSB3ZSdyZSBhYmxlIHRvIHN3aXp6bGUgb3V0IHRoZSB1bmRlcmx5aW5nIFZpc2lvbktp
dAorICAgICAgICBtZXRob2RzIGluIG9yZGVyIHRvIG1ha2UgdGhlc2UgdGVzdHMgcnVuIHJlbGlh
Ymx5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFj
ZW1lbnQ6Ok92ZXJyaWRlUGFzdGVib2FyZEZvclNlbGVjdGlvblJlcGxhY2VtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQ6On5P
dmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCk6CisKKyAgICAgICAgQWRk
IGEgaGVscGVyIFJBSUkgb2JqZWN0IHRoYXQgZW5jYXBzdWxhdGVzIGxvZ2ljIGZvciBzZXR0aW5n
IGFuZCB1bnNldHRpbmcgZGF0YSBvbiB0aGUgb3ZlcnJpZGUgcGFzdGVib2FyZC4gVXNlCisgICAg
ICAgIHRoaXMgaW4gdGhlIHR3byBtZXRob2RzIGJlbG93LgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisgICAgICAgIFN3aXRjaCB0byB1
c2luZyB0aGUgcmVmYWN0b3JlZCBgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkYCBt
ZXRob2QgaW5zdGVhZCBvZiBjYWxsaW5nIHRvIHRoZSBhZGphY2VudAorICAgICAgICBgcmVwbGFj
ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YWAgbWV0aG9kIGJlbG93LiBVc2luZyB0aGlzIG1l
dGhvZCBhbGxvd3MgdXMgdG8gYXZvaWQgbWFudWFsbHkgc2VsZWN0aW5nIHRoZQorICAgICAgICB0
YXJnZXQgZWxlbWVudCBoZXJlLCBhbmQgYWxzbyBhdm9pZHMgc21hcnQgcGFzdGVib2FyZCByZXBs
YWNlbWVudCAod2hpY2ggbWF5IGluc2VydCBzcGFjZXMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAg
ICAgICBpbWFnZSk7IHRoZSBsYXR0ZXIgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGNvcnJlY3Rs
eSByZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24ncyBjaGFyYWN0ZXIgcmFuZ2UgaW4gdGhl
CisgICAgICAgIGNhc2Ugd2hlcmUgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiByYW5nZSB3YXMgb3Jw
aGFuZWQgYnkgdGhlIHJlcGxhY2VtZW50LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEpOgorCiAyMDIyLTAyLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgTXVsdGlwbGUgY29uY3Vy
cmVuY3kgdmlvbGF0aW9ucyBpbiBMaWJXZWJSVENDb2RlY3NQcm94eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGQ4YzNiYmU0Y2RjYmUwMjE5NDEzODIwZmQzNWZjMGQ4ZDYwYTQxZDcu
LmY0YmNkMDlkZDc2NGE5YzExZjY1Mjc0YTU4OTdhZWYyY2ZlOTA0NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnZva2luZyAiTWFya3VwIElt
YWdlIiBzaG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYktpdCBhbmQg
V2ViQ29yZSBDaGFuZ2VMb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIE1pc2MvV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgZGlkU2hhcmVJbWFnZURhdGE6Y29uZmlybURhdGFJc1Zh
bGlkVElGRkRhdGE6XSk6CisKKyAgICAgICAgQWRqdXN0IHRoaXMgY2FsbCBzaXRlIHRvIHBhc3Mg
aW4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28gZGVwbG95IFJlZlB0ciBp
biBzb21lIGFkamFjZW50IGNvZGUuCisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFu
ZCB1c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggYzRiNDY2OWRjZWY5MDcyZDRlZTliZmIwMmU0NjFhNTE5MDc4ZmYxYS4uNzIwOWNlMmFiY2U3
NTI3NDBiNzZlYTJkNGZlY2QyNTllNTQyZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC01MzUsMTAgKzUzNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlRmluZFN0cmluZ0Zyb21T
ZWxlY3Rpb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRo
QXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNl
Tm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA1ODU0MGZhNzI2
ZTU2OTViN2I1MmMyOTY5YTM4MTdmZjgyNzAyMDY5Li5iZTk4N2FlMzI3NWFkZWIwMzE2MzJhYTU0
YWQ5ZGJkMGY3NjY0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KQEAgLTMyMSw0ICszMjEsNjcgQEAgdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rpb25G
cm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgICAgICBwYXN0
ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7CiB9CiAKK3N0YXRpYyB2b2lk
IG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudChjb25zdCBOb2RlJiBub2RlLCBEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCkKK3sKKyAgICAvLyBUaGlzIGlzIG9ubHkgc3VwcG9ydGVk
IGZvciBzaW5nbGUtTm9kZSBmcmFnbWVudHMuCisgICAgUmVmUHRyIGZpcnN0Q2hpbGQgPSBmcmFn
bWVudC5maXJzdENoaWxkKCk7CisgICAgaWYgKCFmaXJzdENoaWxkIHx8IGZpcnN0Q2hpbGQgIT0g
ZnJhZ21lbnQubGFzdENoaWxkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFuZCBvbmx5
IHN1cHBvcnRlZCBmb3IgSFRNTCBlbGVtZW50cy4KKyAgICBpZiAoIW5vZGUuaXNIVE1MRWxlbWVu
dCgpIHx8ICFmaXJzdENoaWxkLT5pc0hUTUxFbGVtZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIEFuZCBvbmx5IGlmIHRoZSBzb3VyY2UgRWxlbWVudCBhbmQgZGVzdGluYXRpb24gRWxl
bWVudCBoYXZlIHRoZSBzYW1lIEhUTUwgdGFnIG5hbWUuCisgICAgUmVmIG9sZEVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7CisgICAgUmVmIG5ld0VsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MRWxlbWVudD4oKmZpcnN0Q2hpbGQpOworICAgIGlmIChvbGRFbGVtZW50LT5sb2NhbE5h
bWUoKSAhPSBuZXdFbGVtZW50LT5sb2NhbE5hbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChhdXRvJiBhdHRyaWJ1dGUgOiBvbGRFbGVtZW50LT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkg
eworICAgICAgICBpZiAobmV3RWxlbWVudC0+aGFzQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG5ld0VsZW1lbnQtPnNldEF0dHJpYnV0
ZShhdHRyaWJ1dGUubmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgfQorfQorCit2b2lk
IEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlJiBub2RlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIGlmIChub2RlLmRvY3VtZW50KCkgIT0gbV9kb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGUobm9kZSk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmIHByb3RlY3RlZERvY3VtZW50ID0gbV9kb2N1bWVudDsKKyAgICBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbih7ICpyYW5nZSB9LCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRG
b2N1cyk7CisKKyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoUGFnZVBhc3RlYm9hcmRDb250ZXh0
OjpjcmVhdGUobV9kb2N1bWVudC5wYWdlSUQoKSksIHBhc3RlYm9hcmROYW1lKTsKKyAgICBpZiAo
IW1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFi
bGUoKSkgeworICAgICAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2Fy
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAvLyBGSVhNRTogSG93IGNhbiB0
aGlzIGhhcmQtY29kZWQgcGFzdGVib2FyZCBuYW1lIGJlIHJpZ2h0LCBnaXZlbiB0aGF0IHRoZSBw
YXNzZWQtaW4gcGFzdGVib2FyZCBoYXMgYSBuYW1lPworICAgIC8vIEZJWE1FOiBXZSBjYW4gYWxz
byByZW1vdmUgYHNldEluc2VydGlvblBhc3RlYm9hcmRgIGFsdG9nZXRoZXIgb25jZSBNYWlsIGNv
bXBvc2Ugb24gbWFjT1Mgbm8gbG9uZ2VyIHVzZXMgV2ViS2l0TGVnYWN5LAorICAgIC8vIHNpbmNl
IGl0J3Mgb25seSBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0TGVnYWN5IG9uIG1hY09TLCBhbmQgdGhl
IG9ubHkga25vd24gY2xpZW50IGlzIE1haWwgY29tcG9zZS4KKyAgICBjbGllbnQoKS0+c2V0SW5z
ZXJ0aW9uUGFzdGVib2FyZChOU0dlbmVyYWxQYm9hcmQpOworICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAorI2VuZGlmCisKKyAgICBib29sIGNob3NlUGxhaW5UZXh0OworICAg
IGlmIChhdXRvIGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQs
ICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgICAgIG1heWJlQ29weU5vZGVB
dHRyaWJ1dGVzVG9GcmFnbWVudChub2RlLCAqZnJhZ21lbnQpOworICAgICAgICBpZiAoc2hvdWxk
SW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCAqcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbjo6UGFz
dGVkKSkKKyAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVs
bCgpLCBmYWxzZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVv
dGUpOworICAgIH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjbGllbnQoKS0+c2V0SW5zZXJ0
aW9uUGFzdGVib2FyZCh7IH0pOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQppbmRleCBhOTUwODE2ZWVkMTA1YjhlMmRiOTJjMDNlZjliOGZkODA1
OGQ2Zjk5Li4xYTJjZDAzZjAwY2VlMDI2OTI2YmMzYTI0ZmZhOWJiYzVlMDg5NjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xODQsNjQgKzE4NCw2IEBAIHZv
aWQgRWRpdG9yOjpwbGF0Zm9ybVBhc3RlRm9udCgpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlv
blBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1zdGF0aWMgdm9pZCBtYXliZUNvcHlOb2RlQXR0
cmlidXRlc1RvRnJhZ21lbnQoY29uc3QgTm9kZSYgbm9kZSwgRG9jdW1lbnRGcmFnbWVudCYgZnJh
Z21lbnQpCi17Ci0gICAgLy8gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlLU5vZGUg
ZnJhZ21lbnRzLgotICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7
Ci0gICAgaWYgKCFmaXJzdENoaWxkIHx8IGZpcnN0Q2hpbGQgIT0gZnJhZ21lbnQubGFzdENoaWxk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFuZCBvbmx5IHN1cHBvcnRlZCBmb3IgSFRN
TCBlbGVtZW50cy4KLSAgICBpZiAoIW5vZGUuaXNIVE1MRWxlbWVudCgpIHx8ICFmaXJzdENoaWxk
LT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFuZCBvbmx5IGlm
IHRoZSBzb3VyY2UgRWxlbWVudCBhbmQgZGVzdGluYXRpb24gRWxlbWVudCBoYXZlIHRoZSBzYW1l
IEhUTUwgdGFnIG5hbWUuCi0gICAgY29uc3QgSFRNTEVsZW1lbnQmIG9sZEVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0gICAgSFRNTEVsZW1lbnQmIG5ld0VsZW1lbnQgPSBk
b3duY2FzdDxIVE1MRWxlbWVudD4oKmZpcnN0Q2hpbGQpOwotICAgIGlmIChvbGRFbGVtZW50Lmxv
Y2FsTmFtZSgpICE9IG5ld0VsZW1lbnQubG9jYWxOYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBvbGRFbGVtZW50LmF0dHJpYnV0
ZXNJdGVyYXRvcigpKSB7Ci0gICAgICAgIGlmIChuZXdFbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRy
aWJ1dGUubmFtZSgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBuZXdFbGVtZW50
LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAg
fQotfQotCi12b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIEFTU0VSVChub2RlKTsKLQot
ICAgIGlmIChub2RlLT5kb2N1bWVudCgpICE9IG1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdG9yKG1fZG9jdW1lbnQpOwotCi0gICAgYXV0byBy
YW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqbm9kZSk7Ci0gICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZSksIEZy
YW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKLQotICAgIFBhc3RlYm9hcmQgcGFzdGVib2Fy
ZChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFz
dGVib2FyZE5hbWUpOwotCi0gICAgaWYgKCFtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKLSAgICAgICAgcGFzdGVBc1BsYWluVGV4
dFdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAvLyBGSVhNRTogSG93
IGNhbiB0aGlzIGhhcmQtY29kZWQgcGFzdGVib2FyZCBuYW1lIGJlIHJpZ2h0LCBnaXZlbiB0aGF0
IHRoZSBwYXNzZWQtaW4gcGFzdGVib2FyZCBoYXMgYSBuYW1lPwotICAgIGNsaWVudCgpLT5zZXRJ
bnNlcnRpb25QYXN0ZWJvYXJkKE5TR2VuZXJhbFBib2FyZCk7Ci0gICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECi0KLSAgICBib29sIGNob3NlUGxhaW5UZXh0OwotICAgIGlmIChh
dXRvIGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdl
LCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKLSAgICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0
ZXNUb0ZyYWdtZW50KCpub2RlLCAqZnJhZ21lbnQpOwotICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0
RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQot
ICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7Ci0gICAgfQotCi0gICAgY2xpZW50KCkt
PnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwotfQotCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVu
dCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VF
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCA5ZGFiZGJlYTkwYmE4NDZiMDkxYzIzMDdjZGQxM2Jm
MDY1YjRiYjVkLi5hZTkxNTE3ZWQ5NDUzMzQ4ZTA2Zjc3NWRkOTdlYzg0ZjllMWQ0ZTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEJvZHlFbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE9MaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CkBA
IC00NTcsNiArNDU4LDI3IEBAIHN0YXRpYyBTdHJpbmcmIHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJv
YXJkTmFtZSgpCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAorY2xhc3MgT3ZlcnJpZGVQYXN0ZWJv
YXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE92
ZXJyaWRlUGFzdGVib2FyZEZvclNlbGVjdGlvblJlcGxhY2VtZW50KTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBPdmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rp
b25SZXBsYWNlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSkKKyAgICAgICAgOiBtX3R5cGVzKHR5cGVzKQorICAgIHsKKyAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICBXZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuYWRkT3ZlcnJpZGUocmVwbGFjZVNl
bGVjdGlvblBhc3RlYm9hcmROYW1lKCksIHR5cGUsIHsgZGF0YSB9KTsKKyAgICB9CisKKyAgICB+
T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQoKQorICAgIHsKKyAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogbV90eXBlcykKKyAgICAgICAgICAgIFdlYlBhc3RlYm9hcmRP
dmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5yZW1vdmVPdmVycmlkZShyZXBs
YWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFZlY3RvcjxTdHJpbmc+IG1fdHlwZXM7Cit9OworCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VX
aXRoUGFzdGVib2FyZERhdGEoY29uc3QgRWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSkKIHsKICAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTQ2NCwyNiArNDg2LDQ0IEBAIHZvaWQgV2Vi
UGFnZTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4dCYgZWxl
bWVudENvbnRleHQsIGNvCiAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0NvbnRlbnRF
ZGl0YWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkg
IT0gJmVsZW1lbnQtPmRvY3VtZW50KCkpCisgICAgUmVmIGRvY3VtZW50ID0gZWxlbWVudC0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgIT0gZG9jdW1lbnQucHRyKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gb3JpZ2luYWxTZWxlY3Rpb24gPSBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHNlbGVjdGlvbkhvc3Qg
PSBvcmlnaW5hbFNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCkgPzogZG9jdW1lbnQtPmJv
ZHkoKTsKKyAgICBpZiAoIXNlbGVjdGlvbkhvc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gcmVwbGFjZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoKmVsZW1lbnQpOwot
ICAgIGlmICghcmVwbGFjZW1lbnRSYW5nZSkKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0IGl0ZXJh
dG9yT3B0aW9ucyA9IFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBy
YW5nZVRvUmVzdG9yZTsKKyAgICBpZiAoYXV0byByYW5nZSA9IG9yaWdpbmFsU2VsZWN0aW9uLnJh
bmdlKCkpCisgICAgICAgIHJhbmdlVG9SZXN0b3JlID0gY2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzZWxlY3Rpb25Ib3N0KSwgKnJhbmdlLCBpdGVyYXRvck9w
dGlvbnMpOworCisgICAgeworICAgICAgICBPdmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25S
ZXBsYWNlbWVudCBvdmVycmlkZVBhc3RlYm9hcmQgeyB0eXBlcywgZGF0YSB9OworICAgICAgICBJ
Z25vcmVTZWxlY3Rpb25DaGFuZ2VGb3JTY29wZSBpZ25vcmVTZWxlY3Rpb25DaGFuZ2VzIHsgZnJh
bWUuZ2V0KCkgfTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoKmVsZW1lbnQsIHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICB9
CisKKyAgICBjb25zdGV4cHIgYXV0byByZXN0b3JlU2VsZWN0aW9uT3B0aW9ucyA9IEZyYW1lU2Vs
ZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKTsKKyAgICBp
ZiAoIW9yaWdpbmFsU2VsZWN0aW9uLmlzTm9uZU9yT3JwaGFuZWQoKSkgeworICAgICAgICBmcmFt
ZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9yaWdpbmFsU2VsZWN0aW9uLCByZXN0b3JlU2Vs
ZWN0aW9uT3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24geyAqcmVwbGFjZW1lbnRSYW5n
ZSB9KTsKLSAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRh
KTsKKyAgICBpZiAocmFuZ2VUb1Jlc3RvcmUgJiYgc2VsZWN0aW9uSG9zdC0+aXNDb25uZWN0ZWQo
KSkgeworICAgICAgICAvLyBUaGUgbm9kZSByZXBsYWNlbWVudCBtYXkgaGF2ZSBvcnBoYW5lZCB0
aGUgb3JpZ2luYWwgc2VsZWN0aW9uIHJhbmdlOyBpbiB0aGlzIGNhc2UsIHRyeSB0byByZXN0b3Jl
CisgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBzZWxlY3RlZCBjaGFyYWN0ZXIgcmFuZ2UuCisgICAg
ICAgIGF1dG8gbmV3U2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzZWxlY3Rpb25Ib3N0KSwgKnJhbmdlVG9SZXN0b3Jl
LCBpdGVyYXRvck9wdGlvbnMpOworICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKG5ld1NlbGVjdGlvblJhbmdlLCByZXN0b3JlU2VsZWN0aW9uT3B0aW9ucyk7CisgICAgfQog
fQogCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
CiB7Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIFdlYlBhc3RlYm9hcmRP
dmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5hZGRPdmVycmlkZShyZXBsYWNl
U2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSwgeyBkYXRhIH0pOwotCisgICAgT3ZlcnJp
ZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQgb3ZlcnJpZGVQYXN0ZWJvYXJkIHsg
dHlwZXMsIGRhdGEgfTsKICAgICByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocmVwbGFjZVNl
bGVjdGlvblBhc3RlYm9hcmROYW1lKCksIFtdKGJvb2wpIHsgfSk7Ci0KLSAgICBmb3IgKGF1dG8m
IHR5cGUgOiB0eXBlcykKLSAgICAgICAgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFz
dGVib2FyZE92ZXJyaWRlcygpLnJlbW92ZU92ZXJyaWRlKHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJv
YXJkTmFtZSgpLCB0eXBlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpyZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlci5tbQppbmRleCBhZTQ5Njk3YWRiNDMwM2JiZDI1YTZjMmFhNTVjMzQ2YmI1MDMzZDRh
Li4xYWVmNzc4N2Q5ODE0M2ZlMDFhYWI0NzFhMTRlYzE5YTU2ZWViZmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlci5tbQpAQCAtMTQxLDkgKzE0MSw5IEBAIFJldGFpblB0cjxOU0lt
YWdlPiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmlu
Z1NlcnZpY2VQCiAgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbIE5TUGFzdGVib2FyZFR5
cGVUSUZGIF0gb3duZXI6bmlsXTsKICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmRhdGEgZm9yVHlw
ZTpOU1Bhc3RlYm9hcmRUeXBlVElGRl07CiAKLSAgICBpZiAoYXV0byogbm9kZSA9IHBhZ2UtPmNv
bnRleHRNZW51Q29udHJvbGxlcigpLmNvbnRleHQoKS5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb2Rl
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgp
KQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQo
bm9kZSwgc2VydmljZUNvbnRyb2xzUGFzdGVib2FyZE5hbWUpOworICAgIGlmIChSZWZQdHIgbm9k
ZSA9IHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLmNvbnRleHQoKS5oaXRUZXN0UmVzdWx0
KCkuaW5uZXJOb2RlKCkpIHsKKyAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IG5vZGUtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlTm9kZUZy
b21QYXN0ZWJvYXJkKCpub2RlLCBzZXJ2aWNlQ29udHJvbHNQYXN0ZWJvYXJkTmFtZSk7CiAgICAg
fQogCiAgICAgW3NlbGYgY2xlYXJdOwo=
</data>
<flag name="commit-queue"
          id="480683"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453350</attachid>
            <date>2022-02-27 10:35:12 -0800</date>
            <delta_ts>2022-02-27 12:35:55 -0800</delta_ts>
            <desc>Fix watchOS build</desc>
            <filename>bug-237242-20220227103511.patch</filename>
            <type>text/plain</type>
            <size>18169</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM4OWU0MWY5NWI4ZDY1
NDBhNWFmM2Y2NDU2NTQyM2I3OTFkZWY4YS4uODM1NTFjYmI2MzRhYmFmMTIyNWM0MDllNmUyYjZk
MTM4MGJkNjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludm9raW5nICJN
YXJrdXAgSW1hZ2UiIHNob3VsZCBwcmVzZXJ2ZSB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIHJhbmdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyNDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZGAgb3V0IG9mIHRo
ZSBtYWNPUy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmaWxlIGFuZCBpbnRvCisgICAgICAgIEVk
aXRvckNvY29hIGluc3RlYWQsIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBvbiBib3RoIGlPUyBhbmQg
bWFjT1MgdG8gaGFuZGxlIHRoZSAiTWFya3VwIEltYWdlIiBhY3Rpb24uIFNlZSBXZWJLaXQKKyAg
ICAgICAgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjptYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKworICAgICAgICBB
bHNvIG1ha2UgYSBmZXcgbWlub3IgYWRqdXN0bWVudHMgd2hpbGUgd2UncmUgbW92aW5nIHRoaXMg
Y29kZToKKyAgICAgICAgLSAgIE1ha2UgdGhpcyB0YWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2Yg
YSBwb2ludGVyICh0aGUgbWV0aG9kIGFsd2F5cyBleHBlY3RzIGEgbm9uLW51bGwgTm9kZSBwb2lu
dGVyIGFueXdheXMpLgorICAgICAgICAtICAgQWRkIGEgRklYTUUgbWVudGlvbmluZyB0aGF0IHdl
IGNhbiBqdXN0IGRlbGV0ZSBgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZGAgYWx0b2dldGhlciBvbmNl
IE1haWwgY29tcG9zZSBvbgorICAgICAgICAgICAgbWFjT1MgdXNlcyBXZWJLaXQyLgorICAgICAg
ICAtICAgVW5jb25kaXRpb25hbGx5IHBhc3MgYGZhbHNlYCBmb3Igd2hldGhlciBvciBub3Qgd2Ug
c2hvdWxkIGVuYWJsZSBzbWFydCBwYXN0ZSB3aGVuIHJlcGxhY2luZyB0aGUgbm9kZS4gVGhpcwor
ICAgICAgICAgICAgcHJldmVudHMgdXMgZnJvbSBpbnNlcnRpbmcgc3BhY2VzIGFyb3VuZCB0aGUg
cmVwbGFjZW1lbnQgaW1hZ2UgZWxlbWVudCB3aGVuIHRyaWdnZXJpbmcgdGhlICJNYXJrdXAgSW1h
Z2UiCisgICAgICAgICAgICBpdGVtLgorICAgICAgICAtICAgVXNlIGBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlYCBpbnN0ZWFkIG9mIGBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHNgIHdoZW4g
c2VsZWN0aW5nIHRoZSBub2RlIHRvIHJlcGxhY2UuCisgICAgICAgICAgICBUaGlzIGFsbG93cyB1
cyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIG5vZGUgdG8gcmVwbGFjZSBjYW5ub3QgY29u
dGFpbiBjaGlsZHJlbiBmb3IgZWRpdGluZyAoaW4KKyAgICAgICAgICAgIHBhcnRpY3VsYXIsIGlt
YWdlIGVsZW1lbnRzKS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBjb2RlcGF0aCAoYHJlcGxh
Y2VOb2RlRnJvbVBhc3RlYm9hcmRgKSBpcyBjdXJyZW50bHkgb25seSBleGVyY2lzZWQgYnkgV2Vi
S2l0TGVnYWN5IHNlcnZpY2UKKyAgICAgICAgY29udHJvbHMgY29kZSB0aGF0IHdhcyBvcmlnaW5h
bGx5IGludGVuZGVkIGZvciB1c2UgYnkgTWFpbCBjb21wb3NlLCBidXQgbmV2ZXIgZW5kZWQgdXAg
YmVpbmcgdXNlZC4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjptYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKTogRGVsZXRlZC4K
KwogMjAyMi0wMi0yNiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W1JlbmRlclRyZWVCdWlsZGVyXSBDbGVhbiB1cCBkZXNjZW5kYW50IGZsb2F0cyB3aGVuIGEgYmxv
Y2sgY29udGFpbmVyIGJlY29tZXMgZmxvYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjY2NzJiZDI3NmM2OTM1ZThk
YTdjYjY5NzcxZmFiYTI3MTEzZmQ0OC4uNzQ3ZTk4NjM0ZWI2YTc4NmMwMzY2NTg2NGFmZTY2ZmQy
NDQ1OGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMi0wMi0yNiAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnZva2luZyAiTWFya3Vw
IEltYWdlIiBzaG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhIGZldyBh
ZGp1c3RtZW50cyB0byBgcmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YWAsIHN1Y2ggdGhhdCBpdCBh
dHRlbXB0cyB0byByZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24KKyAgICAgICAgcmFuZ2Ug
YWZ0ZXIgcmVwbGFjaW5nIHRoZSB0YXJnZXQgZWxlbWVudC4gSWYgdGhlIHByZXZpb3VzIHNlbGVj
dGlvbiBpcyBubyBsb25nZXIgdmFsaWQgKGkuZS4sIGl0IHdhcyBvcnBoYW5lZCBhcworICAgICAg
ICBhIHJlc3VsdCBvZiB0aGUgZWRpdGluZyBjb21tYW5kIHVzZWQgdG8gcmVwbGFjZSB0aGUgZWxl
bWVudCksIHRoZW4gd2UgZmFsbCBiYWNrIHRvIHJlc3RvcmluZyB0aGUgdmlzaWJsZQorICAgICAg
ICBjaGFyYWN0ZXIgcmFuZ2Ugb2YgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiwgcmVsYXRpdmUgdG8g
dGhlIGVkaXRhYmxlIHJvb3QgKG9yIHRoZSBib2R5IGlmIHRoZXJlIGlzIG5vbmUpLgorCisgICAg
ICAgIEFQSSB0ZXN0cyB3aWxsIGJlIGFkZGVkIGluIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzNjUx
OSwgb25jZSB3ZSdyZSBhYmxlIHRvIHN3aXp6bGUgb3V0IHRoZSB1bmRlcmx5aW5nIFZpc2lvbktp
dAorICAgICAgICBtZXRob2RzIGluIG9yZGVyIHRvIG1ha2UgdGhlc2UgdGVzdHMgcnVuIHJlbGlh
Ymx5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFj
ZW1lbnQ6Ok92ZXJyaWRlUGFzdGVib2FyZEZvclNlbGVjdGlvblJlcGxhY2VtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQ6On5P
dmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCk6CisKKyAgICAgICAgQWRk
IGEgaGVscGVyIFJBSUkgb2JqZWN0IHRoYXQgZW5jYXBzdWxhdGVzIGxvZ2ljIGZvciBzZXR0aW5n
IGFuZCB1bnNldHRpbmcgZGF0YSBvbiB0aGUgb3ZlcnJpZGUgcGFzdGVib2FyZC4gVXNlCisgICAg
ICAgIHRoaXMgaW4gdGhlIHR3byBtZXRob2RzIGJlbG93LgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisgICAgICAgIFN3aXRjaCB0byB1
c2luZyB0aGUgcmVmYWN0b3JlZCBgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkYCBt
ZXRob2QgaW5zdGVhZCBvZiBjYWxsaW5nIHRvIHRoZSBhZGphY2VudAorICAgICAgICBgcmVwbGFj
ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YWAgbWV0aG9kIGJlbG93LiBVc2luZyB0aGlzIG1l
dGhvZCBhbGxvd3MgdXMgdG8gYXZvaWQgbWFudWFsbHkgc2VsZWN0aW5nIHRoZQorICAgICAgICB0
YXJnZXQgZWxlbWVudCBoZXJlLCBhbmQgYWxzbyBhdm9pZHMgc21hcnQgcGFzdGVib2FyZCByZXBs
YWNlbWVudCAod2hpY2ggbWF5IGluc2VydCBzcGFjZXMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAg
ICAgICBpbWFnZSk7IHRoZSBsYXR0ZXIgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGNvcnJlY3Rs
eSByZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24ncyBjaGFyYWN0ZXIgcmFuZ2UgaW4gdGhl
CisgICAgICAgIGNhc2Ugd2hlcmUgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiByYW5nZSB3YXMgb3Jw
aGFuZWQgYnkgdGhlIHJlcGxhY2VtZW50LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEpOgorCiAyMDIyLTAyLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgTXVsdGlwbGUgY29uY3Vy
cmVuY3kgdmlvbGF0aW9ucyBpbiBMaWJXZWJSVENDb2RlY3NQcm94eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGQ4YzNiYmU0Y2RjYmUwMjE5NDEzODIwZmQzNWZjMGQ4ZDYwYTQxZDcu
LmY0YmNkMDlkZDc2NGE5YzExZjY1Mjc0YTU4OTdhZWYyY2ZlOTA0NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnZva2luZyAiTWFya3VwIElt
YWdlIiBzaG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYktpdCBhbmQg
V2ViQ29yZSBDaGFuZ2VMb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIE1pc2MvV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgZGlkU2hhcmVJbWFnZURhdGE6Y29uZmlybURhdGFJc1Zh
bGlkVElGRkRhdGE6XSk6CisKKyAgICAgICAgQWRqdXN0IHRoaXMgY2FsbCBzaXRlIHRvIHBhc3Mg
aW4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28gZGVwbG95IFJlZlB0ciBp
biBzb21lIGFkamFjZW50IGNvZGUuCisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFu
ZCB1c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggYzRiNDY2OWRjZWY5MDcyZDRlZTliZmIwMmU0NjFhNTE5MDc4ZmYxYS4uNzIwOWNlMmFiY2U3
NTI3NDBiNzZlYTJkNGZlY2QyNTllNTQyZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC01MzUsMTAgKzUzNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlRmluZFN0cmluZ0Zyb21T
ZWxlY3Rpb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRo
QXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNl
Tm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA1ODU0MGZhNzI2
ZTU2OTViN2I1MmMyOTY5YTM4MTdmZjgyNzAyMDY5Li5mODhhODE2ZWE2Mzc2ZDE3MjQwYTY0ODEx
ZTk2OGE5NWYzODljODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkVkaXRpbmcuaCIKICNpbXBvcnQg
IkVkaXRpbmdTdHlsZS5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJFbGVt
ZW50SW5saW5lcy5oIgogI2ltcG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKICNpbXBvcnQgIkZvbnRD
YXNjYWRlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtMzIxLDQgKzMyMiw2NyBAQCB2b2lkIEVk
aXRvcjo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJk
KTsKIH0KIAorc3RhdGljIHZvaWQgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KGNv
bnN0IE5vZGUmIG5vZGUsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQoreworICAgIC8vIFRo
aXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHNpbmdsZS1Ob2RlIGZyYWdtZW50cy4KKyAgICBSZWZQ
dHIgZmlyc3RDaGlsZCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWZpcnN0Q2hp
bGQgfHwgZmlyc3RDaGlsZCAhPSBmcmFnbWVudC5sYXN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gQW5kIG9ubHkgc3VwcG9ydGVkIGZvciBIVE1MIGVsZW1lbnRzLgorICAgIGlm
ICghbm9kZS5pc0hUTUxFbGVtZW50KCkgfHwgIWZpcnN0Q2hpbGQtPmlzSFRNTEVsZW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQW5kIG9ubHkgaWYgdGhlIHNvdXJjZSBFbGVtZW50
IGFuZCBkZXN0aW5hdGlvbiBFbGVtZW50IGhhdmUgdGhlIHNhbWUgSFRNTCB0YWcgbmFtZS4KKyAg
ICBSZWYgb2xkRWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKKyAgICBSZWYg
bmV3RWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqZmlyc3RDaGlsZCk7CisgICAgaWYg
KG9sZEVsZW1lbnQtPmxvY2FsTmFtZSgpICE9IG5ld0VsZW1lbnQtPmxvY2FsTmFtZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6IG9sZEVsZW1lbnQtPmF0
dHJpYnV0ZXNJdGVyYXRvcigpKSB7CisgICAgICAgIGlmIChuZXdFbGVtZW50LT5oYXNBdHRyaWJ1
dGUoYXR0cmlidXRlLm5hbWUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbmV3
RWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgp
KTsKKyAgICB9Cit9CisKK3ZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5v
ZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgaWYgKG5vZGUu
ZG9jdW1lbnQoKSAhPSBtX2RvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJh
bmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShub2RlKTsKKyAgICBpZiAoIXJhbmdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWYgcHJvdGVjdGVkRG9jdW1lbnQgPSBtX2RvY3VtZW50Owor
ICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHsgKnJhbmdlIH0sIEZyYW1l
U2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQ
YWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVi
b2FyZE5hbWUpOworICAgIGlmICghbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5p
c0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7CisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRo
UGFzdGVib2FyZChwYXN0ZWJvYXJkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAg
IC8vIEZJWE1FOiBIb3cgY2FuIHRoaXMgaGFyZC1jb2RlZCBwYXN0ZWJvYXJkIG5hbWUgYmUgcmln
aHQsIGdpdmVuIHRoYXQgdGhlIHBhc3NlZC1pbiBwYXN0ZWJvYXJkIGhhcyBhIG5hbWU/CisgICAg
Ly8gRklYTUU6IFdlIGNhbiBhbHNvIHJlbW92ZSBgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZGAgYWx0
b2dldGhlciBvbmNlIE1haWwgY29tcG9zZSBvbiBtYWNPUyBubyBsb25nZXIgdXNlcyBXZWJLaXRM
ZWdhY3ksCisgICAgLy8gc2luY2UgaXQncyBvbmx5IGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdh
Y3kgb24gbWFjT1MsIGFuZCB0aGUgb25seSBrbm93biBjbGllbnQgaXMgTWFpbCBjb21wb3NlLgor
ICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5TR2VuZXJhbFBib2FyZCk7Cisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisjZW5kaWYKKworICAgIGJvb2wg
Y2hvc2VQbGFpblRleHQ7CisgICAgaWYgKGF1dG8gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBh
c3RlYm9hcmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKKyAg
ICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KG5vZGUsICpmcmFnbWVudCk7
CisgICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsICpyYW5nZSwgRWRp
dG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZy
YWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGZhbHNlLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZzo6SWdub3JlQmxvY2txdW90ZSk7CisgICAgfQorCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKHsgfSk7CisjZW5kaWYKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGE5NTA4MTZlZWQxMDVi
OGUyZGI5MmMwM2VmOWI4ZmQ4MDU4ZDZmOTkuLjFhMmNkMDNmMDBjZWUwMjY5MjZiYzNhMjRmZmE5
YmJjNWUwODk2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAg
LTE4NCw2NCArMTg0LDYgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtUGFzdGVGb250KCkKICAgICBj
bGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLXN0YXRpYyB2
b2lkIG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudChjb25zdCBOb2RlJiBub2RlLCBE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkKLXsKLSAgICAvLyBUaGlzIGlzIG9ubHkgc3VwcG9y
dGVkIGZvciBzaW5nbGUtTm9kZSBmcmFnbWVudHMuCi0gICAgTm9kZSogZmlyc3RDaGlsZCA9IGZy
YWdtZW50LmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoIWZpcnN0Q2hpbGQgfHwgZmlyc3RDaGlsZCAh
PSBmcmFnbWVudC5sYXN0Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQW5kIG9u
bHkgc3VwcG9ydGVkIGZvciBIVE1MIGVsZW1lbnRzLgotICAgIGlmICghbm9kZS5pc0hUTUxFbGVt
ZW50KCkgfHwgIWZpcnN0Q2hpbGQtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gQW5kIG9ubHkgaWYgdGhlIHNvdXJjZSBFbGVtZW50IGFuZCBkZXN0aW5hdGlvbiBF
bGVtZW50IGhhdmUgdGhlIHNhbWUgSFRNTCB0YWcgbmFtZS4KLSAgICBjb25zdCBIVE1MRWxlbWVu
dCYgb2xkRWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKLSAgICBIVE1MRWxl
bWVudCYgbmV3RWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqZmlyc3RDaGlsZCk7Ci0g
ICAgaWYgKG9sZEVsZW1lbnQubG9jYWxOYW1lKCkgIT0gbmV3RWxlbWVudC5sb2NhbE5hbWUoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6
IG9sZEVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgaWYgKG5ld0VsZW1l
bnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJp
YnV0ZS52YWx1ZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21Q
YXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0g
ICAgQVNTRVJUKG5vZGUpOwotCi0gICAgaWYgKG5vZGUtPmRvY3VtZW50KCkgIT0gbV9kb2N1bWVu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmPERvY3VtZW50PiBwcm90ZWN0b3IobV9kb2N1
bWVudCk7Ci0KLSAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpub2RlKTsKLSAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKHJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwotCi0gICAg
UGFzdGVib2FyZCBwYXN0ZWJvYXJkKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9j
dW1lbnQucGFnZUlEKCkpLCBwYXN0ZWJvYXJkTmFtZSk7Ci0KLSAgICBpZiAoIW1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewotICAg
ICAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgIC8vIEZJWE1FOiBIb3cgY2FuIHRoaXMgaGFyZC1jb2RlZCBwYXN0ZWJvYXJkIG5hbWUg
YmUgcmlnaHQsIGdpdmVuIHRoYXQgdGhlIHBhc3NlZC1pbiBwYXN0ZWJvYXJkIGhhcyBhIG5hbWU/
Ci0gICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJvYXJkKTsK
LSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIGJvb2wgY2hvc2VQ
bGFpblRleHQ7Ci0gICAgaWYgKGF1dG8gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9h
cmQocGFzdGVib2FyZCwgcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KSkgewotICAgICAgICBt
YXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQoKm5vZGUsICpmcmFnbWVudCk7Ci0gICAg
ICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb246OlBhc3RlZCkpCi0gICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQu
cmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2Fy
ZCksIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKTsKLSAg
ICB9Ci0KLSAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7Ci19
Ci0KIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQo
RWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDlkYWJkYmVhOTBi
YTg0NmIwOTFjMjMwN2NkZDEzYmYwNjViNGJiNWQuLmFlOTE1MTdlZDk0NTMzNDhlMDZmNzc1ZGQ5
N2VjODRmOWUxZDRlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MQm9keUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxVTGlzdEVsZW1lbnQuaD4KQEAgLTQ1Nyw2ICs0NTgsMjcgQEAgc3RhdGljIFN0cmluZyYgcmVw
bGFjZVNlbGVjdGlvblBhc3RlYm9hcmROYW1lKCkKICAgICByZXR1cm4gc3RyaW5nOwogfQogCitj
bGFzcyBPdmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoT3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1l
bnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE92ZXJyaWRl
UGFzdGVib2FyZEZvclNlbGVjdGlvblJlcGxhY2VtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQorICAgICAgICA6IG1fdHlwZXMo
dHlwZXMpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAg
ICAgIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5h
ZGRPdmVycmlkZShyZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSwgeyBkYXRh
IH0pOworICAgIH0KKworICAgIH5PdmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNl
bWVudCgpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBtX3R5cGVzKQorICAgICAg
ICAgICAgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygp
LnJlbW92ZU92ZXJyaWRlKHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpLCB0eXBlKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFN0cmluZz4gbV90eXBlczsKK307CisKIHZv
aWQgV2ViUGFnZTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4
dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIFJlZiBmcmFtZSA9IENoZWNrZWRSZWYobV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtNDY0LDI2
ICs0ODYsNDQgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0
IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY28KICAgICBpZiAoIWVsZW1lbnQgfHwg
IWVsZW1lbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKSAhPSAmZWxlbWVudC0+ZG9jdW1lbnQoKSkKKyAgICBSZWYgZG9j
dW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAh
PSBkb2N1bWVudC5wdHIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBvcmlnaW5hbFNl
bGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBSZWZQdHI8RWxl
bWVudD4gc2VsZWN0aW9uSG9zdCA9IG9yaWdpbmFsU2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKSA/OiBkb2N1bWVudC0+Ym9keSgpOworICAgIGlmICghc2VsZWN0aW9uSG9zdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0
aW5nTm9kZSgqZWxlbWVudCk7Ci0gICAgaWYgKCFyZXBsYWNlbWVudFJhbmdlKQorICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQgaXRlcmF0b3JPcHRpb25zID0gVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zOworICAgIHN0ZDo6b3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlVG9SZXN0b3JlOworICAgIGlmIChhdXRvIHJhbmdlID0g
b3JpZ2luYWxTZWxlY3Rpb24ucmFuZ2UoKSkKKyAgICAgICAgcmFuZ2VUb1Jlc3RvcmUgPSBjaGFy
YWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNlbGVjdGlvbkhvc3Qp
LCAqcmFuZ2UsIGl0ZXJhdG9yT3B0aW9ucyk7CisKKyAgICB7CisgICAgICAgIE92ZXJyaWRlUGFz
dGVib2FyZEZvclNlbGVjdGlvblJlcGxhY2VtZW50IG92ZXJyaWRlUGFzdGVib2FyZCB7IHR5cGVz
LCBkYXRhIH07CisgICAgICAgIElnbm9yZVNlbGVjdGlvbkNoYW5nZUZvclNjb3BlIGlnbm9yZVNl
bGVjdGlvbkNoYW5nZXMgeyBmcmFtZS5nZXQoKSB9OworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCgqZWxlbWVudCwgcmVwbGFjZVNlbGVjdGlvblBhc3Rl
Ym9hcmROYW1lKCkpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBhdXRvIHJlc3RvcmVTZWxlY3Rp
b25PcHRpb25zID0gRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVz
ZXJUcmlnZ2VyZWQpOworICAgIGlmICghb3JpZ2luYWxTZWxlY3Rpb24uaXNOb25lT3JPcnBoYW5l
ZCgpKSB7CisgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob3JpZ2luYWxT
ZWxlY3Rpb24sIHJlc3RvcmVTZWxlY3Rpb25PcHRpb25zKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
biB7ICpyZXBsYWNlbWVudFJhbmdlIH0pOwotICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVi
b2FyZERhdGEodHlwZXMsIGRhdGEpOworICAgIGlmIChyYW5nZVRvUmVzdG9yZSAmJiBzZWxlY3Rp
b25Ib3N0LT5pc0Nvbm5lY3RlZCgpKSB7CisgICAgICAgIC8vIFRoZSBub2RlIHJlcGxhY2VtZW50
IG1heSBoYXZlIG9ycGhhbmVkIHRoZSBvcmlnaW5hbCBzZWxlY3Rpb24gcmFuZ2U7IGluIHRoaXMg
Y2FzZSwgdHJ5IHRvIHJlc3RvcmUKKyAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHNlbGVjdGVkIGNo
YXJhY3RlciByYW5nZS4KKyAgICAgICAgYXV0byBuZXdTZWxlY3Rpb25SYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNlbGVjdGlvbkhv
c3QpLCAqcmFuZ2VUb1Jlc3RvcmUsIGl0ZXJhdG9yT3B0aW9ucyk7CisgICAgICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uUmFuZ2UsIHJlc3RvcmVTZWxlY3Rp
b25PcHRpb25zKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldp
dGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAg
ICAgICAgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygp
LmFkZE92ZXJyaWRlKHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpLCB0eXBlLCB7IGRh
dGEgfSk7Ci0KKyAgICBPdmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCBv
dmVycmlkZVBhc3RlYm9hcmQgeyB0eXBlcywgZGF0YSB9OwogICAgIHJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChyZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgW10oYm9vbCkgeyB9
KTsKLQotICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQotICAgICAgICBXZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkucmVtb3ZlT3ZlcnJpZGUocmVw
bGFjZVNlbGVjdGlvblBhc3RlYm9hcmROYW1lKCksIHR5cGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCmluZGV4IGFlNDk2OTdhZGI0MzAzYmJkMjVh
NmMyYWE1NWMzNDZiYjUwMzNkNGEuLjFhZWY3Nzg3ZDk4MTQzZmUwMWFhYjQ3MWExNGVjMTlhNTZl
ZWJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC0xNDEsOSArMTQx
LDkgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50Ojpp
bWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVAKICAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlw
ZXM6QFsgTlNQYXN0ZWJvYXJkVHlwZVRJRkYgXSBvd25lcjpuaWxdOwogICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6ZGF0YSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVUSUZGXTsKIAotICAgIGlmIChh
dXRvKiBub2RlID0gcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dCgpLmhpdFRl
c3RSZXN1bHQoKS5pbm5lck5vZGUoKSkgewotICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBub2Rl
LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZChub2RlLCBzZXJ2aWNlQ29udHJvbHNQYXN0ZWJvYXJkTmFtZSk7
CisgICAgaWYgKFJlZlB0ciBub2RlID0gcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29u
dGV4dCgpLmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vZGUoKSkgeworICAgICAgICBpZiAoUmVmUHRy
IGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoKm5vZGUsIHNlcnZpY2VDb250cm9sc1Bh
c3RlYm9hcmROYW1lKTsKICAgICB9CiAKICAgICBbc2VsZiBjbGVhcl07Cg==
</data>
<flag name="review"
          id="480682"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="480693"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453356</attachid>
            <date>2022-02-27 15:25:14 -0800</date>
            <delta_ts>2022-02-27 19:25:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237242-20220227152513.patch</filename>
            <type>text/plain</type>
            <size>19006</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM4OWU0MWY5NWI4ZDY1
NDBhNWFmM2Y2NDU2NTQyM2I3OTFkZWY4YS4uYThhYjMwMmY4ODhmYWQ5YzQzMzczNGJmY2NjZjIy
NGM3YmU4YzBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludm9raW5nICJN
YXJrdXAgSW1hZ2UiIHNob3VsZCBwcmVzZXJ2ZSB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIHJhbmdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyNDIK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBNb3ZlIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZGAgb3V0IG9mIHRoZSBt
YWNPUy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmaWxlIGFuZCBpbnRvCisgICAgICAgIEVkaXRv
ckNvY29hIGluc3RlYWQsIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBvbiBib3RoIGlPUyBhbmQgbWFj
T1MgdG8gaGFuZGxlIHRoZSAiTWFya3VwIEltYWdlIiBhY3Rpb24uIFNlZSBXZWJLaXQKKyAgICAg
ICAgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjptYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKworICAgICAgICBBbHNv
IG1ha2UgYSBmZXcgbWlub3IgYWRqdXN0bWVudHMgd2hpbGUgd2UncmUgbW92aW5nIHRoaXMgY29k
ZToKKyAgICAgICAgLSAgIE1ha2UgdGhpcyB0YWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBw
b2ludGVyICh0aGUgbWV0aG9kIGFsd2F5cyBleHBlY3RzIGEgbm9uLW51bGwgTm9kZSBwb2ludGVy
IGFueXdheXMpLgorICAgICAgICAtICAgQWRkIGEgRklYTUUgbWVudGlvbmluZyB0aGF0IHdlIGNh
biBqdXN0IGRlbGV0ZSBgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZGAgYWx0b2dldGhlciBvbmNlIE1h
aWwgY29tcG9zZSBvbgorICAgICAgICAgICAgbWFjT1MgdXNlcyBXZWJLaXQyLgorICAgICAgICAt
ICAgVW5jb25kaXRpb25hbGx5IHBhc3MgYGZhbHNlYCBmb3Igd2hldGhlciBvciBub3Qgd2Ugc2hv
dWxkIGVuYWJsZSBzbWFydCBwYXN0ZSB3aGVuIHJlcGxhY2luZyB0aGUgbm9kZS4gVGhpcworICAg
ICAgICAgICAgcHJldmVudHMgdXMgZnJvbSBpbnNlcnRpbmcgc3BhY2VzIGFyb3VuZCB0aGUgcmVw
bGFjZW1lbnQgaW1hZ2UgZWxlbWVudCB3aGVuIHRyaWdnZXJpbmcgdGhlICJNYXJrdXAgSW1hZ2Ui
CisgICAgICAgICAgICBpdGVtLgorICAgICAgICAtICAgVXNlIGBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlYCBpbnN0ZWFkIG9mIGBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHNgIHdoZW4gc2Vs
ZWN0aW5nIHRoZSBub2RlIHRvIHJlcGxhY2UuCisgICAgICAgICAgICBUaGlzIGFsbG93cyB1cyB0
byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIG5vZGUgdG8gcmVwbGFjZSBjYW5ub3QgY29udGFp
biBjaGlsZHJlbiBmb3IgZWRpdGluZyAoaW4KKyAgICAgICAgICAgIHBhcnRpY3VsYXIsIGltYWdl
IGVsZW1lbnRzKS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBjb2RlcGF0aCAoYHJlcGxhY2VO
b2RlRnJvbVBhc3RlYm9hcmRgKSBpcyBjdXJyZW50bHkgb25seSBleGVyY2lzZWQgYnkgV2ViS2l0
TGVnYWN5IHNlcnZpY2UKKyAgICAgICAgY29udHJvbHMgY29kZSB0aGF0IHdhcyBvcmlnaW5hbGx5
IGludGVuZGVkIGZvciB1c2UgYnkgTWFpbCBjb21wb3NlLCBidXQgbmV2ZXIgZW5kZWQgdXAgYmVp
bmcgdXNlZC4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjptYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKTogRGVsZXRlZC4KKwog
MjAyMi0wMi0yNiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1Jl
bmRlclRyZWVCdWlsZGVyXSBDbGVhbiB1cCBkZXNjZW5kYW50IGZsb2F0cyB3aGVuIGEgYmxvY2sg
Y29udGFpbmVyIGJlY29tZXMgZmxvYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjY2NzJiZDI3NmM2OTM1ZThkYTdj
YjY5NzcxZmFiYTI3MTEzZmQ0OC4uMTE1NzYzNWZiNTI3ODg5OTg2NzEzMDU4ODMxOTRjZTNmODAw
MGQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMi0wMi0yNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnZva2luZyAiTWFya3VwIElt
YWdlIiBzaG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTWFrZSBhIGZldyBhZGp1c3Rt
ZW50cyB0byBgcmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YWAsIHN1Y2ggdGhhdCBpdCBhdHRlbXB0
cyB0byByZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24KKyAgICAgICAgcmFuZ2UgYWZ0ZXIg
cmVwbGFjaW5nIHRoZSB0YXJnZXQgZWxlbWVudC4gSWYgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiBp
cyBubyBsb25nZXIgdmFsaWQgKGkuZS4sIGl0IHdhcyBvcnBoYW5lZCBhcworICAgICAgICBhIHJl
c3VsdCBvZiB0aGUgZWRpdGluZyBjb21tYW5kIHVzZWQgdG8gcmVwbGFjZSB0aGUgZWxlbWVudCks
IHRoZW4gd2UgZmFsbCBiYWNrIHRvIHJlc3RvcmluZyB0aGUgdmlzaWJsZQorICAgICAgICBjaGFy
YWN0ZXIgcmFuZ2Ugb2YgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiwgcmVsYXRpdmUgdG8gdGhlIGVk
aXRhYmxlIHJvb3QgKG9yIHRoZSBib2R5IGlmIHRoZXJlIGlzIG5vbmUpLgorCisgICAgICAgIEFQ
SSB0ZXN0cyB3aWxsIGJlIGFkZGVkIGluIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzNjUxOSwgb25j
ZSB3ZSdyZSBhYmxlIHRvIHN3aXp6bGUgb3V0IHRoZSB1bmRlcmx5aW5nIFZpc2lvbktpdAorICAg
ICAgICBtZXRob2RzIGluIG9yZGVyIHRvIG1ha2UgdGhlc2UgdGVzdHMgcnVuIHJlbGlhYmx5Lgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQ6
Ok92ZXJyaWRlUGFzdGVib2FyZEZvclNlbGVjdGlvblJlcGxhY2VtZW50KToKKyAgICAgICAgKFdl
YktpdDo6T3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQ6On5PdmVycmlk
ZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCk6CisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIFJBSUkgb2JqZWN0IHRoYXQgZW5jYXBzdWxhdGVzIGxvZ2ljIGZvciBzZXR0aW5nIGFuZCB1
bnNldHRpbmcgZGF0YSBvbiB0aGUgb3ZlcnJpZGUgcGFzdGVib2FyZC4gVXNlCisgICAgICAgIHRo
aXMgaW4gdGhlIHR3byBtZXRob2RzIGJlbG93LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyB0
aGUgcmVmYWN0b3JlZCBgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkYCBtZXRob2Qg
aW5zdGVhZCBvZiBjYWxsaW5nIHRvIHRoZSBhZGphY2VudAorICAgICAgICBgcmVwbGFjZVNlbGVj
dGlvbldpdGhQYXN0ZWJvYXJkRGF0YWAgbWV0aG9kIGJlbG93LiBVc2luZyB0aGlzIG1ldGhvZCBh
bGxvd3MgdXMgdG8gYXZvaWQgbWFudWFsbHkgc2VsZWN0aW5nIHRoZQorICAgICAgICB0YXJnZXQg
ZWxlbWVudCBoZXJlLCBhbmQgYWxzbyBhdm9pZHMgc21hcnQgcGFzdGVib2FyZCByZXBsYWNlbWVu
dCAod2hpY2ggbWF5IGluc2VydCBzcGFjZXMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBp
bWFnZSk7IHRoZSBsYXR0ZXIgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGNvcnJlY3RseSByZXN0
b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24ncyBjaGFyYWN0ZXIgcmFuZ2UgaW4gdGhlCisgICAg
ICAgIGNhc2Ugd2hlcmUgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiByYW5nZSB3YXMgb3JwaGFuZWQg
YnkgdGhlIHJlcGxhY2VtZW50LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VT
ZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEpOgorCiAyMDIyLTAyLTI2ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgTXVsdGlwbGUgY29uY3VycmVuY3kg
dmlvbGF0aW9ucyBpbiBMaWJXZWJSVENDb2RlY3NQcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGQ4YzNiYmU0Y2RjYmUwMjE5NDEzODIwZmQzNWZjMGQ4ZDYwYTQxZDcuLjE3ZTE0
ODkxNzE5ZTA1OTg3YTRmMDQ0NDY4NGE5YTk2ODg1MWU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yNiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbnZva2luZyAiTWFya3VwIEltYWdlIiBz
aG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgU2VlIFdlYktpdCBhbmQgV2ViQ29yZSBD
aGFuZ2VMb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIE1pc2MvV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgZGlkU2hhcmVJbWFnZURhdGE6Y29uZmlybURhdGFJc1ZhbGlkVElGRkRh
dGE6XSk6CisKKyAgICAgICAgQWRqdXN0IHRoaXMgY2FsbCBzaXRlIHRvIHBhc3MgaW4gYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28gZGVwbG95IFJlZlB0ciBpbiBzb21lIGFk
amFjZW50IGNvZGUuCisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFuZCB1c2UgdGhl
IG1vZGVybiBIYXNoZXIgaW5zdGVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYzRiNDY2
OWRjZWY5MDcyZDRlZTliZmIwMmU0NjFhNTE5MDc4ZmYxYS4uNzIwOWNlMmFiY2U3NTI3NDBiNzZl
YTJkNGZlY2QyNTllNTQyZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01MzUsMTAg
KzUzNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24o
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoTm9kZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21Q
YXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA1ODU0MGZhNzI2ZTU2OTViN2I1
MmMyOTY5YTM4MTdmZjgyNzAyMDY5Li5mODhhODE2ZWE2Mzc2ZDE3MjQwYTY0ODExZTk2OGE5NWYz
ODljODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkVkaXRpbmcuaCIKICNpbXBvcnQgIkVkaXRpbmdT
dHlsZS5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJFbGVtZW50SW5saW5l
cy5oIgogI2ltcG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgi
CiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtMzIxLDQgKzMyMiw2NyBAQCB2b2lkIEVkaXRvcjo6cmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAg
ICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKTsKIH0KIAor
c3RhdGljIHZvaWQgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KGNvbnN0IE5vZGUm
IG5vZGUsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQoreworICAgIC8vIFRoaXMgaXMgb25s
eSBzdXBwb3J0ZWQgZm9yIHNpbmdsZS1Ob2RlIGZyYWdtZW50cy4KKyAgICBSZWZQdHIgZmlyc3RD
aGlsZCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWZpcnN0Q2hpbGQgfHwgZmly
c3RDaGlsZCAhPSBmcmFnbWVudC5sYXN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gQW5kIG9ubHkgc3VwcG9ydGVkIGZvciBIVE1MIGVsZW1lbnRzLgorICAgIGlmICghbm9kZS5p
c0hUTUxFbGVtZW50KCkgfHwgIWZpcnN0Q2hpbGQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gQW5kIG9ubHkgaWYgdGhlIHNvdXJjZSBFbGVtZW50IGFuZCBkZXN0
aW5hdGlvbiBFbGVtZW50IGhhdmUgdGhlIHNhbWUgSFRNTCB0YWcgbmFtZS4KKyAgICBSZWYgb2xk
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKKyAgICBSZWYgbmV3RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqZmlyc3RDaGlsZCk7CisgICAgaWYgKG9sZEVsZW1l
bnQtPmxvY2FsTmFtZSgpICE9IG5ld0VsZW1lbnQtPmxvY2FsTmFtZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6IG9sZEVsZW1lbnQtPmF0dHJpYnV0ZXNJ
dGVyYXRvcigpKSB7CisgICAgICAgIGlmIChuZXdFbGVtZW50LT5oYXNBdHRyaWJ1dGUoYXR0cmli
dXRlLm5hbWUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbmV3RWxlbWVudC0+
c2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICB9
Cit9CisKK3ZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUmIG5vZGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgaWYgKG5vZGUuZG9jdW1lbnQo
KSAhPSBtX2RvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJhbmdlID0gbWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZShub2RlKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWYgcHJvdGVjdGVkRG9jdW1lbnQgPSBtX2RvY3VtZW50OworICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHsgKnJhbmdlIH0sIEZyYW1lU2VsZWN0aW9u
OjpEb05vdFNldEZvY3VzKTsKKworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUp
OworICAgIGlmICghbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKSB7CisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIC8vIEZJWE1F
OiBIb3cgY2FuIHRoaXMgaGFyZC1jb2RlZCBwYXN0ZWJvYXJkIG5hbWUgYmUgcmlnaHQsIGdpdmVu
IHRoYXQgdGhlIHBhc3NlZC1pbiBwYXN0ZWJvYXJkIGhhcyBhIG5hbWU/CisgICAgLy8gRklYTUU6
IFdlIGNhbiBhbHNvIHJlbW92ZSBgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZGAgYWx0b2dldGhlciBv
bmNlIE1haWwgY29tcG9zZSBvbiBtYWNPUyBubyBsb25nZXIgdXNlcyBXZWJLaXRMZWdhY3ksCisg
ICAgLy8gc2luY2UgaXQncyBvbmx5IGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3kgb24gbWFj
T1MsIGFuZCB0aGUgb25seSBrbm93biBjbGllbnQgaXMgTWFpbCBjb21wb3NlLgorICAgIGNsaWVu
dCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5TR2VuZXJhbFBib2FyZCk7CisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisjZW5kaWYKKworICAgIGJvb2wgY2hvc2VQbGFp
blRleHQ7CisgICAgaWYgKGF1dG8gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQo
cGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKKyAgICAgICAgbWF5
YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KG5vZGUsICpmcmFnbWVudCk7CisgICAgICAg
IGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsICpyYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uOjpQYXN0ZWQpKQorICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJl
bGVhc2VOb25OdWxsKCksIGZhbHNlLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdu
b3JlQmxvY2txdW90ZSk7CisgICAgfQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNsaWVudCgp
LT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKHsgfSk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGE5NTA4MTZlZWQxMDViOGUyZGI5MmMw
M2VmOWI4ZmQ4MDU4ZDZmOTkuLjFhMmNkMDNmMDBjZWUwMjY5MjZiYzNhMjRmZmE5YmJjNWUwODk2
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE4NCw2NCAr
MTg0LDYgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtUGFzdGVGb250KCkKICAgICBjbGllbnQoKS0+
c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudChjb25zdCBOb2RlJiBub2RlLCBEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCkKLXsKLSAgICAvLyBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBz
aW5nbGUtTm9kZSBmcmFnbWVudHMuCi0gICAgTm9kZSogZmlyc3RDaGlsZCA9IGZyYWdtZW50LmZp
cnN0Q2hpbGQoKTsKLSAgICBpZiAoIWZpcnN0Q2hpbGQgfHwgZmlyc3RDaGlsZCAhPSBmcmFnbWVu
dC5sYXN0Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQW5kIG9ubHkgc3VwcG9y
dGVkIGZvciBIVE1MIGVsZW1lbnRzLgotICAgIGlmICghbm9kZS5pc0hUTUxFbGVtZW50KCkgfHwg
IWZpcnN0Q2hpbGQtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
QW5kIG9ubHkgaWYgdGhlIHNvdXJjZSBFbGVtZW50IGFuZCBkZXN0aW5hdGlvbiBFbGVtZW50IGhh
dmUgdGhlIHNhbWUgSFRNTCB0YWcgbmFtZS4KLSAgICBjb25zdCBIVE1MRWxlbWVudCYgb2xkRWxl
bWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKLSAgICBIVE1MRWxlbWVudCYgbmV3
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqZmlyc3RDaGlsZCk7Ci0gICAgaWYgKG9s
ZEVsZW1lbnQubG9jYWxOYW1lKCkgIT0gbmV3RWxlbWVudC5sb2NhbE5hbWUoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IG9sZEVsZW1l
bnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgaWYgKG5ld0VsZW1lbnQuaGFzQXR0
cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0ZS52YWx1
ZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJk
KE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgQVNTRVJU
KG5vZGUpOwotCi0gICAgaWYgKG5vZGUtPmRvY3VtZW50KCkgIT0gbV9kb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmVmPERvY3VtZW50PiBwcm90ZWN0b3IobV9kb2N1bWVudCk7Ci0K
LSAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpub2RlKTsK
LSAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KHJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwotCi0gICAgUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFn
ZUlEKCkpLCBwYXN0ZWJvYXJkTmFtZSk7Ci0KLSAgICBpZiAoIW1fZG9jdW1lbnQuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewotICAgICAgICBwYXN0
ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIC8v
IEZJWE1FOiBIb3cgY2FuIHRoaXMgaGFyZC1jb2RlZCBwYXN0ZWJvYXJkIG5hbWUgYmUgcmlnaHQs
IGdpdmVuIHRoYXQgdGhlIHBhc3NlZC1pbiBwYXN0ZWJvYXJkIGhhcyBhIG5hbWU/Ci0gICAgY2xp
ZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJvYXJkKTsKLSAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7
Ci0gICAgaWYgKGF1dG8gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVi
b2FyZCwgcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KSkgewotICAgICAgICBtYXliZUNvcHlO
b2RlQXR0cmlidXRlc1RvRnJhZ21lbnQoKm5vZGUsICpmcmFnbWVudCk7Ci0gICAgICAgIGlmIChz
aG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb246
OlBhc3RlZCkpCi0gICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5v
bk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNl
LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKTsKLSAgICB9Ci0KLSAg
ICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7Ci19Ci0KIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYg
aW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShpbWFnZUVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDlkYWJkYmVhOTBiYTg0NmIwOTFj
MjMwN2NkZDEzYmYwNjViNGJiNWQuLjk4MmFhNjNiZmQ1MjY2Njk0ZDY2Njk4MDUxYmU2NjRiZjg1
MzE1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Rm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MQm9k
eUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVs
ZW1lbnQuaD4KQEAgLTQ1Nyw2ICs0NTgsMjcgQEAgc3RhdGljIFN0cmluZyYgcmVwbGFjZVNlbGVj
dGlvblBhc3RlYm9hcmROYW1lKCkKICAgICByZXR1cm4gc3RyaW5nOwogfQogCitjbGFzcyBPdmVy
cmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoT3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9uUmVwbGFjZW1lbnQpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE92ZXJyaWRlUGFzdGVib2Fy
ZEZvclNlbGVjdGlvblJlcGxhY2VtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQorICAgICAgICA6IG1fdHlwZXModHlwZXMpCisg
ICAgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIFdlYlBh
c3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5hZGRPdmVycmlk
ZShyZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSwgeyBkYXRhIH0pOworICAg
IH0KKworICAgIH5PdmVycmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCgpCisg
ICAgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBtX3R5cGVzKQorICAgICAgICAgICAgV2Vi
UGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLnJlbW92ZU92
ZXJyaWRlKHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpLCB0eXBlKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgVmVjdG9yPFN0cmluZz4gbV90eXBlczsKK307CisKIHZvaWQgV2ViUGFn
ZTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVu
dENvbnRleHQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQogewogICAgIFJlZiBmcmFtZSA9IENoZWNrZWRSZWYobV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtNDY0LDI2ICs0ODYsNTgg
QEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IEVsZW1lbnRD
b250ZXh0JiBlbGVtZW50Q29udGV4dCwgY28KICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQt
PmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChmcmFtZS0+
ZG9jdW1lbnQoKSAhPSAmZWxlbWVudC0+ZG9jdW1lbnQoKSkKKyAgICBSZWYgZG9jdW1lbnQgPSBl
bGVtZW50LT5kb2N1bWVudCgpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVu
dC5wdHIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZSgqZWxlbWVudCk7Ci0gICAgaWYgKCFyZXBsYWNlbWVudFJh
bmdlKQorICAgIGF1dG8gb3JpZ2luYWxTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCk7CisgICAgUmVmUHRyIHNlbGVjdGlvbkhvc3QgPSBvcmlnaW5hbFNlbGVjdGlvbi5y
b290RWRpdGFibGVFbGVtZW50KCkgPzogZG9jdW1lbnQtPmJvZHkoKTsKKyAgICBpZiAoIXNlbGVj
dGlvbkhvc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdlIH0pOwotICAgIHJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpOworICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQgaXRlcmF0b3JPcHRpb25zID0gVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zOworICAgIHN0ZDo6b3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlVG9SZXN0b3JlOworICAgIHVpbnQ2NF90IG51bWJlck9m
Q2hhcmFjdGVyc0luU2VsZWN0aW9uSG9zdCA9IDA7CisgICAgaWYgKGF1dG8gcmFuZ2UgPSBvcmln
aW5hbFNlbGVjdGlvbi5yYW5nZSgpKSB7CisgICAgICAgIGF1dG8gc2VsZWN0aW9uSG9zdFJhbmdl
QmVmb3JlUmVwbGFjZW1lbnQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNlbGVj
dGlvbkhvc3QpOworICAgICAgICByYW5nZVRvUmVzdG9yZSA9IGNoYXJhY3RlclJhbmdlKHNlbGVj
dGlvbkhvc3RSYW5nZUJlZm9yZVJlcGxhY2VtZW50LCAqcmFuZ2UsIGl0ZXJhdG9yT3B0aW9ucyk7
CisgICAgICAgIG51bWJlck9mQ2hhcmFjdGVyc0luU2VsZWN0aW9uSG9zdCA9IGNoYXJhY3RlckNv
dW50KHNlbGVjdGlvbkhvc3RSYW5nZUJlZm9yZVJlcGxhY2VtZW50LCBpdGVyYXRvck9wdGlvbnMp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgT3ZlcnJpZGVQYXN0ZWJvYXJkRm9yU2VsZWN0aW9u
UmVwbGFjZW1lbnQgb3ZlcnJpZGVQYXN0ZWJvYXJkIHsgdHlwZXMsIGRhdGEgfTsKKyAgICAgICAg
SWdub3JlU2VsZWN0aW9uQ2hhbmdlRm9yU2NvcGUgaWdub3JlU2VsZWN0aW9uQ2hhbmdlcyB7IGZy
YW1lLmdldCgpIH07CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlTm9kZUZyb21QYXN0
ZWJvYXJkKCplbGVtZW50LCByZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSk7CisgICAg
fQorCisgICAgY29uc3RleHByIGF1dG8gcmVzdG9yZVNlbGVjdGlvbk9wdGlvbnMgPSBGcmFtZVNl
bGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoVXNlclRyaWdnZXJlZCk7CisgICAg
aWYgKCFvcmlnaW5hbFNlbGVjdGlvbi5pc05vbmVPck9ycGhhbmVkKCkpIHsKKyAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvcmlnaW5hbFNlbGVjdGlvbiwgcmVzdG9yZVNl
bGVjdGlvbk9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFyYW5n
ZVRvUmVzdG9yZSB8fCAhc2VsZWN0aW9uSG9zdC0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBzZWxlY3Rpb25Ib3N0UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKnNlbGVjdGlvbkhvc3QpOworICAgIGlmIChudW1iZXJPZkNoYXJhY3RlcnNJ
blNlbGVjdGlvbkhvc3QgIT0gY2hhcmFjdGVyQ291bnQoc2VsZWN0aW9uSG9zdFJhbmdlLCBpdGVy
YXRvck9wdGlvbnMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBhdHRlbXB0IHRvIHJl
c3RvcmUgdGhlIHNlbGVjdGlvbiBpZiB0aGUgcmVwbGFjZWQgZWxlbWVudCBjb250YWlucyBhIGRp
ZmZlcmVudAorICAgICAgICAvLyBjaGFyYWN0ZXIgY291bnQgdGhhbiB0aGUgY29udGVudCB0aGF0
IHJlcGxhY2VzIGl0LCBzaW5jZSB0aGlzIGNvZGVwYXRoIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQK
KyAgICAgICAgLy8gdG8gcmVwbGFjZSBhIHNpbmdsZSBub24tdGV4dCBlbGVtZW50IHdpdGggYW5v
dGhlci4gSWYgdGhpcyBpcyB1c2VkIHRvIHJlcGxhY2UgdGV4dCBjb250ZW50IGluCisgICAgICAg
IC8vIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBhZGp1c3QgdGhlIGByYW5nZVRvUmVzdG9yZWAgdG8g
Zml0IHRoZSBuZXdseSBpbnNlcnRlZCBjb250ZW50LgorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gVGhlIG5vZGUgcmVwbGFjZW1lbnQgbWF5IGhhdmUgb3JwaGFuZWQgdGhlIG9yaWdp
bmFsIHNlbGVjdGlvbiByYW5nZTsgaW4gdGhpcyBjYXNlLCB0cnkgdG8gcmVzdG9yZQorICAgIC8v
IHRoZSBvcmlnaW5hbCBzZWxlY3RlZCBjaGFyYWN0ZXIgcmFuZ2UuCisgICAgYXV0byBuZXdTZWxl
Y3Rpb25SYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzZWxlY3Rpb25Ib3N0UmFuZ2UsICpy
YW5nZVRvUmVzdG9yZSwgaXRlcmF0b3JPcHRpb25zKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvblJhbmdlLCByZXN0b3JlU2VsZWN0aW9uT3B0aW9ucyk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSkKIHsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgV2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmFkZE92ZXJyaWRlKHJlcGxh
Y2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpLCB0eXBlLCB7IGRhdGEgfSk7Ci0KKyAgICBPdmVy
cmlkZVBhc3RlYm9hcmRGb3JTZWxlY3Rpb25SZXBsYWNlbWVudCBvdmVycmlkZVBhc3RlYm9hcmQg
eyB0eXBlcywgZGF0YSB9OwogICAgIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChyZXBsYWNl
U2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgW10oYm9vbCkgeyB9KTsKLQotICAgIGZvciAoYXV0
byYgdHlwZSA6IHR5cGVzKQotICAgICAgICBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQ
YXN0ZWJvYXJkT3ZlcnJpZGVzKCkucmVtb3ZlT3ZlcnJpZGUocmVwbGFjZVNlbGVjdGlvblBhc3Rl
Ym9hcmROYW1lKCksIHR5cGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyLm1tCmluZGV4IGFlNDk2OTdhZGI0MzAzYmJkMjVhNmMyYWE1NWMzNDZiYjUwMzNk
NGEuLjFhZWY3Nzg3ZDk4MTQzZmUwMWFhYjQ3MWExNGVjMTlhNTZlZWJmYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC0xNDEsOSArMTQxLDkgQEAgUmV0YWluUHRyPE5T
SW1hZ2U+IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFy
aW5nU2VydmljZVAKICAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFsgTlNQYXN0ZWJvYXJk
VHlwZVRJRkYgXSBvd25lcjpuaWxdOwogICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6ZGF0YSBmb3JU
eXBlOk5TUGFzdGVib2FyZFR5cGVUSUZGXTsKIAotICAgIGlmIChhdXRvKiBub2RlID0gcGFnZS0+
Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dCgpLmhpdFRlc3RSZXN1bHQoKS5pbm5lck5v
ZGUoKSkgewotICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1l
KCkpCi0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZU5vZGVGcm9tUGFzdGVib2Fy
ZChub2RlLCBzZXJ2aWNlQ29udHJvbHNQYXN0ZWJvYXJkTmFtZSk7CisgICAgaWYgKFJlZlB0ciBu
b2RlID0gcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dCgpLmhpdFRlc3RSZXN1
bHQoKS5pbm5lck5vZGUoKSkgeworICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gbm9kZS0+ZG9j
dW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoKm5vZGUsIHNlcnZpY2VDb250cm9sc1Bhc3RlYm9hcmROYW1lKTsKICAg
ICB9CiAKICAgICBbc2VsZiBjbGVhcl07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>