<?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>222811</bug_id>
          
          <creation_ts>2021-03-05 10:53:17 -0800</creation_ts>
          <short_desc>[iOS] Implement additional accessibility support for image overlays</short_desc>
          <delta_ts>2021-03-05 22:33:06 -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>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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1736432</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 10:53:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/73203775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736467</commentid>
    <comment_count>1</comment_count>
      <attachid>422391</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 12:09:40 -0800</bug_when>
    <thetext>Created attachment 422391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736471</commentid>
    <comment_count>2</comment_count>
      <attachid>422392</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 12:13:37 -0800</bug_when>
    <thetext>Created attachment 422392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736501</commentid>
    <comment_count>3</comment_count>
      <attachid>422402</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 13:20:22 -0800</bug_when>
    <thetext>Created attachment 422402
Fix non-internal iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736502</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 13:21:07 -0800</bug_when>
    <thetext>Thanks for the review!

(Looks like I need a slight adjustment to fix the !ENABLE(IMAGE_EXTRACTION) build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736505</commentid>
    <comment_count>5</comment_count>
      <attachid>422402</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-05 13:25:56 -0800</bug_when>
    <thetext>Comment on attachment 422402
Fix non-internal iOS build

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

r=me as well :)

&gt; Source/WebKit/ChangeLog:27
&gt; +        There&apos;s no need to make the regular text interaction duck in favor of the image extraction interaction after

&quot;duck&quot;?

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2737
&gt; +        if (HTMLElement::isImageOverlayText(*innerNonSharedNode))

Can/Should we assume that this is not `nullptr`?  Should we have `HTMLElement::isImageOverlayText` take a `const Node*` instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736510</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 13:30:27 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #5)
&gt; Comment on attachment 422402 [details]
&gt; Fix non-internal iOS build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422402&amp;action=review
&gt; 
&gt; r=me as well :)
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:27
&gt; &gt; +        There&apos;s no need to make the regular text interaction duck in favor of the image extraction interaction after
&gt; 
&gt; &quot;duck&quot;?

As in, &quot;make one thing duck to avoid another thing&quot;, but perhaps that isn&apos;t so clear — I&apos;ll reword this sentence.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2737
&gt; &gt; +        if (HTMLElement::isImageOverlayText(*innerNonSharedNode))
&gt; 
&gt; Can/Should we assume that this is not `nullptr`?  Should we have
&gt; `HTMLElement::isImageOverlayText` take a `const Node*` instead?

Since this is a hit test result, I&apos;m a bit hesitant to assume that it must be non-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736514</commentid>
    <comment_count>7</comment_count>
      <attachid>422407</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 13:38:15 -0800</bug_when>
    <thetext>Created attachment 422407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736528</commentid>
    <comment_count>8</comment_count>
      <attachid>422407</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-05 13:56:56 -0800</bug_when>
    <thetext>Comment on attachment 422407
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:9412
&gt; +        block(NO);

Use an enum?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:9944
&gt; +    getConfigurationAndContinue(NO);

Use an enum?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736533</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 13:59:54 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 422407 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422407&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:9412
&gt; &gt; +        block(NO);
&gt; 
&gt; Use an enum?

Good call — added this enum, and changed the block to take it instead of BOOL:

enum class ProceedWithImageExtraction : bool {
    No,
    Yes
};

&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:9944
&gt; &gt; +    getConfigurationAndContinue(NO);
&gt; 
&gt; Use an enum?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736569</commentid>
    <comment_count>10</comment_count>
      <attachid>422428</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 14:55:38 -0800</bug_when>
    <thetext>Created attachment 422428
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736610</commentid>
    <comment_count>11</comment_count>
      <attachid>422444</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 15:44:34 -0800</bug_when>
    <thetext>Created attachment 422444
Fix non-internal iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736611</commentid>
    <comment_count>12</comment_count>
      <attachid>422445</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 15:46:20 -0800</bug_when>
    <thetext>Created attachment 422445
Fix non-internal iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736641</commentid>
    <comment_count>13</comment_count>
      <attachid>422450</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 16:18:39 -0800</bug_when>
    <thetext>Created attachment 422450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736750</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 22:33:05 -0800</bug_when>
    <thetext>Committed r274031: &lt;https://commits.webkit.org/r274031&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422450.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422391</attachid>
            <date>2021-03-05 12:09:40 -0800</date>
            <delta_ts>2021-03-05 12:13:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222811-20210305120939.patch</filename>
            <type>text/plain</type>
            <size>24867</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNzljOGQxNzlhNDdm
ZTMyNmRjOGEzNGJlZTVlYTNlYWYwOTU5Yy4uMjQ5NjlhMjA5YjJjZjIwZTA5MmMyMmI0MDlkNDAz
Y2EzMDcyZjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjaGVjayB3
aGV0aGVyIGEgZ2l2ZW4gYE5vZGVgIGlzIGEgdGV4dCBub2RlIGluc2lkZSBhbiBpbWFnZSBvdmVy
bGF5LiBTZWUgV2ViS2l0IENoYW5nZUxvZworICAgICAgICBmb3IgbW9yZSBkZXRhaWwuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50Ojppc0ltYWdlT3ZlcmxheVRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoK
KwogMjAyMS0wMy0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICB3aW5kb3cgcHJveHkgb2YgZGV0YWNoZWQgaWZyYW1lIGRvZXNuJ3QgcmVzcGVjdCB1
cGRhdGVzIHRvIGdsb2JhbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZmQzMGFhY2ZkMmIwMTVjMTg4MWJl
ZGVmZDNlZmFkNGY3YzY0OGEwOS4uYTY2NTlhZDIxY2U0YTliZTI2ZTNkMjM1NTczNGY1ZWYyMzll
YTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OSBAQAorMjAyMS0wMy0wNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgYWRk
aXRpb25hbCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIGltYWdlIG92ZXJsYXlzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzczMjAzNzc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBhY2Nlc3NpYmxl
IGltYWdlIGV4dHJhY3Rpb24uIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKFdl
YktpdDo6U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuOjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW46On5T
dXBwcmVzc0ludGVyYWN0aW9uVG9rZW4pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBgU3Vw
cHJlc3NJbnRlcmFjdGlvblRva2VuYCwgYWxvbmcgd2l0aCBpdHMgb25seSB1c2UgYXMgYSBtZW1i
ZXIgb24gYFdLQ29udGVudFZpZXdgLiBUaGlzIHdhcyB1c2VkIHRvCisgICAgICAgIHRlbXBvcmFy
aWx5IHN1cHByZXNzIHRoZSBpbWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9uIHdoZW4gZWRpdGlu
ZywgYnV0IGlzIG5vdyBubyBsb25nZXIgbmVjZXNzYXJ5LCBzaW5jZSB3ZSdyZQorICAgICAgICBy
ZW1vdmluZyBhbGwgZGVwZW5kZW5jZSBvbiB0aGlzIGludGVyYWN0aW9uIG9iamVjdC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHNldElzRWRpdGFibGU6XSk6CisKKyAgICAgICAgUmVtb3ZlIGBf
c3VwcHJlc3NJbWFnZUV4dHJhY3Rpb25Ub2tlbmAuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBoYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHRleHRJbnRlcmFjdGlvbkdlc3R1cmU6c2hvdWxkQmVnaW5BdFBvaW50Ol0pOgorCisgICAg
ICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBtYWtlIHRoZSByZWd1bGFyIHRleHQgaW50ZXJhY3Rpb24g
ZHVjayBpbiBmYXZvciBvZiB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFjdGlvbiBhZnRlcgor
ICAgICAgICB0aGlzIHBhdGNoLCBzaW5jZSB0aGUgZm9ybWVyIHdpbGwgYmUgdXNlZCBmb3IgYm90
aC4gSG93ZXZlciwgd2UgZG8gbmVlZCB0byB0ZW1wb3JhcmlseSBzdXBwcmVzcyByZWd1bGFyIHRl
eHQKKyAgICAgICAgaW50ZXJhY3Rpb24gd2hpbGUgaW1hZ2UgZXh0cmFjdGlvbiBpcyBzdGlsbCBw
ZW5kaW5nLCB0byBhdm9pZCBwcmVtYXR1cmVseSBzZWxlY3RpbmcgdGhlIGVudGlyZSBpbWFnZSBl
bGVtZW50LgorCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIGtlZXAgdHJhY2sgb2YgdGhlIGVsZW1l
bnQgcGVuZGluZyBpbWFnZSBleHRyYWN0aW9uIChgX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uYCksIGFuZCBhdm9pZAorICAgICAgICBhbGxvd2luZyB0ZXh0IGludGVyYWN0aW9ucyB0byBi
ZWdpbiBpZiB3ZSdyZSBvdmVyIHRoaXMgZXhhY3QgZWxlbWVudC4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9zaW5nbGVUYXBJZGVudGlmaWVkOl0pOgorCisgICAgICAgIFdlIGRvbid0IG5l
ZWQgdG8gZXhwbGljaXRseSBjYW5jZWwgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50ZXJhY3Rpb24g
b24gc2luZ2xlIHRhcCBhbnltb3JlOyB0aGlzIGJlaGF2aW9yIHdpbGwKKyAgICAgICAgYXV0b21h
dGljYWxseSBmYWxsIG91dCBvZiB1c2luZyBkZWZhdWx0IHRleHQgaW50ZXJhY3Rpb25zIGZvciBp
bWFnZSBleHRyYWN0aW9uLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Ry
YWdJbnRlcmFjdGlvbjpwcmVwYXJlRm9yU2Vzc2lvbjpjb21wbGV0aW9uOl0pOgorCisgICAgICAg
IFJlbW92ZSBleHBsaWNpdCBpbWFnZSBleHRyYWN0aW9uIGNhbmNlbGxhdGlvbiBoZXJlIGFzIHdl
bGwsIGFuZCBpbnN0ZWFkIGJhaWwgZnJvbSB0aGUgZHJhZyBvbmx5IGlmIHdlJ3JlIGFib3V0Cisg
ICAgICAgIHRvIHByb2NlZWQgd2l0aCB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBnZXN0dXJlICh3aGlj
aCBpcyBpbmRpY2F0ZWQgYnkgdGhlIGFyZ3VtZW50IHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIp
LgorICAgICAgICBTZWUgY29tbWVudCBiZWxvdy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpdKToKKworICAgICAgICBBZGQgYSBgQk9P
TGAgZmxhZyB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGJsb2NrIGhlcmUsIHRvIGRldGVybWlu
ZSB3aGV0aGVyIG9yIG5vdCB3ZSdsbCB3YW50IHRvIGltbWVkaWF0ZWx5CisgICAgICAgIHByb2Nl
ZWQgd2l0aCBpbWFnZSBleHRyYWN0aW9uLiBUaGUgdmFsdWUgb2YgdGhpcyBmbGFnIHdpbGwgYmUg
ZGV0ZXJtaW5lZCBieSB0aGUgaGl0LXRlc3QgYWZ0ZXIgdXBkYXRpbmcgdGhlIHBhZ2UKKyAgICAg
ICAgd2l0aCBpbWFnZSBleHRyYWN0aW9uIHJlc3VsdHMgaW4gYFdlYlBhZ2U6OnVwZGF0ZVdpdGhJ
bWFnZUV4dHJhY3Rpb25SZXN1bHRgLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludm9r
ZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJhdGlv
bkZvck1lbnVBdExvY2F0aW9uOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb25d
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQp
OgorCisgICAgICAgIFJlbW92ZSBhIEZJWE1FIGFuZCBpbXBsZW1lbnQgaGl0LXRlc3RpbmcgbG9n
aWMsIHRvIHJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gbG9jYXRpb24gaGl0LXRlc3Rz
IHRvIHRoZQorICAgICAgICBpbWFnZSBvdmVybGF5IHdlJ3ZlIGp1c3QgaW5qZWN0ZWQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24pOgorCisg
ICAgICAgIEF2b2lkIGV4dHJhY3RpbmcgaW1hZ2UgZGF0YSBmb3IgYSBwb3NpdGlvbiBpbmZvcm1h
dGlvbiByZXF1ZXN0LCBpZiB0aGUgaGl0LXRlc3RlZCBub2RlIGlzIGFjdHVhbGx5IGEgdGV4dCBu
b2RlCisgICAgICAgIGluIGFuIGltYWdlIG92ZXJsYXksIGluc3RlYWQgb2YgYW4gaW1hZ2UuCisK
KyAgICAgICAgKFdlYktpdDo6c2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24pOgorCisgICAgICAgIEFsbG93
IHRleHQgaW50ZXJhY3Rpb25zIHRvIGJlZ2luIGluIHVzZXItYWdlbnQgc2hhZG93IHJvb3RzLiBU
aGlzIG1hdGNoZXMgYmVoYXZpb3Igb24gbWFjT1MsIGFuZCB3YXMKKyAgICAgICAgKHByZXN1bWFi
bHkpIGluaXRpYWxseSBkaXNhbGxvd2VkIG9uIGlPUyB0byBhdm9pZCBhY3RpdmF0aW5nIHRoZSBl
ZGl0YWJsZSB0ZXh0IGludGVyYWN0aW9uCisgICAgICAgIChgVUlXS1RleHRJbnRlcmFjdGlvbkFz
c2lzdGFudGApLCBhcyBvcHBvc2VkIHRvIGJsb2NrIHRleHQgc2VsZWN0aW9uIGludGVyYWN0aW9u
cywgd2hlbiBsb25nIHByZXNzaW5nIHRleHQKKyAgICAgICAgaW5zaWRlIHRleHRhcmVhcyBhbmQg
dGV4dCBmaWVsZHMuIEhvd2V2ZXIsIHNpbmNlIHdlIG9ubHkgdXNlIHRoZSBub3JtYWwgdGV4dCBp
bnRlcmFjdGlvbiBhc3Npc3RhbnQgbm93IGZvciBib3RoCisgICAgICAgIG5vbi1lZGl0YWJsZSBh
bmQgZWRpdGFibGUgdGV4dCwgdGhpcyBkaXN0aW5jdGlvbiBubyBsb25nZXIgbWF0dGVycy4KKwor
MjAyMS0wMy0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBBZGQgc3VwcG9ydCBmb3IgYSBuZXcgaW1hZ2UtZXh0cmFjdGlvbi1yZWxhdGVk
IHJlc3BvbmRlciBhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjc0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUwMDExNDk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciB0aGUgbmV3IGFjdGlvbiwgc3VjaCB0aGF0IHdlIHJldHVybiBgWUVTYCBpZiBhbmQgb25seSBp
ZiB3ZSdyZSBpbiBhbiBlZGl0YWJsZSBjb250ZXh0LCBhbmQgYWxzbworICAgICAgICBzdWNoIHRo
YXQgd2UgcmV0dXJuIGEgbm9uLW51bGwgdGFyZ2V0IGZvciB0aGUgbmV3IGFjdGlvbi4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisKKyAgICAg
ICAgQWRkIGEgZmFsbGJhY2sgZGVmaW5pdGlvbiBmb3IgYEZPUl9FQUNIX0FERElUSU9OQUxfV0tD
T05URU5UVklFV19BQ1RJT05gLCB3aGljaCBjYW4gYmUgdXNlZCBieSBXZWJLaXRBZGRpdGlvbnMK
KyAgICAgICAgdG8gaW5qZWN0IGFkZGl0aW9uYWwgcmVzcG9uZGVyIGFjdGlvbnMgd2hlbiBnZW5l
cmF0aW5nIHNlbGVjdG9yIGZvcndhcmRpbmcgY29kZSBiZXR3ZWVuIGBXS0NvbnRlbnRWaWV3YCBh
bmQKKyAgICAgICAgYFdLV2ViVmlld2AuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJm
b3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorCiAyMDIxLTAzLTA0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjczNzMy
KTogQVNTRVJUSU9OIEZBSUxFRDogQ29tcGxldGlvbiBoYW5kbGVyIHNob3VsZCBhbHdheXMgYmUg
Y2FsbGVkIHVuZGVyIFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5Ojp+UmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CmluZGV4IDk2MzkzOTZiOWNjODkwYjZkMTRlZmFkZjJkNTAzZWMxMmE5MGJjMGEuLmMwOTMwZmEz
ZDljODhjNTJkZjAyMTQzNGRhYjBlMDdkZjdlNjMzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCkBAIC0xMjM0LDYgKzEyMzQsMjkgQEAgYm9vbCBIVE1MRWxlbWVudDo6aGFzSW1h
Z2VPdmVybGF5KCkgY29uc3QKICAgICByZXR1cm4gc2hhZG93Um9vdC0+aGFzRWxlbWVudFdpdGhJ
ZCgqaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKS5pbXBsKCkpOwogfQogCitib29sIEhU
TUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheVRleHQoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICBp
ZiAoIWlzPFRleHQ+KG5vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNo
YWRvd0hvc3QgPSBub2RlLnNoYWRvd0hvc3QoKTsKKyAgICBpZiAoIXNoYWRvd0hvc3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gdXNlckFnZW50U2hhZG93Um9vdCA9IHNoYWRv
d0hvc3QtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXVzZXJBZ2VudFNoYWRvd1Jv
b3QpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8SFRNTERp
dkVsZW1lbnQ+KCp1c2VyQWdlbnRTaGFkb3dSb290KSkgeworICAgICAgICBpZiAoY2hpbGQuZ2V0
SWRBdHRyaWJ1dGUoKSA9PSBpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKQorICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkLmNvbnRhaW5zKCZub2RlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKIAogdm9pZCBIVE1MRWxl
bWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1
bHQmJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggNjg4NzcxN2YzYTQx
ZGZkNDlmNmQ5ZmFkMmVhMzA2MjRiODgxNmRkMi4uOTc5NDA2YTYxOTFlYWFjNmEwMTE1MTU1ZTBk
NGVmNjQ3Mzc4NDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTI5LDYgKzEy
OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHNob3VsZFVwZGF0ZVNlbGVjdGlvbkZv
ck1vdXNlRHJhZyhjb25zdCBOb2RlJiB0YXJnZXROb2RlLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb25CZWZvcmVVcGRhdGUpOwogICAgIGJvb2wgaGFzSW1hZ2VPdmVybGF5KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNv
bnN0IE5vZGUmKTsKIAogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rp
b25SZXN1bHQmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZjQ5NWZiMGIxMWUzMGY2OTYyMjEzMzM1MWE3
NjdmNjcyMjg2NmVmOC4uMGMwNjgwNjAxYTY3NzgyYmNmZTFiODQyMmY0MDY2NmM0NWZiNmVjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaApAQCAtMTQ1LDcgKzE0NSwxMiBAQCB0eXBlZGVmIHZvaWQgKF5VSVdLU2Vs
ZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRpb25IYW5kbGVyKShCT09MIHNlbGVjdGlvbkVuZElz
TQogdHlwZWRlZiBCbG9ja1B0cjx2b2lkKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24pPiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6
cGFpcjxXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQ2FsbGJhY2s+IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0QW5kQ2FsbGJh
Y2s7CiAKKyNpZiAhZGVmaW5lZChGT1JfRUFDSF9BRERJVElPTkFMX1dLQ09OVEVOVFZJRVdfQUNU
SU9OKQorI2RlZmluZSBGT1JfRUFDSF9BRERJVElPTkFMX1dLQ09OVEVOVFZJRVdfQUNUSU9OKE0p
CisjZW5kaWYKKwogI2RlZmluZSBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihNKSBcCisg
ICAgRk9SX0VBQ0hfQURESVRJT05BTF9XS0NPTlRFTlRWSUVXX0FDVElPTihNKSBcCiAgICAgTShf
YWRkU2hvcnRjdXQpIFwKICAgICBNKF9kZWZpbmUpIFwKICAgICBNKF9sb29rdXApIFwKQEAgLTIx
NiwzMiArMjIxLDYgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3Qg
dGV4dExhc3RSZWN0OwogfTsKIAotY2xhc3MgU3VwcHJlc3NJbnRlcmFjdGlvblRva2VuIHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4pOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4o
V0tDb250ZW50VmlldyAqdmlldywgTlNPYmplY3Q8VUlJbnRlcmFjdGlvbj4gKmludGVyYWN0aW9u
KQotICAgICAgICA6IG1fdmlldyh2aWV3KQotICAgICAgICAsIG1faW50ZXJhY3Rpb24oaW50ZXJh
Y3Rpb24pCi0gICAgewotICAgICAgICBBU1NFUlQodmlldyk7Ci0gICAgICAgIEFTU0VSVChpbnRl
cmFjdGlvbik7Ci0gICAgICAgIGlmIChpbnRlcmFjdGlvbikKLSAgICAgICAgICAgIFt2aWV3IHJl
bW92ZUludGVyYWN0aW9uOmludGVyYWN0aW9uXTsKLSAgICB9Ci0KLSAgICB+U3VwcHJlc3NJbnRl
cmFjdGlvblRva2VuKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV92aWV3IHx8ICFtX2ludGVyYWN0
aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFttX3ZpZXcgYWRkSW50ZXJhY3Rp
b246bV9pbnRlcmFjdGlvbi5nZXQoKS5nZXQoKV07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdl
YWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1fdmlldzsKLSAgICBXZWFrT2JqQ1B0cjxOU09iamVj
dDxVSUludGVyYWN0aW9uPj4gbV9pbnRlcmFjdGlvbjsKLX07Ci0KIH0KIAogQGNsYXNzIFdLRm9j
dXNlZEVsZW1lbnRJbmZvOwpAQCAtNDgzLDEwICs0NjIsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShJTUFHRV9FWFRSQUNUSU9OKQogICAgIFJldGFpblB0cjxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyPiBfaW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0
YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9pbWFnZUV4dHJhY3Rpb25UaW1l
b3V0R2VzdHVyZVJlY29nbml6ZXI7Ci0gICAgV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZSBf
aW1hZ2VFeHRyYWN0aW9uU3RhdGU7Ci0gICAgQ0dSZWN0IF9pbWFnZUV4dHJhY3Rpb25JbnRlcmFj
dGlvbkJvdW5kczsKLSAgICBWZWN0b3I8QmxvY2tQdHI8dm9pZCgpPj4gX2FjdGlvbnNUb1BlcmZv
cm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuPiBfc3VwcHJlc3NJbWFnZUV4dHJhY3Rpb25Ub2tl
bjsKKyAgICBCT09MIF9oYXNQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0PiBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb247Cisg
ICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoQk9PTCk+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVu
ZGluZ0ltYWdlRXh0cmFjdGlvbjsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBSZXRhaW5Q
dHI8VUlNZW51PiBfaW1hZ2VFeHRyYWN0aW9uQ29udGV4dE1lbnU7CiAjZW5kaWYgLy8gVVNFKFVJ
Q09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxZTc2MjU3YmM1OTUzYmE3NDM3MDAzZjlj
YjgxNGM0OWEzYzUwNDU0Li4zNGNkZmI1MzcxNjU3NTFkOTMyYzhmMzJjNjFjMTFhMzgxMmZiZjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTEzMDUsMTIgKzEzMDUsNiBAQCAtIChCT09MKXNldElzRWRp
dGFibGU6KEJPT0wpaXNFZGl0YWJsZQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBfaXNFZGl0
YWJsZSA9IGlzRWRpdGFibGU7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBp
ZiAoc2VsZi5faW1hZ2VFeHRyYWN0aW9uRW5hYmxlZCAmJiAoIV9pc0JsdXJyaW5nRm9jdXNlZEVs
ZW1lbnQgfHwgIV9pc0NoYW5naW5nRm9jdXMpKQotICAgICAgICBfc3VwcHJlc3NJbWFnZUV4dHJh
Y3Rpb25Ub2tlbiA9IGlzRWRpdGFibGUgPyBtYWtlVW5pcXVlPFdlYktpdDo6U3VwcHJlc3NJbnRl
cmFjdGlvblRva2VuPihzZWxmLCBfaW1hZ2VFeHRyYWN0aW9uSW50ZXJhY3Rpb24uZ2V0KCkpIDog
bnVsbHB0cjsKLSNlbmRpZgotCiAgICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtMjY2NCwxMyArMjY1
OCw2IEBAIC0gKEJPT0wpaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2lu
dAogICAgIGlmIChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zKQogICAgICAgICBy
ZXR1cm4gTk87CiAKLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBpZiAoW3NlbGYg
X2ltYWdlRXh0cmFjdGlvblNob3VsZFByZXZlbnRUZXh0SW50ZXJhY3Rpb25BdFBvaW50OnBvaW50
XSkKLSAgICAgICAgcmV0dXJuIE5POwotCi0gICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlv
bl07Ci0jZW5kaWYKLQogICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQpCiAgICAg
ICAgIHJldHVybiBOTzsKIApAQCAtMjY3OCw2ICsyNjY1LDExIEBAIC0gKEJPT0wpaGFzU2VsZWN0
YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludAogICAgIGlmICghW3NlbGYgZW5zdXJl
UG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBO
TzsKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIGlmIChfZWxlbWVudFBlbmRp
bmdJbWFnZUV4dHJhY3Rpb24gJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQg
PT0gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uKQorICAgICAgICByZXR1cm4gTk87Cisj
ZW5kaWYKKwogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFibGU7CiB9
CiAKQEAgLTI3MTYsMTMgKzI3MDgsNiBAQCAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6
KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQbwogICAgIGlm
IChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zKQogICAgICAgICByZXR1cm4gTk87
CiAKLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBpZiAoW3NlbGYgX2ltYWdlRXh0
cmFjdGlvblNob3VsZFByZXZlbnRUZXh0SW50ZXJhY3Rpb25BdFBvaW50OnBvaW50XSkKLSAgICAg
ICAgcmV0dXJuIE5POwotCi0gICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbl07Ci0jZW5k
aWYKLQogICAgIGlmICghc2VsZi5pc0ZvY3VzaW5nRWxlbWVudCkgewogICAgICAgICBpZiAoZ2Vz
dHVyZSA9PSBVSVdLR2VzdHVyZURvdWJsZVRhcCkgewogICAgICAgICAgICAgLy8gRG9uJ3QgYWxs
b3cgZG91YmxlIHRhcCB0ZXh0IGdlc3R1cmVzIGluIG5vbmVkaXRhYmxlIGNvbnRlbnQuCkBAIC0y
NzU4LDYgKzI3NDMsMTEgQEAgLSAoQk9PTCl0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOihVSVdLR2Vz
dHVyZVR5cGUpZ2VzdHVyZSBzaG91bGRCZWdpbkF0UG9pbnQ6KENHUG8KICAgICAgICAgcmV0dXJu
IE5POwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBpZiAoX2Vs
ZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1l
bnRDb250ZXh0ID09IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbikKKyAgICAgICAgcmV0
dXJuIE5POworI2VuZGlmCisKICAgICAvLyBJZiB3ZSdyZSBjdXJyZW50bHkgZm9jdXNpbmcgYW4g
ZWRpdGFibGUgZWxlbWVudCwgb25seSBhbGxvdyB0aGUgc2VsZWN0aW9uIHRvIG1vdmUgd2l0aGlu
IHRoYXQgZm9jdXNlZCBlbGVtZW50LgogICAgIGlmIChzZWxmLmlzRm9jdXNpbmdFbGVtZW50KQog
ICAgICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQgJiYgX3Bv
c2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQtPmlzU2FtZUVsZW1lbnQoX2ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQpOwpAQCAtMjg5MCwxMCArMjg4MCw2IEBA
IC0gKHZvaWQpX3NpbmdsZVRhcElkZW50aWZpZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gWUVTOwogICAg
IF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmds
ZVRhcENvbW1pdCA9ICFfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkuZW5hYmxlZDsK
LQotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgIFtzZWxmIF9jYW5jZWxJbWFnZUV4
dHJhY3Rpb25JZk5lZWRlZEFmdGVyVG91Y2hBdDpnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbl07
Ci0jZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnko
V0tDb250ZW50VmlldyogY29udGVudFZpZXcpCkBAIC0zNjk4LDYgKzM2ODQsMTEgQEAgLSAoQk9P
TCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClz
ZW5kZXIKICAgICAgICAgcmV0dXJuIGJhc2VXcml0aW5nRGlyZWN0aW9uICE9IFdlYkNvcmU6Oldy
aXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OwogICAgIH0KIAorI2lmIEVOQUJMRShJTUFHRV9F
WFRSQUNUSU9OKQorICAgIGlmIChhY3Rpb24gPT0gV2ViS2l0OjppbWFnZUV4dHJhY3Rpb25BY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIGVkaXRvclN0YXRlLmlzQ29udGVudEVkaXRhYmxlOworI2Vu
ZGlmCisKICAgICByZXR1cm4gW3N1cGVyIGNhblBlcmZvcm1BY3Rpb246YWN0aW9uIHdpdGhTZW5k
ZXI6c2VuZGVyXTsKIH0KIApAQCAtNDQ3NSw3ICs0NDY2LDYgQEAgLSAodm9pZClfZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUKICAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVy
ZXNFbmFibGVkOk5PXTsKICAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
IF93a19jYW5jZWxdOwogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgIF9zdXBwcmVz
c0ltYWdlRXh0cmFjdGlvblRva2VuID0gbnVsbHB0cjsKICAgICBbc2VsZiBfY2FuY2VsSW1hZ2VF
eHRyYWN0aW9uXTsKICNlbmRpZgogfQpAQCAtODQ4NiwyMSArODQ3NiwxMiBAQCAtICh2b2lkKV9k
cmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJlcGFyZUZv
clNlc3Npb246KGlkCiAKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07
CiAKLSAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tDb250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRhaW5QdHIoc2Vzc2lvbiksIGNvbXBs
ZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIHsKKyAgICBhdXRvIHByZXBhcmVGb3JT
ZXNzaW9uID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIHNl
c3Npb24gPSByZXRhaW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbildIChCT09MIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKSB7CiAgICAgICAgIGF1
dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAgICBpZiAoIXN0cm9uZ1NlbGYp
CisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGRyYWdPcmlnaW4gPSBbc2Vzc2lv
biBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXTsKLSNpZiBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKLSAgICAgICAgW3N0cm9uZ1NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbklmTmVl
ZGVkQWZ0ZXJUb3VjaEF0OmRyYWdPcmlnaW5dOwotICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2lt
YWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OkFjdGl2
ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24g
ZmFpbGVkOiAlcCAoZGVmZXJyaW5nIHRvIGFjdGl2ZSBpbWFnZSBleHRyYWN0aW9uKSIsIHNlc3Np
b24uZ2V0KCkpOwotICAgICAgICAgICAgY29tcGxldGlvbigpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICBzdHJvbmdTZWxmLT5fZHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLnByZXBhcmVGb3JEcmFnU2Vzc2lvbihzZXNzaW9uLmdldCgpLCBjb21wbGV0
aW9uLmdldCgpKTsKICAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPnJlcXVlc3REcmFnU3RhcnQo
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGRyYWdPcmlnaW4pLCBXZWJDb3JlOjpyb3VuZGVkSW50
UG9pbnQoW3N0cm9uZ1NlbGYgY29udmVydFBvaW50OmRyYWdPcmlnaW4gdG9WaWV3OltzdHJvbmdT
ZWxmIHdpbmRvd11dKSwgW3N0cm9uZ1NlbGYgX2FsbG93ZWREcmFnU291cmNlQWN0aW9uc10pOwog
ICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiByZXF1ZXN0ZWQ6
ICVwIGF0IG9yaWdpbjogeyUuMGYsICUuMGZ9Iiwgc2Vzc2lvbi5nZXQoKSwgZHJhZ09yaWdpbi54
LCBkcmFnT3JpZ2luLnkpOwpAQCAtOTQyMywxOCArOTQwNCwxOCBAQCAtICh2b2lkKV93cml0ZVBy
b21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZDooV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50
SW5mbyYmKQogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKLS0gKHZvaWQpX2RvQWZ0
ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWJsb2NrCistICh2b2lk
KV9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjoodm9pZCheKShCT09MIHByb2NlZWRXaXRo
SW1hZ2VFeHRyYWN0aW9uKSlibG9jawogewotICAgIGlmIChfaW1hZ2VFeHRyYWN0aW9uU3RhdGUg
PT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6UGVuZGluZykKKyAgICBpZiAoX2hhc1Bl
bmRpbmdJbWFnZUV4dHJhY3Rpb24pCiAgICAgICAgIF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5k
aW5nSW1hZ2VFeHRyYWN0aW9uLmFwcGVuZChtYWtlQmxvY2tQdHIoYmxvY2spKTsKICAgICBlbHNl
Ci0gICAgICAgIGJsb2NrKCk7CisgICAgICAgIGJsb2NrKE5PKTsKIH0KIAotLSAodm9pZClfaW52
b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbgorLSAodm9p
ZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjoo
Qk9PTClwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogewogICAgIGZvciAoYXV0byBibG9jayA6
IHN0ZDo6ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rp
b24sIHsgfSkpCi0gICAgICAgIGJsb2NrKCk7CisgICAgICAgIGJsb2NrKHByb2NlZWRXaXRoSW1h
Z2VFeHRyYWN0aW9uKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQpA
QCAtOTkzMSwxOSArOTkxMiwxMiBAQCAtICh2b2lkKV9jb250ZXh0TWVudUludGVyYWN0aW9uOihV
SUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1cgogICAgIGlmICgh
c2VsZi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbihuaWwpOwogCi0gICAgYXV0byBnZXRDb25maWd1cmF0aW9u
QW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxm
KSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJhY3Rpb24pLCBjb21wbGV0aW9uID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CisgICAgYXV0byBnZXRDb25maWd1cmF0aW9uQW5kQ29u
dGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgaW50
ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJhY3Rpb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb24pXSAoQk9PTCBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJv
bmdTZWxmKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBb
aW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5nZXQoKV07Ci0jaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCi0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxJbWFnZUV4dHJh
Y3Rpb25JZk5lZWRlZEFmdGVyVG91Y2hBdDpwb3NpdGlvbl07Ci0gICAgICAgIGlmIChzdHJvbmdT
ZWxmLT5faW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0
ZTo6QWN0aXZlKSB7CisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVkV2l0aEltYWdl
RXh0cmFjdGlvbikgewogICAgICAgICAgICAgY29tcGxldGlvbihuaWwpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICBbc3Ryb25nU2VsZi0+X3dlYlZp
ZXcgX2RpZFNob3dDb250ZXh0TWVudV07CiAKQEAgLTk5NTEsNyArOTkyNSw3IEBAIC0gKHZvaWQp
X2NvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIGNvbmZpZ3VyCiAgICAgICAgIGlmIChOU051bWJlciAqdmFsdWUgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6d2Via2l0U2hvd0xpbmtQ
cmV2aWV3c1ByZWZlcmVuY2VLZXldKQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Nob3dMaW5r
UHJldmlld3MgPSB2YWx1ZS5ib29sVmFsdWU7CiAKLSAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHBv
c2l0aW9uKSB9OworICAgICAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
IHJlcXVlc3QgeyBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW2ludGVyYWN0aW9uIGxvY2F0aW9u
SW5WaWV3OnN0cm9uZ1NlbGYuZ2V0KCldKSB9OwogICAgICAgICByZXF1ZXN0LmluY2x1ZGVTbmFw
c2hvdCA9IHRydWU7CiAgICAgICAgIHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IgPSB0cnVl
OwogICAgICAgICByZXF1ZXN0LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9
ICFbc3Ryb25nU2VsZiBfc2hvdWxkVXNlQ29udGV4dE1lbnVzXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOGFiNDAyZGY5MDk0ZWNlZGVjMGQ2
NWZiYmMzMTA1ZTA1ZDAyYmJjYS4uNDM5NGNjNTc2MmY5NWJlYjgwZjAzNzBjM2YxODYwMGQ2N2Rk
NTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTcyNzAsOSArNzI3MCwxOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhJbWFnZUV4dHJh
Y3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0JiYgcmVzdWx0LCBjbwogICAgIH0KIAog
ICAgIGRvd25jYXN0PEhUTUxFbGVtZW50PigqZWxlbWVudFRvVXBkYXRlKS51cGRhdGVXaXRoSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0KFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBoaXRUZXN0UmVz
dWx0ID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgeworICAgICAgICBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHksCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsCisgICAgICAg
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCisgICAg
fSk7CisKKyAgICBhdXRvIG5vZGVBdExvY2F0aW9uID0gbWFrZVJlZlB0cihoaXRUZXN0UmVzdWx0
LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICBpZiAoIW5vZGVBdExvY2F0aW9uIHx8IG5vZGVB
dExvY2F0aW9uLT5zaGFkb3dIb3N0KCkgIT0gZWxlbWVudFRvVXBkYXRlKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIC8v
IEZJWE1FOiBIaXQtdGVzdCB3aXRoIGxvY2F0aW9uIGFuZCByZXR1cm4gd2hldGhlciBvciBub3Qg
dGhlcmUgaXMgb3ZlcmxheSB0ZXh0IGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4KLSAgICBjb21wbGV0
aW9uSGFuZGxlcih0cnVlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihIVE1MRWxlbWVudDo6aXNJ
bWFnZU92ZXJsYXlUZXh0KCpub2RlQXRMb2NhdGlvbikpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDZhMjk0ZWJkOTUxZDc4OTcwYjBlYmQ1ZGQzMTMw
YmI2ZDY3YjU3N2UuLjUyZDhmMWQ5MTdhOTdmOWI5M2E2ZTUxYzdiMmNiYjExZjg2ODBiYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC0yMTE3LDcgKzIxMTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmln
Rm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbQogCiB2b2lk
IFdlYlBhZ2U6OnNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKGNv
bnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250
ZW50T25seSB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVl
c3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRP
bmx5IH07CiAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBoaXRUeXBlKTsKICAgICBhdXRvKiBoaXRO
b2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmIChoaXROb2RlICYmIGhpdE5vZGUtPnJl
bmRlcmVyKCkpCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBzdGF0aWMgdm9pZCBib3VuZHNQb3NpdGlv
bkluZm9ybWF0aW9uKFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEludGVyYWN0aW9uSW5mb3JtYQog
ICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFn
ZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQor
c3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IE5vZGUqIGlubmVyTm9uU2hhcmVkTm9kZSwgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24mIGluZm8pCiB7CiAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBudWxscHRy
OwogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkgJiYgZWxlbWVudC5yZW5kZXJlcigpLT5pc1Jl
bmRlckltYWdlKCkpCkBAIC0yNzMyLDcgKzI3MzIsMTQgQEAgc3RhdGljIHZvaWQgZWxlbWVudFBv
c2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
SW4KICAgICB9CiAKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkp
IHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAgICAgIGJvb2wg
c2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZvcm1hdGlvbiA9IHJlbmRlcmVyLT5pc1JlbmRl
ckltYWdlKCk7CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgICAgIGlmIChIVE1M
RWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCppbm5lck5vblNoYXJlZE5vZGUpKQorICAgICAg
ICAgICAgc2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZvcm1hdGlvbiA9IGZhbHNlOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGlubmVyTm9uU2hhcmVkTm9kZSk7CisjZW5kaWYKKyAg
ICAgICAgaWYgKHNob3VsZENvbGxlY3RJbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pCiAgICAgICAg
ICAgICBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24ocGFnZSwgZWxlbWVudCwgcmVxdWVzdCwgaW5m
byk7CiAgICAgICAgIGJvdW5kc1Bvc2l0aW9uSW5mb3JtYXRpb24oKnJlbmRlcmVyLCBpbmZvKTsK
ICAgICB9CkBAIC0yNzQyLDcgKzI3NDksNyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25J
bmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbgogICAg
IAogc3RhdGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdl
LCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7Ci0gICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxv
d1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGls
ZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1
ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJh
bWVDb250ZW50T25seSB9OwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1
ZXN0LnBvaW50LCBoaXRUeXBlKTsKICAgICBOb2RlKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9k
ZSgpOwogCkBAIC0yOTE1LDExICsyOTIyLDExIEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAK
ICAgICBhdXRvJiBldmVudEhhbmRsZXIgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpOwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBl
PiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWxs
b3dGcmFtZVNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1l
Q29udGVudE9ubHkgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRGb3JDdXJzb3Ig
PSBldmVudEhhbmRsZXIuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVxdWVzdC5wb2ludCwgaGl0VHlw
ZSk7Ci0gICAgaWYgKGF1dG8qIGhpdEZyYW1lID0gaGl0VGVzdFJlc3VsdEZvckN1cnNvci5pbm5l
ck5vZGVGcmFtZSgpKSB7Ci0gICAgICAgIGluZm8uY3Vyc29yID0gaGl0RnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnNlbGVjdEN1cnNvcihoaXRUZXN0UmVzdWx0Rm9yQ3Vyc29yLCBmYWxzZSk7CisgICAg
YXV0byBoaXRUZXN0UmVzdWx0ID0gZXZlbnRIYW5kbGVyLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJl
cXVlc3QucG9pbnQsIGhpdFR5cGUpOworICAgIGlmIChhdXRvKiBoaXRGcmFtZSA9IGhpdFRlc3RS
ZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSkgeworICAgICAgICBpbmZvLmN1cnNvciA9IGhpdEZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zZWxlY3RDdXJzb3IoaGl0VGVzdFJlc3VsdCwgZmFsc2UpOwogICAg
ICAgICBpZiAocmVxdWVzdC5pbmNsdWRlQ2FyZXRDb250ZXh0KQotICAgICAgICAgICAgcG9wdWxh
dGVDYXJldENvbnRleHQoaGl0VGVzdFJlc3VsdEZvckN1cnNvciwgcmVxdWVzdCwgaW5mbyk7Cisg
ICAgICAgICAgICBwb3B1bGF0ZUNhcmV0Q29udGV4dChoaXRUZXN0UmVzdWx0LCByZXF1ZXN0LCBp
bmZvKTsKICAgICB9CiAKICAgICBpZiAobV9mb2N1c2VkRWxlbWVudCkKQEAgLTI5MjcsNyArMjkz
NCw3IEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9u
SW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAKICAgICBpZiAoaXM8RWxlbWVudD4obm9k
ZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKSkgewogICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93
bmNhc3Q8RWxlbWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyk7Ci0gICAgICAgIGVs
ZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKCp0aGlzLCBlbGVtZW50LCByZXF1ZXN0LCBpbmZvKTsK
KyAgICAgICAgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oKnRoaXMsIGVsZW1lbnQsIHJlcXVl
c3QsIGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCksIGluZm8pOwogCiAgICAgICAg
IGlmIChpbmZvLmlzTGluayAmJiAhaW5mby5pc0ltYWdlICYmIHJlcXVlc3QuaW5jbHVkZVNuYXBz
aG90KQogICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9y
Tm9kZShlbGVtZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422392</attachid>
            <date>2021-03-05 12:13:37 -0800</date>
            <delta_ts>2021-03-05 13:20:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222811-20210305121336.patch</filename>
            <type>text/plain</type>
            <size>22893</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNzljOGQxNzlhNDdm
ZTMyNmRjOGEzNGJlZTVlYTNlYWYwOTU5Yy4uMjQ5NjlhMjA5YjJjZjIwZTA5MmMyMmI0MDlkNDAz
Y2EzMDcyZjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjaGVjayB3
aGV0aGVyIGEgZ2l2ZW4gYE5vZGVgIGlzIGEgdGV4dCBub2RlIGluc2lkZSBhbiBpbWFnZSBvdmVy
bGF5LiBTZWUgV2ViS2l0IENoYW5nZUxvZworICAgICAgICBmb3IgbW9yZSBkZXRhaWwuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50Ojppc0ltYWdlT3ZlcmxheVRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoK
KwogMjAyMS0wMy0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICB3aW5kb3cgcHJveHkgb2YgZGV0YWNoZWQgaWZyYW1lIGRvZXNuJ3QgcmVzcGVjdCB1
cGRhdGVzIHRvIGdsb2JhbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzQxZWFjNTgwM2QyZTMwMmRmMmEx
NzU5N2FlMTRiZTczM2Q4MjkwZC4uYTY2NTlhZDIxY2U0YTliZTI2ZTNkMjM1NTczNGY1ZWYyMzll
YTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAyMS0wMy0wNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgYWRk
aXRpb25hbCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIGltYWdlIG92ZXJsYXlzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzczMjAzNzc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBhY2Nlc3NpYmxl
IGltYWdlIGV4dHJhY3Rpb24uIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKFdl
YktpdDo6U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuOjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW46On5T
dXBwcmVzc0ludGVyYWN0aW9uVG9rZW4pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBgU3Vw
cHJlc3NJbnRlcmFjdGlvblRva2VuYCwgYWxvbmcgd2l0aCBpdHMgb25seSB1c2UgYXMgYSBtZW1i
ZXIgb24gYFdLQ29udGVudFZpZXdgLiBUaGlzIHdhcyB1c2VkIHRvCisgICAgICAgIHRlbXBvcmFy
aWx5IHN1cHByZXNzIHRoZSBpbWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9uIHdoZW4gZWRpdGlu
ZywgYnV0IGlzIG5vdyBubyBsb25nZXIgbmVjZXNzYXJ5LCBzaW5jZSB3ZSdyZQorICAgICAgICBy
ZW1vdmluZyBhbGwgZGVwZW5kZW5jZSBvbiB0aGlzIGludGVyYWN0aW9uIG9iamVjdC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHNldElzRWRpdGFibGU6XSk6CisKKyAgICAgICAgUmVtb3ZlIGBf
c3VwcHJlc3NJbWFnZUV4dHJhY3Rpb25Ub2tlbmAuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBoYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHRleHRJbnRlcmFjdGlvbkdlc3R1cmU6c2hvdWxkQmVnaW5BdFBvaW50Ol0pOgorCisgICAg
ICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBtYWtlIHRoZSByZWd1bGFyIHRleHQgaW50ZXJhY3Rpb24g
ZHVjayBpbiBmYXZvciBvZiB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFjdGlvbiBhZnRlcgor
ICAgICAgICB0aGlzIHBhdGNoLCBzaW5jZSB0aGUgZm9ybWVyIHdpbGwgYmUgdXNlZCBmb3IgYm90
aC4gSG93ZXZlciwgd2UgZG8gbmVlZCB0byB0ZW1wb3JhcmlseSBzdXBwcmVzcyByZWd1bGFyIHRl
eHQKKyAgICAgICAgaW50ZXJhY3Rpb24gd2hpbGUgaW1hZ2UgZXh0cmFjdGlvbiBpcyBzdGlsbCBw
ZW5kaW5nLCB0byBhdm9pZCBwcmVtYXR1cmVseSBzZWxlY3RpbmcgdGhlIGVudGlyZSBpbWFnZSBl
bGVtZW50LgorCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIGtlZXAgdHJhY2sgb2YgdGhlIGVsZW1l
bnQgcGVuZGluZyBpbWFnZSBleHRyYWN0aW9uIChgX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uYCksIGFuZCBhdm9pZAorICAgICAgICBhbGxvd2luZyB0ZXh0IGludGVyYWN0aW9ucyB0byBi
ZWdpbiBpZiB3ZSdyZSBvdmVyIHRoaXMgZXhhY3QgZWxlbWVudC4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9zaW5nbGVUYXBJZGVudGlmaWVkOl0pOgorCisgICAgICAgIFdlIGRvbid0IG5l
ZWQgdG8gZXhwbGljaXRseSBjYW5jZWwgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50ZXJhY3Rpb24g
b24gc2luZ2xlIHRhcCBhbnltb3JlOyB0aGlzIGJlaGF2aW9yIHdpbGwKKyAgICAgICAgYXV0b21h
dGljYWxseSBmYWxsIG91dCBvZiB1c2luZyBkZWZhdWx0IHRleHQgaW50ZXJhY3Rpb25zIGZvciBp
bWFnZSBleHRyYWN0aW9uLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Ry
YWdJbnRlcmFjdGlvbjpwcmVwYXJlRm9yU2Vzc2lvbjpjb21wbGV0aW9uOl0pOgorCisgICAgICAg
IFJlbW92ZSBleHBsaWNpdCBpbWFnZSBleHRyYWN0aW9uIGNhbmNlbGxhdGlvbiBoZXJlIGFzIHdl
bGwsIGFuZCBpbnN0ZWFkIGJhaWwgZnJvbSB0aGUgZHJhZyBvbmx5IGlmIHdlJ3JlIGFib3V0Cisg
ICAgICAgIHRvIHByb2NlZWQgd2l0aCB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBnZXN0dXJlICh3aGlj
aCBpcyBpbmRpY2F0ZWQgYnkgdGhlIGFyZ3VtZW50IHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIp
LgorICAgICAgICBTZWUgY29tbWVudCBiZWxvdy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpdKToKKworICAgICAgICBBZGQgYSBgQk9P
TGAgZmxhZyB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGJsb2NrIGhlcmUsIHRvIGRldGVybWlu
ZSB3aGV0aGVyIG9yIG5vdCB3ZSdsbCB3YW50IHRvIGltbWVkaWF0ZWx5CisgICAgICAgIHByb2Nl
ZWQgd2l0aCBpbWFnZSBleHRyYWN0aW9uLiBUaGUgdmFsdWUgb2YgdGhpcyBmbGFnIHdpbGwgYmUg
ZGV0ZXJtaW5lZCBieSB0aGUgaGl0LXRlc3QgYWZ0ZXIgdXBkYXRpbmcgdGhlIHBhZ2UKKyAgICAg
ICAgd2l0aCBpbWFnZSBleHRyYWN0aW9uIHJlc3VsdHMgaW4gYFdlYlBhZ2U6OnVwZGF0ZVdpdGhJ
bWFnZUV4dHJhY3Rpb25SZXN1bHRgLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludm9r
ZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJhdGlv
bkZvck1lbnVBdExvY2F0aW9uOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb25d
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQp
OgorCisgICAgICAgIFJlbW92ZSBhIEZJWE1FIGFuZCBpbXBsZW1lbnQgaGl0LXRlc3RpbmcgbG9n
aWMsIHRvIHJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gbG9jYXRpb24gaGl0LXRlc3Rz
IHRvIHRoZQorICAgICAgICBpbWFnZSBvdmVybGF5IHdlJ3ZlIGp1c3QgaW5qZWN0ZWQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24pOgorCisg
ICAgICAgIEF2b2lkIGV4dHJhY3RpbmcgaW1hZ2UgZGF0YSBmb3IgYSBwb3NpdGlvbiBpbmZvcm1h
dGlvbiByZXF1ZXN0LCBpZiB0aGUgaGl0LXRlc3RlZCBub2RlIGlzIGFjdHVhbGx5IGEgdGV4dCBu
b2RlCisgICAgICAgIGluIGFuIGltYWdlIG92ZXJsYXksIGluc3RlYWQgb2YgYW4gaW1hZ2UuCisK
KyAgICAgICAgKFdlYktpdDo6c2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24pOgorCisgICAgICAgIEFsbG93
IHRleHQgaW50ZXJhY3Rpb25zIHRvIGJlZ2luIGluIHVzZXItYWdlbnQgc2hhZG93IHJvb3RzLiBU
aGlzIG1hdGNoZXMgYmVoYXZpb3Igb24gbWFjT1MsIGFuZCB3YXMKKyAgICAgICAgKHByZXN1bWFi
bHkpIGluaXRpYWxseSBkaXNhbGxvd2VkIG9uIGlPUyB0byBhdm9pZCBhY3RpdmF0aW5nIHRoZSBl
ZGl0YWJsZSB0ZXh0IGludGVyYWN0aW9uCisgICAgICAgIChgVUlXS1RleHRJbnRlcmFjdGlvbkFz
c2lzdGFudGApLCBhcyBvcHBvc2VkIHRvIGJsb2NrIHRleHQgc2VsZWN0aW9uIGludGVyYWN0aW9u
cywgd2hlbiBsb25nIHByZXNzaW5nIHRleHQKKyAgICAgICAgaW5zaWRlIHRleHRhcmVhcyBhbmQg
dGV4dCBmaWVsZHMuIEhvd2V2ZXIsIHNpbmNlIHdlIG9ubHkgdXNlIHRoZSBub3JtYWwgdGV4dCBp
bnRlcmFjdGlvbiBhc3Npc3RhbnQgbm93IGZvciBib3RoCisgICAgICAgIG5vbi1lZGl0YWJsZSBh
bmQgZWRpdGFibGUgdGV4dCwgdGhpcyBkaXN0aW5jdGlvbiBubyBsb25nZXIgbWF0dGVycy4KKwog
MjAyMS0wMy0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBBZGQgc3VwcG9ydCBmb3IgYSBuZXcgaW1hZ2UtZXh0cmFjdGlvbi1yZWxhdGVk
IHJlc3BvbmRlciBhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggOTYz
OTM5NmI5Y2M4OTBiNmQxNGVmYWRmMmQ1MDNlYzEyYTkwYmMwYS4uYzA5MzBmYTNkOWM4OGM1MmRm
MDIxNDM0ZGFiMGUwN2RmN2U2MzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTEyMzQsNiArMTIzNCwyOSBAQCBib29sIEhUTUxFbGVtZW50OjpoYXNJbWFnZU92ZXJsYXko
KSBjb25zdAogICAgIHJldHVybiBzaGFkb3dSb290LT5oYXNFbGVtZW50V2l0aElkKCppbWFnZU92
ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpLmltcGwoKSk7CiB9CiAKK2Jvb2wgSFRNTEVsZW1lbnQ6
OmlzSW1hZ2VPdmVybGF5VGV4dChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmICghaXM8VGV4
dD4obm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2hhZG93SG9zdCA9
IG5vZGUuc2hhZG93SG9zdCgpOworICAgIGlmICghc2hhZG93SG9zdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byB1c2VyQWdlbnRTaGFkb3dSb290ID0gc2hhZG93SG9zdC0+dXNl
ckFnZW50U2hhZG93Um9vdCgpOworICAgIGlmICghdXNlckFnZW50U2hhZG93Um9vdCkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxlbWVudD4o
KnVzZXJBZ2VudFNoYWRvd1Jvb3QpKSB7CisgICAgICAgIGlmIChjaGlsZC5nZXRJZEF0dHJpYnV0
ZSgpID09IGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICByZXR1
cm4gY2hpbGQuY29udGFpbnMoJm5vZGUpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogCiB2b2lkIEhUTUxFbGVtZW50Ojp1cGRh
dGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA2ODg3NzE3ZjNhNDFkZmQ0OWY2ZDlm
YWQyZWEzMDYyNGI4ODE2ZGQyLi45Nzk0MDZhNjE5MWVhYWM2YTAxMTUxNTVlMGQ0ZWY2NDczNzg0
ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KGNvbnN0IE5vZGUmIHRhcmdldE5vZGUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
bkJlZm9yZVVwZGF0ZSk7CiAgICAgYm9vbCBoYXNJbWFnZU92ZXJsYXkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0ltYWdlT3ZlcmxheVRleHQoY29uc3QgTm9kZSYp
OwogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCA3MTFkNDBkZjYyMzM1NzU2ZjhiMTQ1NjM0ZTFmNzUxMmI2NzEw
MDYwLi4wYzA2ODA2MDFhNjc3ODJiY2ZlMWI4NDIyZjQwNjY2YzQ1ZmI2ZWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCkBAIC0yMjEsMzIgKzIyMSw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAg
ICAgQ0dSZWN0IHRleHRMYXN0UmVjdDsKIH07CiAKLWNsYXNzIFN1cHByZXNzSW50ZXJhY3Rpb25U
b2tlbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VwcHJlc3NJbnRlcmFjdGlvblRva2Vu
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3VwcHJlc3NJbnRlcmFj
dGlvblRva2VuKFdLQ29udGVudFZpZXcgKnZpZXcsIE5TT2JqZWN0PFVJSW50ZXJhY3Rpb24+ICpp
bnRlcmFjdGlvbikKLSAgICAgICAgOiBtX3ZpZXcodmlldykKLSAgICAgICAgLCBtX2ludGVyYWN0
aW9uKGludGVyYWN0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZpZXcpOwotICAgICAgICBB
U1NFUlQoaW50ZXJhY3Rpb24pOwotICAgICAgICBpZiAoaW50ZXJhY3Rpb24pCi0gICAgICAgICAg
ICBbdmlldyByZW1vdmVJbnRlcmFjdGlvbjppbnRlcmFjdGlvbl07Ci0gICAgfQotCi0gICAgflN1
cHByZXNzSW50ZXJhY3Rpb25Ub2tlbigpCi0gICAgewotICAgICAgICBpZiAoIW1fdmlldyB8fCAh
bV9pbnRlcmFjdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBbbV92aWV3IGFk
ZEludGVyYWN0aW9uOm1faW50ZXJhY3Rpb24uZ2V0KCkuZ2V0KCldOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PiBtX3ZpZXc7Ci0gICAgV2Vha09iakNQ
dHI8TlNPYmplY3Q8VUlJbnRlcmFjdGlvbj4+IG1faW50ZXJhY3Rpb247Ci19OwotCiB9CiAKIEBj
bGFzcyBXS0ZvY3VzZWRFbGVtZW50SW5mbzsKQEAgLTQ4OCwxMCArNDYyLDkgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBSZXRhaW5QdHI8V0tJbWFnZUV4dHJh
Y3Rpb25HZXN0dXJlUmVjb2duaXplcj4gX2ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
OwogICAgIFJldGFpblB0cjxVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyPiBfaW1hZ2VFeHRy
YWN0aW9uVGltZW91dEdlc3R1cmVSZWNvZ25pemVyOwotICAgIFdlYktpdDo6SW1hZ2VFeHRyYWN0
aW9uU3RhdGUgX2ltYWdlRXh0cmFjdGlvblN0YXRlOwotICAgIENHUmVjdCBfaW1hZ2VFeHRyYWN0
aW9uSW50ZXJhY3Rpb25Cb3VuZHM7Ci0gICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoKT4+IF9hY3Rp
b25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJLaXQ6OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbj4gX3N1cHByZXNzSW1hZ2VFeHRy
YWN0aW9uVG9rZW47CisgICAgQk9PTCBfaGFzUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKKyAgICBP
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOworICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKEJPT0wpPj4gX2FjdGlvbnNUb1BlcmZv
cm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb247CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAg
ICAgUmV0YWluUHRyPFVJTWVudT4gX2ltYWdlRXh0cmFjdGlvbkNvbnRleHRNZW51OwogI2VuZGlm
IC8vIFVTRShVSUNPTlRFWFRNRU5VKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggODdjNmQxMzhlYmU1NmE2
MTA1YmE4NzI5NzUwMjkwZGY4ZmU2YjM2Mi4uMzRjZGZiNTM3MTY1NzUxZDkzMmM4ZjMyYzYxYzEx
YTM4MTJmYmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMzA1LDEyICsxMzA1LDYgQEAgLSAoQk9P
TClzZXRJc0VkaXRhYmxlOihCT09MKWlzRWRpdGFibGUKICAgICAgICAgcmV0dXJuIE5POwogCiAg
ICAgX2lzRWRpdGFibGUgPSBpc0VkaXRhYmxlOwotCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJ
T04pCi0gICAgaWYgKHNlbGYuX2ltYWdlRXh0cmFjdGlvbkVuYWJsZWQgJiYgKCFfaXNCbHVycmlu
Z0ZvY3VzZWRFbGVtZW50IHx8ICFfaXNDaGFuZ2luZ0ZvY3VzKSkKLSAgICAgICAgX3N1cHByZXNz
SW1hZ2VFeHRyYWN0aW9uVG9rZW4gPSBpc0VkaXRhYmxlID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OlN1
cHByZXNzSW50ZXJhY3Rpb25Ub2tlbj4oc2VsZiwgX2ltYWdlRXh0cmFjdGlvbkludGVyYWN0aW9u
LmdldCgpKSA6IG51bGxwdHI7Ci0jZW5kaWYKLQogICAgIHJldHVybiBZRVM7CiB9CiAKQEAgLTI2
NjQsMTMgKzI2NTgsNiBAQCAtIChCT09MKWhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQKICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29ucykK
ICAgICAgICAgcmV0dXJuIE5POwogCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAg
aWYgKFtzZWxmIF9pbWFnZUV4dHJhY3Rpb25TaG91bGRQcmV2ZW50VGV4dEludGVyYWN0aW9uQXRQ
b2ludDpwb2ludF0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIFtzZWxmIF9jYW5jZWxJbWFn
ZUV4dHJhY3Rpb25dOwotI2VuZGlmCi0KICAgICBpZiAoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFi
bGVkKQogICAgICAgICByZXR1cm4gTk87CiAKQEAgLTI2NzgsNiArMjY2NSwxMSBAQCAtIChCT09M
KWhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICBpZiAoIVtz
ZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdKQogICAgICAg
ICByZXR1cm4gTk87CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBpZiAoX2Vs
ZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1l
bnRDb250ZXh0ID09IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbikKKyAgICAgICAgcmV0
dXJuIE5POworI2VuZGlmCisKICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNTZWxl
Y3RhYmxlOwogfQogCkBAIC0yNzE2LDEzICsyNzA4LDYgQEAgLSAoQk9PTCl0ZXh0SW50ZXJhY3Rp
b25HZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZSBzaG91bGRCZWdpbkF0UG9pbnQ6KENH
UG8KICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29ucykKICAgICAgICAg
cmV0dXJuIE5POwogCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAgaWYgKFtzZWxm
IF9pbWFnZUV4dHJhY3Rpb25TaG91bGRQcmV2ZW50VGV4dEludGVyYWN0aW9uQXRQb2ludDpwb2lu
dF0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIFtzZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rp
b25dOwotI2VuZGlmCi0KICAgICBpZiAoIXNlbGYuaXNGb2N1c2luZ0VsZW1lbnQpIHsKICAgICAg
ICAgaWYgKGdlc3R1cmUgPT0gVUlXS0dlc3R1cmVEb3VibGVUYXApIHsKICAgICAgICAgICAgIC8v
IERvbid0IGFsbG93IGRvdWJsZSB0YXAgdGV4dCBnZXN0dXJlcyBpbiBub25lZGl0YWJsZSBjb250
ZW50LgpAQCAtMjc1OCw2ICsyNzQzLDExIEBAIC0gKEJPT0wpdGV4dEludGVyYWN0aW9uR2VzdHVy
ZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxkQmVnaW5BdFBvaW50OihDR1BvCiAgICAg
ICAgIHJldHVybiBOTzsKICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisg
ICAgaWYgKF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiAmJiBfcG9zaXRpb25JbmZvcm1h
dGlvbi5lbGVtZW50Q29udGV4dCA9PSBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24pCisg
ICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgorCiAgICAgLy8gSWYgd2UncmUgY3VycmVudGx5IGZv
Y3VzaW5nIGFuIGVkaXRhYmxlIGVsZW1lbnQsIG9ubHkgYWxsb3cgdGhlIHNlbGVjdGlvbiB0byBt
b3ZlIHdpdGhpbiB0aGF0IGZvY3VzZWQgZWxlbWVudC4KICAgICBpZiAoc2VsZi5pc0ZvY3VzaW5n
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1lbnRDb250
ZXh0ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0LT5pc1NhbWVFbGVtZW50
KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0KTsKQEAgLTI4OTAsMTAg
KzI4ODAsNiBAQCAtICh2b2lkKV9zaW5nbGVUYXBJZGVudGlmaWVkOihVSVRhcEdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9
IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogICAgIF9pc0V4cGVjdGlu
Z0Zhc3RTaW5nbGVUYXBDb21taXQgPSAhX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
LmVuYWJsZWQ7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBbc2VsZiBfY2Fu
Y2VsSW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWRBZnRlclRvdWNoQXQ6Z2VzdHVyZVJlY29nbml6ZXIu
bG9jYXRpb25dOwotI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElm
TmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQpAQCAtNDQ4MCw3ICs0NDY2LDYg
QEAgLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUKICAgICBbc2Vs
ZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5PXTsKICAgICBbX3R3b0ZpbmdlckRvdWJs
ZVRhcEdlc3R1cmVSZWNvZ25pemVyIF93a19jYW5jZWxdOwogI2lmIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQotICAgIF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuID0gbnVsbHB0cjsKICAg
ICBbc2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsKICNlbmRpZgogfQpAQCAtODQ5MSwyMSAr
ODQ3NiwxMiBAQCAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkCiAKICAgICBbc2VsZiBjbGVhblVwRHJh
Z1NvdXJjZVNlc3Npb25TdGF0ZV07CiAKLSAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dl
YWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRh
aW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIHsK
KyAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRhaW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRp
b24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIChCT09MIHByb2NlZWRXaXRoSW1hZ2VFeHRy
YWN0aW9uKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwotICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVk
V2l0aEltYWdlRXh0cmFjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRv
IGRyYWdPcmlnaW4gPSBbc2Vzc2lvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXTsK
LSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICAgICAgW3N0cm9uZ1NlbGYgX2NhbmNl
bEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJUb3VjaEF0OmRyYWdPcmlnaW5dOwotICAgICAg
ICBpZiAoc3Ryb25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6SW1hZ2VF
eHRyYWN0aW9uU3RhdGU6OkFjdGl2ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0Fu
ZERyb3AsICJEcmFnIHNlc3Npb24gZmFpbGVkOiAlcCAoZGVmZXJyaW5nIHRvIGFjdGl2ZSBpbWFn
ZSBleHRyYWN0aW9uKSIsIHNlc3Npb24uZ2V0KCkpOwotICAgICAgICAgICAgY29tcGxldGlvbigp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICBzdHJv
bmdTZWxmLT5fZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLnByZXBhcmVGb3JEcmFnU2Vzc2lvbihz
ZXNzaW9uLmdldCgpLCBjb21wbGV0aW9uLmdldCgpKTsKICAgICAgICAgc3Ryb25nU2VsZi0+X3Bh
Z2UtPnJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGRyYWdPcmlnaW4p
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3N0cm9uZ1NlbGYgY29udmVydFBvaW50OmRyYWdP
cmlnaW4gdG9WaWV3OltzdHJvbmdTZWxmIHdpbmRvd11dKSwgW3N0cm9uZ1NlbGYgX2FsbG93ZWRE
cmFnU291cmNlQWN0aW9uc10pOwogICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRy
YWcgc2Vzc2lvbiByZXF1ZXN0ZWQ6ICVwIGF0IG9yaWdpbjogeyUuMGYsICUuMGZ9Iiwgc2Vzc2lv
bi5nZXQoKSwgZHJhZ09yaWdpbi54LCBkcmFnT3JpZ2luLnkpOwpAQCAtOTQyOCwxOCArOTQwNCwx
OCBAQCAtICh2b2lkKV93cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZDooV2ViQ29y
ZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKQogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJ
T04pCiAKLS0gKHZvaWQpX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOihkaXNwYXRjaF9i
bG9ja190KWJsb2NrCistICh2b2lkKV9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjoodm9p
ZCheKShCT09MIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKSlibG9jawogewotICAgIGlmIChf
aW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6UGVu
ZGluZykKKyAgICBpZiAoX2hhc1BlbmRpbmdJbWFnZUV4dHJhY3Rpb24pCiAgICAgICAgIF9hY3Rp
b25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uLmFwcGVuZChtYWtlQmxvY2tQ
dHIoYmxvY2spKTsKICAgICBlbHNlCi0gICAgICAgIGJsb2NrKCk7CisgICAgICAgIGJsb2NrKE5P
KTsKIH0KIAotLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0lt
YWdlRXh0cmFjdGlvbgorLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVu
ZGluZ0ltYWdlRXh0cmFjdGlvbjooQk9PTClwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogewog
ICAgIGZvciAoYXV0byBibG9jayA6IHN0ZDo6ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZvcm1BZnRl
clBlbmRpbmdJbWFnZUV4dHJhY3Rpb24sIHsgfSkpCi0gICAgICAgIGJsb2NrKCk7CisgICAgICAg
IGJsb2NrKHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShJTUFHRV9FWFRSQUNUSU9OKQpAQCAtOTkzNiwxOSArOTkxMiwxMiBAQCAtICh2b2lkKV9jb250
ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBjb25maWd1cgogICAgIGlmICghc2VsZi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2xvbmdQcmVz
c0FjdGlvbnNFbmFibGVkKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbihuaWwpOwogCi0gICAg
YXV0byBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0
cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJhY3Rp
b24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CisgICAgYXV0byBn
ZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0Nv
bnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJhY3Rpb24pLCBj
b21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoQk9PTCBwcm9jZWVkV2l0aElt
YWdlRXh0cmFjdGlvbikgewogICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQo
KTsKLSAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGF1dG8gcG9zaXRpb24gPSBbaW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2Vs
Zi5nZXQoKV07Ci0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAgICAgIFtzdHJvbmdT
ZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rpb25JZk5lZWRlZEFmdGVyVG91Y2hBdDpwb3NpdGlvbl07
Ci0gICAgICAgIGlmIChzdHJvbmdTZWxmLT5faW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0
OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6QWN0aXZlKSB7CisgICAgICAgIGlmICghc3Ryb25nU2Vs
ZiB8fCBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAgICAgICAgICAgY29tcGxldGlv
bihuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAg
ICBbc3Ryb25nU2VsZi0+X3dlYlZpZXcgX2RpZFNob3dDb250ZXh0TWVudV07CiAKQEAgLTk5NTYs
NyArOTkyNSw3IEBAIC0gKHZvaWQpX2NvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1l
bnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyCiAgICAgICAgIGlmIChOU051bWJl
ciAqdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RG
b3JLZXk6d2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVuY2VLZXldKQogICAgICAgICAgICAg
c3Ryb25nU2VsZi0+X3Nob3dMaW5rUHJldmlld3MgPSB2YWx1ZS5ib29sVmFsdWU7CiAKLSAgICAg
ICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KHBvc2l0aW9uKSB9OworICAgICAgICBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QgeyBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
W2ludGVyYWN0aW9uIGxvY2F0aW9uSW5WaWV3OnN0cm9uZ1NlbGYuZ2V0KCldKSB9OwogICAgICAg
ICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9IHRydWU7CiAgICAgICAgIHJlcXVlc3QuaW5jbHVk
ZUxpbmtJbmRpY2F0b3IgPSB0cnVlOwogICAgICAgICByZXF1ZXN0LmxpbmtJbmRpY2F0b3JTaG91
bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFbc3Ryb25nU2VsZiBfc2hvdWxkVXNlQ29udGV4dE1lbnVz
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
OGFiNDAyZGY5MDk0ZWNlZGVjMGQ2NWZiYmMzMTA1ZTA1ZDAyYmJjYS4uNDM5NGNjNTc2MmY5NWJl
YjgwZjAzNzBjM2YxODYwMGQ2N2RkNTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcyNzAsOSArNzI3MCwxOSBAQCB2b2lkIFdlYlBhZ2U6
OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0JiYg
cmVzdWx0LCBjbwogICAgIH0KIAogICAgIGRvd25jYXN0PEhUTUxFbGVtZW50PigqZWxlbWVudFRv
VXBkYXRlKS51cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KFdURk1vdmUocmVzdWx0KSk7
CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZXZlbnRI
YW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwg
eworICAgICAgICBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksCisgICAgICAgIEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUsCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZy
YW1lQ29udGVudE9ubHksCisgICAgfSk7CisKKyAgICBhdXRvIG5vZGVBdExvY2F0aW9uID0gbWFr
ZVJlZlB0cihoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICBpZiAoIW5v
ZGVBdExvY2F0aW9uIHx8IG5vZGVBdExvY2F0aW9uLT5zaGFkb3dIb3N0KCkgIT0gZWxlbWVudFRv
VXBkYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIC8vIEZJWE1FOiBIaXQtdGVzdCB3aXRoIGxvY2F0aW9uIGFuZCBy
ZXR1cm4gd2hldGhlciBvciBub3QgdGhlcmUgaXMgb3ZlcmxheSB0ZXh0IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbi4KLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCpub2RlQXRMb2NhdGlvbikpOwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDZhMjk0ZWJk
OTUxZDc4OTcwYjBlYmQ1ZGQzMTMwYmI2ZDY3YjU3N2UuLjUyZDhmMWQ5MTdhOTdmOWI5M2E2ZTUx
YzdiMmNiYjExZjg2ODBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTE3LDcgKzIxMTcsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVj
dCwgY29uc3QgRnJhbQogCiB2b2lkIFdlYlBhZ2U6OnNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVj
dGluZ1RleHRBdExvY2F0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBjb25zdGV4
cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRl
c3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVl
c3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93
VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8
SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNp
YmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBoaXRU
eXBlKTsKICAgICBhdXRvKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICho
aXROb2RlICYmIGhpdE5vZGUtPnJlbmRlcmVyKCkpCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBzdGF0
aWMgdm9pZCBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IEludGVyYWN0aW9uSW5mb3JtYQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0
aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJiBpbmZvKQorc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRp
b24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5vZGUqIGlubmVyTm9uU2hhcmVkTm9kZSwg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7CiAgICAgRWxlbWVudCog
bGlua0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkgJiYgZWxl
bWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCkBAIC0yNzMyLDcgKzI3MzIsMTQgQEAg
c3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgSW4KICAgICB9CiAKICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklt
YWdlKCkpCisgICAgICAgIGJvb2wgc2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZvcm1hdGlv
biA9IHJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCk7CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJ
T04pCisgICAgICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCppbm5lck5v
blNoYXJlZE5vZGUpKQorICAgICAgICAgICAgc2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZv
cm1hdGlvbiA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGlubmVyTm9uU2hh
cmVkTm9kZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKHNob3VsZENvbGxlY3RJbWFnZVBvc2l0aW9u
SW5mb3JtYXRpb24pCiAgICAgICAgICAgICBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24ocGFnZSwg
ZWxlbWVudCwgcmVxdWVzdCwgaW5mbyk7CiAgICAgICAgIGJvdW5kc1Bvc2l0aW9uSW5mb3JtYXRp
b24oKnJlbmRlcmVyLCBpbmZvKTsKICAgICB9CkBAIC0yNzQyLDcgKzI3NDksNyBAQCBzdGF0aWMg
dm9pZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBJbgogICAgIAogc3RhdGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZv
cm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCYgcmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7Ci0g
ICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5
cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6
OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OwogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRU
ZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBlKTsKICAgICBOb2RlKiBoaXRO
b2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogCkBAIC0yOTE1LDExICsyOTIyLDExIEBAIEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24o
Y29uc3QgSW50ZXJhY3Rpb25JCiAKICAgICBhdXRvJiBldmVudEhhbmRsZXIgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpOwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVz
dFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dGcmFtZVNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhp
dFRlc3RSZXN1bHRGb3JDdXJzb3IgPSBldmVudEhhbmRsZXIuaGl0VGVzdFJlc3VsdEF0UG9pbnQo
cmVxdWVzdC5wb2ludCwgaGl0VHlwZSk7Ci0gICAgaWYgKGF1dG8qIGhpdEZyYW1lID0gaGl0VGVz
dFJlc3VsdEZvckN1cnNvci5pbm5lck5vZGVGcmFtZSgpKSB7Ci0gICAgICAgIGluZm8uY3Vyc29y
ID0gaGl0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnNlbGVjdEN1cnNvcihoaXRUZXN0UmVzdWx0Rm9y
Q3Vyc29yLCBmYWxzZSk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gZXZlbnRIYW5kbGVyLmhp
dFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFR5cGUpOworICAgIGlmIChhdXRv
KiBoaXRGcmFtZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSkgeworICAgICAgICBp
bmZvLmN1cnNvciA9IGhpdEZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZWxlY3RDdXJzb3IoaGl0VGVz
dFJlc3VsdCwgZmFsc2UpOwogICAgICAgICBpZiAocmVxdWVzdC5pbmNsdWRlQ2FyZXRDb250ZXh0
KQotICAgICAgICAgICAgcG9wdWxhdGVDYXJldENvbnRleHQoaGl0VGVzdFJlc3VsdEZvckN1cnNv
ciwgcmVxdWVzdCwgaW5mbyk7CisgICAgICAgICAgICBwb3B1bGF0ZUNhcmV0Q29udGV4dChoaXRU
ZXN0UmVzdWx0LCByZXF1ZXN0LCBpbmZvKTsKICAgICB9CiAKICAgICBpZiAobV9mb2N1c2VkRWxl
bWVudCkKQEAgLTI5MjcsNyArMjkzNCw3IEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAKICAg
ICBpZiAoaXM8RWxlbWVudD4obm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKSkgewogICAgICAg
ICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGlj
a0V2ZW50cyk7Ci0gICAgICAgIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKCp0aGlzLCBlbGVt
ZW50LCByZXF1ZXN0LCBpbmZvKTsKKyAgICAgICAgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24o
KnRoaXMsIGVsZW1lbnQsIHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCksIGluZm8pOwogCiAgICAgICAgIGlmIChpbmZvLmlzTGluayAmJiAhaW5mby5pc0ltYWdlICYm
IHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90KQogICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJl
YWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShlbGVtZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422402</attachid>
            <date>2021-03-05 13:20:22 -0800</date>
            <delta_ts>2021-03-05 13:38:13 -0800</delta_ts>
            <desc>Fix non-internal iOS build</desc>
            <filename>bug-222811-20210305132022.patch</filename>
            <type>text/plain</type>
            <size>23437</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThkNWZhM2EwODFkZDQx
MzYwNTI2ZmRkODkwOTA3NTE3ZDk3MGRkZi4uMGUxZTI1OTI5YzIzYjg5N2FmNmRjYWZlNmMzZDI5
ZmRjNDRhMTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjaGVjayB3
aGV0aGVyIGEgZ2l2ZW4gYE5vZGVgIGlzIGEgdGV4dCBub2RlIGluc2lkZSBhbiBpbWFnZSBvdmVy
bGF5LiBTZWUgV2ViS2l0IENoYW5nZUxvZworICAgICAgICBmb3IgbW9yZSBkZXRhaWwuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50Ojppc0ltYWdlT3ZlcmxheVRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoK
KwogMjAyMS0wMy0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gTGluZVN0YXR1czo6YXZhaWxhYmxlV2lkdGggc2hvdWxkIGFsd2F5cyBiZSBh
IHZhbGlkIG51bWJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMmNiNzA0ZmRjNTEzMzk5MTQ3YTc4MzM1ZmM2MzMw
NjU3OGQzNDkwLi5iMTliM2VjNDBhNjM1YTg5MDBmNTRiMzBjMWJmMzhkZjMxN2Y0MTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTAzLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBhZGRpdGlvbmFsIGFj
Y2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN1cHBvcnQgZm9yIGFjY2Vzc2libGUgaW1hZ2UgZXh0
cmFjdGlvbi4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpTdXBw
cmVzc0ludGVyYWN0aW9uVG9rZW46OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbjo6flN1cHByZXNzSW50
ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIGBTdXBwcmVzc0ludGVy
YWN0aW9uVG9rZW5gLCBhbG9uZyB3aXRoIGl0cyBvbmx5IHVzZSBhcyBhIG1lbWJlciBvbiBgV0tD
b250ZW50Vmlld2AuIFRoaXMgd2FzIHVzZWQgdG8KKyAgICAgICAgdGVtcG9yYXJpbHkgc3VwcHJl
c3MgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50ZXJhY3Rpb24gd2hlbiBlZGl0aW5nLCBidXQgaXMg
bm93IG5vIGxvbmdlciBuZWNlc3NhcnksIHNpbmNlIHdlJ3JlCisgICAgICAgIHJlbW92aW5nIGFs
bCBkZXBlbmRlbmNlIG9uIHRoaXMgaW50ZXJhY3Rpb24gb2JqZWN0LgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgc2V0SXNFZGl0YWJsZTpdKToKKworICAgICAgICBSZW1vdmUgYF9zdXBwcmVzc0lt
YWdlRXh0cmFjdGlvblRva2VuYC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1NlbGVj
dGFibGVQb3NpdGlvbkF0UG9pbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dElu
dGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6CisKKyAgICAgICAgVGhlcmUn
cyBubyBuZWVkIHRvIG1ha2UgdGhlIHJlZ3VsYXIgdGV4dCBpbnRlcmFjdGlvbiBkdWNrIGluIGZh
dm9yIG9mIHRoZSBpbWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9uIGFmdGVyCisgICAgICAgIHRo
aXMgcGF0Y2gsIHNpbmNlIHRoZSBmb3JtZXIgd2lsbCBiZSB1c2VkIGZvciBib3RoLiBIb3dldmVy
LCB3ZSBkbyBuZWVkIHRvIHRlbXBvcmFyaWx5IHN1cHByZXNzIHJlZ3VsYXIgdGV4dAorICAgICAg
ICBpbnRlcmFjdGlvbiB3aGlsZSBpbWFnZSBleHRyYWN0aW9uIGlzIHN0aWxsIHBlbmRpbmcsIHRv
IGF2b2lkIHByZW1hdHVyZWx5IHNlbGVjdGluZyB0aGUgZW50aXJlIGltYWdlIGVsZW1lbnQuCisK
KyAgICAgICAgVG8gZG8gdGhpcywgd2Uga2VlcCB0cmFjayBvZiB0aGUgZWxlbWVudCBwZW5kaW5n
IGltYWdlIGV4dHJhY3Rpb24gKGBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb25gKSwgYW5k
IGF2b2lkCisgICAgICAgIGFsbG93aW5nIHRleHQgaW50ZXJhY3Rpb25zIHRvIGJlZ2luIGlmIHdl
J3JlIG92ZXIgdGhpcyBleGFjdCBlbGVtZW50LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3NpbmdsZVRhcElkZW50aWZpZWQ6XSk6CisKKyAgICAgICAgV2UgZG9uJ3QgbmVlZCB0byBleHBs
aWNpdGx5IGNhbmNlbCB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFjdGlvbiBvbiBzaW5nbGUg
dGFwIGFueW1vcmU7IHRoaXMgYmVoYXZpb3Igd2lsbAorICAgICAgICBhdXRvbWF0aWNhbGx5IGZh
bGwgb3V0IG9mIHVzaW5nIGRlZmF1bHQgdGV4dCBpbnRlcmFjdGlvbnMgZm9yIGltYWdlIGV4dHJh
Y3Rpb24uCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JNYWluRnJhbWVdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZHJhZ0ludGVyYWN0
aW9uOnByZXBhcmVGb3JTZXNzaW9uOmNvbXBsZXRpb246XSk6CisKKyAgICAgICAgUmVtb3ZlIGV4
cGxpY2l0IGltYWdlIGV4dHJhY3Rpb24gY2FuY2VsbGF0aW9uIGhlcmUgYXMgd2VsbCwgYW5kIGlu
c3RlYWQgYmFpbCBmcm9tIHRoZSBkcmFnIG9ubHkgaWYgd2UncmUgYWJvdXQKKyAgICAgICAgdG8g
cHJvY2VlZCB3aXRoIHRoZSBpbWFnZSBleHRyYWN0aW9uIGdlc3R1cmUgKHdoaWNoIGlzIGluZGlj
YXRlZCBieSB0aGUgYXJndW1lbnQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlcikuCisgICAgICAg
IFNlZSBjb21tZW50IGJlbG93LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RvQWZ0ZXJQ
ZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOl0pOgorCisgICAgICAgIEFkZCBhIGBCT09MYCBmbGFnIHRv
IHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgYmxvY2sgaGVyZSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
b3Igbm90IHdlJ2xsIHdhbnQgdG8gaW1tZWRpYXRlbHkKKyAgICAgICAgcHJvY2VlZCB3aXRoIGlt
YWdlIGV4dHJhY3Rpb24uIFRoZSB2YWx1ZSBvZiB0aGlzIGZsYWcgd2lsbCBiZSBkZXRlcm1pbmVk
IGJ5IHRoZSBoaXQtdGVzdCBhZnRlciB1cGRhdGluZyB0aGUgcGFnZQorICAgICAgICB3aXRoIGlt
YWdlIGV4dHJhY3Rpb24gcmVzdWx0cyBpbiBgV2ViUGFnZTo6dXBkYXRlV2l0aEltYWdlRXh0cmFj
dGlvblJlc3VsdGAuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW52b2tlQWxsQWN0aW9u
c1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0
TG9jYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW52b2tl
QWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbl0pOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAg
ICAgUmVtb3ZlIGEgRklYTUUgYW5kIGltcGxlbWVudCBoaXQtdGVzdGluZyBsb2dpYywgdG8gcmV0
dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBsb2NhdGlvbiBoaXQtdGVzdHMgdG8gdGhlCisg
ICAgICAgIGltYWdlIG92ZXJsYXkgd2UndmUganVzdCBpbmplY3RlZC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWN0aW5nVGV4dEF0TG9jYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6CisKKyAgICAgICAgQXZv
aWQgZXh0cmFjdGluZyBpbWFnZSBkYXRhIGZvciBhIHBvc2l0aW9uIGluZm9ybWF0aW9uIHJlcXVl
c3QsIGlmIHRoZSBoaXQtdGVzdGVkIG5vZGUgaXMgYWN0dWFsbHkgYSB0ZXh0IG5vZGUKKyAgICAg
ICAgaW4gYW4gaW1hZ2Ugb3ZlcmxheSwgaW5zdGVhZCBvZiBhbiBpbWFnZS4KKworICAgICAgICAo
V2ViS2l0OjpzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbik6CisKKyAgICAgICAgQWxsb3cgdGV4dCBpbnRl
cmFjdGlvbnMgdG8gYmVnaW4gaW4gdXNlci1hZ2VudCBzaGFkb3cgcm9vdHMuIFRoaXMgbWF0Y2hl
cyBiZWhhdmlvciBvbiBtYWNPUywgYW5kIHdhcworICAgICAgICAocHJlc3VtYWJseSkgaW5pdGlh
bGx5IGRpc2FsbG93ZWQgb24gaU9TIHRvIGF2b2lkIGFjdGl2YXRpbmcgdGhlIGVkaXRhYmxlIHRl
eHQgaW50ZXJhY3Rpb24KKyAgICAgICAgKGBVSVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50YCks
IGFzIG9wcG9zZWQgdG8gYmxvY2sgdGV4dCBzZWxlY3Rpb24gaW50ZXJhY3Rpb25zLCB3aGVuIGxv
bmcgcHJlc3NpbmcgdGV4dAorICAgICAgICBpbnNpZGUgdGV4dGFyZWFzIGFuZCB0ZXh0IGZpZWxk
cy4gSG93ZXZlciwgc2luY2Ugd2Ugb25seSB1c2UgdGhlIG5vcm1hbCB0ZXh0IGludGVyYWN0aW9u
IGFzc2lzdGFudCBub3cgZm9yIGJvdGgKKyAgICAgICAgbm9uLWVkaXRhYmxlIGFuZCBlZGl0YWJs
ZSB0ZXh0LCB0aGlzIGRpc3RpbmN0aW9uIG5vIGxvbmdlciBtYXR0ZXJzLgorCiAyMDIxLTAzLTA0
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIHRoZSBIVFRQU1VwZ3JhZGVFbmFibGVkIGV4cGVyaW1lbnRhbCBmZWF0dXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDk2MzkzOTZiOWNjODkwYjZkMTRlZmFkZjJk
NTAzZWMxMmE5MGJjMGEuLmMwOTMwZmEzZDljODhjNTJkZjAyMTQzNGRhYjBlMDdkZjdlNjMzNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xMjM0LDYgKzEyMzQsMjkgQEAg
Ym9vbCBIVE1MRWxlbWVudDo6aGFzSW1hZ2VPdmVybGF5KCkgY29uc3QKICAgICByZXR1cm4gc2hh
ZG93Um9vdC0+aGFzRWxlbWVudFdpdGhJZCgqaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIo
KS5pbXBsKCkpOwogfQogCitib29sIEhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheVRleHQoY29u
c3QgTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWlzPFRleHQ+KG5vZGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIHNoYWRvd0hvc3QgPSBub2RlLnNoYWRvd0hvc3QoKTsKKyAg
ICBpZiAoIXNoYWRvd0hvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gdXNl
ckFnZW50U2hhZG93Um9vdCA9IHNoYWRvd0hvc3QtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAg
ICBpZiAoIXVzZXJBZ2VudFNoYWRvd1Jvb3QpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW5PZlR5cGU8SFRNTERpdkVsZW1lbnQ+KCp1c2VyQWdlbnRTaGFkb3dSb290KSkg
eworICAgICAgICBpZiAoY2hpbGQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBpbWFnZU92ZXJsYXlFbGVt
ZW50SWRlbnRpZmllcigpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmNvbnRhaW5zKCZub2Rl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKIAogdm9pZCBIVE1MRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJl
c3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmgKaW5kZXggNjg4NzcxN2YzYTQxZGZkNDlmNmQ5ZmFkMmVhMzA2MjRiODgxNmRkMi4uOTc5
NDA2YTYxOTFlYWFjNmEwMTE1MTU1ZTBkNGVmNjQ3Mzc4NDg5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaApAQCAtMTI5LDYgKzEyOSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IHNob3VsZFVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhjb25zdCBOb2RlJiB0YXJnZXROb2Rl
LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25CZWZvcmVVcGRhdGUpOwogICAgIGJv
b2wgaGFzSW1hZ2VPdmVybGF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUmKTsKIAogI2lmIEVOQUJMRShJTUFHRV9F
WFRSQUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0aEltYWdlRXh0cmFj
dGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNzEx
ZDQwZGY2MjMzNTc1NmY4YjE0NTYzNGUxZjc1MTJiNjcxMDA2MC4uMGMwNjgwNjAxYTY3NzgyYmNm
ZTFiODQyMmY0MDY2NmM0NWZiNmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMjIxLDMyICsyMjEsNiBA
QCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIENHUmVjdCB0ZXh0TGFzdFJlY3Q7
CiB9OwogCi1jbGFzcyBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIFN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbihXS0NvbnRlbnRWaWV3
ICp2aWV3LCBOU09iamVjdDxVSUludGVyYWN0aW9uPiAqaW50ZXJhY3Rpb24pCi0gICAgICAgIDog
bV92aWV3KHZpZXcpCi0gICAgICAgICwgbV9pbnRlcmFjdGlvbihpbnRlcmFjdGlvbikKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCh2aWV3KTsKLSAgICAgICAgQVNTRVJUKGludGVyYWN0aW9uKTsKLSAg
ICAgICAgaWYgKGludGVyYWN0aW9uKQotICAgICAgICAgICAgW3ZpZXcgcmVtb3ZlSW50ZXJhY3Rp
b246aW50ZXJhY3Rpb25dOwotICAgIH0KLQotICAgIH5TdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4o
KQotICAgIHsKLSAgICAgICAgaWYgKCFtX3ZpZXcgfHwgIW1faW50ZXJhY3Rpb24pCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgW21fdmlldyBhZGRJbnRlcmFjdGlvbjptX2ludGVyYWN0
aW9uLmdldCgpLmdldCgpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4gbV92aWV3OwotICAgIFdlYWtPYmpDUHRyPE5TT2JqZWN0PFVJSW50ZXJhY3Rp
b24+PiBtX2ludGVyYWN0aW9uOwotfTsKLQogfQogCiBAY2xhc3MgV0tGb2N1c2VkRWxlbWVudElu
Zm87CkBAIC00ODgsMTAgKzQ2Miw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKElNQUdFX0VYVFJB
Q1RJT04pCiAgICAgUmV0YWluUHRyPFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+
IF9pbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlMb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplcj4gX2ltYWdlRXh0cmFjdGlvblRpbWVvdXRHZXN0dXJlUmVj
b2duaXplcjsKLSAgICBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlIF9pbWFnZUV4dHJhY3Rp
b25TdGF0ZTsKLSAgICBDR1JlY3QgX2ltYWdlRXh0cmFjdGlvbkludGVyYWN0aW9uQm91bmRzOwot
ICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKCk+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGlu
Z0ltYWdlRXh0cmFjdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpTdXBwcmVzc0lu
dGVyYWN0aW9uVG9rZW4+IF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuOworICAgIEJPT0wg
X2hhc1BlbmRpbmdJbWFnZUV4dHJhY3Rpb247CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVu
dENvbnRleHQ+IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKKyAgICBWZWN0b3I8Qmxv
Y2tQdHI8dm9pZChCT09MKT4+IF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOwogI2lmIFVTRShVSUNPTlRFWFRNRU5VKQogICAgIFJldGFpblB0cjxVSU1lbnU+IF9p
bWFnZUV4dHJhY3Rpb25Db250ZXh0TWVudTsKICNlbmRpZiAvLyBVU0UoVUlDT05URVhUTUVOVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IDg3YzZkMTM4ZWJlNTZhNjEwNWJhODcyOTc1MDI5MGRmOGZlNmIz
NjIuLjA2MjgyNjRiMWZlNGIwZjY2MmFlZTZlMTBlOGFhODIyOGJmMGM2ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtMTMwNSwxMiArMTMwNSw2IEBAIC0gKEJPT0wpc2V0SXNFZGl0YWJsZTooQk9PTClp
c0VkaXRhYmxlCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIF9pc0VkaXRhYmxlID0gaXNFZGl0
YWJsZTsKLQotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgIGlmIChzZWxmLl9pbWFn
ZUV4dHJhY3Rpb25FbmFibGVkICYmICghX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAhX2lz
Q2hhbmdpbmdGb2N1cykpCi0gICAgICAgIF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuID0g
aXNFZGl0YWJsZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4+
KHNlbGYsIF9pbWFnZUV4dHJhY3Rpb25JbnRlcmFjdGlvbi5nZXQoKSkgOiBudWxscHRyOwotI2Vu
ZGlmCi0KICAgICByZXR1cm4gWUVTOwogfQogCkBAIC0yNjY0LDEzICsyNjU4LDYgQEAgLSAoQk9P
TCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50CiAgICAgaWYgKF9z
dXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnMpCiAgICAgICAgIHJldHVybiBOTzsKIAot
I2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgIGlmIChbc2VsZiBfaW1hZ2VFeHRyYWN0
aW9uU2hvdWxkUHJldmVudFRleHRJbnRlcmFjdGlvbkF0UG9pbnQ6cG9pbnRdKQotICAgICAgICBy
ZXR1cm4gTk87Ci0KLSAgICBbc2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsKLSNlbmRpZgot
CiAgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5P
OwogCkBAIC0yNjc4LDYgKzI2NjUsMTEgQEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25B
dFBvaW50OihDR1BvaW50KXBvaW50CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9y
bWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XSkKICAgICAgICAgcmV0dXJuIE5POwogCisjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgaWYgKF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFj
dGlvbiAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dCA9PSBfZWxlbWVudFBl
bmRpbmdJbWFnZUV4dHJhY3Rpb24pCisgICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgorCiAgICAg
cmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzU2VsZWN0YWJsZTsKIH0KIApAQCAtMjcxNiwx
MyArMjcwOCw2IEBAIC0gKEJPT0wpdGV4dEludGVyYWN0aW9uR2VzdHVyZTooVUlXS0dlc3R1cmVU
eXBlKWdlc3R1cmUgc2hvdWxkQmVnaW5BdFBvaW50OihDR1BvCiAgICAgaWYgKF9zdXBwcmVzc1Nl
bGVjdGlvbkFzc2lzdGFudFJlYXNvbnMpCiAgICAgICAgIHJldHVybiBOTzsKIAotI2lmIEVOQUJM
RShJTUFHRV9FWFRSQUNUSU9OKQotICAgIGlmIChbc2VsZiBfaW1hZ2VFeHRyYWN0aW9uU2hvdWxk
UHJldmVudFRleHRJbnRlcmFjdGlvbkF0UG9pbnQ6cG9pbnRdKQotICAgICAgICByZXR1cm4gTk87
Ci0KLSAgICBbc2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsKLSNlbmRpZgotCiAgICAgaWYg
KCFzZWxmLmlzRm9jdXNpbmdFbGVtZW50KSB7CiAgICAgICAgIGlmIChnZXN0dXJlID09IFVJV0tH
ZXN0dXJlRG91YmxlVGFwKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyBkb3VibGUgdGFw
IHRleHQgZ2VzdHVyZXMgaW4gbm9uZWRpdGFibGUgY29udGVudC4KQEAgLTI3NTgsNiArMjc0Mywx
MSBAQCAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0
dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQbwogICAgICAgICByZXR1cm4gTk87CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIGlmIChfZWxlbWVudFBlbmRpbmdJ
bWFnZUV4dHJhY3Rpb24gJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQgPT0g
X2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uKQorICAgICAgICByZXR1cm4gTk87CisjZW5k
aWYKKwogICAgIC8vIElmIHdlJ3JlIGN1cnJlbnRseSBmb2N1c2luZyBhbiBlZGl0YWJsZSBlbGVt
ZW50LCBvbmx5IGFsbG93IHRoZSBzZWxlY3Rpb24gdG8gbW92ZSB3aXRoaW4gdGhhdCBmb2N1c2Vk
IGVsZW1lbnQuCiAgICAgaWYgKHNlbGYuaXNGb2N1c2luZ0VsZW1lbnQpCiAgICAgICAgIHJldHVy
biBfcG9zaXRpb25JbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dCAmJiBfcG9zaXRpb25JbmZvcm1h
dGlvbi5lbGVtZW50Q29udGV4dC0+aXNTYW1lRWxlbWVudChfZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5lbGVtZW50Q29udGV4dCk7CkBAIC0yODkwLDEwICsyODgwLDYgQEAgLSAodm9pZClfc2lu
Z2xlVGFwSWRlbnRpZmllZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25p
emVyCiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBZRVM7CiAgICAgX2lzVGFwSGlnaGxp
Z2h0SURWYWxpZCA9IFlFUzsKICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0g
IV9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKS5lbmFibGVkOwotCi0jaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCi0gICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbklmTmVl
ZGVkQWZ0ZXJUb3VjaEF0Omdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uXTsKLSNlbmRpZgogfQog
CiBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3
KiBjb250ZW50VmlldykKQEAgLTQ0ODAsNyArNDQ2Niw2IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lCiAgICAgW3NlbGYgX3NldERvdWJsZVRhcEdlc3R1cmVz
RW5hYmxlZDpOT107CiAgICAgW190d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBf
d2tfY2FuY2VsXTsKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBfc3VwcHJlc3NJ
bWFnZUV4dHJhY3Rpb25Ub2tlbiA9IG51bGxwdHI7CiAgICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0
cmFjdGlvbl07CiAjZW5kaWYKIH0KQEAgLTg0OTEsMjEgKzg0NzYsMTIgQEAgLSAodm9pZClfZHJh
Z0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXBhcmVGb3JT
ZXNzaW9uOihpZAogCiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwog
Ci0gICAgYXV0byBwcmVwYXJlRm9yU2Vzc2lvbiA9IFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdL
Q29udGVudFZpZXc+KHNlbGYpLCBzZXNzaW9uID0gcmV0YWluUHRyKHNlc3Npb24pLCBjb21wbGV0
aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CisgICAgYXV0byBwcmVwYXJlRm9yU2Vz
c2lvbiA9IFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBzZXNz
aW9uID0gcmV0YWluUHRyKHNlc3Npb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb24pXSAoQk9PTCBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAgICAgICBhdXRv
IHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQor
ICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBkcmFnT3JpZ2luID0gW3Nlc3Npb24g
bG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5nZXQoKV07Ci0jaWYgRU5BQkxFKElNQUdFX0VYVFJB
Q1RJT04pCi0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rpb25JZk5lZWRl
ZEFmdGVyVG91Y2hBdDpkcmFnT3JpZ2luXTsKLSAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9pbWFn
ZUV4dHJhY3Rpb25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlOjpBY3RpdmUp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIGZh
aWxlZDogJXAgKGRlZmVycmluZyB0byBhY3RpdmUgaW1hZ2UgZXh0cmFjdGlvbikiLCBzZXNzaW9u
LmdldCgpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotI2VuZGlmCi0KICAgICAgICAgc3Ryb25nU2VsZi0+X2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5wcmVwYXJlRm9yRHJhZ1Nlc3Npb24oc2Vzc2lvbi5nZXQoKSwgY29tcGxldGlv
bi5nZXQoKSk7CiAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdlLT5yZXF1ZXN0RHJhZ1N0YXJ0KFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChkcmFnT3JpZ2luKSwgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KFtzdHJvbmdTZWxmIGNvbnZlcnRQb2ludDpkcmFnT3JpZ2luIHRvVmlldzpbc3Ryb25nU2Vs
ZiB3aW5kb3ddXSksIFtzdHJvbmdTZWxmIF9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnNdKTsKICAg
ICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24gcmVxdWVzdGVkOiAl
cCBhdCBvcmlnaW46IHslLjBmLCAlLjBmfSIsIHNlc3Npb24uZ2V0KCksIGRyYWdPcmlnaW4ueCwg
ZHJhZ09yaWdpbi55KTsKQEAgLTg1MTQsNyArODQ5MCw3IEBAIC0gKHZvaWQpX2RyYWdJbnRlcmFj
dGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmVwYXJlRm9yU2Vzc2lvbjoo
aWQKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBbc2VsZiBfZG9BZnRlclBlbmRp
bmdJbWFnZUV4dHJhY3Rpb246cHJlcGFyZUZvclNlc3Npb25dOwogI2Vsc2UKLSAgICBwcmVwYXJl
Rm9yU2Vzc2lvbigpOworICAgIHByZXBhcmVGb3JTZXNzaW9uKE5PKTsKICNlbmRpZgogfQogCkBA
IC05NDI4LDE4ICs5NDA0LDE4IEBAIC0gKHZvaWQpX3dyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9Q
YXN0ZWJvYXJkOihXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpCiAKICNpZiBFTkFC
TEUoSU1BR0VfRVhUUkFDVElPTikKIAotLSAodm9pZClfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJh
Y3Rpb246KGRpc3BhdGNoX2Jsb2NrX3QpYmxvY2sKKy0gKHZvaWQpX2RvQWZ0ZXJQZW5kaW5nSW1h
Z2VFeHRyYWN0aW9uOih2b2lkKF4pKEJPT0wgcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pKWJs
b2NrCiB7Ci0gICAgaWYgKF9pbWFnZUV4dHJhY3Rpb25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdlRXh0
cmFjdGlvblN0YXRlOjpQZW5kaW5nKQorICAgIGlmIChfaGFzUGVuZGluZ0ltYWdlRXh0cmFjdGlv
bikKICAgICAgICAgX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb24u
YXBwZW5kKG1ha2VCbG9ja1B0cihibG9jaykpOwogICAgIGVsc2UKLSAgICAgICAgYmxvY2soKTsK
KyAgICAgICAgYmxvY2soTk8pOwogfQogCi0tICh2b2lkKV9pbnZva2VBbGxBY3Rpb25zVG9QZXJm
b3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uCistICh2b2lkKV9pbnZva2VBbGxBY3Rpb25z
VG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOihCT09MKXByb2NlZWRXaXRoSW1h
Z2VFeHRyYWN0aW9uCiB7CiAgICAgZm9yIChhdXRvIGJsb2NrIDogc3RkOjpleGNoYW5nZShfYWN0
aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbiwgeyB9KSkKLSAgICAgICAg
YmxvY2soKTsKKyAgICAgICAgYmxvY2socHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pOwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCkBAIC05OTM2LDE5ICs5OTEyLDEy
IEBAIC0gKHZvaWQpX2NvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFj
dGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyCiAgICAgaWYgKCFzZWxmLndlYlZpZXcuY29uZmln
dXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uKG5pbCk7CiAKLSAgICBhdXRvIGdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZSA9IFt3ZWFr
U2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBpbnRlcmFjdGlvbiA9IHJl
dGFpblB0cihpbnRlcmFjdGlvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bildIHsKKyAgICBhdXRvIGdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZSA9IFt3ZWFrU2VsZiA9
IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBpbnRlcmFjdGlvbiA9IHJldGFpblB0
cihpbnRlcmFjdGlvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIChC
T09MIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IFtpbnRlcmFjdGlvbiBsb2NhdGlv
bkluVmlldzpzdHJvbmdTZWxmLmdldCgpXTsKLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikK
LSAgICAgICAgW3N0cm9uZ1NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJU
b3VjaEF0OnBvc2l0aW9uXTsKLSAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9pbWFnZUV4dHJhY3Rp
b25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlOjpBY3RpdmUpIHsKKyAgICAg
ICAgaWYgKCFzdHJvbmdTZWxmIHx8IHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uKG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSNlbmRpZgogCiAgICAgICAgIFtzdHJvbmdTZWxmLT5fd2ViVmlldyBfZGlkU2hvd0NvbnRleHRN
ZW51XTsKIApAQCAtOTk1Niw3ICs5OTI1LDcgQEAgLSAodm9pZClfY29udGV4dE1lbnVJbnRlcmFj
dGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXIKICAg
ICAgICAgaWYgKE5TTnVtYmVyICp2YWx1ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIG9iamVjdEZvcktleTp3ZWJraXRTaG93TGlua1ByZXZpZXdzUHJlZmVyZW5jZUtl
eV0pCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fc2hvd0xpbmtQcmV2aWV3cyA9IHZhbHVlLmJv
b2xWYWx1ZTsKIAotICAgICAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
IHJlcXVlc3QgeyBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQocG9zaXRpb24pIH07CisgICAgICAg
IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCB7IFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChbaW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5n
ZXQoKV0pIH07CiAgICAgICAgIHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90ID0gdHJ1ZTsKICAgICAg
ICAgcmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvciA9IHRydWU7CiAgICAgICAgIHJlcXVlc3Qu
bGlua0luZGljYXRvclNob3VsZEhhdmVMZWdhY3lNYXJnaW5zID0gIVtzdHJvbmdTZWxmIF9zaG91
bGRVc2VDb250ZXh0TWVudXNdOwpAQCAtOTk3Miw3ICs5OTQxLDcgQEAgLSAodm9pZClfY29udGV4
dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24g
Y29uZmlndXIKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBbc2VsZiBfZG9BZnRl
clBlbmRpbmdJbWFnZUV4dHJhY3Rpb246Z2V0Q29uZmlndXJhdGlvbkFuZENvbnRpbnVlXTsKICNl
bHNlCi0gICAgZ2V0Q29uZmlndXJhdGlvbkFuZENvbnRpbnVlKCk7CisgICAgZ2V0Q29uZmlndXJh
dGlvbkFuZENvbnRpbnVlKE5PKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhhYjQwMmRmOTA5NGVjZWRlYzBkNjVmYmJj
MzEwNWUwNWQwMmJiY2EuLjQzOTRjYzU3NjJmOTViZWI4MGYwMzcwYzNmMTg2MDBkNjdkZDU1OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03
MjcwLDkgKzcyNzAsMTkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9u
UmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCwgY28KICAgICB9CiAKICAgICBk
b3duY2FzdDxIVE1MRWxlbWVudD4oKmVsZW1lbnRUb1VwZGF0ZSkudXBkYXRlV2l0aEltYWdlRXh0
cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9
IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBv
aW50KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIHsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAorICAgICAgICBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5LAorICAgIH0pOwor
CisgICAgYXV0byBub2RlQXRMb2NhdGlvbiA9IG1ha2VSZWZQdHIoaGl0VGVzdFJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKSk7CisgICAgaWYgKCFub2RlQXRMb2NhdGlvbiB8fCBub2RlQXRMb2Nh
dGlvbi0+c2hhZG93SG9zdCgpICE9IGVsZW1lbnRUb1VwZGF0ZSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAvLyBGSVhN
RTogSGl0LXRlc3Qgd2l0aCBsb2NhdGlvbiBhbmQgcmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZXJl
IGlzIG92ZXJsYXkgdGV4dCBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uCi0gICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSFRNTEVsZW1lbnQ6OmlzSW1hZ2VP
dmVybGF5VGV4dCgqbm9kZUF0TG9jYXRpb24pKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9FWFRSQUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQppbmRleCA2YTI5NGViZDk1MWQ3ODk3MGIwZWJkNWRkMzEzMGJiNmQ2
N2I1NzdlLi41MmQ4ZjFkOTE3YTk3ZjliOTNhNmU1MWM3YjJjYmIxMWY4NjgwYmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtMjExNyw3ICsyMTE3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNl
bGVjdGlvbihjb25zdCBJbnRSZWN0JiBibG9ja1JlY3QsIGNvbnN0IEZyYW0KIAogdm9pZCBXZWJQ
YWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3RpbmdUZXh0QXRMb2NhdGlvbihjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVz
dDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9u
bHkgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlw
ZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9
OwogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSk7CiAgICAgYXV0byogaGl0Tm9kZSA9
IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBpZiAoaGl0Tm9kZSAmJiBoaXROb2RlLT5yZW5kZXJl
cigpKQpAQCAtMjY5Niw3ICsyNjk2LDcgQEAgc3RhdGljIHZvaWQgYm91bmRzUG9zaXRpb25JbmZv
cm1hdGlvbihSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBJbnRlcmFjdGlvbkluZm9ybWEKICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBh
Z2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
JiByZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgaW5mbykKK3N0YXRp
YyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBOb2RlKiBpbm5lck5vblNoYXJlZE5vZGUsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJiBpbmZvKQogewogICAgIEVsZW1lbnQqIGxpbmtFbGVtZW50ID0gbnVsbHB0cjsKICAg
ICBpZiAoZWxlbWVudC5yZW5kZXJlcigpICYmIGVsZW1lbnQucmVuZGVyZXIoKS0+aXNSZW5kZXJJ
bWFnZSgpKQpAQCAtMjczMiw3ICsyNzMyLDE0IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlv
bkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEluCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKSB7Ci0g
ICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQorICAgICAgICBib29sIHNob3Vs
ZENvbGxlY3RJbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24gPSByZW5kZXJlci0+aXNSZW5kZXJJbWFn
ZSgpOworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgICAgICBpZiAoSFRNTEVsZW1l
bnQ6OmlzSW1hZ2VPdmVybGF5VGV4dCgqaW5uZXJOb25TaGFyZWROb2RlKSkKKyAgICAgICAgICAg
IHNob3VsZENvbGxlY3RJbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24gPSBmYWxzZTsKKyNlbHNlCisg
ICAgICAgIFVOVVNFRF9QQVJBTShpbm5lck5vblNoYXJlZE5vZGUpOworI2VuZGlmCisgICAgICAg
IGlmIChzaG91bGRDb2xsZWN0SW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKQogICAgICAgICAgICAg
aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKHBhZ2UsIGVsZW1lbnQsIHJlcXVlc3QsIGluZm8pOwog
ICAgICAgICBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKCpyZW5kZXJlciwgaW5mbyk7CiAgICAg
fQpAQCAtMjc0Miw3ICsyNzQ5LDcgQEAgc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3Jt
YXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW4KICAgICAKIHN0
YXRpYyB2b2lkIHNlbGVjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQogewotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0
VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFt
ZUNvbnRlbnRPbmx5IH07CisgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29u
dGVudE9ubHkgfTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IHBhZ2UuY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVxdWVzdC5w
b2ludCwgaGl0VHlwZSk7CiAgICAgTm9kZSogaGl0Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsK
IApAQCAtMjkxNSwxMSArMjkyMiwxMSBAQCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biBXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSQogCiAgICAg
YXV0byYgZXZlbnRIYW5kbGVyID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKTsK
ICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93RnJh
bWVTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRl
bnRPbmx5IH07Ci0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0Rm9yQ3Vyc29yID0gZXZl
bnRIYW5kbGVyLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFR5cGUpOwot
ICAgIGlmIChhdXRvKiBoaXRGcmFtZSA9IGhpdFRlc3RSZXN1bHRGb3JDdXJzb3IuaW5uZXJOb2Rl
RnJhbWUoKSkgewotICAgICAgICBpbmZvLmN1cnNvciA9IGhpdEZyYW1lLT5ldmVudEhhbmRsZXIo
KS5zZWxlY3RDdXJzb3IoaGl0VGVzdFJlc3VsdEZvckN1cnNvciwgZmFsc2UpOworICAgIGF1dG8g
aGl0VGVzdFJlc3VsdCA9IGV2ZW50SGFuZGxlci5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0
LnBvaW50LCBoaXRUeXBlKTsKKyAgICBpZiAoYXV0byogaGl0RnJhbWUgPSBoaXRUZXN0UmVzdWx0
LmlubmVyTm9kZUZyYW1lKCkpIHsKKyAgICAgICAgaW5mby5jdXJzb3IgPSBoaXRGcmFtZS0+ZXZl
bnRIYW5kbGVyKCkuc2VsZWN0Q3Vyc29yKGhpdFRlc3RSZXN1bHQsIGZhbHNlKTsKICAgICAgICAg
aWYgKHJlcXVlc3QuaW5jbHVkZUNhcmV0Q29udGV4dCkKLSAgICAgICAgICAgIHBvcHVsYXRlQ2Fy
ZXRDb250ZXh0KGhpdFRlc3RSZXN1bHRGb3JDdXJzb3IsIHJlcXVlc3QsIGluZm8pOworICAgICAg
ICAgICAgcG9wdWxhdGVDYXJldENvbnRleHQoaGl0VGVzdFJlc3VsdCwgcmVxdWVzdCwgaW5mbyk7
CiAgICAgfQogCiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpCkBAIC0yOTI3LDcgKzI5MzQsNyBA
QCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBXZWJQYWdlOjpwb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSQogCiAgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGVSZXNw
b25kaW5nVG9DbGlja0V2ZW50cykpIHsKICAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0
PEVsZW1lbnQ+KCpub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMpOwotICAgICAgICBlbGVtZW50
UG9zaXRpb25JbmZvcm1hdGlvbigqdGhpcywgZWxlbWVudCwgcmVxdWVzdCwgaW5mbyk7CisgICAg
ICAgIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKCp0aGlzLCBlbGVtZW50LCByZXF1ZXN0LCBo
aXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLCBpbmZvKTsKIAogICAgICAgICBpZiAo
aW5mby5pc0xpbmsgJiYgIWluZm8uaXNJbWFnZSAmJiByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkK
ICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUo
ZWxlbWVudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422407</attachid>
            <date>2021-03-05 13:38:15 -0800</date>
            <delta_ts>2021-03-05 14:55:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222811-20210305133814.patch</filename>
            <type>text/plain</type>
            <size>23460</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThkNWZhM2EwODFkZDQx
MzYwNTI2ZmRkODkwOTA3NTE3ZDk3MGRkZi4uOTU0OWQ2YTM4NjBhNzk4MGU2Yzg2NzExMTQ2OGRj
MzRhYWFlNjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRo
b2QgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIGBOb2RlYCBpcyBhIHRleHQgbm9kZSBpbnNpZGUg
YW4gaW1hZ2Ugb3ZlcmxheS4gU2VlIFdlYktpdCBDaGFuZ2VMb2cKKyAgICAgICAgZm9yIG1vcmUg
ZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50Lmg6CisKIDIwMjEtMDMtMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVTdGF0dXM6OmF2YWlsYWJsZVdpZHRoIHNob3Vs
ZCBhbHdheXMgYmUgYSB2YWxpZCBudW1iZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzJjYjcwNGZkYzUxMzM5OTE0
N2E3ODMzNWZjNjMzMDY1NzhkMzQ5MC4uOWU1MTYzOGUyNGQ0MGE2MDRjOGE5ZTE3ZDk4YTNmYTQ4
ZGUzZmYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAyMS0wMy0wNSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQg
YWRkaXRpb25hbCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIGltYWdlIG92ZXJsYXlzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MTEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzczMjAzNzc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24gYW5kIERldmluIFJvdXNzby4KKworICAgICAgICBBZGRzIGFkZGl0aW9uYWwgc3VwcG9y
dCBmb3IgYWNjZXNzaWJsZSBpbWFnZSBleHRyYWN0aW9uLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbjo6U3VwcHJlc3NJ
bnRlcmFjdGlvblRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3VwcHJlc3NJbnRl
cmFjdGlvblRva2VuOjp+U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuKTogRGVsZXRlZC4KKworICAg
ICAgICBSZW1vdmUgYFN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbmAsIGFsb25nIHdpdGggaXRzIG9u
bHkgdXNlIGFzIGEgbWVtYmVyIG9uIGBXS0NvbnRlbnRWaWV3YC4gVGhpcyB3YXMgdXNlZCB0bwor
ICAgICAgICB0ZW1wb3JhcmlseSBzdXBwcmVzcyB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFj
dGlvbiB3aGVuIGVkaXRpbmcsIGJ1dCBpcyBub3cgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgc2luY2Ug
d2UncmUKKyAgICAgICAgcmVtb3ZpbmcgYWxsIGRlcGVuZGVuY2Ugb24gdGhpcyBpbnRlcmFjdGlv
biBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRJc0VkaXRhYmxlOl0pOgorCisg
ICAgICAgIFJlbW92ZSBgX3N1cHByZXNzSW1hZ2VFeHRyYWN0aW9uVG9rZW5gLgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyB0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOnNob3VsZEJlZ2luQXRQ
b2ludDpdKToKKworICAgICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gY2FuY2VsIHRoZSByZWd1bGFy
IHRleHQgaW50ZXJhY3Rpb24gaW4gZmF2b3Igb2YgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50ZXJh
Y3Rpb24gYWZ0ZXIgdGhpcworICAgICAgICBwYXRjaCwgc2luY2UgdGhlIGZvcm1lciB3aWxsIGJl
IHVzZWQgZm9yIGJvdGguIEhvd2V2ZXIsIHdlIGRvIG5lZWQgdG8gdGVtcG9yYXJpbHkgc3VwcHJl
c3MgcmVndWxhciB0ZXh0CisgICAgICAgIGludGVyYWN0aW9uIHdoaWxlIGltYWdlIGV4dHJhY3Rp
b24gaXMgc3RpbGwgcGVuZGluZywgdG8gYXZvaWQgcHJlbWF0dXJlbHkgc2VsZWN0aW5nIHRoZSBl
bnRpcmUgaW1hZ2UgZWxlbWVudC4KKworICAgICAgICBUbyBkbyB0aGlzLCB3ZSBrZWVwIHRyYWNr
IG9mIHRoZSBlbGVtZW50IHBlbmRpbmcgaW1hZ2UgZXh0cmFjdGlvbiAoYF9lbGVtZW50UGVuZGlu
Z0ltYWdlRXh0cmFjdGlvbmApLCBhbmQgYXZvaWQKKyAgICAgICAgYWxsb3dpbmcgdGV4dCBpbnRl
cmFjdGlvbnMgdG8gYmVnaW4gaWYgd2UncmUgb3ZlciB0aGlzIGV4YWN0IGVsZW1lbnQuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwSWRlbnRpZmllZDpdKToKKworICAgICAg
ICBXZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgY2FuY2VsIHRoZSBpbWFnZSBleHRyYWN0aW9u
IGludGVyYWN0aW9uIG9uIHNpbmdsZSB0YXAgYW55bW9yZTsgdGhpcyBiZWhhdmlvciB3aWxsCisg
ICAgICAgIGF1dG9tYXRpY2FsbHkgZmFsbCBvdXQgb2YgdXNpbmcgZGVmYXVsdCB0ZXh0IGludGVy
YWN0aW9ucyBmb3IgaW1hZ2UgZXh0cmFjdGlvbi4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZV0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9kcmFnSW50ZXJhY3Rpb246cHJlcGFyZUZvclNlc3Npb246Y29tcGxldGlvbjpd
KToKKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgaW1hZ2UgZXh0cmFjdGlvbiBjYW5jZWxsYXRp
b24gaGVyZSBhcyB3ZWxsLCBhbmQgaW5zdGVhZCBiYWlsIGZyb20gdGhlIGRyYWcgb25seSBpZiB3
ZSdyZSBhYm91dAorICAgICAgICB0byBwcm9jZWVkIHdpdGggdGhlIGltYWdlIGV4dHJhY3Rpb24g
Z2VzdHVyZSAod2hpY2ggaXMgaW5kaWNhdGVkIGJ5IHRoZSBhcmd1bWVudCB0byB0aGUgY29tcGxl
dGlvbiBoYW5kbGVyKS4KKyAgICAgICAgU2VlIGNvbW1lbnQgYmVsb3cuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246XSk6CisKKyAgICAg
ICAgQWRkIGEgYEJPT0xgIGZsYWcgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBibG9jayBoZXJl
LCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UnbGwgd2FudCB0byBpbW1lZGlhdGVseQor
ICAgICAgICBwcm9jZWVkIHdpdGggaW1hZ2UgZXh0cmFjdGlvbi4gVGhlIHZhbHVlIG9mIHRoaXMg
ZmxhZyB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGhpdC10ZXN0IGFmdGVyIHVwZGF0aW5nIHRo
ZSBwYWdlCisgICAgICAgIHdpdGggaW1hZ2UgZXh0cmFjdGlvbiByZXN1bHRzIGluIGBXZWJQYWdl
Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0YC4KKworICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb250ZXh0TWVudUludGVyYWN0aW9u
OmNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2NhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1h
Z2VFeHRyYWN0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRy
YWN0aW9uUmVzdWx0KToKKworICAgICAgICBSZW1vdmUgYSBGSVhNRSBhbmQgaW1wbGVtZW50IGhp
dC10ZXN0aW5nIGxvZ2ljLCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGdpdmVuIGxvY2F0
aW9uIGhpdC10ZXN0cyB0byB0aGUKKyAgICAgICAgaW1hZ2Ugb3ZlcmxheSB3ZSd2ZSBqdXN0IGlu
amVjdGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3Rp
bmdUZXh0QXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbkluZm9y
bWF0aW9uKToKKworICAgICAgICBBdm9pZCBleHRyYWN0aW5nIGltYWdlIGRhdGEgZm9yIGEgcG9z
aXRpb24gaW5mb3JtYXRpb24gcmVxdWVzdCwgaWYgdGhlIGhpdC10ZXN0ZWQgbm9kZSBpcyBhY3R1
YWxseSBhIHRleHQgbm9kZQorICAgICAgICBpbiBhbiBpbWFnZSBvdmVybGF5LCBpbnN0ZWFkIG9m
IGFuIGltYWdlLgorCisgICAgICAgIChXZWJLaXQ6OnNlbGVjdGlvblBvc2l0aW9uSW5mb3JtYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKToKKwor
ICAgICAgICBBbGxvdyB0ZXh0IGludGVyYWN0aW9ucyB0byBiZWdpbiBpbiB1c2VyLWFnZW50IHNo
YWRvdyByb290cy4gVGhpcyBtYXRjaGVzIGJlaGF2aW9yIG9uIG1hY09TLCBhbmQgd2FzCisgICAg
ICAgIChwcmVzdW1hYmx5KSBpbml0aWFsbHkgZGlzYWxsb3dlZCBvbiBpT1MgdG8gYXZvaWQgYWN0
aXZhdGluZyB0aGUgZWRpdGFibGUgdGV4dCBpbnRlcmFjdGlvbgorICAgICAgICAoYFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnRgKSwgYXMgb3Bwb3NlZCB0byBibG9jayB0ZXh0IHNlbGVjdGlv
biBpbnRlcmFjdGlvbnMsIHdoZW4gbG9uZyBwcmVzc2luZyB0ZXh0CisgICAgICAgIGluc2lkZSB0
ZXh0YXJlYXMgYW5kIHRleHQgZmllbGRzLiBIb3dldmVyLCBzaW5jZSB3ZSBvbmx5IHVzZSB0aGUg
bm9ybWFsIHRleHQgaW50ZXJhY3Rpb24gYXNzaXN0YW50IG5vdyBmb3IgYm90aAorICAgICAgICBu
b24tZWRpdGFibGUgYW5kIGVkaXRhYmxlIHRleHQsIHRoaXMgZGlzdGluY3Rpb24gbm8gbG9uZ2Vy
IG1hdHRlcnMuCisKIDIwMjEtMDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIEhUVFBTVXBncmFkZUVuYWJsZWQgZXhw
ZXJpbWVudGFsIGZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggOTYz
OTM5NmI5Y2M4OTBiNmQxNGVmYWRmMmQ1MDNlYzEyYTkwYmMwYS4uYzA5MzBmYTNkOWM4OGM1MmRm
MDIxNDM0ZGFiMGUwN2RmN2U2MzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTEyMzQsNiArMTIzNCwyOSBAQCBib29sIEhUTUxFbGVtZW50OjpoYXNJbWFnZU92ZXJsYXko
KSBjb25zdAogICAgIHJldHVybiBzaGFkb3dSb290LT5oYXNFbGVtZW50V2l0aElkKCppbWFnZU92
ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpLmltcGwoKSk7CiB9CiAKK2Jvb2wgSFRNTEVsZW1lbnQ6
OmlzSW1hZ2VPdmVybGF5VGV4dChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmICghaXM8VGV4
dD4obm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2hhZG93SG9zdCA9
IG5vZGUuc2hhZG93SG9zdCgpOworICAgIGlmICghc2hhZG93SG9zdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byB1c2VyQWdlbnRTaGFkb3dSb290ID0gc2hhZG93SG9zdC0+dXNl
ckFnZW50U2hhZG93Um9vdCgpOworICAgIGlmICghdXNlckFnZW50U2hhZG93Um9vdCkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxlbWVudD4o
KnVzZXJBZ2VudFNoYWRvd1Jvb3QpKSB7CisgICAgICAgIGlmIChjaGlsZC5nZXRJZEF0dHJpYnV0
ZSgpID09IGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICByZXR1
cm4gY2hpbGQuY29udGFpbnMoJm5vZGUpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogCiB2b2lkIEhUTUxFbGVtZW50Ojp1cGRh
dGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA2ODg3NzE3ZjNhNDFkZmQ0OWY2ZDlm
YWQyZWEzMDYyNGI4ODE2ZGQyLi45Nzk0MDZhNjE5MWVhYWM2YTAxMTUxNTVlMGQ0ZWY2NDczNzg0
ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KGNvbnN0IE5vZGUmIHRhcmdldE5vZGUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
bkJlZm9yZVVwZGF0ZSk7CiAgICAgYm9vbCBoYXNJbWFnZU92ZXJsYXkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0ltYWdlT3ZlcmxheVRleHQoY29uc3QgTm9kZSYp
OwogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCA3MTFkNDBkZjYyMzM1NzU2ZjhiMTQ1NjM0ZTFmNzUxMmI2NzEw
MDYwLi4wYzA2ODA2MDFhNjc3ODJiY2ZlMWI4NDIyZjQwNjY2YzQ1ZmI2ZWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCkBAIC0yMjEsMzIgKzIyMSw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAg
ICAgQ0dSZWN0IHRleHRMYXN0UmVjdDsKIH07CiAKLWNsYXNzIFN1cHByZXNzSW50ZXJhY3Rpb25U
b2tlbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VwcHJlc3NJbnRlcmFjdGlvblRva2Vu
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU3VwcHJlc3NJbnRlcmFj
dGlvblRva2VuKFdLQ29udGVudFZpZXcgKnZpZXcsIE5TT2JqZWN0PFVJSW50ZXJhY3Rpb24+ICpp
bnRlcmFjdGlvbikKLSAgICAgICAgOiBtX3ZpZXcodmlldykKLSAgICAgICAgLCBtX2ludGVyYWN0
aW9uKGludGVyYWN0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZpZXcpOwotICAgICAgICBB
U1NFUlQoaW50ZXJhY3Rpb24pOwotICAgICAgICBpZiAoaW50ZXJhY3Rpb24pCi0gICAgICAgICAg
ICBbdmlldyByZW1vdmVJbnRlcmFjdGlvbjppbnRlcmFjdGlvbl07Ci0gICAgfQotCi0gICAgflN1
cHByZXNzSW50ZXJhY3Rpb25Ub2tlbigpCi0gICAgewotICAgICAgICBpZiAoIW1fdmlldyB8fCAh
bV9pbnRlcmFjdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBbbV92aWV3IGFk
ZEludGVyYWN0aW9uOm1faW50ZXJhY3Rpb24uZ2V0KCkuZ2V0KCldOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PiBtX3ZpZXc7Ci0gICAgV2Vha09iakNQ
dHI8TlNPYmplY3Q8VUlJbnRlcmFjdGlvbj4+IG1faW50ZXJhY3Rpb247Ci19OwotCiB9CiAKIEBj
bGFzcyBXS0ZvY3VzZWRFbGVtZW50SW5mbzsKQEAgLTQ4OCwxMCArNDYyLDkgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBSZXRhaW5QdHI8V0tJbWFnZUV4dHJh
Y3Rpb25HZXN0dXJlUmVjb2duaXplcj4gX2ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
OwogICAgIFJldGFpblB0cjxVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyPiBfaW1hZ2VFeHRy
YWN0aW9uVGltZW91dEdlc3R1cmVSZWNvZ25pemVyOwotICAgIFdlYktpdDo6SW1hZ2VFeHRyYWN0
aW9uU3RhdGUgX2ltYWdlRXh0cmFjdGlvblN0YXRlOwotICAgIENHUmVjdCBfaW1hZ2VFeHRyYWN0
aW9uSW50ZXJhY3Rpb25Cb3VuZHM7Ci0gICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoKT4+IF9hY3Rp
b25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJLaXQ6OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbj4gX3N1cHByZXNzSW1hZ2VFeHRy
YWN0aW9uVG9rZW47CisgICAgQk9PTCBfaGFzUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKKyAgICBP
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOworICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKEJPT0wpPj4gX2FjdGlvbnNUb1BlcmZv
cm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb247CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAg
ICAgUmV0YWluUHRyPFVJTWVudT4gX2ltYWdlRXh0cmFjdGlvbkNvbnRleHRNZW51OwogI2VuZGlm
IC8vIFVTRShVSUNPTlRFWFRNRU5VKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggODdjNmQxMzhlYmU1NmE2
MTA1YmE4NzI5NzUwMjkwZGY4ZmU2YjM2Mi4uMDYyODI2NGIxZmU0YjBmNjYyYWVlNmUxMGU4YWE4
MjI4YmYwYzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMzA1LDEyICsxMzA1LDYgQEAgLSAoQk9P
TClzZXRJc0VkaXRhYmxlOihCT09MKWlzRWRpdGFibGUKICAgICAgICAgcmV0dXJuIE5POwogCiAg
ICAgX2lzRWRpdGFibGUgPSBpc0VkaXRhYmxlOwotCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJ
T04pCi0gICAgaWYgKHNlbGYuX2ltYWdlRXh0cmFjdGlvbkVuYWJsZWQgJiYgKCFfaXNCbHVycmlu
Z0ZvY3VzZWRFbGVtZW50IHx8ICFfaXNDaGFuZ2luZ0ZvY3VzKSkKLSAgICAgICAgX3N1cHByZXNz
SW1hZ2VFeHRyYWN0aW9uVG9rZW4gPSBpc0VkaXRhYmxlID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OlN1
cHByZXNzSW50ZXJhY3Rpb25Ub2tlbj4oc2VsZiwgX2ltYWdlRXh0cmFjdGlvbkludGVyYWN0aW9u
LmdldCgpKSA6IG51bGxwdHI7Ci0jZW5kaWYKLQogICAgIHJldHVybiBZRVM7CiB9CiAKQEAgLTI2
NjQsMTMgKzI2NTgsNiBAQCAtIChCT09MKWhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQKICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29ucykK
ICAgICAgICAgcmV0dXJuIE5POwogCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAg
aWYgKFtzZWxmIF9pbWFnZUV4dHJhY3Rpb25TaG91bGRQcmV2ZW50VGV4dEludGVyYWN0aW9uQXRQ
b2ludDpwb2ludF0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIFtzZWxmIF9jYW5jZWxJbWFn
ZUV4dHJhY3Rpb25dOwotI2VuZGlmCi0KICAgICBpZiAoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFi
bGVkKQogICAgICAgICByZXR1cm4gTk87CiAKQEAgLTI2NzgsNiArMjY2NSwxMSBAQCAtIChCT09M
KWhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICBpZiAoIVtz
ZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdKQogICAgICAg
ICByZXR1cm4gTk87CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBpZiAoX2Vs
ZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1l
bnRDb250ZXh0ID09IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbikKKyAgICAgICAgcmV0
dXJuIE5POworI2VuZGlmCisKICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNTZWxl
Y3RhYmxlOwogfQogCkBAIC0yNzE2LDEzICsyNzA4LDYgQEAgLSAoQk9PTCl0ZXh0SW50ZXJhY3Rp
b25HZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZSBzaG91bGRCZWdpbkF0UG9pbnQ6KENH
UG8KICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29ucykKICAgICAgICAg
cmV0dXJuIE5POwogCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAgaWYgKFtzZWxm
IF9pbWFnZUV4dHJhY3Rpb25TaG91bGRQcmV2ZW50VGV4dEludGVyYWN0aW9uQXRQb2ludDpwb2lu
dF0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIFtzZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rp
b25dOwotI2VuZGlmCi0KICAgICBpZiAoIXNlbGYuaXNGb2N1c2luZ0VsZW1lbnQpIHsKICAgICAg
ICAgaWYgKGdlc3R1cmUgPT0gVUlXS0dlc3R1cmVEb3VibGVUYXApIHsKICAgICAgICAgICAgIC8v
IERvbid0IGFsbG93IGRvdWJsZSB0YXAgdGV4dCBnZXN0dXJlcyBpbiBub25lZGl0YWJsZSBjb250
ZW50LgpAQCAtMjc1OCw2ICsyNzQzLDExIEBAIC0gKEJPT0wpdGV4dEludGVyYWN0aW9uR2VzdHVy
ZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxkQmVnaW5BdFBvaW50OihDR1BvCiAgICAg
ICAgIHJldHVybiBOTzsKICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisg
ICAgaWYgKF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiAmJiBfcG9zaXRpb25JbmZvcm1h
dGlvbi5lbGVtZW50Q29udGV4dCA9PSBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24pCisg
ICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgorCiAgICAgLy8gSWYgd2UncmUgY3VycmVudGx5IGZv
Y3VzaW5nIGFuIGVkaXRhYmxlIGVsZW1lbnQsIG9ubHkgYWxsb3cgdGhlIHNlbGVjdGlvbiB0byBt
b3ZlIHdpdGhpbiB0aGF0IGZvY3VzZWQgZWxlbWVudC4KICAgICBpZiAoc2VsZi5pc0ZvY3VzaW5n
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1lbnRDb250
ZXh0ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0LT5pc1NhbWVFbGVtZW50
KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0KTsKQEAgLTI4OTAsMTAg
KzI4ODAsNiBAQCAtICh2b2lkKV9zaW5nbGVUYXBJZGVudGlmaWVkOihVSVRhcEdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9
IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogICAgIF9pc0V4cGVjdGlu
Z0Zhc3RTaW5nbGVUYXBDb21taXQgPSAhX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
LmVuYWJsZWQ7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBbc2VsZiBfY2Fu
Y2VsSW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWRBZnRlclRvdWNoQXQ6Z2VzdHVyZVJlY29nbml6ZXIu
bG9jYXRpb25dOwotI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElm
TmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQpAQCAtNDQ4MCw3ICs0NDY2LDYg
QEAgLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUKICAgICBbc2Vs
ZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5PXTsKICAgICBbX3R3b0ZpbmdlckRvdWJs
ZVRhcEdlc3R1cmVSZWNvZ25pemVyIF93a19jYW5jZWxdOwogI2lmIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQotICAgIF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuID0gbnVsbHB0cjsKICAg
ICBbc2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsKICNlbmRpZgogfQpAQCAtODQ5MSwyMSAr
ODQ3NiwxMiBAQCAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkCiAKICAgICBbc2VsZiBjbGVhblVwRHJh
Z1NvdXJjZVNlc3Npb25TdGF0ZV07CiAKLSAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dl
YWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRh
aW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIHsK
KyAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRhaW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRp
b24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIChCT09MIHByb2NlZWRXaXRoSW1hZ2VFeHRy
YWN0aW9uKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwotICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVk
V2l0aEltYWdlRXh0cmFjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRv
IGRyYWdPcmlnaW4gPSBbc2Vzc2lvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXTsK
LSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICAgICAgW3N0cm9uZ1NlbGYgX2NhbmNl
bEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJUb3VjaEF0OmRyYWdPcmlnaW5dOwotICAgICAg
ICBpZiAoc3Ryb25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6SW1hZ2VF
eHRyYWN0aW9uU3RhdGU6OkFjdGl2ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0Fu
ZERyb3AsICJEcmFnIHNlc3Npb24gZmFpbGVkOiAlcCAoZGVmZXJyaW5nIHRvIGFjdGl2ZSBpbWFn
ZSBleHRyYWN0aW9uKSIsIHNlc3Npb24uZ2V0KCkpOwotICAgICAgICAgICAgY29tcGxldGlvbigp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICBzdHJv
bmdTZWxmLT5fZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLnByZXBhcmVGb3JEcmFnU2Vzc2lvbihz
ZXNzaW9uLmdldCgpLCBjb21wbGV0aW9uLmdldCgpKTsKICAgICAgICAgc3Ryb25nU2VsZi0+X3Bh
Z2UtPnJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGRyYWdPcmlnaW4p
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3N0cm9uZ1NlbGYgY29udmVydFBvaW50OmRyYWdP
cmlnaW4gdG9WaWV3OltzdHJvbmdTZWxmIHdpbmRvd11dKSwgW3N0cm9uZ1NlbGYgX2FsbG93ZWRE
cmFnU291cmNlQWN0aW9uc10pOwogICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRy
YWcgc2Vzc2lvbiByZXF1ZXN0ZWQ6ICVwIGF0IG9yaWdpbjogeyUuMGYsICUuMGZ9Iiwgc2Vzc2lv
bi5nZXQoKSwgZHJhZ09yaWdpbi54LCBkcmFnT3JpZ2luLnkpOwpAQCAtODUxNCw3ICs4NDkwLDcg
QEAgLSAodm9pZClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0
aW9uIHByZXBhcmVGb3JTZXNzaW9uOihpZAogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQog
ICAgIFtzZWxmIF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpwcmVwYXJlRm9yU2Vzc2lv
bl07CiAjZWxzZQotICAgIHByZXBhcmVGb3JTZXNzaW9uKCk7CisgICAgcHJlcGFyZUZvclNlc3Np
b24oTk8pOwogI2VuZGlmCiB9CiAKQEAgLTk0MjgsMTggKzk0MDQsMTggQEAgLSAodm9pZClfd3Jp
dGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQ6KFdlYkNvcmU6OlByb21pc2VkQXR0YWNo
bWVudEluZm8mJikKIAogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogCi0tICh2b2lkKV9k
b0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjooZGlzcGF0Y2hfYmxvY2tfdClibG9jaworLSAo
dm9pZClfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246KHZvaWQoXikoQk9PTCBwcm9jZWVk
V2l0aEltYWdlRXh0cmFjdGlvbikpYmxvY2sKIHsKLSAgICBpZiAoX2ltYWdlRXh0cmFjdGlvblN0
YXRlID09IFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OlBlbmRpbmcpCisgICAgaWYgKF9o
YXNQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uKQogICAgICAgICBfYWN0aW9uc1RvUGVyZm9ybUFmdGVy
UGVuZGluZ0ltYWdlRXh0cmFjdGlvbi5hcHBlbmQobWFrZUJsb2NrUHRyKGJsb2NrKSk7CiAgICAg
ZWxzZQotICAgICAgICBibG9jaygpOworICAgICAgICBibG9jayhOTyk7CiB9CiAKLS0gKHZvaWQp
X2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb24KKy0g
KHZvaWQpX2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rp
b246KEJPT0wpcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24KIHsKICAgICBmb3IgKGF1dG8gYmxv
Y2sgOiBzdGQ6OmV4Y2hhbmdlKF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uLCB7IH0pKQotICAgICAgICBibG9jaygpOworICAgICAgICBibG9jayhwcm9jZWVkV2l0
aEltYWdlRXh0cmFjdGlvbik7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfRVhUUkFDVElP
TikKQEAgLTk5MzYsMTkgKzk5MTIsMTIgQEAgLSAodm9pZClfY29udGV4dE1lbnVJbnRlcmFjdGlv
bjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXIKICAgICBp
ZiAoIXNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24obmlsKTsKIAotICAgIGF1dG8gZ2V0Q29uZmlndXJh
dGlvbkFuZENvbnRpbnVlID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4o
c2VsZiksIGludGVyYWN0aW9uID0gcmV0YWluUHRyKGludGVyYWN0aW9uKSwgY29tcGxldGlvbiA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0geworICAgIGF1dG8gZ2V0Q29uZmlndXJhdGlvbkFu
ZENvbnRpbnVlID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiks
IGludGVyYWN0aW9uID0gcmV0YWluUHRyKGludGVyYWN0aW9uKSwgY29tcGxldGlvbiA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uKV0gKEJPT0wgcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pIHsK
ICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGlmICgh
c3Ryb25nU2VsZikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gW2ludGVyYWN0aW9uIGxvY2F0aW9uSW5WaWV3OnN0cm9uZ1NlbGYuZ2V0KCldOwotI2lmIEVO
QUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgICAgICBbc3Ryb25nU2VsZiBfY2FuY2VsSW1hZ2VF
eHRyYWN0aW9uSWZOZWVkZWRBZnRlclRvdWNoQXQ6cG9zaXRpb25dOwotICAgICAgICBpZiAoc3Ry
b25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9u
U3RhdGU6OkFjdGl2ZSkgeworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgcHJvY2VlZFdpdGhJ
bWFnZUV4dHJhY3Rpb24pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb24obmlsKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgW3N0cm9uZ1NlbGYtPl93
ZWJWaWV3IF9kaWRTaG93Q29udGV4dE1lbnVdOwogCkBAIC05OTU2LDcgKzk5MjUsNyBAQCAtICh2
b2lkKV9jb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilp
bnRlcmFjdGlvbiBjb25maWd1cgogICAgICAgICBpZiAoTlNOdW1iZXIgKnZhbHVlID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OndlYmtpdFNob3dM
aW5rUHJldmlld3NQcmVmZXJlbmNlS2V5XSkKICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9zaG93
TGlua1ByZXZpZXdzID0gdmFsdWUuYm9vbFZhbHVlOwogCi0gICAgICAgIFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChwb3NpdGlvbikgfTsKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCByZXF1ZXN0IHsgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtpbnRlcmFjdGlvbiBsb2Nh
dGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXSkgfTsKICAgICAgICAgcmVxdWVzdC5pbmNsdWRl
U25hcHNob3QgPSB0cnVlOwogICAgICAgICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0g
dHJ1ZTsKICAgICAgICAgcmVxdWVzdC5saW5rSW5kaWNhdG9yU2hvdWxkSGF2ZUxlZ2FjeU1hcmdp
bnMgPSAhW3N0cm9uZ1NlbGYgX3Nob3VsZFVzZUNvbnRleHRNZW51c107CkBAIC05OTcyLDcgKzk5
NDEsNyBAQCAtICh2b2lkKV9jb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50
ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1cgogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQogICAgIFtzZWxmIF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpnZXRDb25maWd1
cmF0aW9uQW5kQ29udGludWVdOwogI2Vsc2UKLSAgICBnZXRDb25maWd1cmF0aW9uQW5kQ29udGlu
dWUoKTsKKyAgICBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUoTk8pOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOGFi
NDAyZGY5MDk0ZWNlZGVjMGQ2NWZiYmMzMTA1ZTA1ZDAyYmJjYS4uNDM5NGNjNTc2MmY5NWJlYjgw
ZjAzNzBjM2YxODYwMGQ2N2RkNTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcyNzAsOSArNzI3MCwxOSBAQCB2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0JiYgcmVz
dWx0LCBjbwogICAgIH0KIAogICAgIGRvd25jYXN0PEhUTUxFbGVtZW50PigqZWxlbWVudFRvVXBk
YXRlKS51cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5k
bGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgewor
ICAgICAgICBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUsCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1l
Q29udGVudE9ubHksCisgICAgfSk7CisKKyAgICBhdXRvIG5vZGVBdExvY2F0aW9uID0gbWFrZVJl
ZlB0cihoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICBpZiAoIW5vZGVB
dExvY2F0aW9uIHx8IG5vZGVBdExvY2F0aW9uLT5zaGFkb3dIb3N0KCkgIT0gZWxlbWVudFRvVXBk
YXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgIC8vIEZJWE1FOiBIaXQtdGVzdCB3aXRoIGxvY2F0aW9uIGFuZCByZXR1
cm4gd2hldGhlciBvciBub3QgdGhlcmUgaXMgb3ZlcmxheSB0ZXh0IGF0IHRoZSBnaXZlbiBsb2Nh
dGlvbi4KLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCpub2RlQXRMb2NhdGlvbikpOwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDZhMjk0ZWJkOTUx
ZDc4OTcwYjBlYmQ1ZGQzMTMwYmI2ZDY3YjU3N2UuLjUyZDhmMWQ5MTdhOTdmOWI5M2E2ZTUxYzdi
MmNiYjExZjg2ODBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTE3LDcgKzIxMTcsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVjdCwg
Y29uc3QgRnJhbQogCiB2b2lkIFdlYlBhZ2U6OnNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGlu
Z1RleHRBdExvY2F0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Vmlz
aWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0
VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxl
Q2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBoaXRUeXBl
KTsKICAgICBhdXRvKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmIChoaXRO
b2RlICYmIGhpdE5vZGUtPnJlbmRlcmVyKCkpCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBzdGF0aWMg
dm9pZCBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIElu
dGVyYWN0aW9uSW5mb3JtYQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9u
SW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJiBpbmZvKQorc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24o
V2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5vZGUqIGlubmVyTm9uU2hhcmVkTm9kZSwgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7CiAgICAgRWxlbWVudCogbGlu
a0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkgJiYgZWxlbWVu
dC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCkBAIC0yNzMyLDcgKzI3MzIsMTQgQEAgc3Rh
dGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgSW4KICAgICB9CiAKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBl
bGVtZW50LnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckltYWdl
KCkpCisgICAgICAgIGJvb2wgc2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZvcm1hdGlvbiA9
IHJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCk7CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04p
CisgICAgICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCppbm5lck5vblNo
YXJlZE5vZGUpKQorICAgICAgICAgICAgc2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZvcm1h
dGlvbiA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGlubmVyTm9uU2hhcmVk
Tm9kZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKHNob3VsZENvbGxlY3RJbWFnZVBvc2l0aW9uSW5m
b3JtYXRpb24pCiAgICAgICAgICAgICBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24ocGFnZSwgZWxl
bWVudCwgcmVxdWVzdCwgaW5mbyk7CiAgICAgICAgIGJvdW5kc1Bvc2l0aW9uSW5mb3JtYXRpb24o
KnJlbmRlcmVyLCBpbmZvKTsKICAgICB9CkBAIC0yNzQyLDcgKzI3NDksNyBAQCBzdGF0aWMgdm9p
ZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBJbgogICAgIAogc3RhdGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZvcm1h
dGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYg
cmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7Ci0gICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUg
eyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0
OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIgT3B0
aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFs
bG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0
UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBlKTsKICAgICBOb2RlKiBoaXROb2Rl
ID0gcmVzdWx0LmlubmVyTm9kZSgpOwogCkBAIC0yOTE1LDExICsyOTIyLDExIEBAIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JCiAKICAgICBhdXRvJiBldmVudEhhbmRsZXIgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpOwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJl
cXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dGcmFtZVNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRl
c3RSZXN1bHRGb3JDdXJzb3IgPSBldmVudEhhbmRsZXIuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVx
dWVzdC5wb2ludCwgaGl0VHlwZSk7Ci0gICAgaWYgKGF1dG8qIGhpdEZyYW1lID0gaGl0VGVzdFJl
c3VsdEZvckN1cnNvci5pbm5lck5vZGVGcmFtZSgpKSB7Ci0gICAgICAgIGluZm8uY3Vyc29yID0g
aGl0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnNlbGVjdEN1cnNvcihoaXRUZXN0UmVzdWx0Rm9yQ3Vy
c29yLCBmYWxzZSk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gZXZlbnRIYW5kbGVyLmhpdFRl
c3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFR5cGUpOworICAgIGlmIChhdXRvKiBo
aXRGcmFtZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSkgeworICAgICAgICBpbmZv
LmN1cnNvciA9IGhpdEZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZWxlY3RDdXJzb3IoaGl0VGVzdFJl
c3VsdCwgZmFsc2UpOwogICAgICAgICBpZiAocmVxdWVzdC5pbmNsdWRlQ2FyZXRDb250ZXh0KQot
ICAgICAgICAgICAgcG9wdWxhdGVDYXJldENvbnRleHQoaGl0VGVzdFJlc3VsdEZvckN1cnNvciwg
cmVxdWVzdCwgaW5mbyk7CisgICAgICAgICAgICBwb3B1bGF0ZUNhcmV0Q29udGV4dChoaXRUZXN0
UmVzdWx0LCByZXF1ZXN0LCBpbmZvKTsKICAgICB9CiAKICAgICBpZiAobV9mb2N1c2VkRWxlbWVu
dCkKQEAgLTI5MjcsNyArMjkzNCw3IEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
IFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAKICAgICBp
ZiAoaXM8RWxlbWVudD4obm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKSkgewogICAgICAgICBh
dXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGlja0V2
ZW50cyk7Ci0gICAgICAgIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKCp0aGlzLCBlbGVtZW50
LCByZXF1ZXN0LCBpbmZvKTsKKyAgICAgICAgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oKnRo
aXMsIGVsZW1lbnQsIHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCks
IGluZm8pOwogCiAgICAgICAgIGlmIChpbmZvLmlzTGluayAmJiAhaW5mby5pc0ltYWdlICYmIHJl
cXVlc3QuaW5jbHVkZVNuYXBzaG90KQogICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlYWJs
ZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShlbGVtZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422428</attachid>
            <date>2021-03-05 14:55:38 -0800</date>
            <delta_ts>2021-03-05 15:57:30 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-222811-20210305145537.patch</filename>
            <type>text/plain</type>
            <size>23911</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJlYTFiOWE4OGVkMWMx
NzBhNDQ1MWEzOTBiMDFjY2QyMDczYTllZi4uYTZkYzllMjlmNDg0YTZlMWM1YmM3NjgxMmE5ZWJl
M2E3ZjA3ZTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRo
b2QgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIGBOb2RlYCBpcyBhIHRleHQgbm9kZSBpbnNpZGUg
YW4gaW1hZ2Ugb3ZlcmxheS4gU2VlIFdlYktpdCBDaGFuZ2VMb2cKKyAgICAgICAgZm9yIG1vcmUg
ZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50Lmg6CisKIDIwMjEtMDMtMDUgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQ2FudmFzOiBkcmF3SW1hZ2Ugc2hvdWxkIG5vcm1hbGl6ZSBzcmNSZWN0
IGJlZm9yZSBjaGVja2luZyBpZiBpdCdzIGVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkM2IxZGU5NGIxOTFj
NDRmODYxYmUxNDAxMmQ3OTgyNTJmMGQ2ODMuLmY4ODM4NzViNGE1NDRkOWQ5OWM4MjRjZWQyM2I4
ZDZhMGNhZTYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMDMtMDUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVt
ZW50IGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBpbWFnZSBvdmVybGF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzIwMzc3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uIGFuZCBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN1
cHBvcnQgZm9yIGFjY2Vzc2libGUgaW1hZ2UgZXh0cmFjdGlvbi4gU2VlIGJlbG93IGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW46OlN1cHBy
ZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN1cHByZXNz
SW50ZXJhY3Rpb25Ub2tlbjo6flN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisK
KyAgICAgICAgUmVtb3ZlIGBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW5gLCBhbG9uZyB3aXRoIGl0
cyBvbmx5IHVzZSBhcyBhIG1lbWJlciBvbiBgV0tDb250ZW50Vmlld2AuIFRoaXMgd2FzIHVzZWQg
dG8KKyAgICAgICAgdGVtcG9yYXJpbHkgc3VwcHJlc3MgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50
ZXJhY3Rpb24gd2hlbiBlZGl0aW5nLCBidXQgaXMgbm93IG5vIGxvbmdlciBuZWNlc3NhcnksIHNp
bmNlIHdlJ3JlCisgICAgICAgIHJlbW92aW5nIGFsbCBkZXBlbmRlbmNlIG9uIHRoaXMgaW50ZXJh
Y3Rpb24gb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0SXNFZGl0YWJsZTpdKToK
KworICAgICAgICBSZW1vdmUgYF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuYC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdp
bkF0UG9pbnQ6XSk6CisKKyAgICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGNhbmNlbCB0aGUgcmVn
dWxhciB0ZXh0IGludGVyYWN0aW9uIGluIGZhdm9yIG9mIHRoZSBpbWFnZSBleHRyYWN0aW9uIGlu
dGVyYWN0aW9uIGFmdGVyIHRoaXMKKyAgICAgICAgcGF0Y2gsIHNpbmNlIHRoZSBmb3JtZXIgd2ls
bCBiZSB1c2VkIGZvciBib3RoLiBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIHRlbXBvcmFyaWx5IHN1
cHByZXNzIHJlZ3VsYXIgdGV4dAorICAgICAgICBpbnRlcmFjdGlvbiB3aGlsZSBpbWFnZSBleHRy
YWN0aW9uIGlzIHN0aWxsIHBlbmRpbmcsIHRvIGF2b2lkIHByZW1hdHVyZWx5IHNlbGVjdGluZyB0
aGUgZW50aXJlIGltYWdlIGVsZW1lbnQuCisKKyAgICAgICAgVG8gZG8gdGhpcywgd2Uga2VlcCB0
cmFjayBvZiB0aGUgZWxlbWVudCBwZW5kaW5nIGltYWdlIGV4dHJhY3Rpb24gKGBfZWxlbWVudFBl
bmRpbmdJbWFnZUV4dHJhY3Rpb25gKSwgYW5kIGF2b2lkCisgICAgICAgIGFsbG93aW5nIHRleHQg
aW50ZXJhY3Rpb25zIHRvIGJlZ2luIGlmIHdlJ3JlIG92ZXIgdGhpcyBleGFjdCBlbGVtZW50Lgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcElkZW50aWZpZWQ6XSk6CisKKyAg
ICAgICAgV2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGNhbmNlbCB0aGUgaW1hZ2UgZXh0cmFj
dGlvbiBpbnRlcmFjdGlvbiBvbiBzaW5nbGUgdGFwIGFueW1vcmU7IHRoaXMgYmVoYXZpb3Igd2ls
bAorICAgICAgICBhdXRvbWF0aWNhbGx5IGZhbGwgb3V0IG9mIHVzaW5nIGRlZmF1bHQgdGV4dCBp
bnRlcmFjdGlvbnMgZm9yIGltYWdlIGV4dHJhY3Rpb24uCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZHJhZ0ludGVyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uOmNvbXBsZXRp
b246XSk6CisKKyAgICAgICAgUmVtb3ZlIGV4cGxpY2l0IGltYWdlIGV4dHJhY3Rpb24gY2FuY2Vs
bGF0aW9uIGhlcmUgYXMgd2VsbCwgYW5kIGluc3RlYWQgYmFpbCBmcm9tIHRoZSBkcmFnIG9ubHkg
aWYgd2UncmUgYWJvdXQKKyAgICAgICAgdG8gcHJvY2VlZCB3aXRoIHRoZSBpbWFnZSBleHRyYWN0
aW9uIGdlc3R1cmUgKHdoaWNoIGlzIGluZGljYXRlZCBieSB0aGUgYXJndW1lbnQgdG8gdGhlIGNv
bXBsZXRpb24gaGFuZGxlcikuCisgICAgICAgIFNlZSBjb21tZW50IGJlbG93LgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOl0pOgorCisg
ICAgICAgIEFkZCBhbiBlbnVtIGZsYWcgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBibG9jayBo
ZXJlLCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UnbGwgd2FudCB0byBpbW1lZGlhdGVs
eQorICAgICAgICBwcm9jZWVkIHdpdGggaW1hZ2UgZXh0cmFjdGlvbi4gVGhlIHZhbHVlIG9mIHRo
aXMgZmxhZyB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGhpdC10ZXN0IGFmdGVyIHVwZGF0aW5n
IHRoZSBwYWdlCisgICAgICAgIHdpdGggaW1hZ2UgZXh0cmFjdGlvbiByZXN1bHRzIGluIGBXZWJQ
YWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0YC4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb250ZXh0TWVudUludGVyYWN0
aW9uOmNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2NhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5n
SW1hZ2VFeHRyYWN0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBSZW1vdmUgYSBGSVhNRSBhbmQgaW1wbGVtZW50
IGhpdC10ZXN0aW5nIGxvZ2ljLCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGdpdmVuIGxv
Y2F0aW9uIGhpdC10ZXN0cyB0byB0aGUKKyAgICAgICAgaW1hZ2Ugb3ZlcmxheSB3ZSd2ZSBqdXN0
IGluamVjdGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxl
Y3RpbmdUZXh0QXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbklu
Zm9ybWF0aW9uKToKKworICAgICAgICBBdm9pZCBleHRyYWN0aW5nIGltYWdlIGRhdGEgZm9yIGEg
cG9zaXRpb24gaW5mb3JtYXRpb24gcmVxdWVzdCwgaWYgdGhlIGhpdC10ZXN0ZWQgbm9kZSBpcyBh
Y3R1YWxseSBhIHRleHQgbm9kZQorICAgICAgICBpbiBhbiBpbWFnZSBvdmVybGF5LCBpbnN0ZWFk
IG9mIGFuIGltYWdlLgorCisgICAgICAgIChXZWJLaXQ6OnNlbGVjdGlvblBvc2l0aW9uSW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKToK
KworICAgICAgICBBbGxvdyB0ZXh0IGludGVyYWN0aW9ucyB0byBiZWdpbiBpbiB1c2VyLWFnZW50
IHNoYWRvdyByb290cy4gVGhpcyBtYXRjaGVzIGJlaGF2aW9yIG9uIG1hY09TLCBhbmQgd2FzCisg
ICAgICAgIChwcmVzdW1hYmx5KSBpbml0aWFsbHkgZGlzYWxsb3dlZCBvbiBpT1MgdG8gYXZvaWQg
YWN0aXZhdGluZyB0aGUgZWRpdGFibGUgdGV4dCBpbnRlcmFjdGlvbgorICAgICAgICAoYFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnRgKSwgYXMgb3Bwb3NlZCB0byBibG9jayB0ZXh0IHNlbGVj
dGlvbiBpbnRlcmFjdGlvbnMsIHdoZW4gbG9uZyBwcmVzc2luZyB0ZXh0CisgICAgICAgIGluc2lk
ZSB0ZXh0YXJlYXMgYW5kIHRleHQgZmllbGRzLiBIb3dldmVyLCBzaW5jZSB3ZSBvbmx5IHVzZSB0
aGUgbm9ybWFsIHRleHQgaW50ZXJhY3Rpb24gYXNzaXN0YW50IG5vdyBmb3IgYm90aAorICAgICAg
ICBub24tZWRpdGFibGUgYW5kIGVkaXRhYmxlIHRleHQsIHRoaXMgZGlzdGluY3Rpb24gbm8gbG9u
Z2VyIG1hdHRlcnMuCisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjgwOTcpOiBXS1dlYlZpZXcuVVJMIGlzIG5pbCBp
biB0aGUgcHJvY2Vzc0RpZFRlcm1pbmF0ZSBkZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCA5NjM5Mzk2YjljYzg5MGI2ZDE0ZWZhZGYyZDUwM2VjMTJhOTBiYzBhLi5j
MDkzMGZhM2Q5Yzg4YzUyZGYwMjE0MzRkYWIwZTA3ZGY3ZTYzMzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcApAQCAtMTIzNCw2ICsxMjM0LDI5IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
Omhhc0ltYWdlT3ZlcmxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhhc0VsZW1l
bnRXaXRoSWQoKmltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkuaW1wbCgpKTsKIH0KIAor
Ym9vbCBIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUmIG5vZGUpCit7
CisgICAgaWYgKCFpczxUZXh0Pihub2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBzaGFkb3dIb3N0ID0gbm9kZS5zaGFkb3dIb3N0KCk7CisgICAgaWYgKCFzaGFkb3dIb3N0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHVzZXJBZ2VudFNoYWRvd1Jvb3Qg
PSBzaGFkb3dIb3N0LT51c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKCF1c2VyQWdlbnRT
aGFkb3dSb290KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxEaXZFbGVtZW50PigqdXNlckFnZW50U2hhZG93Um9vdCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkLmdldElkQXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBjaGlsZC5jb250YWlucygmbm9kZSk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKIHZvaWQg
SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0JiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDM1NzBm
NGMwMzhmNWFjMmI0NjJlMWZjNjI3OTgzY2VjMTlhMzRlZjkuLmU3Yzc1YzNjZGE1MjQ5Y2RjYTcx
NzNmZTA4MzM5NzRkZDYzNDVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEy
OCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVcGRhdGVTZWxl
Y3Rpb25Gb3JNb3VzZURyYWcoY29uc3QgTm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uQmVmb3JlVXBkYXRlKTsKICAgICBib29sIGhhc0ltYWdlT3Zlcmxh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSW1hZ2VPdmVybGF5
VGV4dChjb25zdCBOb2RlJik7CiAKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDcxMWQ0MGRmNjIzMzU3NTZmOGIx
NDU2MzRlMWY3NTEyYjY3MTAwNjAuLmNiMWMwZTc5Y2Q3YzcxNmMwMDQ3YzU4OWIxZjY4NGEyZjRl
ZDA5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTIyMSwzMiArMjIxLDYgQEAgc3RydWN0IFdLQXV0b0Nv
cnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0OwogfTsKIAotY2xhc3MgU3Vw
cHJlc3NJbnRlcmFjdGlvblRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdXBwcmVz
c0ludGVyYWN0aW9uVG9rZW4pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4oV0tDb250ZW50VmlldyAqdmlldywgTlNPYmplY3Q8
VUlJbnRlcmFjdGlvbj4gKmludGVyYWN0aW9uKQotICAgICAgICA6IG1fdmlldyh2aWV3KQotICAg
ICAgICAsIG1faW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pCi0gICAgewotICAgICAgICBBU1NFUlQo
dmlldyk7Ci0gICAgICAgIEFTU0VSVChpbnRlcmFjdGlvbik7Ci0gICAgICAgIGlmIChpbnRlcmFj
dGlvbikKLSAgICAgICAgICAgIFt2aWV3IHJlbW92ZUludGVyYWN0aW9uOmludGVyYWN0aW9uXTsK
LSAgICB9Ci0KLSAgICB+U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuKCkKLSAgICB7Ci0gICAgICAg
IGlmICghbV92aWV3IHx8ICFtX2ludGVyYWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIFttX3ZpZXcgYWRkSW50ZXJhY3Rpb246bV9pbnRlcmFjdGlvbi5nZXQoKS5nZXQoKV07
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1fdmll
dzsKLSAgICBXZWFrT2JqQ1B0cjxOU09iamVjdDxVSUludGVyYWN0aW9uPj4gbV9pbnRlcmFjdGlv
bjsKLX07Ci0KIH0KIAogQGNsYXNzIFdLRm9jdXNlZEVsZW1lbnRJbmZvOwpAQCAtNDg4LDEwICs0
NjIsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogICAgIFJldGFp
blB0cjxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyPiBfaW1hZ2VFeHRyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXI+IF9pbWFnZUV4dHJhY3Rpb25UaW1lb3V0R2VzdHVyZVJlY29nbml6ZXI7Ci0gICAgV2Vi
S2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZSBfaW1hZ2VFeHRyYWN0aW9uU3RhdGU7Ci0gICAgQ0dS
ZWN0IF9pbWFnZUV4dHJhY3Rpb25JbnRlcmFjdGlvbkJvdW5kczsKLSAgICBWZWN0b3I8QmxvY2tQ
dHI8dm9pZCgpPj4gX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb247
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuPiBf
c3VwcHJlc3NJbWFnZUV4dHJhY3Rpb25Ub2tlbjsKKyAgICBCT09MIF9oYXNQZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBfZWxlbWVu
dFBlbmRpbmdJbWFnZUV4dHJhY3Rpb247CisgICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoV2ViS2l0
OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbik+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVu
ZGluZ0ltYWdlRXh0cmFjdGlvbjsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBSZXRhaW5Q
dHI8VUlNZW51PiBfaW1hZ2VFeHRyYWN0aW9uQ29udGV4dE1lbnU7CiAjZW5kaWYgLy8gVVNFKFVJ
Q09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA4N2M2ZDEzOGViZTU2YTYxMDViYTg3Mjk3
NTAyOTBkZjhmZTZiMzYyLi4yNjQ1ZDAzYjQwNWU4NjE1MGUwYzdkZjlmMDllYmQzNmYwNDkwNTQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTEzMDUsMTIgKzEzMDUsNiBAQCAtIChCT09MKXNldElzRWRp
dGFibGU6KEJPT0wpaXNFZGl0YWJsZQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBfaXNFZGl0
YWJsZSA9IGlzRWRpdGFibGU7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBp
ZiAoc2VsZi5faW1hZ2VFeHRyYWN0aW9uRW5hYmxlZCAmJiAoIV9pc0JsdXJyaW5nRm9jdXNlZEVs
ZW1lbnQgfHwgIV9pc0NoYW5naW5nRm9jdXMpKQotICAgICAgICBfc3VwcHJlc3NJbWFnZUV4dHJh
Y3Rpb25Ub2tlbiA9IGlzRWRpdGFibGUgPyBtYWtlVW5pcXVlPFdlYktpdDo6U3VwcHJlc3NJbnRl
cmFjdGlvblRva2VuPihzZWxmLCBfaW1hZ2VFeHRyYWN0aW9uSW50ZXJhY3Rpb24uZ2V0KCkpIDog
bnVsbHB0cjsKLSNlbmRpZgotCiAgICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtMjY2NCwxMyArMjY1
OCw2IEBAIC0gKEJPT0wpaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2lu
dAogICAgIGlmIChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zKQogICAgICAgICBy
ZXR1cm4gTk87CiAKLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBpZiAoW3NlbGYg
X2ltYWdlRXh0cmFjdGlvblNob3VsZFByZXZlbnRUZXh0SW50ZXJhY3Rpb25BdFBvaW50OnBvaW50
XSkKLSAgICAgICAgcmV0dXJuIE5POwotCi0gICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlv
bl07Ci0jZW5kaWYKLQogICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQpCiAgICAg
ICAgIHJldHVybiBOTzsKIApAQCAtMjY3OCw2ICsyNjY1LDExIEBAIC0gKEJPT0wpaGFzU2VsZWN0
YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludAogICAgIGlmICghW3NlbGYgZW5zdXJl
UG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBO
TzsKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIGlmIChfZWxlbWVudFBlbmRp
bmdJbWFnZUV4dHJhY3Rpb24gJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQg
PT0gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uKQorICAgICAgICByZXR1cm4gTk87Cisj
ZW5kaWYKKwogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFibGU7CiB9
CiAKQEAgLTI3MTYsMTMgKzI3MDgsNiBAQCAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6
KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQbwogICAgIGlm
IChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zKQogICAgICAgICByZXR1cm4gTk87
CiAKLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBpZiAoW3NlbGYgX2ltYWdlRXh0
cmFjdGlvblNob3VsZFByZXZlbnRUZXh0SW50ZXJhY3Rpb25BdFBvaW50OnBvaW50XSkKLSAgICAg
ICAgcmV0dXJuIE5POwotCi0gICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbl07Ci0jZW5k
aWYKLQogICAgIGlmICghc2VsZi5pc0ZvY3VzaW5nRWxlbWVudCkgewogICAgICAgICBpZiAoZ2Vz
dHVyZSA9PSBVSVdLR2VzdHVyZURvdWJsZVRhcCkgewogICAgICAgICAgICAgLy8gRG9uJ3QgYWxs
b3cgZG91YmxlIHRhcCB0ZXh0IGdlc3R1cmVzIGluIG5vbmVkaXRhYmxlIGNvbnRlbnQuCkBAIC0y
NzU4LDYgKzI3NDMsMTEgQEAgLSAoQk9PTCl0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOihVSVdLR2Vz
dHVyZVR5cGUpZ2VzdHVyZSBzaG91bGRCZWdpbkF0UG9pbnQ6KENHUG8KICAgICAgICAgcmV0dXJu
IE5POwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBpZiAoX2Vs
ZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1l
bnRDb250ZXh0ID09IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbikKKyAgICAgICAgcmV0
dXJuIE5POworI2VuZGlmCisKICAgICAvLyBJZiB3ZSdyZSBjdXJyZW50bHkgZm9jdXNpbmcgYW4g
ZWRpdGFibGUgZWxlbWVudCwgb25seSBhbGxvdyB0aGUgc2VsZWN0aW9uIHRvIG1vdmUgd2l0aGlu
IHRoYXQgZm9jdXNlZCBlbGVtZW50LgogICAgIGlmIChzZWxmLmlzRm9jdXNpbmdFbGVtZW50KQog
ICAgICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQgJiYgX3Bv
c2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQtPmlzU2FtZUVsZW1lbnQoX2ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQpOwpAQCAtMjg5MCwxMCArMjg4MCw2IEBA
IC0gKHZvaWQpX3NpbmdsZVRhcElkZW50aWZpZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gWUVTOwogICAg
IF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmds
ZVRhcENvbW1pdCA9ICFfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkuZW5hYmxlZDsK
LQotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgIFtzZWxmIF9jYW5jZWxJbWFnZUV4
dHJhY3Rpb25JZk5lZWRlZEFmdGVyVG91Y2hBdDpnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbl07
Ci0jZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnko
V0tDb250ZW50VmlldyogY29udGVudFZpZXcpCkBAIC00NDgwLDcgKzQ0NjYsNiBAQCAtICh2b2lk
KV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZQogICAgIFtzZWxmIF9zZXREb3Vi
bGVUYXBHZXN0dXJlc0VuYWJsZWQ6Tk9dOwogICAgIFtfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXIgX3drX2NhbmNlbF07CiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0g
ICAgX3N1cHByZXNzSW1hZ2VFeHRyYWN0aW9uVG9rZW4gPSBudWxscHRyOwogICAgIFtzZWxmIF9j
YW5jZWxJbWFnZUV4dHJhY3Rpb25dOwogI2VuZGlmCiB9CkBAIC04NDkxLDIxICs4NDc2LDEyIEBA
IC0gKHZvaWQpX2RyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBwcmVwYXJlRm9yU2Vzc2lvbjooaWQKIAogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vz
c2lvblN0YXRlXTsKIAotICAgIGF1dG8gcHJlcGFyZUZvclNlc3Npb24gPSBbd2Vha1NlbGYgPSBX
ZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgc2Vzc2lvbiA9IHJldGFpblB0cihzZXNz
aW9uKSwgY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0geworICAgIGF1dG8g
cHJlcGFyZUZvclNlc3Npb24gPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PihzZWxmKSwgc2Vzc2lvbiA9IHJldGFpblB0cihzZXNzaW9uKSwgY29tcGxldGlvbiA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uKV0gKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24g
cHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pIHsKICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0g
d2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGlmICghc3Ryb25nU2VsZikKKyAgICAgICAgaWYgKCFz
dHJvbmdTZWxmIHx8IHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uID09IFdlYktpdDo6UHJvY2Vl
ZFdpdGhJbWFnZUV4dHJhY3Rpb246OlllcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBhdXRvIGRyYWdPcmlnaW4gPSBbc2Vzc2lvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdl
dCgpXTsKLSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICAgICAgW3N0cm9uZ1NlbGYg
X2NhbmNlbEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJUb3VjaEF0OmRyYWdPcmlnaW5dOwot
ICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6
SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OkFjdGl2ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0co
RHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24gZmFpbGVkOiAlcCAoZGVmZXJyaW5nIHRvIGFjdGl2
ZSBpbWFnZSBleHRyYWN0aW9uKSIsIHNlc3Npb24uZ2V0KCkpOwotICAgICAgICAgICAgY29tcGxl
dGlvbigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAg
ICBzdHJvbmdTZWxmLT5fZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLnByZXBhcmVGb3JEcmFnU2Vz
c2lvbihzZXNzaW9uLmdldCgpLCBjb21wbGV0aW9uLmdldCgpKTsKICAgICAgICAgc3Ryb25nU2Vs
Zi0+X3BhZ2UtPnJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGRyYWdP
cmlnaW4pLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3N0cm9uZ1NlbGYgY29udmVydFBvaW50
OmRyYWdPcmlnaW4gdG9WaWV3OltzdHJvbmdTZWxmIHdpbmRvd11dKSwgW3N0cm9uZ1NlbGYgX2Fs
bG93ZWREcmFnU291cmNlQWN0aW9uc10pOwogICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJv
cCwgIkRyYWcgc2Vzc2lvbiByZXF1ZXN0ZWQ6ICVwIGF0IG9yaWdpbjogeyUuMGYsICUuMGZ9Iiwg
c2Vzc2lvbi5nZXQoKSwgZHJhZ09yaWdpbi54LCBkcmFnT3JpZ2luLnkpOwpAQCAtODUxNCw3ICs4
NDkwLDcgQEAgLSAodm9pZClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWlu
dGVyYWN0aW9uIHByZXBhcmVGb3JTZXNzaW9uOihpZAogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQogICAgIFtzZWxmIF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpwcmVwYXJlRm9y
U2Vzc2lvbl07CiAjZWxzZQotICAgIHByZXBhcmVGb3JTZXNzaW9uKCk7CisgICAgcHJlcGFyZUZv
clNlc3Npb24oV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbjo6Tm8pOwogI2VuZGlm
CiB9CiAKQEAgLTk0MjgsMTggKzk0MDQsMjAgQEAgLSAodm9pZClfd3JpdGVQcm9taXNlZEF0dGFj
aG1lbnRUb1Bhc3RlYm9hcmQ6KFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJikKIAog
I2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogCi0tICh2b2lkKV9kb0FmdGVyUGVuZGluZ0lt
YWdlRXh0cmFjdGlvbjooZGlzcGF0Y2hfYmxvY2tfdClibG9jaworLSAodm9pZClfZG9BZnRlclBl
bmRpbmdJbWFnZUV4dHJhY3Rpb246KHZvaWQoXikoV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0
cmFjdGlvbiBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikpYmxvY2sKIHsKLSAgICBpZiAoX2lt
YWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OlBlbmRp
bmcpCisgICAgaWYgKF9oYXNQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uKQogICAgICAgICBfYWN0aW9u
c1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbi5hcHBlbmQobWFrZUJsb2NrUHRy
KGJsb2NrKSk7CiAgICAgZWxzZQotICAgICAgICBibG9jaygpOworICAgICAgICBibG9jayhXZWJL
aXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uOjpObyk7CiB9CiAKLS0gKHZvaWQpX2ludm9r
ZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb24KKy0gKHZvaWQp
X2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246KFdl
YktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rp
b24KIHsKKyAgICBfaGFzUGVuZGluZ0ltYWdlRXh0cmFjdGlvbiA9IE5POworICAgIF9lbGVtZW50
UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBmb3IgKGF1dG8gYmxv
Y2sgOiBzdGQ6OmV4Y2hhbmdlKF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uLCB7IH0pKQotICAgICAgICBibG9jaygpOworICAgICAgICBibG9jayhwcm9jZWVkV2l0
aEltYWdlRXh0cmFjdGlvbik7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfRVhUUkFDVElP
TikKQEAgLTk5MzYsMTkgKzk5MTQsMTIgQEAgLSAodm9pZClfY29udGV4dE1lbnVJbnRlcmFjdGlv
bjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXIKICAgICBp
ZiAoIXNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24obmlsKTsKIAotICAgIGF1dG8gZ2V0Q29uZmlndXJh
dGlvbkFuZENvbnRpbnVlID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4o
c2VsZiksIGludGVyYWN0aW9uID0gcmV0YWluUHRyKGludGVyYWN0aW9uKSwgY29tcGxldGlvbiA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0geworICAgIGF1dG8gZ2V0Q29uZmlndXJhdGlvbkFu
ZENvbnRpbnVlID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiks
IGludGVyYWN0aW9uID0gcmV0YWluUHRyKGludGVyYWN0aW9uKSwgY29tcGxldGlvbiA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uKV0gKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24g
cHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pIHsKICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0g
d2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGlmICghc3Ryb25nU2VsZikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBhdXRvIHBvc2l0aW9uID0gW2ludGVyYWN0aW9uIGxvY2F0aW9uSW5W
aWV3OnN0cm9uZ1NlbGYuZ2V0KCldOwotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAg
ICAgICBbc3Ryb25nU2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWRBZnRlclRvdWNo
QXQ6cG9zaXRpb25dOwotICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0
YXRlID09IFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OkFjdGl2ZSkgeworICAgICAgICBp
ZiAoIXN0cm9uZ1NlbGYgfHwgcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24gPT0gV2ViS2l0OjpQ
cm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbjo6WWVzKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
KG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAg
IFtzdHJvbmdTZWxmLT5fd2ViVmlldyBfZGlkU2hvd0NvbnRleHRNZW51XTsKIApAQCAtOTk1Niw3
ICs5OTI3LDcgQEAgLSAodm9pZClfY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVu
dUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXIKICAgICAgICAgaWYgKE5TTnVtYmVy
ICp2YWx1ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZv
cktleTp3ZWJraXRTaG93TGlua1ByZXZpZXdzUHJlZmVyZW5jZUtleV0pCiAgICAgICAgICAgICBz
dHJvbmdTZWxmLT5fc2hvd0xpbmtQcmV2aWV3cyA9IHZhbHVlLmJvb2xWYWx1ZTsKIAotICAgICAg
ICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QgeyBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQocG9zaXRpb24pIH07CisgICAgICAgIFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChb
aW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5nZXQoKV0pIH07CiAgICAgICAg
IHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90ID0gdHJ1ZTsKICAgICAgICAgcmVxdWVzdC5pbmNsdWRl
TGlua0luZGljYXRvciA9IHRydWU7CiAgICAgICAgIHJlcXVlc3QubGlua0luZGljYXRvclNob3Vs
ZEhhdmVMZWdhY3lNYXJnaW5zID0gIVtzdHJvbmdTZWxmIF9zaG91bGRVc2VDb250ZXh0TWVudXNd
OwpAQCAtOTk3Miw3ICs5OTQzLDcgQEAgLSAodm9pZClfY29udGV4dE1lbnVJbnRlcmFjdGlvbjoo
VUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXIKICNpZiBFTkFC
TEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBbc2VsZiBfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJh
Y3Rpb246Z2V0Q29uZmlndXJhdGlvbkFuZENvbnRpbnVlXTsKICNlbHNlCi0gICAgZ2V0Q29uZmln
dXJhdGlvbkFuZENvbnRpbnVlKCk7CisgICAgZ2V0Q29uZmlndXJhdGlvbkFuZENvbnRpbnVlKFdl
YktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb246Ok5vKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhhYjQwMmRm
OTA5NGVjZWRlYzBkNjVmYmJjMzEwNWUwNWQwMmJiY2EuLjQzOTRjYzU3NjJmOTViZWI4MGYwMzcw
YzNmMTg2MDBkNjdkZDU1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC03MjcwLDkgKzcyNzAsMTkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVX
aXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCwg
Y28KICAgICB9CiAKICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKmVsZW1lbnRUb1VwZGF0ZSku
dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1
dG8gaGl0VGVzdFJlc3VsdCA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigp
LmhpdFRlc3RSZXN1bHRBdFBvaW50KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIHsKKyAgICAg
ICAgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlLAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRl
bnRPbmx5LAorICAgIH0pOworCisgICAgYXV0byBub2RlQXRMb2NhdGlvbiA9IG1ha2VSZWZQdHIo
aGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgaWYgKCFub2RlQXRMb2Nh
dGlvbiB8fCBub2RlQXRMb2NhdGlvbi0+c2hhZG93SG9zdCgpICE9IGVsZW1lbnRUb1VwZGF0ZSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICAvLyBGSVhNRTogSGl0LXRlc3Qgd2l0aCBsb2NhdGlvbiBhbmQgcmV0dXJuIHdo
ZXRoZXIgb3Igbm90IHRoZXJlIGlzIG92ZXJsYXkgdGV4dCBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24u
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSFRN
TEVsZW1lbnQ6OmlzSW1hZ2VPdmVybGF5VGV4dCgqbm9kZUF0TG9jYXRpb24pKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA2YTI5NGViZDk1MWQ3ODk3
MGIwZWJkNWRkMzEzMGJiNmQ2N2I1NzdlLi41MmQ4ZjFkOTE3YTk3ZjliOTNhNmU1MWM3YjJjYmIx
MWY4NjgwYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMjExNyw3ICsyMTE3LDcgQEAgc3RhdGljIGlubGluZSBib29s
IHJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlvbihjb25zdCBJbnRSZWN0JiBibG9ja1JlY3QsIGNvbnN0
IEZyYW0KIAogdm9pZCBXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3RpbmdUZXh0
QXRMb2NhdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgY29uc3RleHByIE9wdGlv
blNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVD
aGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxk
RnJhbWVDb250ZW50T25seSB9OwogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSk7CiAg
ICAgYXV0byogaGl0Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBpZiAoaGl0Tm9kZSAm
JiBoaXROb2RlLT5yZW5kZXJlcigpKQpAQCAtMjY5Niw3ICsyNjk2LDcgQEAgc3RhdGljIHZvaWQg
Ym91bmRzUG9zaXRpb25JbmZvcm1hdGlvbihSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBJbnRlcmFj
dGlvbkluZm9ybWEKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9y
bWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYgaW5mbykKK3N0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBh
Z2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOb2RlKiBpbm5lck5vblNoYXJlZE5vZGUsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQogewogICAgIEVsZW1lbnQqIGxpbmtFbGVt
ZW50ID0gbnVsbHB0cjsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpICYmIGVsZW1lbnQucmVu
ZGVyZXIoKS0+aXNSZW5kZXJJbWFnZSgpKQpAQCAtMjczMiw3ICsyNzMyLDE0IEBAIHN0YXRpYyB2
b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEluCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQor
ICAgICAgICBib29sIHNob3VsZENvbGxlY3RJbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24gPSByZW5k
ZXJlci0+aXNSZW5kZXJJbWFnZSgpOworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAg
ICAgICBpZiAoSFRNTEVsZW1lbnQ6OmlzSW1hZ2VPdmVybGF5VGV4dCgqaW5uZXJOb25TaGFyZWRO
b2RlKSkKKyAgICAgICAgICAgIHNob3VsZENvbGxlY3RJbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24g
PSBmYWxzZTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShpbm5lck5vblNoYXJlZE5vZGUp
OworI2VuZGlmCisgICAgICAgIGlmIChzaG91bGRDb2xsZWN0SW1hZ2VQb3NpdGlvbkluZm9ybWF0
aW9uKQogICAgICAgICAgICAgaW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKHBhZ2UsIGVsZW1lbnQs
IHJlcXVlc3QsIGluZm8pOwogICAgICAgICBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKCpyZW5k
ZXJlciwgaW5mbyk7CiAgICAgfQpAQCAtMjc0Miw3ICsyNzQ5LDcgQEAgc3RhdGljIHZvaWQgZWxl
bWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgSW4KICAgICAKIHN0YXRpYyB2b2lkIHNlbGVjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24o
V2ViUGFnZSYgcGFnZSwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVl
c3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQogewotICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxs
b3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CisgICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zp
c2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9
IHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQocmVxdWVzdC5wb2ludCwgaGl0VHlwZSk7CiAgICAgTm9kZSogaGl0Tm9kZSA9IHJl
c3VsdC5pbm5lck5vZGUoKTsKIApAQCAtMjkxNSwxMSArMjkyMiwxMSBAQCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiBXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSQogCiAgICAgYXV0byYgZXZlbnRIYW5kbGVyID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKTsKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVz
dFJlcXVlc3Q6OkFsbG93RnJhbWVTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNp
YmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07Ci0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVz
dWx0Rm9yQ3Vyc29yID0gZXZlbnRIYW5kbGVyLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3Qu
cG9pbnQsIGhpdFR5cGUpOwotICAgIGlmIChhdXRvKiBoaXRGcmFtZSA9IGhpdFRlc3RSZXN1bHRG
b3JDdXJzb3IuaW5uZXJOb2RlRnJhbWUoKSkgewotICAgICAgICBpbmZvLmN1cnNvciA9IGhpdEZy
YW1lLT5ldmVudEhhbmRsZXIoKS5zZWxlY3RDdXJzb3IoaGl0VGVzdFJlc3VsdEZvckN1cnNvciwg
ZmFsc2UpOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IGV2ZW50SGFuZGxlci5oaXRUZXN0UmVz
dWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBlKTsKKyAgICBpZiAoYXV0byogaGl0RnJh
bWUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZUZyYW1lKCkpIHsKKyAgICAgICAgaW5mby5jdXJz
b3IgPSBoaXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2VsZWN0Q3Vyc29yKGhpdFRlc3RSZXN1bHQs
IGZhbHNlKTsKICAgICAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZUNhcmV0Q29udGV4dCkKLSAgICAg
ICAgICAgIHBvcHVsYXRlQ2FyZXRDb250ZXh0KGhpdFRlc3RSZXN1bHRGb3JDdXJzb3IsIHJlcXVl
c3QsIGluZm8pOworICAgICAgICAgICAgcG9wdWxhdGVDYXJldENvbnRleHQoaGl0VGVzdFJlc3Vs
dCwgcmVxdWVzdCwgaW5mbyk7CiAgICAgfQogCiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpCkBA
IC0yOTI3LDcgKzI5MzQsNyBAQCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBXZWJQ
YWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSQogCiAgICAgaWYgKGlz
PEVsZW1lbnQ+KG5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cykpIHsKICAgICAgICAgYXV0byYg
ZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMp
OwotICAgICAgICBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbigqdGhpcywgZWxlbWVudCwgcmVx
dWVzdCwgaW5mbyk7CisgICAgICAgIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKCp0aGlzLCBl
bGVtZW50LCByZXF1ZXN0LCBoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLCBpbmZv
KTsKIAogICAgICAgICBpZiAoaW5mby5pc0xpbmsgJiYgIWluZm8uaXNJbWFnZSAmJiByZXF1ZXN0
LmluY2x1ZGVTbmFwc2hvdCkKICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWFibGVCaXRt
YXBTbmFwc2hvdEZvck5vZGUoZWxlbWVudCk7Cg==
</data>
<flag name="commit-queue"
          id="441527"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422444</attachid>
            <date>2021-03-05 15:44:34 -0800</date>
            <delta_ts>2021-03-05 15:46:18 -0800</delta_ts>
            <desc>Fix non-internal iOS build</desc>
            <filename>bug-222811-20210305154433.patch</filename>
            <type>text/plain</type>
            <size>24216</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJlYTFiOWE4OGVkMWMx
NzBhNDQ1MWEzOTBiMDFjY2QyMDczYTllZi4uYTZkYzllMjlmNDg0YTZlMWM1YmM3NjgxMmE5ZWJl
M2E3ZjA3ZTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRo
b2QgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIGBOb2RlYCBpcyBhIHRleHQgbm9kZSBpbnNpZGUg
YW4gaW1hZ2Ugb3ZlcmxheS4gU2VlIFdlYktpdCBDaGFuZ2VMb2cKKyAgICAgICAgZm9yIG1vcmUg
ZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50Lmg6CisKIDIwMjEtMDMtMDUgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQ2FudmFzOiBkcmF3SW1hZ2Ugc2hvdWxkIG5vcm1hbGl6ZSBzcmNSZWN0
IGJlZm9yZSBjaGVja2luZyBpZiBpdCdzIGVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkM2IxZGU5NGIxOTFj
NDRmODYxYmUxNDAxMmQ3OTgyNTJmMGQ2ODMuLmY4ODM4NzViNGE1NDRkOWQ5OWM4MjRjZWQyM2I4
ZDZhMGNhZTYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMDMtMDUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVt
ZW50IGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBpbWFnZSBvdmVybGF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzIwMzc3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uIGFuZCBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN1
cHBvcnQgZm9yIGFjY2Vzc2libGUgaW1hZ2UgZXh0cmFjdGlvbi4gU2VlIGJlbG93IGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW46OlN1cHBy
ZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN1cHByZXNz
SW50ZXJhY3Rpb25Ub2tlbjo6flN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisK
KyAgICAgICAgUmVtb3ZlIGBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW5gLCBhbG9uZyB3aXRoIGl0
cyBvbmx5IHVzZSBhcyBhIG1lbWJlciBvbiBgV0tDb250ZW50Vmlld2AuIFRoaXMgd2FzIHVzZWQg
dG8KKyAgICAgICAgdGVtcG9yYXJpbHkgc3VwcHJlc3MgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50
ZXJhY3Rpb24gd2hlbiBlZGl0aW5nLCBidXQgaXMgbm93IG5vIGxvbmdlciBuZWNlc3NhcnksIHNp
bmNlIHdlJ3JlCisgICAgICAgIHJlbW92aW5nIGFsbCBkZXBlbmRlbmNlIG9uIHRoaXMgaW50ZXJh
Y3Rpb24gb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0SXNFZGl0YWJsZTpdKToK
KworICAgICAgICBSZW1vdmUgYF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuYC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdp
bkF0UG9pbnQ6XSk6CisKKyAgICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGNhbmNlbCB0aGUgcmVn
dWxhciB0ZXh0IGludGVyYWN0aW9uIGluIGZhdm9yIG9mIHRoZSBpbWFnZSBleHRyYWN0aW9uIGlu
dGVyYWN0aW9uIGFmdGVyIHRoaXMKKyAgICAgICAgcGF0Y2gsIHNpbmNlIHRoZSBmb3JtZXIgd2ls
bCBiZSB1c2VkIGZvciBib3RoLiBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIHRlbXBvcmFyaWx5IHN1
cHByZXNzIHJlZ3VsYXIgdGV4dAorICAgICAgICBpbnRlcmFjdGlvbiB3aGlsZSBpbWFnZSBleHRy
YWN0aW9uIGlzIHN0aWxsIHBlbmRpbmcsIHRvIGF2b2lkIHByZW1hdHVyZWx5IHNlbGVjdGluZyB0
aGUgZW50aXJlIGltYWdlIGVsZW1lbnQuCisKKyAgICAgICAgVG8gZG8gdGhpcywgd2Uga2VlcCB0
cmFjayBvZiB0aGUgZWxlbWVudCBwZW5kaW5nIGltYWdlIGV4dHJhY3Rpb24gKGBfZWxlbWVudFBl
bmRpbmdJbWFnZUV4dHJhY3Rpb25gKSwgYW5kIGF2b2lkCisgICAgICAgIGFsbG93aW5nIHRleHQg
aW50ZXJhY3Rpb25zIHRvIGJlZ2luIGlmIHdlJ3JlIG92ZXIgdGhpcyBleGFjdCBlbGVtZW50Lgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcElkZW50aWZpZWQ6XSk6CisKKyAg
ICAgICAgV2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGNhbmNlbCB0aGUgaW1hZ2UgZXh0cmFj
dGlvbiBpbnRlcmFjdGlvbiBvbiBzaW5nbGUgdGFwIGFueW1vcmU7IHRoaXMgYmVoYXZpb3Igd2ls
bAorICAgICAgICBhdXRvbWF0aWNhbGx5IGZhbGwgb3V0IG9mIHVzaW5nIGRlZmF1bHQgdGV4dCBp
bnRlcmFjdGlvbnMgZm9yIGltYWdlIGV4dHJhY3Rpb24uCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZHJhZ0ludGVyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uOmNvbXBsZXRp
b246XSk6CisKKyAgICAgICAgUmVtb3ZlIGV4cGxpY2l0IGltYWdlIGV4dHJhY3Rpb24gY2FuY2Vs
bGF0aW9uIGhlcmUgYXMgd2VsbCwgYW5kIGluc3RlYWQgYmFpbCBmcm9tIHRoZSBkcmFnIG9ubHkg
aWYgd2UncmUgYWJvdXQKKyAgICAgICAgdG8gcHJvY2VlZCB3aXRoIHRoZSBpbWFnZSBleHRyYWN0
aW9uIGdlc3R1cmUgKHdoaWNoIGlzIGluZGljYXRlZCBieSB0aGUgYXJndW1lbnQgdG8gdGhlIGNv
bXBsZXRpb24gaGFuZGxlcikuCisgICAgICAgIFNlZSBjb21tZW50IGJlbG93LgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOl0pOgorCisg
ICAgICAgIEFkZCBhbiBlbnVtIGZsYWcgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBibG9jayBo
ZXJlLCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UnbGwgd2FudCB0byBpbW1lZGlhdGVs
eQorICAgICAgICBwcm9jZWVkIHdpdGggaW1hZ2UgZXh0cmFjdGlvbi4gVGhlIHZhbHVlIG9mIHRo
aXMgZmxhZyB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGhpdC10ZXN0IGFmdGVyIHVwZGF0aW5n
IHRoZSBwYWdlCisgICAgICAgIHdpdGggaW1hZ2UgZXh0cmFjdGlvbiByZXN1bHRzIGluIGBXZWJQ
YWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0YC4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb250ZXh0TWVudUludGVyYWN0
aW9uOmNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2NhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5n
SW1hZ2VFeHRyYWN0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBSZW1vdmUgYSBGSVhNRSBhbmQgaW1wbGVtZW50
IGhpdC10ZXN0aW5nIGxvZ2ljLCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGdpdmVuIGxv
Y2F0aW9uIGhpdC10ZXN0cyB0byB0aGUKKyAgICAgICAgaW1hZ2Ugb3ZlcmxheSB3ZSd2ZSBqdXN0
IGluamVjdGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxl
Y3RpbmdUZXh0QXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbklu
Zm9ybWF0aW9uKToKKworICAgICAgICBBdm9pZCBleHRyYWN0aW5nIGltYWdlIGRhdGEgZm9yIGEg
cG9zaXRpb24gaW5mb3JtYXRpb24gcmVxdWVzdCwgaWYgdGhlIGhpdC10ZXN0ZWQgbm9kZSBpcyBh
Y3R1YWxseSBhIHRleHQgbm9kZQorICAgICAgICBpbiBhbiBpbWFnZSBvdmVybGF5LCBpbnN0ZWFk
IG9mIGFuIGltYWdlLgorCisgICAgICAgIChXZWJLaXQ6OnNlbGVjdGlvblBvc2l0aW9uSW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKToK
KworICAgICAgICBBbGxvdyB0ZXh0IGludGVyYWN0aW9ucyB0byBiZWdpbiBpbiB1c2VyLWFnZW50
IHNoYWRvdyByb290cy4gVGhpcyBtYXRjaGVzIGJlaGF2aW9yIG9uIG1hY09TLCBhbmQgd2FzCisg
ICAgICAgIChwcmVzdW1hYmx5KSBpbml0aWFsbHkgZGlzYWxsb3dlZCBvbiBpT1MgdG8gYXZvaWQg
YWN0aXZhdGluZyB0aGUgZWRpdGFibGUgdGV4dCBpbnRlcmFjdGlvbgorICAgICAgICAoYFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnRgKSwgYXMgb3Bwb3NlZCB0byBibG9jayB0ZXh0IHNlbGVj
dGlvbiBpbnRlcmFjdGlvbnMsIHdoZW4gbG9uZyBwcmVzc2luZyB0ZXh0CisgICAgICAgIGluc2lk
ZSB0ZXh0YXJlYXMgYW5kIHRleHQgZmllbGRzLiBIb3dldmVyLCBzaW5jZSB3ZSBvbmx5IHVzZSB0
aGUgbm9ybWFsIHRleHQgaW50ZXJhY3Rpb24gYXNzaXN0YW50IG5vdyBmb3IgYm90aAorICAgICAg
ICBub24tZWRpdGFibGUgYW5kIGVkaXRhYmxlIHRleHQsIHRoaXMgZGlzdGluY3Rpb24gbm8gbG9u
Z2VyIG1hdHRlcnMuCisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjgwOTcpOiBXS1dlYlZpZXcuVVJMIGlzIG5pbCBp
biB0aGUgcHJvY2Vzc0RpZFRlcm1pbmF0ZSBkZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCA5NjM5Mzk2YjljYzg5MGI2ZDE0ZWZhZGYyZDUwM2VjMTJhOTBiYzBhLi5j
MDkzMGZhM2Q5Yzg4YzUyZGYwMjE0MzRkYWIwZTA3ZGY3ZTYzMzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcApAQCAtMTIzNCw2ICsxMjM0LDI5IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
Omhhc0ltYWdlT3ZlcmxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhhc0VsZW1l
bnRXaXRoSWQoKmltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkuaW1wbCgpKTsKIH0KIAor
Ym9vbCBIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUmIG5vZGUpCit7
CisgICAgaWYgKCFpczxUZXh0Pihub2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBzaGFkb3dIb3N0ID0gbm9kZS5zaGFkb3dIb3N0KCk7CisgICAgaWYgKCFzaGFkb3dIb3N0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHVzZXJBZ2VudFNoYWRvd1Jvb3Qg
PSBzaGFkb3dIb3N0LT51c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKCF1c2VyQWdlbnRT
aGFkb3dSb290KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxEaXZFbGVtZW50PigqdXNlckFnZW50U2hhZG93Um9vdCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkLmdldElkQXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBjaGlsZC5jb250YWlucygmbm9kZSk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKIHZvaWQg
SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0JiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDM1NzBm
NGMwMzhmNWFjMmI0NjJlMWZjNjI3OTgzY2VjMTlhMzRlZjkuLmU3Yzc1YzNjZGE1MjQ5Y2RjYTcx
NzNmZTA4MzM5NzRkZDYzNDVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEy
OCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVcGRhdGVTZWxl
Y3Rpb25Gb3JNb3VzZURyYWcoY29uc3QgTm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uQmVmb3JlVXBkYXRlKTsKICAgICBib29sIGhhc0ltYWdlT3Zlcmxh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSW1hZ2VPdmVybGF5
VGV4dChjb25zdCBOb2RlJik7CiAKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDcxMWQ0MGRmNjIzMzU3NTZmOGIx
NDU2MzRlMWY3NTEyYjY3MTAwNjAuLjU5NjQ1M2YyMjNhYWNiOWE2Y2ZiZTE1Yzc3M2Y1YmU0NTVl
NjQ3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTIwMyw2ICsyMDMsMTEgQEAgZW51bSBTdXBwcmVzc1Nl
bGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEludGVyYWN0aW9uSXNIYXBw
ZW5pbmcgPSAxIDw8IDIKIH07CiAKK2VudW0gY2xhc3MgUHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rp
b24gOiBib29sIHsKKyAgICBObywKKyAgICBZZXMKK307CisKIHN0cnVjdCBXS1NlbGVjdGlvbkRy
YXdpbmdJbmZvIHsKICAgICBlbnVtIGNsYXNzIFNlbGVjdGlvblR5cGUgeyBOb25lLCBQbHVnaW4s
IFJhbmdlIH07CiAgICAgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbygpOwpAQCAtMjIxLDMyICsyMjYs
NiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIENHUmVjdCB0ZXh0TGFzdFJl
Y3Q7CiB9OwogCi1jbGFzcyBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4gewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIFN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbihXS0NvbnRlbnRW
aWV3ICp2aWV3LCBOU09iamVjdDxVSUludGVyYWN0aW9uPiAqaW50ZXJhY3Rpb24pCi0gICAgICAg
IDogbV92aWV3KHZpZXcpCi0gICAgICAgICwgbV9pbnRlcmFjdGlvbihpbnRlcmFjdGlvbikKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2aWV3KTsKLSAgICAgICAgQVNTRVJUKGludGVyYWN0aW9uKTsK
LSAgICAgICAgaWYgKGludGVyYWN0aW9uKQotICAgICAgICAgICAgW3ZpZXcgcmVtb3ZlSW50ZXJh
Y3Rpb246aW50ZXJhY3Rpb25dOwotICAgIH0KLQotICAgIH5TdXBwcmVzc0ludGVyYWN0aW9uVG9r
ZW4oKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3ZpZXcgfHwgIW1faW50ZXJhY3Rpb24pCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgW21fdmlldyBhZGRJbnRlcmFjdGlvbjptX2ludGVy
YWN0aW9uLmdldCgpLmdldCgpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2Vha09iakNQdHI8
V0tDb250ZW50Vmlldz4gbV92aWV3OwotICAgIFdlYWtPYmpDUHRyPE5TT2JqZWN0PFVJSW50ZXJh
Y3Rpb24+PiBtX2ludGVyYWN0aW9uOwotfTsKLQogfQogCiBAY2xhc3MgV0tGb2N1c2VkRWxlbWVu
dEluZm87CkBAIC00ODgsMTAgKzQ2Nyw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKElNQUdFX0VY
VFJBQ1RJT04pCiAgICAgUmV0YWluUHRyPFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6
ZXI+IF9pbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplcj4gX2ltYWdlRXh0cmFjdGlvblRpbWVvdXRHZXN0dXJl
UmVjb2duaXplcjsKLSAgICBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlIF9pbWFnZUV4dHJh
Y3Rpb25TdGF0ZTsKLSAgICBDR1JlY3QgX2ltYWdlRXh0cmFjdGlvbkludGVyYWN0aW9uQm91bmRz
OwotICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKCk+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVu
ZGluZ0ltYWdlRXh0cmFjdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpTdXBwcmVz
c0ludGVyYWN0aW9uVG9rZW4+IF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuOworICAgIEJP
T0wgX2hhc1BlbmRpbmdJbWFnZUV4dHJhY3Rpb247CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RWxl
bWVudENvbnRleHQ+IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKKyAgICBWZWN0b3I8
QmxvY2tQdHI8dm9pZChXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKT4+IF9hY3Rp
b25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOwogI2lmIFVTRShVSUNPTlRF
WFRNRU5VKQogICAgIFJldGFpblB0cjxVSU1lbnU+IF9pbWFnZUV4dHJhY3Rpb25Db250ZXh0TWVu
dTsKICNlbmRpZiAvLyBVU0UoVUlDT05URVhUTUVOVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDg3YzZk
MTM4ZWJlNTZhNjEwNWJhODcyOTc1MDI5MGRmOGZlNmIzNjIuLjI2NDVkMDNiNDA1ZTg2MTUwZTBj
N2RmOWYwOWViZDM2ZjA0OTA1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTMwNSwxMiArMTMwNSw2
IEBAIC0gKEJPT0wpc2V0SXNFZGl0YWJsZTooQk9PTClpc0VkaXRhYmxlCiAgICAgICAgIHJldHVy
biBOTzsKIAogICAgIF9pc0VkaXRhYmxlID0gaXNFZGl0YWJsZTsKLQotI2lmIEVOQUJMRShJTUFH
RV9FWFRSQUNUSU9OKQotICAgIGlmIChzZWxmLl9pbWFnZUV4dHJhY3Rpb25FbmFibGVkICYmICgh
X2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAhX2lzQ2hhbmdpbmdGb2N1cykpCi0gICAgICAg
IF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuID0gaXNFZGl0YWJsZSA/IG1ha2VVbmlxdWU8
V2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4+KHNlbGYsIF9pbWFnZUV4dHJhY3Rpb25J
bnRlcmFjdGlvbi5nZXQoKSkgOiBudWxscHRyOwotI2VuZGlmCi0KICAgICByZXR1cm4gWUVTOwog
fQogCkBAIC0yNjY0LDEzICsyNjU4LDYgQEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25B
dFBvaW50OihDR1BvaW50KXBvaW50CiAgICAgaWYgKF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFu
dFJlYXNvbnMpCiAgICAgICAgIHJldHVybiBOTzsKIAotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQotICAgIGlmIChbc2VsZiBfaW1hZ2VFeHRyYWN0aW9uU2hvdWxkUHJldmVudFRleHRJbnRl
cmFjdGlvbkF0UG9pbnQ6cG9pbnRdKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBbc2VsZiBf
Y2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsKLSNlbmRpZgotCiAgICAgaWYgKF9pbnNwZWN0b3JOb2Rl
U2VhcmNoRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwogCkBAIC0yNjc4LDYgKzI2NjUsMTEg
QEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50CiAg
ICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0
XSkKICAgICAgICAgcmV0dXJuIE5POwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisg
ICAgaWYgKF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiAmJiBfcG9zaXRpb25JbmZvcm1h
dGlvbi5lbGVtZW50Q29udGV4dCA9PSBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24pCisg
ICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgorCiAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0
aW9uLmlzU2VsZWN0YWJsZTsKIH0KIApAQCAtMjcxNiwxMyArMjcwOCw2IEBAIC0gKEJPT0wpdGV4
dEludGVyYWN0aW9uR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxkQmVnaW5B
dFBvaW50OihDR1BvCiAgICAgaWYgKF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnMp
CiAgICAgICAgIHJldHVybiBOTzsKIAotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAg
IGlmIChbc2VsZiBfaW1hZ2VFeHRyYWN0aW9uU2hvdWxkUHJldmVudFRleHRJbnRlcmFjdGlvbkF0
UG9pbnQ6cG9pbnRdKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBbc2VsZiBfY2FuY2VsSW1h
Z2VFeHRyYWN0aW9uXTsKLSNlbmRpZgotCiAgICAgaWYgKCFzZWxmLmlzRm9jdXNpbmdFbGVtZW50
KSB7CiAgICAgICAgIGlmIChnZXN0dXJlID09IFVJV0tHZXN0dXJlRG91YmxlVGFwKSB7CiAgICAg
ICAgICAgICAvLyBEb24ndCBhbGxvdyBkb3VibGUgdGFwIHRleHQgZ2VzdHVyZXMgaW4gbm9uZWRp
dGFibGUgY29udGVudC4KQEAgLTI3NTgsNiArMjc0MywxMSBAQCAtIChCT09MKXRleHRJbnRlcmFj
dGlvbkdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDoo
Q0dQbwogICAgICAgICByZXR1cm4gTk87CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQorICAgIGlmIChfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24gJiYgX3Bvc2l0
aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQgPT0gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uKQorICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKKwogICAgIC8vIElmIHdlJ3JlIGN1
cnJlbnRseSBmb2N1c2luZyBhbiBlZGl0YWJsZSBlbGVtZW50LCBvbmx5IGFsbG93IHRoZSBzZWxl
Y3Rpb24gdG8gbW92ZSB3aXRoaW4gdGhhdCBmb2N1c2VkIGVsZW1lbnQuCiAgICAgaWYgKHNlbGYu
aXNGb2N1c2luZ0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5l
bGVtZW50Q29udGV4dCAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dC0+aXNT
YW1lRWxlbWVudChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dCk7CkBA
IC0yODkwLDEwICsyODgwLDYgQEAgLSAodm9pZClfc2luZ2xlVGFwSWRlbnRpZmllZDooVUlUYXBH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgX3BvdGVudGlhbFRhcElu
UHJvZ3Jlc3MgPSBZRVM7CiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICBf
aXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gIV9kb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKS5lbmFibGVkOwotCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAg
W3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJUb3VjaEF0Omdlc3R1cmVS
ZWNvZ25pemVyLmxvY2F0aW9uXTsKLSNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBjYW5jZWxQb3Rl
bnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKQEAgLTQ0ODAs
NyArNDQ2Niw2IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
CiAgICAgW3NlbGYgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpOT107CiAgICAgW190d29G
aW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBfd2tfY2FuY2VsXTsKICNpZiBFTkFCTEUo
SU1BR0VfRVhUUkFDVElPTikKLSAgICBfc3VwcHJlc3NJbWFnZUV4dHJhY3Rpb25Ub2tlbiA9IG51
bGxwdHI7CiAgICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbl07CiAjZW5kaWYKIH0KQEAg
LTg0OTEsMjEgKzg0NzYsMTIgQEAgLSAodm9pZClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXBhcmVGb3JTZXNzaW9uOihpZAogCiAgICAgW3NlbGYg
Y2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwogCi0gICAgYXV0byBwcmVwYXJlRm9yU2Vz
c2lvbiA9IFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBzZXNz
aW9uID0gcmV0YWluUHRyKHNlc3Npb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb24pXSB7CisgICAgYXV0byBwcmVwYXJlRm9yU2Vzc2lvbiA9IFt3ZWFrU2VsZiA9IFdlYWtP
YmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBzZXNzaW9uID0gcmV0YWluUHRyKHNlc3Npb24p
LCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoV2ViS2l0OjpQcm9jZWVk
V2l0aEltYWdlRXh0cmFjdGlvbiBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAgICAg
ICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJvbmdT
ZWxmKQorICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgcHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rp
b24gPT0gV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbjo6WWVzKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gZHJhZ09yaWdpbiA9IFtzZXNzaW9uIGxvY2F0aW9u
SW5WaWV3OnN0cm9uZ1NlbGYuZ2V0KCldOwotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQot
ICAgICAgICBbc3Ryb25nU2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWRBZnRlclRv
dWNoQXQ6ZHJhZ09yaWdpbl07Ci0gICAgICAgIGlmIChzdHJvbmdTZWxmLT5faW1hZ2VFeHRyYWN0
aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBmYWlsZWQ6ICVw
IChkZWZlcnJpbmcgdG8gYWN0aXZlIGltYWdlIGV4dHJhY3Rpb24pIiwgc2Vzc2lvbi5nZXQoKSk7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSNlbmRpZgotCiAgICAgICAgIHN0cm9uZ1NlbGYtPl9kcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUucHJlcGFyZUZvckRyYWdTZXNzaW9uKHNlc3Npb24uZ2V0KCksIGNvbXBsZXRpb24uZ2V0KCkp
OwogICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoZHJhZ09yaWdpbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbc3Ry
b25nU2VsZiBjb252ZXJ0UG9pbnQ6ZHJhZ09yaWdpbiB0b1ZpZXc6W3N0cm9uZ1NlbGYgd2luZG93
XV0pLCBbc3Ryb25nU2VsZiBfYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zXSk7CiAgICAgICAgIFJF
TEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHJlcXVlc3RlZDogJXAgYXQgb3Jp
Z2luOiB7JS4wZiwgJS4wZn0iLCBzZXNzaW9uLmdldCgpLCBkcmFnT3JpZ2luLngsIGRyYWdPcmln
aW4ueSk7CkBAIC04NTE0LDcgKzg0OTAsNyBAQCAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246KFVJ
RHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkCiAjaWYg
RU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgW3NlbGYgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uXTsKICNlbHNlCi0gICAgcHJlcGFyZUZvclNlc3Np
b24oKTsKKyAgICBwcmVwYXJlRm9yU2Vzc2lvbihXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRy
YWN0aW9uOjpObyk7CiAjZW5kaWYKIH0KIApAQCAtOTQyOCwxOCArOTQwNCwyMCBAQCAtICh2b2lk
KV93cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZDooV2ViQ29yZTo6UHJvbWlzZWRB
dHRhY2htZW50SW5mbyYmKQogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKLS0gKHZv
aWQpX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWJsb2Nr
CistICh2b2lkKV9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjoodm9pZCheKShXZWJLaXQ6
OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKSli
bG9jawogewotICAgIGlmIChfaW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4
dHJhY3Rpb25TdGF0ZTo6UGVuZGluZykKKyAgICBpZiAoX2hhc1BlbmRpbmdJbWFnZUV4dHJhY3Rp
b24pCiAgICAgICAgIF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9u
LmFwcGVuZChtYWtlQmxvY2tQdHIoYmxvY2spKTsKICAgICBlbHNlCi0gICAgICAgIGJsb2NrKCk7
CisgICAgICAgIGJsb2NrKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb246Ok5vKTsK
IH0KIAotLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdl
RXh0cmFjdGlvbgorLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGlu
Z0ltYWdlRXh0cmFjdGlvbjooV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbilwcm9j
ZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogeworICAgIF9oYXNQZW5kaW5nSW1hZ2VFeHRyYWN0aW9u
ID0gTk87CisgICAgX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uID0gV1RGOjpudWxsb3B0
OwogICAgIGZvciAoYXV0byBibG9jayA6IHN0ZDo6ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZvcm1B
ZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb24sIHsgfSkpCi0gICAgICAgIGJsb2NrKCk7CisgICAg
ICAgIGJsb2NrKHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9FWFRSQUNUSU9OKQpAQCAtOTkzNiwxOSArOTkxNCwxMiBAQCAtICh2b2lkKV9j
b250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFj
dGlvbiBjb25maWd1cgogICAgIGlmICghc2VsZi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2xvbmdQ
cmVzc0FjdGlvbnNFbmFibGVkKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbihuaWwpOwogCi0g
ICAgYXV0byBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2Jq
Q1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJh
Y3Rpb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CisgICAgYXV0
byBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxX
S0NvbnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJhY3Rpb24p
LCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoV2ViS2l0OjpQcm9jZWVk
V2l0aEltYWdlRXh0cmFjdGlvbiBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAgICAg
ICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJvbmdT
ZWxmKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBbaW50
ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5nZXQoKV07Ci0jaWYgRU5BQkxFKElN
QUdFX0VYVFJBQ1RJT04pCi0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rp
b25JZk5lZWRlZEFmdGVyVG91Y2hBdDpwb3NpdGlvbl07Ci0gICAgICAgIGlmIChzdHJvbmdTZWxm
LT5faW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6
QWN0aXZlKSB7CisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVkV2l0aEltYWdlRXh0
cmFjdGlvbiA9PSBXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uOjpZZXMpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb24obmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotI2VuZGlmCiAKICAgICAgICAgW3N0cm9uZ1NlbGYtPl93ZWJWaWV3IF9kaWRTaG93Q29udGV4
dE1lbnVdOwogCkBAIC05OTU2LDcgKzk5MjcsNyBAQCAtICh2b2lkKV9jb250ZXh0TWVudUludGVy
YWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1cgog
ICAgICAgICBpZiAoTlNOdW1iZXIgKnZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OndlYmtpdFNob3dMaW5rUHJldmlld3NQcmVmZXJlbmNl
S2V5XSkKICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9zaG93TGlua1ByZXZpZXdzID0gdmFsdWUu
Ym9vbFZhbHVlOwogCi0gICAgICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QgcmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb3NpdGlvbikgfTsKKyAgICAg
ICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KFtpbnRlcmFjdGlvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxm
LmdldCgpXSkgfTsKICAgICAgICAgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgPSB0cnVlOwogICAg
ICAgICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gdHJ1ZTsKICAgICAgICAgcmVxdWVz
dC5saW5rSW5kaWNhdG9yU2hvdWxkSGF2ZUxlZ2FjeU1hcmdpbnMgPSAhW3N0cm9uZ1NlbGYgX3No
b3VsZFVzZUNvbnRleHRNZW51c107CkBAIC05OTcyLDcgKzk5NDMsNyBAQCAtICh2b2lkKV9jb250
ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBjb25maWd1cgogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogICAgIFtzZWxmIF9kb0Fm
dGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWVdOwog
I2Vsc2UKLSAgICBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUoKTsKKyAgICBnZXRDb25maWd1
cmF0aW9uQW5kQ29udGludWUoV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbjo6Tm8p
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggOGFiNDAyZGY5MDk0ZWNlZGVjMGQ2NWZiYmMzMTA1ZTA1ZDAyYmJjYS4uNDM5
NGNjNTc2MmY5NWJlYjgwZjAzNzBjM2YxODYwMGQ2N2RkNTU4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcyNzAsOSArNzI3MCwxOSBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0JiYgcmVzdWx0LCBjbwogICAgIH0KIAogICAgIGRvd25jYXN0PEhUTUxFbGVtZW50
PigqZWxlbWVudFRvVXBkYXRlKS51cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KFdURk1v
dmUocmVzdWx0KSk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocm91bmRlZEludFBvaW50
KGxvY2F0aW9uKSwgeworICAgICAgICBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksCisgICAgICAg
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zp
c2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCisgICAgfSk7CisKKyAgICBhdXRvIG5vZGVBdExv
Y2F0aW9uID0gbWFrZVJlZlB0cihoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsK
KyAgICBpZiAoIW5vZGVBdExvY2F0aW9uIHx8IG5vZGVBdExvY2F0aW9uLT5zaGFkb3dIb3N0KCkg
IT0gZWxlbWVudFRvVXBkYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIC8vIEZJWE1FOiBIaXQtdGVzdCB3aXRoIGxv
Y2F0aW9uIGFuZCByZXR1cm4gd2hldGhlciBvciBub3QgdGhlcmUgaXMgb3ZlcmxheSB0ZXh0IGF0
IHRoZSBnaXZlbiBsb2NhdGlvbi4KLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCpub2RlQXRM
b2NhdGlvbikpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IDZhMjk0ZWJkOTUxZDc4OTcwYjBlYmQ1ZGQzMTMwYmI2ZDY3YjU3N2UuLjUyZDhmMWQ5MTdh
OTdmOWI5M2E2ZTUxYzdiMmNiYjExZjg2ODBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTE3LDcgKzIxMTcsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJl
Y3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbQogCiB2b2lkIFdlYlBhZ2U6OnNldEZvY3VzZWRGcmFt
ZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsK
LSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwg
SGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJl
cXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OworICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVz
dDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgYXV0byByZXN1bHQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50
KHBvaW50LCBoaXRUeXBlKTsKICAgICBhdXRvKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgp
OwogICAgIGlmIChoaXROb2RlICYmIGhpdE5vZGUtPnJlbmRlcmVyKCkpCkBAIC0yNjk2LDcgKzI2
OTYsNyBAQCBzdGF0aWMgdm9pZCBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIEludGVyYWN0aW9uSW5mb3JtYQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQg
ZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQorc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0
aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5vZGUqIGlubmVyTm9u
U2hhcmVkTm9kZSwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7CiAg
ICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJlbmRl
cmVyKCkgJiYgZWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCkBAIC0yNzMyLDcg
KzI3MzIsMTQgQEAgc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFn
ZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW4KICAgICB9CiAKICAgICBpZiAoYXV0
byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVy
LT5pc1JlbmRlckltYWdlKCkpCisgICAgICAgIGJvb2wgc2hvdWxkQ29sbGVjdEltYWdlUG9zaXRp
b25JbmZvcm1hdGlvbiA9IHJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCk7CisjaWYgRU5BQkxFKElN
QUdFX0VYVFJBQ1RJT04pCisgICAgICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlU
ZXh0KCppbm5lck5vblNoYXJlZE5vZGUpKQorICAgICAgICAgICAgc2hvdWxkQ29sbGVjdEltYWdl
UG9zaXRpb25JbmZvcm1hdGlvbiA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KGlubmVyTm9uU2hhcmVkTm9kZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKHNob3VsZENvbGxlY3RJ
bWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgICAgICBpbWFnZVBvc2l0aW9uSW5mb3Jt
YXRpb24ocGFnZSwgZWxlbWVudCwgcmVxdWVzdCwgaW5mbyk7CiAgICAgICAgIGJvdW5kc1Bvc2l0
aW9uSW5mb3JtYXRpb24oKnJlbmRlcmVyLCBpbmZvKTsKICAgICB9CkBAIC0yNzQyLDcgKzI3NDks
NyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdl
LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbgogICAgIAogc3RhdGljIHZvaWQgc2VsZWN0aW9u
UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
IGluZm8pCiB7Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVz
dFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQs
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAg
ICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlw
ZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OwogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5ldmVudEhh
bmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBlKTsKICAg
ICBOb2RlKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogCkBAIC0yOTE1LDExICsyOTIy
LDExIEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9u
SW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAKICAgICBhdXRvJiBldmVudEhhbmRsZXIg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpOwogICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dGcmFtZVNjcm9sbGJhcnMsIEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKLSAgICBIaXRU
ZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRGb3JDdXJzb3IgPSBldmVudEhhbmRsZXIuaGl0VGVzdFJl
c3VsdEF0UG9pbnQocmVxdWVzdC5wb2ludCwgaGl0VHlwZSk7Ci0gICAgaWYgKGF1dG8qIGhpdEZy
YW1lID0gaGl0VGVzdFJlc3VsdEZvckN1cnNvci5pbm5lck5vZGVGcmFtZSgpKSB7Ci0gICAgICAg
IGluZm8uY3Vyc29yID0gaGl0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnNlbGVjdEN1cnNvcihoaXRU
ZXN0UmVzdWx0Rm9yQ3Vyc29yLCBmYWxzZSk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gZXZl
bnRIYW5kbGVyLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFR5cGUpOwor
ICAgIGlmIChhdXRvKiBoaXRGcmFtZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSkg
eworICAgICAgICBpbmZvLmN1cnNvciA9IGhpdEZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZWxlY3RD
dXJzb3IoaGl0VGVzdFJlc3VsdCwgZmFsc2UpOwogICAgICAgICBpZiAocmVxdWVzdC5pbmNsdWRl
Q2FyZXRDb250ZXh0KQotICAgICAgICAgICAgcG9wdWxhdGVDYXJldENvbnRleHQoaGl0VGVzdFJl
c3VsdEZvckN1cnNvciwgcmVxdWVzdCwgaW5mbyk7CisgICAgICAgICAgICBwb3B1bGF0ZUNhcmV0
Q29udGV4dChoaXRUZXN0UmVzdWx0LCByZXF1ZXN0LCBpbmZvKTsKICAgICB9CiAKICAgICBpZiAo
bV9mb2N1c2VkRWxlbWVudCkKQEAgLTI5MjcsNyArMjkzNCw3IEBAIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JCiAKICAgICBpZiAoaXM8RWxlbWVudD4obm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRz
KSkgewogICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGVSZXNw
b25kaW5nVG9DbGlja0V2ZW50cyk7Ci0gICAgICAgIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9u
KCp0aGlzLCBlbGVtZW50LCByZXF1ZXN0LCBpbmZvKTsKKyAgICAgICAgZWxlbWVudFBvc2l0aW9u
SW5mb3JtYXRpb24oKnRoaXMsIGVsZW1lbnQsIHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCksIGluZm8pOwogCiAgICAgICAgIGlmIChpbmZvLmlzTGluayAmJiAhaW5m
by5pc0ltYWdlICYmIHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90KQogICAgICAgICAgICAgaW5mby5p
bWFnZSA9IHNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShlbGVtZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422445</attachid>
            <date>2021-03-05 15:46:20 -0800</date>
            <delta_ts>2021-03-05 16:49:17 -0800</delta_ts>
            <desc>Fix non-internal iOS build</desc>
            <filename>bug-222811-20210305154619.patch</filename>
            <type>text/plain</type>
            <size>24048</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJlYTFiOWE4OGVkMWMx
NzBhNDQ1MWEzOTBiMDFjY2QyMDczYTllZi4uYTZkYzllMjlmNDg0YTZlMWM1YmM3NjgxMmE5ZWJl
M2E3ZjA3ZTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRo
b2QgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIGBOb2RlYCBpcyBhIHRleHQgbm9kZSBpbnNpZGUg
YW4gaW1hZ2Ugb3ZlcmxheS4gU2VlIFdlYktpdCBDaGFuZ2VMb2cKKyAgICAgICAgZm9yIG1vcmUg
ZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50Lmg6CisKIDIwMjEtMDMtMDUgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQ2FudmFzOiBkcmF3SW1hZ2Ugc2hvdWxkIG5vcm1hbGl6ZSBzcmNSZWN0
IGJlZm9yZSBjaGVja2luZyBpZiBpdCdzIGVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkM2IxZGU5NGIxOTFj
NDRmODYxYmUxNDAxMmQ3OTgyNTJmMGQ2ODMuLmY4ODM4NzViNGE1NDRkOWQ5OWM4MjRjZWQyM2I4
ZDZhMGNhZTYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMDMtMDUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVt
ZW50IGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBpbWFnZSBvdmVybGF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzIwMzc3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uIGFuZCBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN1
cHBvcnQgZm9yIGFjY2Vzc2libGUgaW1hZ2UgZXh0cmFjdGlvbi4gU2VlIGJlbG93IGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW46OlN1cHBy
ZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN1cHByZXNz
SW50ZXJhY3Rpb25Ub2tlbjo6flN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisK
KyAgICAgICAgUmVtb3ZlIGBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW5gLCBhbG9uZyB3aXRoIGl0
cyBvbmx5IHVzZSBhcyBhIG1lbWJlciBvbiBgV0tDb250ZW50Vmlld2AuIFRoaXMgd2FzIHVzZWQg
dG8KKyAgICAgICAgdGVtcG9yYXJpbHkgc3VwcHJlc3MgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50
ZXJhY3Rpb24gd2hlbiBlZGl0aW5nLCBidXQgaXMgbm93IG5vIGxvbmdlciBuZWNlc3NhcnksIHNp
bmNlIHdlJ3JlCisgICAgICAgIHJlbW92aW5nIGFsbCBkZXBlbmRlbmNlIG9uIHRoaXMgaW50ZXJh
Y3Rpb24gb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0SXNFZGl0YWJsZTpdKToK
KworICAgICAgICBSZW1vdmUgYF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuYC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdp
bkF0UG9pbnQ6XSk6CisKKyAgICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGNhbmNlbCB0aGUgcmVn
dWxhciB0ZXh0IGludGVyYWN0aW9uIGluIGZhdm9yIG9mIHRoZSBpbWFnZSBleHRyYWN0aW9uIGlu
dGVyYWN0aW9uIGFmdGVyIHRoaXMKKyAgICAgICAgcGF0Y2gsIHNpbmNlIHRoZSBmb3JtZXIgd2ls
bCBiZSB1c2VkIGZvciBib3RoLiBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIHRlbXBvcmFyaWx5IHN1
cHByZXNzIHJlZ3VsYXIgdGV4dAorICAgICAgICBpbnRlcmFjdGlvbiB3aGlsZSBpbWFnZSBleHRy
YWN0aW9uIGlzIHN0aWxsIHBlbmRpbmcsIHRvIGF2b2lkIHByZW1hdHVyZWx5IHNlbGVjdGluZyB0
aGUgZW50aXJlIGltYWdlIGVsZW1lbnQuCisKKyAgICAgICAgVG8gZG8gdGhpcywgd2Uga2VlcCB0
cmFjayBvZiB0aGUgZWxlbWVudCBwZW5kaW5nIGltYWdlIGV4dHJhY3Rpb24gKGBfZWxlbWVudFBl
bmRpbmdJbWFnZUV4dHJhY3Rpb25gKSwgYW5kIGF2b2lkCisgICAgICAgIGFsbG93aW5nIHRleHQg
aW50ZXJhY3Rpb25zIHRvIGJlZ2luIGlmIHdlJ3JlIG92ZXIgdGhpcyBleGFjdCBlbGVtZW50Lgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcElkZW50aWZpZWQ6XSk6CisKKyAg
ICAgICAgV2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGNhbmNlbCB0aGUgaW1hZ2UgZXh0cmFj
dGlvbiBpbnRlcmFjdGlvbiBvbiBzaW5nbGUgdGFwIGFueW1vcmU7IHRoaXMgYmVoYXZpb3Igd2ls
bAorICAgICAgICBhdXRvbWF0aWNhbGx5IGZhbGwgb3V0IG9mIHVzaW5nIGRlZmF1bHQgdGV4dCBp
bnRlcmFjdGlvbnMgZm9yIGltYWdlIGV4dHJhY3Rpb24uCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZHJhZ0ludGVyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uOmNvbXBsZXRp
b246XSk6CisKKyAgICAgICAgUmVtb3ZlIGV4cGxpY2l0IGltYWdlIGV4dHJhY3Rpb24gY2FuY2Vs
bGF0aW9uIGhlcmUgYXMgd2VsbCwgYW5kIGluc3RlYWQgYmFpbCBmcm9tIHRoZSBkcmFnIG9ubHkg
aWYgd2UncmUgYWJvdXQKKyAgICAgICAgdG8gcHJvY2VlZCB3aXRoIHRoZSBpbWFnZSBleHRyYWN0
aW9uIGdlc3R1cmUgKHdoaWNoIGlzIGluZGljYXRlZCBieSB0aGUgYXJndW1lbnQgdG8gdGhlIGNv
bXBsZXRpb24gaGFuZGxlcikuCisgICAgICAgIFNlZSBjb21tZW50IGJlbG93LgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOl0pOgorCisg
ICAgICAgIEFkZCBhbiBlbnVtIGZsYWcgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBibG9jayBo
ZXJlLCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UnbGwgd2FudCB0byBpbW1lZGlhdGVs
eQorICAgICAgICBwcm9jZWVkIHdpdGggaW1hZ2UgZXh0cmFjdGlvbi4gVGhlIHZhbHVlIG9mIHRo
aXMgZmxhZyB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGhpdC10ZXN0IGFmdGVyIHVwZGF0aW5n
IHRoZSBwYWdlCisgICAgICAgIHdpdGggaW1hZ2UgZXh0cmFjdGlvbiByZXN1bHRzIGluIGBXZWJQ
YWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0YC4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb250ZXh0TWVudUludGVyYWN0
aW9uOmNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2NhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5n
SW1hZ2VFeHRyYWN0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBSZW1vdmUgYSBGSVhNRSBhbmQgaW1wbGVtZW50
IGhpdC10ZXN0aW5nIGxvZ2ljLCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGdpdmVuIGxv
Y2F0aW9uIGhpdC10ZXN0cyB0byB0aGUKKyAgICAgICAgaW1hZ2Ugb3ZlcmxheSB3ZSd2ZSBqdXN0
IGluamVjdGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxl
Y3RpbmdUZXh0QXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbklu
Zm9ybWF0aW9uKToKKworICAgICAgICBBdm9pZCBleHRyYWN0aW5nIGltYWdlIGRhdGEgZm9yIGEg
cG9zaXRpb24gaW5mb3JtYXRpb24gcmVxdWVzdCwgaWYgdGhlIGhpdC10ZXN0ZWQgbm9kZSBpcyBh
Y3R1YWxseSBhIHRleHQgbm9kZQorICAgICAgICBpbiBhbiBpbWFnZSBvdmVybGF5LCBpbnN0ZWFk
IG9mIGFuIGltYWdlLgorCisgICAgICAgIChXZWJLaXQ6OnNlbGVjdGlvblBvc2l0aW9uSW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKToK
KworICAgICAgICBBbGxvdyB0ZXh0IGludGVyYWN0aW9ucyB0byBiZWdpbiBpbiB1c2VyLWFnZW50
IHNoYWRvdyByb290cy4gVGhpcyBtYXRjaGVzIGJlaGF2aW9yIG9uIG1hY09TLCBhbmQgd2FzCisg
ICAgICAgIChwcmVzdW1hYmx5KSBpbml0aWFsbHkgZGlzYWxsb3dlZCBvbiBpT1MgdG8gYXZvaWQg
YWN0aXZhdGluZyB0aGUgZWRpdGFibGUgdGV4dCBpbnRlcmFjdGlvbgorICAgICAgICAoYFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnRgKSwgYXMgb3Bwb3NlZCB0byBibG9jayB0ZXh0IHNlbGVj
dGlvbiBpbnRlcmFjdGlvbnMsIHdoZW4gbG9uZyBwcmVzc2luZyB0ZXh0CisgICAgICAgIGluc2lk
ZSB0ZXh0YXJlYXMgYW5kIHRleHQgZmllbGRzLiBIb3dldmVyLCBzaW5jZSB3ZSBvbmx5IHVzZSB0
aGUgbm9ybWFsIHRleHQgaW50ZXJhY3Rpb24gYXNzaXN0YW50IG5vdyBmb3IgYm90aAorICAgICAg
ICBub24tZWRpdGFibGUgYW5kIGVkaXRhYmxlIHRleHQsIHRoaXMgZGlzdGluY3Rpb24gbm8gbG9u
Z2VyIG1hdHRlcnMuCisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjgwOTcpOiBXS1dlYlZpZXcuVVJMIGlzIG5pbCBp
biB0aGUgcHJvY2Vzc0RpZFRlcm1pbmF0ZSBkZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCA5NjM5Mzk2YjljYzg5MGI2ZDE0ZWZhZGYyZDUwM2VjMTJhOTBiYzBhLi5j
MDkzMGZhM2Q5Yzg4YzUyZGYwMjE0MzRkYWIwZTA3ZGY3ZTYzMzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcApAQCAtMTIzNCw2ICsxMjM0LDI5IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
Omhhc0ltYWdlT3ZlcmxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhhc0VsZW1l
bnRXaXRoSWQoKmltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkuaW1wbCgpKTsKIH0KIAor
Ym9vbCBIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUmIG5vZGUpCit7
CisgICAgaWYgKCFpczxUZXh0Pihub2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBzaGFkb3dIb3N0ID0gbm9kZS5zaGFkb3dIb3N0KCk7CisgICAgaWYgKCFzaGFkb3dIb3N0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHVzZXJBZ2VudFNoYWRvd1Jvb3Qg
PSBzaGFkb3dIb3N0LT51c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKCF1c2VyQWdlbnRT
aGFkb3dSb290KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxEaXZFbGVtZW50PigqdXNlckFnZW50U2hhZG93Um9vdCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkLmdldElkQXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBjaGlsZC5jb250YWlucygmbm9kZSk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKIHZvaWQg
SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0JiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDM1NzBm
NGMwMzhmNWFjMmI0NjJlMWZjNjI3OTgzY2VjMTlhMzRlZjkuLmU3Yzc1YzNjZGE1MjQ5Y2RjYTcx
NzNmZTA4MzM5NzRkZDYzNDVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEy
OCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVcGRhdGVTZWxl
Y3Rpb25Gb3JNb3VzZURyYWcoY29uc3QgTm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uQmVmb3JlVXBkYXRlKTsKICAgICBib29sIGhhc0ltYWdlT3Zlcmxh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSW1hZ2VPdmVybGF5
VGV4dChjb25zdCBOb2RlJik7CiAKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDcxMWQ0MGRmNjIzMzU3NTZmOGIx
NDU2MzRlMWY3NTEyYjY3MTAwNjAuLjYzYmIzMWNhMTRkZDljM2FlYjM1ODU5NDg0YjVlNjFjMTRj
ZTBlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTIyMSwzMiArMjIxLDE1IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgQ0dSZWN0IHRleHRMYXN0UmVjdDsKIH07CiAKLWNsYXNzIFN1
cHByZXNzSW50ZXJhY3Rpb25Ub2tlbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VwcHJl
c3NJbnRlcmFjdGlvblRva2VuKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgU3VwcHJlc3NJbnRlcmFjdGlvblRva2VuKFdLQ29udGVudFZpZXcgKnZpZXcsIE5TT2JqZWN0
PFVJSW50ZXJhY3Rpb24+ICppbnRlcmFjdGlvbikKLSAgICAgICAgOiBtX3ZpZXcodmlldykKLSAg
ICAgICAgLCBtX2ludGVyYWN0aW9uKGludGVyYWN0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHZpZXcpOwotICAgICAgICBBU1NFUlQoaW50ZXJhY3Rpb24pOwotICAgICAgICBpZiAoaW50ZXJh
Y3Rpb24pCi0gICAgICAgICAgICBbdmlldyByZW1vdmVJbnRlcmFjdGlvbjppbnRlcmFjdGlvbl07
Ci0gICAgfQotCi0gICAgflN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbigpCi0gICAgewotICAgICAg
ICBpZiAoIW1fdmlldyB8fCAhbV9pbnRlcmFjdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBbbV92aWV3IGFkZEludGVyYWN0aW9uOm1faW50ZXJhY3Rpb24uZ2V0KCkuZ2V0KCld
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PiBtX3Zp
ZXc7Ci0gICAgV2Vha09iakNQdHI8TlNPYmplY3Q8VUlJbnRlcmFjdGlvbj4+IG1faW50ZXJhY3Rp
b247CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKK2VudW0gY2xhc3MgUHJvY2VlZFdp
dGhJbWFnZUV4dHJhY3Rpb24gOiBib29sIHsKKyAgICBObywKKyAgICBZZXMKIH07CiAKKyNlbmRp
ZiAvLyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwogfQogCiBAY2xhc3MgV0tGb2N1c2VkRWxl
bWVudEluZm87CkBAIC00ODgsMTAgKzQ3MSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKElNQUdF
X0VYVFJBQ1RJT04pCiAgICAgUmV0YWluUHRyPFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29n
bml6ZXI+IF9pbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8
VUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcj4gX2ltYWdlRXh0cmFjdGlvblRpbWVvdXRHZXN0
dXJlUmVjb2duaXplcjsKLSAgICBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlIF9pbWFnZUV4
dHJhY3Rpb25TdGF0ZTsKLSAgICBDR1JlY3QgX2ltYWdlRXh0cmFjdGlvbkludGVyYWN0aW9uQm91
bmRzOwotICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKCk+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVy
UGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpTdXBw
cmVzc0ludGVyYWN0aW9uVG9rZW4+IF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuOworICAg
IEJPT0wgX2hhc1BlbmRpbmdJbWFnZUV4dHJhY3Rpb247CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+IF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKKyAgICBWZWN0
b3I8QmxvY2tQdHI8dm9pZChXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKT4+IF9h
Y3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOwogI2lmIFVTRShVSUNP
TlRFWFRNRU5VKQogICAgIFJldGFpblB0cjxVSU1lbnU+IF9pbWFnZUV4dHJhY3Rpb25Db250ZXh0
TWVudTsKICNlbmRpZiAvLyBVU0UoVUlDT05URVhUTUVOVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDg3
YzZkMTM4ZWJlNTZhNjEwNWJhODcyOTc1MDI5MGRmOGZlNmIzNjIuLjI2NDVkMDNiNDA1ZTg2MTUw
ZTBjN2RmOWYwOWViZDM2ZjA0OTA1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTMwNSwxMiArMTMw
NSw2IEBAIC0gKEJPT0wpc2V0SXNFZGl0YWJsZTooQk9PTClpc0VkaXRhYmxlCiAgICAgICAgIHJl
dHVybiBOTzsKIAogICAgIF9pc0VkaXRhYmxlID0gaXNFZGl0YWJsZTsKLQotI2lmIEVOQUJMRShJ
TUFHRV9FWFRSQUNUSU9OKQotICAgIGlmIChzZWxmLl9pbWFnZUV4dHJhY3Rpb25FbmFibGVkICYm
ICghX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAhX2lzQ2hhbmdpbmdGb2N1cykpCi0gICAg
ICAgIF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuID0gaXNFZGl0YWJsZSA/IG1ha2VVbmlx
dWU8V2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4+KHNlbGYsIF9pbWFnZUV4dHJhY3Rp
b25JbnRlcmFjdGlvbi5nZXQoKSkgOiBudWxscHRyOwotI2VuZGlmCi0KICAgICByZXR1cm4gWUVT
OwogfQogCkBAIC0yNjY0LDEzICsyNjU4LDYgQEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRp
b25BdFBvaW50OihDR1BvaW50KXBvaW50CiAgICAgaWYgKF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lz
dGFudFJlYXNvbnMpCiAgICAgICAgIHJldHVybiBOTzsKIAotI2lmIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQotICAgIGlmIChbc2VsZiBfaW1hZ2VFeHRyYWN0aW9uU2hvdWxkUHJldmVudFRleHRJ
bnRlcmFjdGlvbkF0UG9pbnQ6cG9pbnRdKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBbc2Vs
ZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsKLSNlbmRpZgotCiAgICAgaWYgKF9pbnNwZWN0b3JO
b2RlU2VhcmNoRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwogCkBAIC0yNjc4LDYgKzI2NjUs
MTEgQEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50
CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1
ZXN0XSkKICAgICAgICAgcmV0dXJuIE5POwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04p
CisgICAgaWYgKF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiAmJiBfcG9zaXRpb25JbmZv
cm1hdGlvbi5lbGVtZW50Q29udGV4dCA9PSBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24p
CisgICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgorCiAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9y
bWF0aW9uLmlzU2VsZWN0YWJsZTsKIH0KIApAQCAtMjcxNiwxMyArMjcwOCw2IEBAIC0gKEJPT0wp
dGV4dEludGVyYWN0aW9uR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxkQmVn
aW5BdFBvaW50OihDR1BvCiAgICAgaWYgKF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNv
bnMpCiAgICAgICAgIHJldHVybiBOTzsKIAotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQot
ICAgIGlmIChbc2VsZiBfaW1hZ2VFeHRyYWN0aW9uU2hvdWxkUHJldmVudFRleHRJbnRlcmFjdGlv
bkF0UG9pbnQ6cG9pbnRdKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBbc2VsZiBfY2FuY2Vs
SW1hZ2VFeHRyYWN0aW9uXTsKLSNlbmRpZgotCiAgICAgaWYgKCFzZWxmLmlzRm9jdXNpbmdFbGVt
ZW50KSB7CiAgICAgICAgIGlmIChnZXN0dXJlID09IFVJV0tHZXN0dXJlRG91YmxlVGFwKSB7CiAg
ICAgICAgICAgICAvLyBEb24ndCBhbGxvdyBkb3VibGUgdGFwIHRleHQgZ2VzdHVyZXMgaW4gbm9u
ZWRpdGFibGUgY29udGVudC4KQEAgLTI3NTgsNiArMjc0MywxMSBAQCAtIChCT09MKXRleHRJbnRl
cmFjdGlvbkdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2lu
dDooQ0dQbwogICAgICAgICByZXR1cm4gTk87CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9F
WFRSQUNUSU9OKQorICAgIGlmIChfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24gJiYgX3Bv
c2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQgPT0gX2VsZW1lbnRQZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uKQorICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKKwogICAgIC8vIElmIHdlJ3Jl
IGN1cnJlbnRseSBmb2N1c2luZyBhbiBlZGl0YWJsZSBlbGVtZW50LCBvbmx5IGFsbG93IHRoZSBz
ZWxlY3Rpb24gdG8gbW92ZSB3aXRoaW4gdGhhdCBmb2N1c2VkIGVsZW1lbnQuCiAgICAgaWYgKHNl
bGYuaXNGb2N1c2luZ0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlv
bi5lbGVtZW50Q29udGV4dCAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dC0+
aXNTYW1lRWxlbWVudChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dCk7
CkBAIC0yODkwLDEwICsyODgwLDYgQEAgLSAodm9pZClfc2luZ2xlVGFwSWRlbnRpZmllZDooVUlU
YXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgX3BvdGVudGlhbFRh
cEluUHJvZ3Jlc3MgPSBZRVM7CiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAg
ICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gIV9kb3VibGVUYXBHZXN0dXJlUmVj
b2duaXplci5nZXQoKS5lbmFibGVkOwotCi0jaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0g
ICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJUb3VjaEF0Omdlc3R1
cmVSZWNvZ25pemVyLmxvY2F0aW9uXTsKLSNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBjYW5jZWxQ
b3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKQEAgLTQ0
ODAsNyArNDQ2Niw2IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZy
YW1lCiAgICAgW3NlbGYgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpOT107CiAgICAgW190
d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBfd2tfY2FuY2VsXTsKICNpZiBFTkFC
TEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICBfc3VwcHJlc3NJbWFnZUV4dHJhY3Rpb25Ub2tlbiA9
IG51bGxwdHI7CiAgICAgW3NlbGYgX2NhbmNlbEltYWdlRXh0cmFjdGlvbl07CiAjZW5kaWYKIH0K
QEAgLTg0OTEsMjEgKzg0NzYsMTIgQEAgLSAodm9pZClfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJ
bnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXBhcmVGb3JTZXNzaW9uOihpZAogCiAgICAgW3Nl
bGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwogCi0gICAgYXV0byBwcmVwYXJlRm9y
U2Vzc2lvbiA9IFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBz
ZXNzaW9uID0gcmV0YWluUHRyKHNlc3Npb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb24pXSB7CisgICAgYXV0byBwcmVwYXJlRm9yU2Vzc2lvbiA9IFt3ZWFrU2VsZiA9IFdl
YWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBzZXNzaW9uID0gcmV0YWluUHRyKHNlc3Np
b24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoV2ViS2l0OjpQcm9j
ZWVkV2l0aEltYWdlRXh0cmFjdGlvbiBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJv
bmdTZWxmKQorICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgcHJvY2VlZFdpdGhJbWFnZUV4dHJh
Y3Rpb24gPT0gV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbjo6WWVzKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gZHJhZ09yaWdpbiA9IFtzZXNzaW9uIGxvY2F0
aW9uSW5WaWV3OnN0cm9uZ1NlbGYuZ2V0KCldOwotI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9O
KQotICAgICAgICBbc3Ryb25nU2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWRBZnRl
clRvdWNoQXQ6ZHJhZ09yaWdpbl07Ci0gICAgICAgIGlmIChzdHJvbmdTZWxmLT5faW1hZ2VFeHRy
YWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6QWN0aXZlKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBmYWlsZWQ6
ICVwIChkZWZlcnJpbmcgdG8gYWN0aXZlIGltYWdlIGV4dHJhY3Rpb24pIiwgc2Vzc2lvbi5nZXQo
KSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSNlbmRpZgotCiAgICAgICAgIHN0cm9uZ1NlbGYtPl9kcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUucHJlcGFyZUZvckRyYWdTZXNzaW9uKHNlc3Npb24uZ2V0KCksIGNvbXBsZXRpb24uZ2V0
KCkpOwogICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdERyYWdTdGFydChXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoZHJhZ09yaWdpbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChb
c3Ryb25nU2VsZiBjb252ZXJ0UG9pbnQ6ZHJhZ09yaWdpbiB0b1ZpZXc6W3N0cm9uZ1NlbGYgd2lu
ZG93XV0pLCBbc3Ryb25nU2VsZiBfYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zXSk7CiAgICAgICAg
IFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHJlcXVlc3RlZDogJXAgYXQg
b3JpZ2luOiB7JS4wZiwgJS4wZn0iLCBzZXNzaW9uLmdldCgpLCBkcmFnT3JpZ2luLngsIGRyYWdP
cmlnaW4ueSk7CkBAIC04NTE0LDcgKzg0OTAsNyBAQCAtICh2b2lkKV9kcmFnSW50ZXJhY3Rpb246
KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlkCiAj
aWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgW3NlbGYgX2RvQWZ0ZXJQZW5kaW5nSW1h
Z2VFeHRyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uXTsKICNlbHNlCi0gICAgcHJlcGFyZUZvclNl
c3Npb24oKTsKKyAgICBwcmVwYXJlRm9yU2Vzc2lvbihXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VF
eHRyYWN0aW9uOjpObyk7CiAjZW5kaWYKIH0KIApAQCAtOTQyOCwxOCArOTQwNCwyMCBAQCAtICh2
b2lkKV93cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZDooV2ViQ29yZTo6UHJvbWlz
ZWRBdHRhY2htZW50SW5mbyYmKQogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKLS0g
KHZvaWQpX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWJs
b2NrCistICh2b2lkKV9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjoodm9pZCheKShXZWJL
aXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9u
KSlibG9jawogewotICAgIGlmIChfaW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFn
ZUV4dHJhY3Rpb25TdGF0ZTo6UGVuZGluZykKKyAgICBpZiAoX2hhc1BlbmRpbmdJbWFnZUV4dHJh
Y3Rpb24pCiAgICAgICAgIF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uLmFwcGVuZChtYWtlQmxvY2tQdHIoYmxvY2spKTsKICAgICBlbHNlCi0gICAgICAgIGJsb2Nr
KCk7CisgICAgICAgIGJsb2NrKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb246Ok5v
KTsKIH0KIAotLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0lt
YWdlRXh0cmFjdGlvbgorLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVu
ZGluZ0ltYWdlRXh0cmFjdGlvbjooV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbilw
cm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogeworICAgIF9oYXNQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uID0gTk87CisgICAgX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uID0gV1RGOjpudWxs
b3B0OwogICAgIGZvciAoYXV0byBibG9jayA6IHN0ZDo6ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZv
cm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb24sIHsgfSkpCi0gICAgICAgIGJsb2NrKCk7Cisg
ICAgICAgIGJsb2NrKHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKTsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQpAQCAtOTkzNiwxOSArOTkxNCwxMiBAQCAtICh2b2lk
KV9jb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRl
cmFjdGlvbiBjb25maWd1cgogICAgIGlmICghc2VsZi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2xv
bmdQcmVzc0FjdGlvbnNFbmFibGVkKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbihuaWwpOwog
Ci0gICAgYXV0byBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFr
T2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50
ZXJhY3Rpb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CisgICAg
YXV0byBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0
cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJhY3Rp
b24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoV2ViS2l0OjpQcm9j
ZWVkV2l0aEltYWdlRXh0cmFjdGlvbiBwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbikgewogICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJv
bmdTZWxmKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBb
aW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5nZXQoKV07Ci0jaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCi0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxJbWFnZUV4dHJh
Y3Rpb25JZk5lZWRlZEFmdGVyVG91Y2hBdDpwb3NpdGlvbl07Ci0gICAgICAgIGlmIChzdHJvbmdT
ZWxmLT5faW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0
ZTo6QWN0aXZlKSB7CisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVkV2l0aEltYWdl
RXh0cmFjdGlvbiA9PSBXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uOjpZZXMpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb24obmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotI2VuZGlmCiAKICAgICAgICAgW3N0cm9uZ1NlbGYtPl93ZWJWaWV3IF9kaWRTaG93Q29u
dGV4dE1lbnVdOwogCkBAIC05OTU2LDcgKzk5MjcsNyBAQCAtICh2b2lkKV9jb250ZXh0TWVudUlu
dGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1
cgogICAgICAgICBpZiAoTlNOdW1iZXIgKnZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OndlYmtpdFNob3dMaW5rUHJldmlld3NQcmVmZXJl
bmNlS2V5XSkKICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9zaG93TGlua1ByZXZpZXdzID0gdmFs
dWUuYm9vbFZhbHVlOwogCi0gICAgICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QgcmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb3NpdGlvbikgfTsKKyAg
ICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2Vi
Q29yZTo6cm91bmRlZEludFBvaW50KFtpbnRlcmFjdGlvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdT
ZWxmLmdldCgpXSkgfTsKICAgICAgICAgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgPSB0cnVlOwog
ICAgICAgICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gdHJ1ZTsKICAgICAgICAgcmVx
dWVzdC5saW5rSW5kaWNhdG9yU2hvdWxkSGF2ZUxlZ2FjeU1hcmdpbnMgPSAhW3N0cm9uZ1NlbGYg
X3Nob3VsZFVzZUNvbnRleHRNZW51c107CkBAIC05OTcyLDcgKzk5NDMsNyBAQCAtICh2b2lkKV9j
b250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFj
dGlvbiBjb25maWd1cgogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogICAgIFtzZWxmIF9k
b0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWVd
OwogI2Vsc2UKLSAgICBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUoKTsKKyAgICBnZXRDb25m
aWd1cmF0aW9uQW5kQ29udGludWUoV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbjo6
Tm8pOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggOGFiNDAyZGY5MDk0ZWNlZGVjMGQ2NWZiYmMzMTA1ZTA1ZDAyYmJjYS4u
NDM5NGNjNTc2MmY5NWJlYjgwZjAzNzBjM2YxODYwMGQ2N2RkNTU4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcyNzAsOSArNzI3MCwxOSBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRy
YWN0aW9uUmVzdWx0JiYgcmVzdWx0LCBjbwogICAgIH0KIAogICAgIGRvd25jYXN0PEhUTUxFbGVt
ZW50PigqZWxlbWVudFRvVXBkYXRlKS51cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocm91bmRlZEludFBv
aW50KGxvY2F0aW9uKSwgeworICAgICAgICBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksCisgICAg
ICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCisgICAgfSk7CisKKyAgICBhdXRvIG5vZGVB
dExvY2F0aW9uID0gbWFrZVJlZlB0cihoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
KTsKKyAgICBpZiAoIW5vZGVBdExvY2F0aW9uIHx8IG5vZGVBdExvY2F0aW9uLT5zaGFkb3dIb3N0
KCkgIT0gZWxlbWVudFRvVXBkYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIC8vIEZJWE1FOiBIaXQtdGVzdCB3aXRo
IGxvY2F0aW9uIGFuZCByZXR1cm4gd2hldGhlciBvciBub3QgdGhlcmUgaXMgb3ZlcmxheSB0ZXh0
IGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4KLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCpub2Rl
QXRMb2NhdGlvbikpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDZhMjk0ZWJkOTUxZDc4OTcwYjBlYmQ1ZGQzMTMwYmI2ZDY3YjU3N2UuLjUyZDhmMWQ5
MTdhOTdmOWI5M2E2ZTUxYzdiMmNiYjExZjg2ODBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTE3LDcgKzIxMTcs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNvbnN0IElu
dFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbQogCiB2b2lkIFdlYlBhZ2U6OnNldEZvY3VzZWRG
cmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCkK
IHsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4g
aGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2
ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVz
dFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OworICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVx
dWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgYXV0byByZXN1
bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50LCBoaXRUeXBlKTsKICAgICBhdXRvKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9k
ZSgpOwogICAgIGlmIChoaXROb2RlICYmIGhpdE5vZGUtPnJlbmRlcmVyKCkpCkBAIC0yNjk2LDcg
KzI2OTYsNyBAQCBzdGF0aWMgdm9pZCBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIEludGVyYWN0aW9uSW5mb3JtYQogICAgIH0KIH0KIAotc3RhdGljIHZv
aWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQorc3RhdGljIHZvaWQgZWxlbWVudFBv
c2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5vZGUqIGlubmVy
Tm9uU2hhcmVkTm9kZSwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7
CiAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJl
bmRlcmVyKCkgJiYgZWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCkBAIC0yNzMy
LDcgKzI3MzIsMTQgQEAgc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2Vi
UGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW4KICAgICB9CiAKICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRl
cmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAgICAgIGJvb2wgc2hvdWxkQ29sbGVjdEltYWdlUG9z
aXRpb25JbmZvcm1hdGlvbiA9IHJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCk7CisjaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCisgICAgICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJs
YXlUZXh0KCppbm5lck5vblNoYXJlZE5vZGUpKQorICAgICAgICAgICAgc2hvdWxkQ29sbGVjdElt
YWdlUG9zaXRpb25JbmZvcm1hdGlvbiA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BB
UkFNKGlubmVyTm9uU2hhcmVkTm9kZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKHNob3VsZENvbGxl
Y3RJbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgICAgICBpbWFnZVBvc2l0aW9uSW5m
b3JtYXRpb24ocGFnZSwgZWxlbWVudCwgcmVxdWVzdCwgaW5mbyk7CiAgICAgICAgIGJvdW5kc1Bv
c2l0aW9uSW5mb3JtYXRpb24oKnJlbmRlcmVyLCBpbmZvKTsKICAgICB9CkBAIC0yNzQyLDcgKzI3
NDksNyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBw
YWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbgogICAgIAogc3RhdGljIHZvaWQgc2VsZWN0
aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mIGluZm8pCiB7Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVx
dWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRl
bnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsK
KyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwg
SGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OwogICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5ldmVu
dEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBlKTsK
ICAgICBOb2RlKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogCkBAIC0yOTE1LDExICsy
OTIyLDExIEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0
aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAKICAgICBhdXRvJiBldmVudEhhbmRs
ZXIgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpOwogICAgIGNvbnN0ZXhwciBP
cHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dGcmFtZVNjcm9sbGJhcnMsIEhp
dFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKLSAgICBI
aXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRGb3JDdXJzb3IgPSBldmVudEhhbmRsZXIuaGl0VGVz
dFJlc3VsdEF0UG9pbnQocmVxdWVzdC5wb2ludCwgaGl0VHlwZSk7Ci0gICAgaWYgKGF1dG8qIGhp
dEZyYW1lID0gaGl0VGVzdFJlc3VsdEZvckN1cnNvci5pbm5lck5vZGVGcmFtZSgpKSB7Ci0gICAg
ICAgIGluZm8uY3Vyc29yID0gaGl0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnNlbGVjdEN1cnNvciho
aXRUZXN0UmVzdWx0Rm9yQ3Vyc29yLCBmYWxzZSk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0g
ZXZlbnRIYW5kbGVyLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFR5cGUp
OworICAgIGlmIChhdXRvKiBoaXRGcmFtZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlRnJhbWUo
KSkgeworICAgICAgICBpbmZvLmN1cnNvciA9IGhpdEZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZWxl
Y3RDdXJzb3IoaGl0VGVzdFJlc3VsdCwgZmFsc2UpOwogICAgICAgICBpZiAocmVxdWVzdC5pbmNs
dWRlQ2FyZXRDb250ZXh0KQotICAgICAgICAgICAgcG9wdWxhdGVDYXJldENvbnRleHQoaGl0VGVz
dFJlc3VsdEZvckN1cnNvciwgcmVxdWVzdCwgaW5mbyk7CisgICAgICAgICAgICBwb3B1bGF0ZUNh
cmV0Q29udGV4dChoaXRUZXN0UmVzdWx0LCByZXF1ZXN0LCBpbmZvKTsKICAgICB9CiAKICAgICBp
ZiAobV9mb2N1c2VkRWxlbWVudCkKQEAgLTI5MjcsNyArMjkzNCw3IEBAIEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JCiAKICAgICBpZiAoaXM8RWxlbWVudD4obm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZl
bnRzKSkgewogICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGVS
ZXNwb25kaW5nVG9DbGlja0V2ZW50cyk7Ci0gICAgICAgIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0
aW9uKCp0aGlzLCBlbGVtZW50LCByZXF1ZXN0LCBpbmZvKTsKKyAgICAgICAgZWxlbWVudFBvc2l0
aW9uSW5mb3JtYXRpb24oKnRoaXMsIGVsZW1lbnQsIHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCksIGluZm8pOwogCiAgICAgICAgIGlmIChpbmZvLmlzTGluayAmJiAh
aW5mby5pc0ltYWdlICYmIHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90KQogICAgICAgICAgICAgaW5m
by5pbWFnZSA9IHNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShlbGVtZW50KTsK
</data>
<flag name="commit-queue"
          id="441533"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422450</attachid>
            <date>2021-03-05 16:18:39 -0800</date>
            <delta_ts>2021-03-05 22:33:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222811-20210305161838.patch</filename>
            <type>text/plain</type>
            <size>23945</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJlYTFiOWE4OGVkMWMx
NzBhNDQ1MWEzOTBiMDFjY2QyMDczYTllZi4uYTZkYzllMjlmNDg0YTZlMWM1YmM3NjgxMmE5ZWJl
M2E3ZjA3ZTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBmb3IgaW1hZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMyMDM3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbiBhbmQgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRo
b2QgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIGBOb2RlYCBpcyBhIHRleHQgbm9kZSBpbnNpZGUg
YW4gaW1hZ2Ugb3ZlcmxheS4gU2VlIFdlYktpdCBDaGFuZ2VMb2cKKyAgICAgICAgZm9yIG1vcmUg
ZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50Lmg6CisKIDIwMjEtMDMtMDUgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQ2FudmFzOiBkcmF3SW1hZ2Ugc2hvdWxkIG5vcm1hbGl6ZSBzcmNSZWN0
IGJlZm9yZSBjaGVja2luZyBpZiBpdCdzIGVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkM2IxZGU5NGIxOTFj
NDRmODYxYmUxNDAxMmQ3OTgyNTJmMGQ2ODMuLmY4ODM4NzViNGE1NDRkOWQ5OWM4MjRjZWQyM2I4
ZDZhMGNhZTYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMDMtMDUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVt
ZW50IGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBpbWFnZSBvdmVybGF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzIwMzc3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uIGFuZCBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN1
cHBvcnQgZm9yIGFjY2Vzc2libGUgaW1hZ2UgZXh0cmFjdGlvbi4gU2VlIGJlbG93IGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW46OlN1cHBy
ZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN1cHByZXNz
SW50ZXJhY3Rpb25Ub2tlbjo6flN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbik6IERlbGV0ZWQuCisK
KyAgICAgICAgUmVtb3ZlIGBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW5gLCBhbG9uZyB3aXRoIGl0
cyBvbmx5IHVzZSBhcyBhIG1lbWJlciBvbiBgV0tDb250ZW50Vmlld2AuIFRoaXMgd2FzIHVzZWQg
dG8KKyAgICAgICAgdGVtcG9yYXJpbHkgc3VwcHJlc3MgdGhlIGltYWdlIGV4dHJhY3Rpb24gaW50
ZXJhY3Rpb24gd2hlbiBlZGl0aW5nLCBidXQgaXMgbm93IG5vIGxvbmdlciBuZWNlc3NhcnksIHNp
bmNlIHdlJ3JlCisgICAgICAgIHJlbW92aW5nIGFsbCBkZXBlbmRlbmNlIG9uIHRoaXMgaW50ZXJh
Y3Rpb24gb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0SXNFZGl0YWJsZTpdKToK
KworICAgICAgICBSZW1vdmUgYF9zdXBwcmVzc0ltYWdlRXh0cmFjdGlvblRva2VuYC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdp
bkF0UG9pbnQ6XSk6CisKKyAgICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGNhbmNlbCB0aGUgcmVn
dWxhciB0ZXh0IGludGVyYWN0aW9uIGluIGZhdm9yIG9mIHRoZSBpbWFnZSBleHRyYWN0aW9uIGlu
dGVyYWN0aW9uIGFmdGVyIHRoaXMKKyAgICAgICAgcGF0Y2gsIHNpbmNlIHRoZSBmb3JtZXIgd2ls
bCBiZSB1c2VkIGZvciBib3RoLiBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIHRlbXBvcmFyaWx5IHN1
cHByZXNzIHJlZ3VsYXIgdGV4dAorICAgICAgICBpbnRlcmFjdGlvbiB3aGlsZSBpbWFnZSBleHRy
YWN0aW9uIGlzIHN0aWxsIHBlbmRpbmcsIHRvIGF2b2lkIHByZW1hdHVyZWx5IHNlbGVjdGluZyB0
aGUgZW50aXJlIGltYWdlIGVsZW1lbnQuCisKKyAgICAgICAgVG8gZG8gdGhpcywgd2Uga2VlcCB0
cmFjayBvZiB0aGUgZWxlbWVudCBwZW5kaW5nIGltYWdlIGV4dHJhY3Rpb24gKGBfZWxlbWVudFBl
bmRpbmdJbWFnZUV4dHJhY3Rpb25gKSwgYW5kIGF2b2lkCisgICAgICAgIGFsbG93aW5nIHRleHQg
aW50ZXJhY3Rpb25zIHRvIGJlZ2luIGlmIHdlJ3JlIG92ZXIgdGhpcyBleGFjdCBlbGVtZW50Lgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcElkZW50aWZpZWQ6XSk6CisKKyAg
ICAgICAgV2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGNhbmNlbCB0aGUgaW1hZ2UgZXh0cmFj
dGlvbiBpbnRlcmFjdGlvbiBvbiBzaW5nbGUgdGFwIGFueW1vcmU7IHRoaXMgYmVoYXZpb3Igd2ls
bAorICAgICAgICBhdXRvbWF0aWNhbGx5IGZhbGwgb3V0IG9mIHVzaW5nIGRlZmF1bHQgdGV4dCBp
bnRlcmFjdGlvbnMgZm9yIGltYWdlIGV4dHJhY3Rpb24uCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZHJhZ0ludGVyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uOmNvbXBsZXRp
b246XSk6CisKKyAgICAgICAgUmVtb3ZlIGV4cGxpY2l0IGltYWdlIGV4dHJhY3Rpb24gY2FuY2Vs
bGF0aW9uIGhlcmUgYXMgd2VsbCwgYW5kIGluc3RlYWQgYmFpbCBmcm9tIHRoZSBkcmFnIG9ubHkg
aWYgd2UncmUgYWJvdXQKKyAgICAgICAgdG8gcHJvY2VlZCB3aXRoIHRoZSBpbWFnZSBleHRyYWN0
aW9uIGdlc3R1cmUgKHdoaWNoIGlzIGluZGljYXRlZCBieSB0aGUgYXJndW1lbnQgdG8gdGhlIGNv
bXBsZXRpb24gaGFuZGxlcikuCisgICAgICAgIFNlZSBjb21tZW50IGJlbG93LgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOl0pOgorCisg
ICAgICAgIEFkZCBhbiBlbnVtIGZsYWcgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBibG9jayBo
ZXJlLCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UnbGwgd2FudCB0byBpbW1lZGlhdGVs
eQorICAgICAgICBwcm9jZWVkIHdpdGggaW1hZ2UgZXh0cmFjdGlvbi4gVGhlIHZhbHVlIG9mIHRo
aXMgZmxhZyB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGhpdC10ZXN0IGFmdGVyIHVwZGF0aW5n
IHRoZSBwYWdlCisgICAgICAgIHdpdGggaW1hZ2UgZXh0cmFjdGlvbiByZXN1bHRzIGluIGBXZWJQ
YWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0YC4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRy
YWN0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb250ZXh0TWVudUludGVyYWN0
aW9uOmNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2NhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5n
SW1hZ2VFeHRyYWN0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBSZW1vdmUgYSBGSVhNRSBhbmQgaW1wbGVtZW50
IGhpdC10ZXN0aW5nIGxvZ2ljLCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGdpdmVuIGxv
Y2F0aW9uIGhpdC10ZXN0cyB0byB0aGUKKyAgICAgICAgaW1hZ2Ugb3ZlcmxheSB3ZSd2ZSBqdXN0
IGluamVjdGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxl
Y3RpbmdUZXh0QXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbklu
Zm9ybWF0aW9uKToKKworICAgICAgICBBdm9pZCBleHRyYWN0aW5nIGltYWdlIGRhdGEgZm9yIGEg
cG9zaXRpb24gaW5mb3JtYXRpb24gcmVxdWVzdCwgaWYgdGhlIGhpdC10ZXN0ZWQgbm9kZSBpcyBh
Y3R1YWxseSBhIHRleHQgbm9kZQorICAgICAgICBpbiBhbiBpbWFnZSBvdmVybGF5LCBpbnN0ZWFk
IG9mIGFuIGltYWdlLgorCisgICAgICAgIChXZWJLaXQ6OnNlbGVjdGlvblBvc2l0aW9uSW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKToK
KworICAgICAgICBBbGxvdyB0ZXh0IGludGVyYWN0aW9ucyB0byBiZWdpbiBpbiB1c2VyLWFnZW50
IHNoYWRvdyByb290cy4gVGhpcyBtYXRjaGVzIGJlaGF2aW9yIG9uIG1hY09TLCBhbmQgd2FzCisg
ICAgICAgIChwcmVzdW1hYmx5KSBpbml0aWFsbHkgZGlzYWxsb3dlZCBvbiBpT1MgdG8gYXZvaWQg
YWN0aXZhdGluZyB0aGUgZWRpdGFibGUgdGV4dCBpbnRlcmFjdGlvbgorICAgICAgICAoYFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnRgKSwgYXMgb3Bwb3NlZCB0byBibG9jayB0ZXh0IHNlbGVj
dGlvbiBpbnRlcmFjdGlvbnMsIHdoZW4gbG9uZyBwcmVzc2luZyB0ZXh0CisgICAgICAgIGluc2lk
ZSB0ZXh0YXJlYXMgYW5kIHRleHQgZmllbGRzLiBIb3dldmVyLCBzaW5jZSB3ZSBvbmx5IHVzZSB0
aGUgbm9ybWFsIHRleHQgaW50ZXJhY3Rpb24gYXNzaXN0YW50IG5vdyBmb3IgYm90aAorICAgICAg
ICBub24tZWRpdGFibGUgYW5kIGVkaXRhYmxlIHRleHQsIHRoaXMgZGlzdGluY3Rpb24gbm8gbG9u
Z2VyIG1hdHRlcnMuCisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNjgwOTcpOiBXS1dlYlZpZXcuVVJMIGlzIG5pbCBp
biB0aGUgcHJvY2Vzc0RpZFRlcm1pbmF0ZSBkZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCA5NjM5Mzk2YjljYzg5MGI2ZDE0ZWZhZGYyZDUwM2VjMTJhOTBiYzBhLi5j
MDkzMGZhM2Q5Yzg4YzUyZGYwMjE0MzRkYWIwZTA3ZGY3ZTYzMzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcApAQCAtMTIzNCw2ICsxMjM0LDI5IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
Omhhc0ltYWdlT3ZlcmxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhhc0VsZW1l
bnRXaXRoSWQoKmltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkuaW1wbCgpKTsKIH0KIAor
Ym9vbCBIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUmIG5vZGUpCit7
CisgICAgaWYgKCFpczxUZXh0Pihub2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBzaGFkb3dIb3N0ID0gbm9kZS5zaGFkb3dIb3N0KCk7CisgICAgaWYgKCFzaGFkb3dIb3N0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHVzZXJBZ2VudFNoYWRvd1Jvb3Qg
PSBzaGFkb3dIb3N0LT51c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKCF1c2VyQWdlbnRT
aGFkb3dSb290KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxEaXZFbGVtZW50PigqdXNlckFnZW50U2hhZG93Um9vdCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkLmdldElkQXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBjaGlsZC5jb250YWlucygmbm9kZSk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAKIHZvaWQg
SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0JiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDM1NzBm
NGMwMzhmNWFjMmI0NjJlMWZjNjI3OTgzY2VjMTlhMzRlZjkuLmU3Yzc1YzNjZGE1MjQ5Y2RjYTcx
NzNmZTA4MzM5NzRkZDYzNDVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEy
OCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVcGRhdGVTZWxl
Y3Rpb25Gb3JNb3VzZURyYWcoY29uc3QgTm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uQmVmb3JlVXBkYXRlKTsKICAgICBib29sIGhhc0ltYWdlT3Zlcmxh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSW1hZ2VPdmVybGF5
VGV4dChjb25zdCBOb2RlJik7CiAKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDcxMWQ0MGRmNjIzMzU3NTZmOGIx
NDU2MzRlMWY3NTEyYjY3MTAwNjAuLmYzM2MyMGNhYzcxZDZiNGJiOWQyYjhkZTZiN2YyODUzMzJl
YmJhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTIyMSwzMCArMjIxLDkgQEAgc3RydWN0IFdLQXV0b0Nv
cnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0OwogfTsKIAotY2xhc3MgU3Vw
cHJlc3NJbnRlcmFjdGlvblRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdXBwcmVz
c0ludGVyYWN0aW9uVG9rZW4pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBTdXBwcmVzc0ludGVyYWN0aW9uVG9rZW4oV0tDb250ZW50VmlldyAqdmlldywgTlNPYmplY3Q8
VUlJbnRlcmFjdGlvbj4gKmludGVyYWN0aW9uKQotICAgICAgICA6IG1fdmlldyh2aWV3KQotICAg
ICAgICAsIG1faW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pCi0gICAgewotICAgICAgICBBU1NFUlQo
dmlldyk7Ci0gICAgICAgIEFTU0VSVChpbnRlcmFjdGlvbik7Ci0gICAgICAgIGlmIChpbnRlcmFj
dGlvbikKLSAgICAgICAgICAgIFt2aWV3IHJlbW92ZUludGVyYWN0aW9uOmludGVyYWN0aW9uXTsK
LSAgICB9Ci0KLSAgICB+U3VwcHJlc3NJbnRlcmFjdGlvblRva2VuKCkKLSAgICB7Ci0gICAgICAg
IGlmICghbV92aWV3IHx8ICFtX2ludGVyYWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIFttX3ZpZXcgYWRkSW50ZXJhY3Rpb246bV9pbnRlcmFjdGlvbi5nZXQoKS5nZXQoKV07
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1fdmll
dzsKLSAgICBXZWFrT2JqQ1B0cjxOU09iamVjdDxVSUludGVyYWN0aW9uPj4gbV9pbnRlcmFjdGlv
bjsKK2VudW0gY2xhc3MgUHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24gOiBib29sIHsKKyAgICBO
bywKKyAgICBZZXMKIH07CiAKIH0KQEAgLTQ4OCwxMCArNDY3LDkgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBSZXRhaW5QdHI8V0tJbWFnZUV4dHJhY3Rpb25H
ZXN0dXJlUmVjb2duaXplcj4gX2ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyOwogICAg
IFJldGFpblB0cjxVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyPiBfaW1hZ2VFeHRyYWN0aW9u
VGltZW91dEdlc3R1cmVSZWNvZ25pemVyOwotICAgIFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9uU3Rh
dGUgX2ltYWdlRXh0cmFjdGlvblN0YXRlOwotICAgIENHUmVjdCBfaW1hZ2VFeHRyYWN0aW9uSW50
ZXJhY3Rpb25Cb3VuZHM7Ci0gICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoKT4+IF9hY3Rpb25zVG9Q
ZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXQ6OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbj4gX3N1cHByZXNzSW1hZ2VFeHRyYWN0aW9u
VG9rZW47CisgICAgQk9PTCBfaGFzUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9u
OworICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJh
Y3Rpb24pPj4gX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb247CiAj
aWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAgICAgUmV0YWluUHRyPFVJTWVudT4gX2ltYWdlRXh0cmFj
dGlvbkNvbnRleHRNZW51OwogI2VuZGlmIC8vIFVTRShVSUNPTlRFWFRNRU5VKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggODdjNmQxMzhlYmU1NmE2MTA1YmE4NzI5NzUwMjkwZGY4ZmU2YjM2Mi4uMjY0NWQw
M2I0MDVlODYxNTBlMGM3ZGY5ZjA5ZWJkMzZmMDQ5MDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0x
MzA1LDEyICsxMzA1LDYgQEAgLSAoQk9PTClzZXRJc0VkaXRhYmxlOihCT09MKWlzRWRpdGFibGUK
ICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgX2lzRWRpdGFibGUgPSBpc0VkaXRhYmxlOwotCi0j
aWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCi0gICAgaWYgKHNlbGYuX2ltYWdlRXh0cmFjdGlv
bkVuYWJsZWQgJiYgKCFfaXNCbHVycmluZ0ZvY3VzZWRFbGVtZW50IHx8ICFfaXNDaGFuZ2luZ0Zv
Y3VzKSkKLSAgICAgICAgX3N1cHByZXNzSW1hZ2VFeHRyYWN0aW9uVG9rZW4gPSBpc0VkaXRhYmxl
ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OlN1cHByZXNzSW50ZXJhY3Rpb25Ub2tlbj4oc2VsZiwgX2lt
YWdlRXh0cmFjdGlvbkludGVyYWN0aW9uLmdldCgpKSA6IG51bGxwdHI7Ci0jZW5kaWYKLQogICAg
IHJldHVybiBZRVM7CiB9CiAKQEAgLTI2NjQsMTMgKzI2NTgsNiBAQCAtIChCT09MKWhhc1NlbGVj
dGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICBpZiAoX3N1cHByZXNzU2Vs
ZWN0aW9uQXNzaXN0YW50UmVhc29ucykKICAgICAgICAgcmV0dXJuIE5POwogCi0jaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCi0gICAgaWYgKFtzZWxmIF9pbWFnZUV4dHJhY3Rpb25TaG91bGRQ
cmV2ZW50VGV4dEludGVyYWN0aW9uQXRQb2ludDpwb2ludF0pCi0gICAgICAgIHJldHVybiBOTzsK
LQotICAgIFtzZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rpb25dOwotI2VuZGlmCi0KICAgICBpZiAo
X2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkKQogICAgICAgICByZXR1cm4gTk87CiAKQEAgLTI2
NzgsNiArMjY2NSwxMSBAQCAtIChCT09MKWhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQKICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1Vw
VG9EYXRlOnJlcXVlc3RdKQogICAgICAgICByZXR1cm4gTk87CiAKKyNpZiBFTkFCTEUoSU1BR0Vf
RVhUUkFDVElPTikKKyAgICBpZiAoX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uICYmIF9w
b3NpdGlvbkluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0ID09IF9lbGVtZW50UGVuZGluZ0ltYWdl
RXh0cmFjdGlvbikKKyAgICAgICAgcmV0dXJuIE5POworI2VuZGlmCisKICAgICByZXR1cm4gX3Bv
c2l0aW9uSW5mb3JtYXRpb24uaXNTZWxlY3RhYmxlOwogfQogCkBAIC0yNzE2LDEzICsyNzA4LDYg
QEAgLSAoQk9PTCl0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVy
ZSBzaG91bGRCZWdpbkF0UG9pbnQ6KENHUG8KICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9uQXNz
aXN0YW50UmVhc29ucykKICAgICAgICAgcmV0dXJuIE5POwogCi0jaWYgRU5BQkxFKElNQUdFX0VY
VFJBQ1RJT04pCi0gICAgaWYgKFtzZWxmIF9pbWFnZUV4dHJhY3Rpb25TaG91bGRQcmV2ZW50VGV4
dEludGVyYWN0aW9uQXRQb2ludDpwb2ludF0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIFtz
ZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rpb25dOwotI2VuZGlmCi0KICAgICBpZiAoIXNlbGYuaXNG
b2N1c2luZ0VsZW1lbnQpIHsKICAgICAgICAgaWYgKGdlc3R1cmUgPT0gVUlXS0dlc3R1cmVEb3Vi
bGVUYXApIHsKICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IGRvdWJsZSB0YXAgdGV4dCBnZXN0
dXJlcyBpbiBub25lZGl0YWJsZSBjb250ZW50LgpAQCAtMjc1OCw2ICsyNzQzLDExIEBAIC0gKEJP
T0wpdGV4dEludGVyYWN0aW9uR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxk
QmVnaW5BdFBvaW50OihDR1BvCiAgICAgICAgIHJldHVybiBOTzsKICNlbmRpZgogCisjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgaWYgKF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFj
dGlvbiAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5lbGVtZW50Q29udGV4dCA9PSBfZWxlbWVudFBl
bmRpbmdJbWFnZUV4dHJhY3Rpb24pCisgICAgICAgIHJldHVybiBOTzsKKyNlbmRpZgorCiAgICAg
Ly8gSWYgd2UncmUgY3VycmVudGx5IGZvY3VzaW5nIGFuIGVkaXRhYmxlIGVsZW1lbnQsIG9ubHkg
YWxsb3cgdGhlIHNlbGVjdGlvbiB0byBtb3ZlIHdpdGhpbiB0aGF0IGZvY3VzZWQgZWxlbWVudC4K
ICAgICBpZiAoc2VsZi5pc0ZvY3VzaW5nRWxlbWVudCkKICAgICAgICAgcmV0dXJuIF9wb3NpdGlv
bkluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmVsZW1l
bnRDb250ZXh0LT5pc1NhbWVFbGVtZW50KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1l
bnRDb250ZXh0KTsKQEAgLTI4OTAsMTAgKzI4ODAsNiBAQCAtICh2b2lkKV9zaW5nbGVUYXBJZGVu
dGlmaWVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICBf
cG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlk
ID0gWUVTOwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSAhX2RvdWJsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLmVuYWJsZWQ7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKLSAgICBbc2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWRBZnRlclRv
dWNoQXQ6Z2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb25dOwotI2VuZGlmCiB9CiAKIHN0YXRpYyB2
b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRW
aWV3KQpAQCAtNDQ4MCw3ICs0NDY2LDYgQEAgLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JNYWluRnJhbWUKICAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5P
XTsKICAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIF93a19jYW5jZWxd
OwogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQotICAgIF9zdXBwcmVzc0ltYWdlRXh0cmFj
dGlvblRva2VuID0gbnVsbHB0cjsKICAgICBbc2VsZiBfY2FuY2VsSW1hZ2VFeHRyYWN0aW9uXTsK
ICNlbmRpZgogfQpAQCAtODQ5MSwyMSArODQ3NiwxMiBAQCAtICh2b2lkKV9kcmFnSW50ZXJhY3Rp
b246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJlcGFyZUZvclNlc3Npb246KGlk
CiAKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07CiAKLSAgICBhdXRv
IHByZXBhcmVGb3JTZXNzaW9uID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmll
dz4oc2VsZiksIHNlc3Npb24gPSByZXRhaW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRpb24gPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbildIHsKKyAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dl
YWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRh
aW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIChX
ZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0
aW9uKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAg
ICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBwcm9jZWVkV2l0
aEltYWdlRXh0cmFjdGlvbiA9PSBXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uOjpZ
ZXMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBkcmFnT3JpZ2luID0gW3Nl
c3Npb24gbG9jYXRpb25JblZpZXc6c3Ryb25nU2VsZi5nZXQoKV07Ci0jaWYgRU5BQkxFKElNQUdF
X0VYVFJBQ1RJT04pCi0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rpb25J
Zk5lZWRlZEFmdGVyVG91Y2hBdDpkcmFnT3JpZ2luXTsKLSAgICAgICAgaWYgKHN0cm9uZ1NlbGYt
Pl9pbWFnZUV4dHJhY3Rpb25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlOjpB
Y3RpdmUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNz
aW9uIGZhaWxlZDogJXAgKGRlZmVycmluZyB0byBhY3RpdmUgaW1hZ2UgZXh0cmFjdGlvbikiLCBz
ZXNzaW9uLmdldCgpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0KICAgICAgICAgc3Ryb25nU2VsZi0+X2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5wcmVwYXJlRm9yRHJhZ1Nlc3Npb24oc2Vzc2lvbi5nZXQoKSwgY29t
cGxldGlvbi5nZXQoKSk7CiAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdlLT5yZXF1ZXN0RHJhZ1N0
YXJ0KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChkcmFnT3JpZ2luKSwgV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KFtzdHJvbmdTZWxmIGNvbnZlcnRQb2ludDpkcmFnT3JpZ2luIHRvVmlldzpbc3Ry
b25nU2VsZiB3aW5kb3ddXSksIFtzdHJvbmdTZWxmIF9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnNd
KTsKICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24gcmVxdWVz
dGVkOiAlcCBhdCBvcmlnaW46IHslLjBmLCAlLjBmfSIsIHNlc3Npb24uZ2V0KCksIGRyYWdPcmln
aW4ueCwgZHJhZ09yaWdpbi55KTsKQEAgLTg1MTQsNyArODQ5MCw3IEBAIC0gKHZvaWQpX2RyYWdJ
bnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmVwYXJlRm9yU2Vz
c2lvbjooaWQKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKICAgICBbc2VsZiBfZG9BZnRl
clBlbmRpbmdJbWFnZUV4dHJhY3Rpb246cHJlcGFyZUZvclNlc3Npb25dOwogI2Vsc2UKLSAgICBw
cmVwYXJlRm9yU2Vzc2lvbigpOworICAgIHByZXBhcmVGb3JTZXNzaW9uKFdlYktpdDo6UHJvY2Vl
ZFdpdGhJbWFnZUV4dHJhY3Rpb246Ok5vKTsKICNlbmRpZgogfQogCkBAIC05NDI4LDE4ICs5NDA0
LDIwIEBAIC0gKHZvaWQpX3dyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkOihXZWJD
b3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpCiAKICNpZiBFTkFCTEUoSU1BR0VfRVhUUkFD
VElPTikKIAotLSAodm9pZClfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246KGRpc3BhdGNo
X2Jsb2NrX3QpYmxvY2sKKy0gKHZvaWQpX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOih2
b2lkKF4pKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24gcHJvY2VlZFdpdGhJbWFn
ZUV4dHJhY3Rpb24pKWJsb2NrCiB7Ci0gICAgaWYgKF9pbWFnZUV4dHJhY3Rpb25TdGF0ZSA9PSBX
ZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlOjpQZW5kaW5nKQorICAgIGlmIChfaGFzUGVuZGlu
Z0ltYWdlRXh0cmFjdGlvbikKICAgICAgICAgX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJ
bWFnZUV4dHJhY3Rpb24uYXBwZW5kKG1ha2VCbG9ja1B0cihibG9jaykpOwogICAgIGVsc2UKLSAg
ICAgICAgYmxvY2soKTsKKyAgICAgICAgYmxvY2soV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0
cmFjdGlvbjo6Tm8pOwogfQogCi0tICh2b2lkKV9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0
ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uCistICh2b2lkKV9pbnZva2VBbGxBY3Rpb25zVG9QZXJm
b3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOihXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VF
eHRyYWN0aW9uKXByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uCiB7CisgICAgX2hhc1BlbmRpbmdJ
bWFnZUV4dHJhY3Rpb24gPSBOTzsKKyAgICBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb24g
PSBXVEY6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRvIGJsb2NrIDogc3RkOjpleGNoYW5nZShfYWN0
aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbiwgeyB9KSkKLSAgICAgICAg
YmxvY2soKTsKKyAgICAgICAgYmxvY2socHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pOwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCkBAIC05OTM2LDE5ICs5OTE0LDEy
IEBAIC0gKHZvaWQpX2NvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFj
dGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyCiAgICAgaWYgKCFzZWxmLndlYlZpZXcuY29uZmln
dXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uKG5pbCk7CiAKLSAgICBhdXRvIGdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZSA9IFt3ZWFr
U2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBpbnRlcmFjdGlvbiA9IHJl
dGFpblB0cihpbnRlcmFjdGlvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bildIHsKKyAgICBhdXRvIGdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZSA9IFt3ZWFrU2VsZiA9
IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBpbnRlcmFjdGlvbiA9IHJldGFpblB0
cihpbnRlcmFjdGlvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIChX
ZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uIHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0
aW9uKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAg
ICBpZiAoIXN0cm9uZ1NlbGYpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBw
b3NpdGlvbiA9IFtpbnRlcmFjdGlvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXTsK
LSNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKLSAgICAgICAgW3N0cm9uZ1NlbGYgX2NhbmNl
bEltYWdlRXh0cmFjdGlvbklmTmVlZGVkQWZ0ZXJUb3VjaEF0OnBvc2l0aW9uXTsKLSAgICAgICAg
aWYgKHN0cm9uZ1NlbGYtPl9pbWFnZUV4dHJhY3Rpb25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdlRXh0
cmFjdGlvblN0YXRlOjpBY3RpdmUpIHsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8IHByb2Nl
ZWRXaXRoSW1hZ2VFeHRyYWN0aW9uID09IFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rp
b246OlllcykgewogICAgICAgICAgICAgY29tcGxldGlvbihuaWwpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICBbc3Ryb25nU2VsZi0+X3dlYlZpZXcg
X2RpZFNob3dDb250ZXh0TWVudV07CiAKQEAgLTk5NTYsNyArOTkyNyw3IEBAIC0gKHZvaWQpX2Nv
bnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0
aW9uIGNvbmZpZ3VyCiAgICAgICAgIGlmIChOU051bWJlciAqdmFsdWUgPSBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6d2Via2l0U2hvd0xpbmtQcmV2
aWV3c1ByZWZlcmVuY2VLZXldKQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Nob3dMaW5rUHJl
dmlld3MgPSB2YWx1ZS5ib29sVmFsdWU7CiAKLSAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHBvc2l0
aW9uKSB9OworICAgICAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJl
cXVlc3QgeyBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW2ludGVyYWN0aW9uIGxvY2F0aW9uSW5W
aWV3OnN0cm9uZ1NlbGYuZ2V0KCldKSB9OwogICAgICAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hv
dCA9IHRydWU7CiAgICAgICAgIHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IgPSB0cnVlOwog
ICAgICAgICByZXF1ZXN0LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFb
c3Ryb25nU2VsZiBfc2hvdWxkVXNlQ29udGV4dE1lbnVzXTsKQEAgLTk5NzIsNyArOTk0Myw3IEBA
IC0gKHZvaWQpX2NvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlv
biAqKWludGVyYWN0aW9uIGNvbmZpZ3VyCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAg
ICAgW3NlbGYgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOmdldENvbmZpZ3VyYXRpb25B
bmRDb250aW51ZV07CiAjZWxzZQotICAgIGdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZSgpOwor
ICAgIGdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZShXZWJLaXQ6OlByb2NlZWRXaXRoSW1hZ2VF
eHRyYWN0aW9uOjpObyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4YWI0MDJkZjkwOTRlY2VkZWMwZDY1ZmJiYzMxMDVl
MDVkMDJiYmNhLi40Mzk0Y2M1NzYyZjk1YmViODBmMDM3MGMzZjE4NjAwZDY3ZGQ1NThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzI3MCw5
ICs3MjcwLDE5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3Vs
dChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQsIGNvCiAgICAgfQogCiAgICAgZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KCplbGVtZW50VG9VcGRhdGUpLnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rp
b25SZXN1bHQoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBjb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChy
b3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCB7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwKKyAgICAgICAgSGl0VGVzdFJl
cXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSwKKyAgICB9KTsKKworICAg
IGF1dG8gbm9kZUF0TG9jYXRpb24gPSBtYWtlUmVmUHRyKGhpdFRlc3RSZXN1bHQuaW5uZXJOb25T
aGFyZWROb2RlKCkpOworICAgIGlmICghbm9kZUF0TG9jYXRpb24gfHwgbm9kZUF0TG9jYXRpb24t
PnNoYWRvd0hvc3QoKSAhPSBlbGVtZW50VG9VcGRhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgLy8gRklYTUU6IEhp
dC10ZXN0IHdpdGggbG9jYXRpb24gYW5kIHJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGVyZSBpcyBv
dmVybGF5IHRleHQgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLgotICAgIGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKEhUTUxFbGVtZW50Ojppc0ltYWdlT3Zlcmxh
eVRleHQoKm5vZGVBdExvY2F0aW9uKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggNmEyOTRlYmQ5NTFkNzg5NzBiMGViZDVkZDMxMzBiYjZkNjdiNTc3
ZS4uNTJkOGYxZDkxN2E5N2Y5YjkzYTZlNTFjN2IyY2JiMTFmODY4MGJiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIx
MTcsNyArMjExNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZWN0SXNUb29CaWdGb3JTZWxlY3Rp
b24oY29uc3QgSW50UmVjdCYgYmxvY2tSZWN0LCBjb25zdCBGcmFtCiAKIHZvaWQgV2ViUGFnZTo6
c2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWN0aW5nVGV4dEF0TG9jYXRpb24oY29uc3QgSW50UG9p
bnQmIHBvaW50KQogewotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJl
cXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250
ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07
CisgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhp
dFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUs
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKICAg
ICBhdXRvIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVz
dFJlc3VsdEF0UG9pbnQocG9pbnQsIGhpdFR5cGUpOwogICAgIGF1dG8qIGhpdE5vZGUgPSByZXN1
bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKGhpdE5vZGUgJiYgaGl0Tm9kZS0+cmVuZGVyZXIoKSkK
QEAgLTI2OTYsNyArMjY5Niw3IEBAIHN0YXRpYyB2b2lkIGJvdW5kc1Bvc2l0aW9uSW5mb3JtYXRp
b24oUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSW50ZXJhY3Rpb25JbmZvcm1hCiAgICAgfQogfQog
Ci1zdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVx
dWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCitzdGF0aWMgdm9p
ZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
Tm9kZSogaW5uZXJOb25TaGFyZWROb2RlLCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYgaW5mbykKIHsKICAgICBFbGVtZW50KiBsaW5rRWxlbWVudCA9IG51bGxwdHI7CiAgICAgaWYg
KGVsZW1lbnQucmVuZGVyZXIoKSAmJiBlbGVtZW50LnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2Uo
KSkKQEAgLTI3MzIsNyArMjczMiwxNCBAQCBzdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25JbmZv
cm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbgogICAgIH0K
IAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkgewotICAgICAg
ICBpZiAocmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkKKyAgICAgICAgYm9vbCBzaG91bGRDb2xs
ZWN0SW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uID0gcmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKTsK
KyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICAgICAgaWYgKEhUTUxFbGVtZW50Ojpp
c0ltYWdlT3ZlcmxheVRleHQoKmlubmVyTm9uU2hhcmVkTm9kZSkpCisgICAgICAgICAgICBzaG91
bGRDb2xsZWN0SW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uID0gZmFsc2U7CisjZWxzZQorICAgICAg
ICBVTlVTRURfUEFSQU0oaW5uZXJOb25TaGFyZWROb2RlKTsKKyNlbmRpZgorICAgICAgICBpZiAo
c2hvdWxkQ29sbGVjdEltYWdlUG9zaXRpb25JbmZvcm1hdGlvbikKICAgICAgICAgICAgIGltYWdl
UG9zaXRpb25JbmZvcm1hdGlvbihwYWdlLCBlbGVtZW50LCByZXF1ZXN0LCBpbmZvKTsKICAgICAg
ICAgYm91bmRzUG9zaXRpb25JbmZvcm1hdGlvbigqcmVuZGVyZXIsIGluZm8pOwogICAgIH0KQEAg
LTI3NDIsNyArMjc0OSw3IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9u
KFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEluCiAgICAgCiBzdGF0aWMg
dm9pZCBzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiYgaW5mbykKIHsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250
ZW50T25seSB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVl
c3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRP
bmx5IH07CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBwYWdlLmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3QucG9pbnQs
IGhpdFR5cGUpOwogICAgIE5vZGUqIGhpdE5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAKQEAg
LTI5MTUsMTEgKzI5MjIsMTEgQEAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gV2Vi
UGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkkKIAogICAgIGF1dG8m
IGV2ZW50SGFuZGxlciA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCk7CiAgICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUg
eyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0ZyYW1lU2Ny
b2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25s
eSB9OwotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEZvckN1cnNvciA9IGV2ZW50SGFu
ZGxlci5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBlKTsKLSAgICBp
ZiAoYXV0byogaGl0RnJhbWUgPSBoaXRUZXN0UmVzdWx0Rm9yQ3Vyc29yLmlubmVyTm9kZUZyYW1l
KCkpIHsKLSAgICAgICAgaW5mby5jdXJzb3IgPSBoaXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2Vs
ZWN0Q3Vyc29yKGhpdFRlc3RSZXN1bHRGb3JDdXJzb3IsIGZhbHNlKTsKKyAgICBhdXRvIGhpdFRl
c3RSZXN1bHQgPSBldmVudEhhbmRsZXIuaGl0VGVzdFJlc3VsdEF0UG9pbnQocmVxdWVzdC5wb2lu
dCwgaGl0VHlwZSk7CisgICAgaWYgKGF1dG8qIGhpdEZyYW1lID0gaGl0VGVzdFJlc3VsdC5pbm5l
ck5vZGVGcmFtZSgpKSB7CisgICAgICAgIGluZm8uY3Vyc29yID0gaGl0RnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnNlbGVjdEN1cnNvcihoaXRUZXN0UmVzdWx0LCBmYWxzZSk7CiAgICAgICAgIGlmIChy
ZXF1ZXN0LmluY2x1ZGVDYXJldENvbnRleHQpCi0gICAgICAgICAgICBwb3B1bGF0ZUNhcmV0Q29u
dGV4dChoaXRUZXN0UmVzdWx0Rm9yQ3Vyc29yLCByZXF1ZXN0LCBpbmZvKTsKKyAgICAgICAgICAg
IHBvcHVsYXRlQ2FyZXRDb250ZXh0KGhpdFRlc3RSZXN1bHQsIHJlcXVlc3QsIGluZm8pOwogICAg
IH0KIAogICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50KQpAQCAtMjkyNyw3ICsyOTM0LDcgQEAgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gV2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlv
bihjb25zdCBJbnRlcmFjdGlvbkkKIAogICAgIGlmIChpczxFbGVtZW50Pihub2RlUmVzcG9uZGlu
Z1RvQ2xpY2tFdmVudHMpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVt
ZW50Pigqbm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKTsKLSAgICAgICAgZWxlbWVudFBvc2l0
aW9uSW5mb3JtYXRpb24oKnRoaXMsIGVsZW1lbnQsIHJlcXVlc3QsIGluZm8pOworICAgICAgICBl
bGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbigqdGhpcywgZWxlbWVudCwgcmVxdWVzdCwgaGl0VGVz
dFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSwgaW5mbyk7CiAKICAgICAgICAgaWYgKGluZm8u
aXNMaW5rICYmICFpbmZvLmlzSW1hZ2UgJiYgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QpCiAgICAg
ICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVhYmxlQml0bWFwU25hcHNob3RGb3JOb2RlKGVsZW1l
bnQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>