<?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>239933</bug_id>
          
          <creation_ts>2022-04-30 12:54:46 -0700</creation_ts>
          <short_desc>[macOS] The &quot;Markup Image&quot; services menu item should be gated on image analysis results</short_desc>
          <delta_ts>2022-05-02 13:30:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>hi</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>ntim</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865672</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-30 12:54:46 -0700</bug_when>
    <thetext>rdar://92348202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865678</commentid>
    <comment_count>1</comment_count>
      <attachid>458640</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-30 16:55:42 -0700</bug_when>
    <thetext>Created attachment 458640
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865681</commentid>
    <comment_count>2</comment_count>
      <attachid>458642</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-30 18:26:05 -0700</bug_when>
    <thetext>Created attachment 458642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865704</commentid>
    <comment_count>3</comment_count>
      <attachid>458642</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-05-01 02:52:03 -0700</bug_when>
    <thetext>Comment on attachment 458642
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/image-controls.html:30
&gt; +    await new Promise(async resolve =&gt; {
&gt; +        let button = null;
&gt; +        do {
&gt; +            await new Promise(requestAnimationFrame);
&gt; +            button = servicesControlButton();
&gt; +        } while (!button);
&gt; +        resolve();
&gt; +        button.click();
&gt; +    });

You don&apos;t need to wrap a Promise object since you&apos;re already in an async function, I think this should just work:

```

async function waitForAndClickImageControls() {
   if (!window.internals)
      return;

   let button = null;
   do {
      await new Promise(requestAnimationFrame);
      button = servicesControlButton();
   } while (!button);
   button.click();
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865706</commentid>
    <comment_count>4</comment_count>
      <attachid>458642</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-05-01 03:03:33 -0700</bug_when>
    <thetext>Comment on attachment 458642
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/image-controls.html:30
&gt;&gt; +    });
&gt; 
&gt; You don&apos;t need to wrap a Promise object since you&apos;re already in an async function, I think this should just work:
&gt; 
&gt; ```
&gt; 
&gt; async function waitForAndClickImageControls() {
&gt;    if (!window.internals)
&gt;       return;
&gt; 
&gt;    let button = null;
&gt;    do {
&gt;       await new Promise(requestAnimationFrame);
&gt;       button = servicesControlButton();
&gt;    } while (!button);
&gt;    button.click();
&gt; }
&gt; ```

or if you really meant to resolve() before the button click (which is pretty weird IMO):

```
function waitForAndClickImageControls() {
    return new Promise(async resolve =&gt; {
        if (!window.internals)
            return resolve();
        let button = null;
        do {
            await new Promise(requestAnimationFrame);
            button = servicesControlButton();
        } while (!button);
        resolve();
        button.click();
    });
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865727</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-05-01 10:41:28 -0700</bug_when>
    <thetext>Good point! With the current version of the test, we don&apos;t need to resolve the promise before clicking because we&apos;ll always dispatch the runloop timer before we start spinning the runloop for the context menu.

Changed to simplify waitForAndClickImageControls().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865728</commentid>
    <comment_count>6</comment_count>
      <attachid>458651</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-05-01 10:43:02 -0700</bug_when>
    <thetext>Created attachment 458651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865883</commentid>
    <comment_count>7</comment_count>
      <attachid>458651</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-05-02 11:03:33 -0700</bug_when>
    <thetext>Comment on attachment 458651
Patch

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

&gt; Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:299
&gt; +    if (!page()-&gt;preferences().imageAnalysisMarkupEnabled())

Do we need to check for a null page here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865897</commentid>
    <comment_count>8</comment_count>
      <attachid>458651</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-05-02 11:34:51 -0700</bug_when>
    <thetext>Comment on attachment 458651
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:299
&gt;&gt; +    if (!page()-&gt;preferences().imageAnalysisMarkupEnabled())
&gt; 
&gt; Do we need to check for a null page here?

Ah, so I think we&apos;re technically okay here since this method is only called from `setupServicesMenu()` which already dereferences `page()` (and therefore assumes that it&apos;s non-null).

That said, since this is a separate method now, adding an extra null check is probably a good idea — I&apos;ll add an early return here for `!page()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865900</commentid>
    <comment_count>9</comment_count>
      <attachid>458697</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-05-02 11:43:15 -0700</bug_when>
    <thetext>Created attachment 458697
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865932</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-02 13:30:53 -0700</bug_when>
    <thetext>Committed r293681 (250181@main): &lt;https://commits.webkit.org/250181@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458697.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458640</attachid>
            <date>2022-04-30 16:55:42 -0700</date>
            <delta_ts>2022-04-30 18:26:03 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-239933-20220430165541.patch</filename>
            <type>text/plain</type>
            <size>24616</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVhNjQ0ODMzYzMyODRlOGU0
MGI5NzFkOWUxNWRkNGI0N2FiN2Q2MWEuLmE0OWE4OTg2NDk0MjI3OWYwOWQ1NjFkYzU4OGUzMDY0
OTY4ZjQyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDQtMzAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBUaGUgIk1h
cmt1cCBJbWFnZSIgc2VydmljZXMgbWVudSBpdGVtIHNob3VsZCBiZSBnYXRlZCBvbiBpbWFnZSBh
bmFseXNpcyByZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzk5MzMKKyAgICAgICAgcmRhcjovLzkyMzQ4MjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IHNvbWUgbWFjT1Mtc3BlY2lm
aWMgbG9naWMgZm9yIGFwcGVuZGluZyB0aGUgIk1hcmt1cCBJbWFnZSIgbWVudSBpdGVtIGluIHRo
ZSBzZXJ2aWNlcyBtZW51LCBzdWNoIHRoYXQgd2UKKyAgICAgICAgb25seSBhZGQgdGhpcyBuZXcg
aXRlbSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVsZXZhbnQgaW1hZ2UgYW5hbHlzaXMgQVBJcyBj
b21lIGJhY2sgd2l0aCBhIHZhbGlkIGNyb3BwZWQgaW1hZ2UKKyAgICAgICAgcmVzdWx0LiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBJbWFnZUFuYWx5c2lzVGVz
dHMuTWFya3VwSW1hZ2VJdGVtSW5TZXJ2aWNlc01lbnUKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHk6OmNyb3BwZWRJbWFnZVJlc3VsdCBjb25zdCk6CisKKyAgICAgICAgTW92ZSBgbV9jcm9wcGVk
SW1hZ2VGb3JDb250ZXh0TWVudWAgaW50byBgV2ViQ29udGV4dE1lbnVQcm94eU1hY2AgYXMgYG1f
Y3JvcHBlZEltYWdlUmVzdWx0YCwgc28gdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgZWFzaWx5IHVz
ZWQgZm9yIGJvdGggdGhlIG5ldyAiQ29weSBDcm9wcGVkIEltYWdlIiBhbmQgIk1hcmt1cCBJbWFn
ZSIgaXRlbXMuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBs
b2dpYyBmb3IgcmVzZXR0aW5nIHRoaXMgY2FjaGVkIGltYWdlIHJlc3VsdCBzaW5jZSB0aGUgd2hv
bGUgYG1fYWN0aXZlQ29udGV4dE1lbnVgIGlzIGFsd2F5cyBkZXN0cm95ZWQgdXBvbgorICAgICAg
ICBwcmVzZW50aW5nIGEgY29udGV4dCBtZW51LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gc2VwYXJh
dGVseSBjbGVhciBvdXQgYG1fY3JvcHBlZEltYWdlUmVzdWx0YC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVl
ZGVkKToKKworICAgICAgICBQdWxsIHRoaXMgbG9naWMgb3V0IGludG8gYSBzZXBhcmF0ZSBoZWxw
ZXIgbWV0aG9kLCBhbmQgY2hhbmdlIGl0IHNvIHRoYXQ6CisgICAgICAgIC0gV2UgcnVuIHRoZSBp
bWFnZSBhbmFseXNpcyBwcmlvciB0byBjcmVhdGluZyBhbmQgYWRkaW5nIHRoZSBpdGVtLgorICAg
ICAgICAtIE9ubHkgYWRkIHRoZSBpdGVtIGlmIHRoZSBpbWFnZSBhbmFseXNpcyByZXR1cm5lZCBh
IG5vbi1udWxsIENHSW1hZ2VSZWYuCisgICAgICAgIC0gU3RvcmUgdGhlIENHSW1hZ2VSZWYgb24g
YG1fY3JvcHBlZEltYWdlUmVzdWx0YCwgZm9yIHVzZSBpZiB0aGUgbWVudSBpdGVtIGlzIGludm9r
ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6YXBwbHlNYXJr
dXBUb0NvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5k
bGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KTogRGVsZXRlZC4KKwogMjAyMi0w
NC0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTM0ODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0TWVudVByb3h5LmgKaW5kZXggMWI4ZmNjODQ2NjRmMzA5YWZlNWY0ZWFjZDI4
YjU0MTNjMWIxYjkwNy4uOGE1MDZjMmY0Yjk2MTg1NTYwYzhlZTE5OGY5YWY5NTc1MTUyYjE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaApAQCAt
NTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTlNBcnJheSAqcGxhdGZvcm1EYXRh
KCkgY29uc3QgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCisjaWYgRU5BQkxFKElN
QUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgY3JvcHBl
ZEltYWdlUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKIHByb3Rl
Y3RlZDoKICAgICBXZWJDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51
Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjU5YjUwOWU2NTRhZjU1ODFjOWRlMmEyMTg1MzcyNDE4
MzY1MzU4ZS4uYTlkZTdlNTM5MzIyZDNjOWNiZmI5MTFmYWFjZDUxM2JlMDgzNzNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTkwLDEwICsxMTkwLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0g
bnVsbHB0cjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0
TWVudSA9IG51bGxwdHI7Ci0jZW5kaWYKLQogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0
cjsKIAogICAgIG1faW5zcGVjdG9yLT5pbnZhbGlkYXRlKCk7CkBAIC03MDg3LDEwICs3MDgzLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHRE
YXRhJiYgY29udGV4dE1lbnVDb250ZXh0RGEKICAgICAvLyBNb3VzZURvd24gZXZlbnQgdGhhdCB0
cmlnZ2VyZWQgdGhpcyBTaG93Q29udGV4dE1lbnUgbWVzc2FnZS4gVGhpcyBjYW4gaGFwcGVuIGlm
IHdlIHRha2UgdG9vIGxvbmcgdG8gZW50ZXIgdGhlIG5lc3RlZCBydW5sb29wLgogICAgIGRpc2Nh
cmRRdWV1ZWRNb3VzZUV2ZW50cygpOwogCi0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFO
Q0VNRU5UUykKLSAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gbnVsbHB0cjsKLSNl
bmRpZgotCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVD
b250ZXh0RGF0YTsKIAogICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBwYWdlQ2xpZW50KCkuY3Jl
YXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RGTW92ZShjb250ZXh0TWVudUNvbnRleHREYXRh
KSwgdXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3
ODFkYmIzYjg5NjE4NmJmYzExMDc3MDkwODJiMjEyNjc2NDI3ZjExLi41OWZiMWI2YjhkNDllMjU5
Zjg5MDk4MGE3NTczMjIyNGE3YTg1YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMjEwMiwxMCArMjEwMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4dHJhY3RW
aWRlb0luRWxlbWVudEZ1bGxTY3JlZW4oV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9Cb3VuZHMpOwogICAgIHZvaWQgY2FuY2VsVmlkZW9FeHRy
YWN0aW9uSW5FbGVtZW50RnVsbFNjcmVlbigpOwogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
ICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgdm9pZCBzZXRDcm9w
cGVkSW1hZ2VGb3JDb250ZXh0TWVudShDR0ltYWdlUmVmKTsKLSNlbmRpZgotCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBA
IC0yNzk3LDEwICsyNzkzLDYgQEAgcHJpdmF0ZToKICAgICBDb250ZXh0TWVudUNvbnRleHREYXRh
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnU7Ci0jZW5k
aWYKLQogICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IG1fbGFzdE1vdXNlTW92ZUhpdFRl
c3RSZXN1bHQ7CiAKICAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4g
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCmluZGV4IDYxYjk1ZjRmNmQ1Yzg0YTJl
Njk5MGUwNmNiNTVhODhjNTcxNzQ4MDQuLjFhMmM4OTAyMmZkMjNiNWRjNTk3NjUwMGQ5YTM5NDNk
NmRhYWZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMuaApAQCAtNTgsNiArNTgsMTAgQEAgcHVibGljOgogCiAgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OwogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFO
Q0VNRU5UUykKKyAgICBDR0ltYWdlUmVmIGNyb3BwZWRJbWFnZVJlc3VsdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY3JvcHBlZEltYWdlUmVzdWx0LmdldCgpOyB9CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBXZWJDb250ZXh0TWVudVByb3h5TWFjKE5TVmlldyAqLCBXZWJQYWdlUHJveHkmLCBD
b250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJik7CiAKQEAgLTcyLDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNoYXJlTWVudUl0ZW0oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChOU01lbnVJdGVtICopPiYmKTsKICAgICB2b2lkIHNob3dTZXJ2aWNlc01lbnUoKTsK
ICAgICB2b2lkIHNldHVwU2VydmljZXNNZW51KCk7CisgICAgdm9pZCBhcHBlbmRNYXJrdXBJdGVt
VG9Db250cm9sbGVkSW1hZ2VNZW51SWZOZWVkZWQoKTsKICNlbmRpZgogCiAgICAgTlNNZW51ICpw
bGF0Zm9ybU1lbnUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTgwLDYgKzg1LDkgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNNZW51PiBtX21lbnU7CiAgICAgUmV0YWluUHRyPFdLTWVudURlbGVn
YXRlPiBtX21lbnVEZWxlZ2F0ZTsKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc+IG1fd2ViVmlldzsK
KyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2Nyb3BwZWRJbWFnZVJlc3VsdDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IGU4ODM5ZWEzOTg0MzA3MGVhZjQxZWRlZmJiYTdi
ZGRiNjU3ODI5ZTQuLjMyZmQzOWRmMmQ0MmE3YzBkZjM4NDZiMGQ3ZmRkMDNlOThmOWE4ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCkBAIC0yNjEsMjEgKzI2MSw4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2V0dXBTZXJ2aWNlc01lbnUoKQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAg
ICAgICAgIFttX21lbnUgc2V0U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOwotI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgZWxzZSBpZiAocGFnZSgpLT5wcmVmZXJlbmNl
cygpLmltYWdlQW5hbHlzaXNNYXJrdXBFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBtYXJrdXBJ
bWFnZUl0ZW0gPSBhZG9wdE5TKFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjb250
ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFn
ZSkga2V5RXF1aXZhbGVudDpAIiJdKTsKLSAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZVdpdGhTeXN0ZW1TeW1ib2xOYW1lOkAicGVyc29uLmZpbGwudmlld2Zp
bmRlciIgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3Vw
SW1hZ2UoKV1dOwotICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldFRhcmdldDpXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV07
Ci0gICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFn
ZSldOwotICAgICAgICBhdXRvIG51bWJlck9mSXRlbXMgPSBbbV9tZW51IG51bWJlck9mSXRlbXNd
OwotICAgICAgICBpZiAobnVtYmVyT2ZJdGVtcykKLSAgICAgICAgICAgIFttYXJrdXBJbWFnZUl0
ZW0gc2V0SW5kZW50YXRpb25MZXZlbDpbbV9tZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMg
LSAxXS5pbmRlbnRhdGlvbkxldmVsXTsKLSAgICAgICAgaWYgKG51bWJlck9mSXRlbXMgPj0gMSkK
LSAgICAgICAgICAgIFttX21lbnUgaW5zZXJ0SXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCkgYXRJ
bmRleDpudW1iZXJPZkl0ZW1zIC0gMV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFttX21l
bnUgYWRkSXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOwotICAgIH0KLSNlbmRpZiAvLyBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCisgICAgYXBwZW5kTWFya3VwSXRlbVRv
Q29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVkKCk7CiAKICAgICAvLyBFeHBsaWNpdGx5IGFkZCBh
IG1lbnUgaXRlbSBmb3IgZWFjaCB0ZWxlcGhvbmUgbnVtYmVyIHRoYXQgaXMgaW4gdGhlIHNlbGVj
dGlvbi4KICAgICBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+PiB0ZWxlcGhvbmVOdW1iZXJN
ZW51SXRlbXM7CkBAIC0zMDYsNiArMjkzLDQxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2V0dXBTZXJ2aWNlc01lbnUoKQogICAgICAgICBTZXJ2aWNlc0NvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLnJlZnJlc2hFeGlzdGluZ1NlcnZpY2VzKCk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVk
KCkKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmICgh
cGFnZSgpLT5wcmVmZXJlbmNlcygpLmltYWdlQW5hbHlzaXNNYXJrdXBFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIGltYWdlQml0bWFwID0gbV9jb250ZXh0LmNvbnRyb2xs
ZWRJbWFnZSgpOworICAgIGlmICghaW1hZ2VCaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gaW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICByZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChpbWFn
ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWFrTWVudSA9IFdlYWtP
YmpDUHRyIHsgbV9tZW51LmdldCgpIH1dKENHSW1hZ2VSZWYgcmVzdWx0LCBDR1JlY3QpIHsKKyAg
ICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBz
dHJvbmdNZW51ID0gd2Vha01lbnUuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nTWVudSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG1hcmt1cEltYWdlSXRlbSA9IGFkb3B0
TlMoW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOmNvbnRleHRNZW51SXRlbVRpdGxl
TWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKG1hcmt1cEltYWdlKSBrZXlFcXVpdmFsZW50
OkAiIl0pOworICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldEltYWdlOltOU0ltYWdlIGltYWdl
V2l0aFN5c3RlbVN5bWJvbE5hbWU6QCJwZXJzb24uZmlsbC52aWV3ZmluZGVyIiBhY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb246Y29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpXV07CisgICAg
ICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0VGFyZ2V0OldLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZS5zaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXTsKKyAgICAgICAgW21hcmt1
cEltYWdlSXRlbSBzZXRBY3Rpb246QHNlbGVjdG9yKG1hcmt1cEltYWdlKV07CisgICAgICAgIGlm
IChhdXRvIG51bWJlck9mSXRlbXMgPSBbc3Ryb25nTWVudSBudW1iZXJPZkl0ZW1zXSkKKyAgICAg
ICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0SW5kZW50YXRpb25MZXZlbDpbc3Ryb25nTWVudSBp
dGVtQXRJbmRleDpudW1iZXJPZkl0ZW1zIC0gMV0uaW5kZW50YXRpb25MZXZlbF07CisgICAgICAg
IFtzdHJvbmdNZW51IGFkZEl0ZW06bWFya3VwSW1hZ2VJdGVtLmdldCgpXTsKKworICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX2Nyb3BwZWRJbWFnZVJlc3VsdCA9IHJlc3VsdDsKKyAgICB9KTsKKyNl
bmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorfQorCiB2b2lkIFdl
YkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dTZXJ2aWNlc01lbnUoKQogewogICAgIHNldHVwU2Vy
dmljZXNNZW51KCk7CkBAIC0zMzEsMjUgKzM1MywxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJv
eHlNYWM6OmFwcGx5TWFya3VwVG9Db250cm9sbGVkSW1hZ2UoKQogICAgIGlmICghZWxlbWVudENv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGltYWdlQml0bWFwID0gbV9jb250
ZXh0LmNvbnRyb2xsZWRJbWFnZSgpOwotICAgIGlmICghaW1hZ2VCaXRtYXApCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gaW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKLSAg
ICBpZiAoIWltYWdlKQorICAgIGF1dG8gW2RhdGEsIHR5cGVdID0gaW1hZ2VEYXRhRm9yQ3JvcHBl
ZEltYWdlUmVzdWx0KG1fY3JvcHBlZEltYWdlUmVzdWx0LmdldCgpLCBtX2NvbnRleHQuY29udHJv
bGxlZEltYWdlTUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3RJbWFnZUFuYWx5c2lzTWFya3VwKGlt
YWdlLmdldCgpLCBbd2Vha1BhZ2UgPSBXZWFrUHRyIHsgcGFnZSgpIH0sIHByZWZlcnJlZE1JTUVU
eXBlID0gbV9jb250ZXh0LmNvbnRyb2xsZWRJbWFnZU1JTUVUeXBlKCksIGVsZW1lbnRDb250ZXh0
ID0gV1RGTW92ZSgqZWxlbWVudENvbnRleHQpXShDR0ltYWdlUmVmIHJlc3VsdCwgQ0dSZWN0KSB7
Ci0gICAgICAgIFJlZlB0ciBwcm90ZWN0ZWRQYWdlID0gd2Vha1BhZ2UuZ2V0KCk7Ci0gICAgICAg
IGlmICghcHJvdGVjdGVkUGFnZSB8fCAhcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGF1dG8gW2RhdGEsIHR5cGVdID0gaW1hZ2VEYXRhRm9yQ3JvcHBlZEltYWdlUmVzdWx0
KHJlc3VsdCwgcHJlZmVycmVkTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0gICAg
ICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBwcm90ZWN0ZWRQ
YWdlLT5yZXBsYWNlSW1hZ2VXaXRoTWFya3VwUmVzdWx0cyhlbGVtZW50Q29udGV4dCwgeyBTdHJp
bmcodHlwZS5nZXQoKSkgfSwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSk7Ci0gICAgfSk7CisgICAgcGFn
ZSgpLT5yZXBsYWNlSW1hZ2VXaXRoTWFya3VwUmVzdWx0cygqZWxlbWVudENvbnRleHQsIHsgU3Ry
aW5nKHR5cGUuZ2V0KCkpIH0sIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSkpOwogI2VuZGlmIC8vIEVOQUJM
RShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiB9CiAKQEAgLTY2MSw3ICs2NjksNyBAQCB2
b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudQogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNF
TUVOVFMpCiAgICAgICAgICAgICBpZiAoY29weUNyb3BwZWRJbWFnZUl0ZW0pIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBpbWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSkg
ewotICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVu
dShudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jcm9wcGVk
SW1hZ2VSZXN1bHQgPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SW1hZ2VB
bmFseXNpc01hcmt1cChpbWFnZS5nZXQoKSwgW3dlYWtQYWdlLCBwcm90ZWN0ZWRUaGlzLCBjb3B5
Q3JvcHBlZEltYWdlSXRlbSA9IFdURk1vdmUoKmNvcHlDcm9wcGVkSW1hZ2VJdGVtKV0oYXV0byBy
ZXN1bHQsIGF1dG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzgsNyBAQCB2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFnZS0+c2V0Q3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUocmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY3JvcHBlZEltYWdlUmVzdWx0ID0g
cmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3RlY3RlZFRoaXMtPm1fbWVudSBh
ZGRJdGVtOmNyZWF0ZU1lbnVBY3Rpb25JdGVtKGNvcHlDcm9wcGVkSW1hZ2VJdGVtKS5nZXQoKV07
CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGM2ZGI2MGU3M2Vh
MzAwNGM2ZWYwNjI5ZDA5MzU4OWE4ODQyOTQxMjMuLjQxMzE3MjQ3ZmM4MzdhMjRkYTYzMzJmY2Ri
ZGY3MWJmNTdmMjk5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQpAQCAtNzgxLDE3ICs3ODEsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNo
b3dJbWFnZUluUXVpY2tMb29rUHJldmlld1BhbmVsKFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRt
YXAKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudShDR0ltYWdlUmVmIGltYWdl
KQotewotICAgIG1fY3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUgPSBpbWFnZTsKLX0KLQogdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJbWFnZShjb25zdCBT
dHJpbmcmIHByZWZlcnJlZE1JTUVUeXBlKQogewotICAgIGlmICghbV9jcm9wcGVkSW1hZ2VGb3JD
b250ZXh0TWVudSkKKyAgICBpZiAoIW1fYWN0aXZlQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJldGFpblB0ciBpbWFnZSA9IG1fYWN0aXZlQ29udGV4dE1lbnUtPmNyb3BwZWRJ
bWFnZVJlc3VsdCgpOworICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gW2RhdGEsIHR5cGVdID0gaW1hZ2VEYXRhRm9yQ3JvcHBlZEltYWdlUmVzdWx0KG1fY3JvcHBl
ZEltYWdlRm9yQ29udGV4dE1lbnUuZ2V0KCksIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOworICAgIGF1dG8gW2RhdGEsIHR5cGVdID0gaW1hZ2VEYXRhRm9yQ3JvcHBl
ZEltYWdlUmVzdWx0KGltYWdlLmdldCgpLCBwcmVmZXJyZWRNSU1FVHlwZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNhODE0ZjljYzhhZDdl
NDBiMzUzYjkyYzYwNmM1YWQ2NGQ2MDFjYTIuLjNkODlhZTVjMDg5ZmFkNTcyOGY0ZDg2OTQzZjNk
OWJiZjgxNTVmZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMi0wNC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIFRoZSAiTWFya3VwIEltYWdlIiBz
ZXJ2aWNlcyBtZW51IGl0ZW0gc2hvdWxkIGJlIGdhdGVkIG9uIGltYWdlIGFuYWx5c2lzIHJlc3Vs
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTkz
MworICAgICAgICByZGFyOi8vOTIzNDgyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gQVBJIHRlc3QgdG8gc2ltdWxhdGUgY2xpY2tpbmcg
b24gdGhlIHNlcnZpY2VzIG1lbnUgYnV0dG9uIGluIGFuIGF0dGFjaG1lbnQtYmFja2VkIGltYWdl
IGVsZW1lbnQgd2hpbGUKKyAgICAgICAgc3dpenpsaW5nIHRoZSByZWxldmFudCBpbWFnZSBhbmFs
eXNpcyBBUElzIHRvIHJldHVybiBhIHZhbGlkIENHSW1hZ2VSZWY7IHZlcmlmeSB0aGF0IHRoZSAi
TWFya3VwIEltYWdlIiBtZW51CisgICAgICAgIGl0ZW0gZXZlbnR1YWxseSBzaG93cyB1cC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VB
bmFseXNpc1Rlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlV2ViVmlld1dp
dGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
aWNvbkltYWdlKToKKworICAgICAgICBNYWtlIHRoaXMgdGVzdGluZyBoZWxwZXIgZnVuY3Rpb24g
d29yayBvbiBib3RoIG1hY09TIGFuZCBpT1MuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTWFya3VwVGVzdCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1jb250cm9scy5odG1sOiBBZGRl
ZC4KKwogMjAyMi0wNC0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkzNjIxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3NTc3Zjc2ZmVlNmM3ZDI3OTBiZDkzZDJmZDk3NzhjYzgxZDg3YTE0Li4zZGVlYjk1ODJl
YmU3M2ZlZTBjNDU5MDdkYTM5ZjA3ZTUwN2FiMmZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTEwNCw2ICsxMTA0LDcgQEAKIAkJRjQ4NTZDQTMxRTY0OUVBODAwOUQ3RUU3IC8qIGF0dGFj
aG1lbnQtZWxlbWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0ODU2Q0EyMUU2NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVs
ZW1lbnQuaHRtbCAqLzsgfTsKIAkJRjQ4NkIxRDAxRjY3OTUyMzAwRjM0QkREIC8qIERhdGFUcmFu
c2Zlci1zZXREcmFnSW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5z
ZmVyLXNldERyYWdJbWFnZS5odG1sICovOyB9OwogCQlGNDhENkMxMDIyNEIzNzcwMDBFM0UyRkIg
LyogUHJlZmVycmVkQ29udGVudE1vZGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDhENkMwRjIyNEIzNzcwMDBFM0UyRkIgLyogUHJlZmVycmVkQ29u
dGVudE1vZGUubW0gKi87IH07CisJCUY0OTFEQkFFMjgxREUwRTgwMDgxNzA1RiAvKiBpbWFnZS1j
b250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0OTFEQkFEMjgxREUwOTgwMDgxNzA1RiAvKiBpbWFnZS1jb250cm9scy5odG1s
ICovOyB9OwogCQlGNDk0QjM2QTI2MzEyMDc4MDA2MEEzMTAgLyogVGV4dFNlcnZpY2VzVGVzdHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk0QjM2
OTI2MzEyMDc4MDA2MEEzMTAgLyogVGV4dFNlcnZpY2VzVGVzdHMubW0gKi87IH07CiAJCUY0OTk5
MkM2MjQ4REFCRkQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk5OTJDNTI0OERBQkU0
MDAwMzQxNjcgLyogb3ZlcmZsb3ctaGlkZGVuLmh0bWwgKi87IH07CiAJCUY0QTMyRUM0MUYwNUYz
ODUwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEEz
MkVDMzFGMDVGMzc4MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNoYW5nZS1zZWxlY3Rpb24tb2Zmc2Ny
ZWVuLmh0bWwgKi87IH07CkBAIC0xNDE3LDYgKzE0MTgsNyBAQAogCQkJCUY0MUFCOUE0MUVGNDY5
NkIwMDgzRkEwOCAvKiBpbWFnZS1hbmQtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjRFMEEyQjQyMTIyNDAyQjAwQUY3QzdGIC8qIGltYWdlLWFuZC1maWxl
LXVwbG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE1MUVGNDY5NkIw
MDgzRkEwOCAvKiBpbWFnZS1hbmQtdGV4dGFyZWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
KwkJCQlGNDkxREJBRTI4MURFMEU4MDA4MTcwNUYgLyogaW1hZ2UtY29udHJvbHMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlGNERFRjZFRDFFOUI0REI2MDA0OEVGNjEgLyogaW1hZ2Ut
aW4tbGluay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDVCNjNG
QjFGMTk3RjRBMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJMzEyOEE4MTUyMzc2NDEzMzAwRDkwRDQwIC8qIGltYWdlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0zMTQyLDYgKzMxNDQsNyBAQAogCQlGNDg1NkNBMjFFNjQ5OEE4MDA5RDdF
RTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiYXR0YWNobWVudC1lbGVtZW50Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkRhdGFUcmFuc2Zlci1zZXREcmFnSW1h
Z2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQ2QzBGMjI0QjM3NzAw
MEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFByZWZlcnJlZENvbnRlbnRNb2RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NDkxREJBRDI4MURFMDk4MDA4MTcwNUYgLyogaW1hZ2UtY29udHJvbHMuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJpbWFnZS1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5
MzI0N0MxRjQ0REY4RDAwNkY0MzM2IC8qIFVJS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJS2l0
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTRCMzY5MjYzMTIwNzgwMDYw
QTMxMCAvKiBUZXh0U2VydmljZXNUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRT
ZXJ2aWNlc1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDk5OTJDNTI0
OERBQkU0MDAwMzQxNjcgLyogb3ZlcmZsb3ctaGlkZGVuLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAib3ZlcmZsb3ctaGlkZGVuLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDIxNCw2ICs0MjE3LDcgQEAKIAkJCQlGNDFBQjk5OTFFRjQ2OTJDMDA4M0ZBMDgg
LyogaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZS5odG1sICovLAogCQkJCUY0RTBBMkIzMjEyMjNG
MkQwMEFGN0M3RiAvKiBpbWFnZS1hbmQtZmlsZS11cGxvYWQuaHRtbCAqLywKIAkJCQlGNDFBQjk5
MzFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLXRleHRhcmVhLmh0bWwgKi8sCisJCQkJRjQ5
MURCQUQyODFERTA5ODAwODE3MDVGIC8qIGltYWdlLWNvbnRyb2xzLmh0bWwgKi8sCiAJCQkJRjRE
RUY2RUMxRTlCNEQ5NTAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgKi8s
CiAJCQkJRjQ1QjYzRkExRjE5N0YzMzAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1sICovLAogCQkJ
CTMxMjhBODE0MjM3NjQwRkQwMEQ5MEQ0MCAvKiBpbWFnZS5odG1sICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbWFnZUFuYWx5c2lzVGVzdHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNU
ZXN0cy5tbQppbmRleCAwYWQyMWQ3YTA0MDNlZTk2ZmJiODgzNWQ4NDMzZjFjMjc1M2E5NzU2Li5k
YWY2OGVlYTMxMjAzM2VkZTlkODkzYWZiNGYxMGYyZGM2Yjk2YWVkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNU
ZXN0cy5tbQpAQCAtMTU3LDYgKzE1NywxMCBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCkKICAgICAg
ICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiVGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRz
RW5hYmxlZCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiSW1hZ2VBbmFseXNpc1F1ZXVlRW5h
YmxlZCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiSW1hZ2VBbmFseXNpc01hcmt1cEVuYWJs
ZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJs
ZWQ6WUVTIGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOwogICAgIH0KKyAgICBbY29u
ZmlndXJhdGlvbiBfc2V0QXR0YWNobWVudEVsZW1lbnRFbmFibGVkOllFU107CisjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEltYWdlQ29udHJvbHNF
bmFibGVkOllFU107CisjZW5kaWYKICAgICByZXR1cm4gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiB9CiAKQEAgLTMyMiwxNCArMzI2LDIzIEBAIFRF
U1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBJbWFnZUFuYWx5c2lzV2l0aFRyYW5zcGFyZW50SW1hZ2Vz
KQogICAgIEVYUEVDVF9GQUxTRShyZWFkZXIuaXNUcmFuc3BhcmVudEJsYWNrKHJlYWRlci53aWR0
aCgpIC8gMiwgcmVhZGVyLmhlaWdodCgpIC8gMikpOwogfQogCi0jaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQogCi1zdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+
IGljb25JbWFnZSgpCitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGljb25JbWFnZSgpCiB7
CiAgICAgYXV0byBpY29uUGF0aCA9IFtOU0J1bmRsZS5tYWluQnVuZGxlIHBhdGhGb3JSZXNvdXJj
ZTpAImljb24iIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwotICAgIHJldHVybiBbVUlJbWFnZSBpbWFnZVdpdGhDb250ZW50c09mRmlsZTppY29u
UGF0aF07CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gW1VJSW1hZ2UgaW1h
Z2VXaXRoQ29udGVudHNPZkZpbGU6aWNvblBhdGhdLkNHSW1hZ2U7CisjZWxzZQorICAgIGF1dG8g
aW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mRmlsZTpp
Y29uUGF0aF0pOworICAgIHJldHVybiBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwg
Y29udGV4dDpuaWwgaGludHM6bmlsXTsKKyNlbmRpZgogfQogCisjZW5kaWYgLy8gRU5BQkxFKElN
QUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19F
TkhBTkNFTUVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKIHN0YXRpYyB2b2lkIHNpbXVs
YXRlQ2FsbG91dEJhckFwcGVhcmFuY2UoVGVzdFdLV2ViVmlldyAqd2ViVmlldykKIHsKICAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtMzUxLDcgKzM2NCw3IEBAIHN0YXRpYyB2b2lk
IGludm9rZUltYWdlTWFya3VwQWN0aW9uKFRlc3RXS1dlYlZpZXcgKndlYlZpZXcpCiAKIFRFU1Qo
SW1hZ2VBbmFseXNpc1Rlc3RzLCBNZW51Q29udHJvbGxlckl0ZW1zKQogewotICAgIEltYWdlQW5h
bHlzaXNNYXJrdXBTd2l6emxlciBzd2l6emxlciB7IFtpY29uSW1hZ2UoKSBDR0ltYWdlXSwgQ0dS
ZWN0TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9OworICAgIEltYWdlQW5hbHlzaXNNYXJrdXBTd2l6
emxlciBzd2l6emxlciB7IGljb25JbWFnZSgpLmF1dG9yZWxlYXNlKCksIENHUmVjdE1ha2UoMTAs
IDEwLCAyMTUsIDE3NCkgfTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRo
VGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCk7CiAgICAgYXV0byBpbnB1dERlbGVnYXRlID0g
YWRvcHROUyhbVGVzdElucHV0RGVsZWdhdGUgbmV3XSk7CkBAIC0zODksNyArNDAyLDcgQEAgVEVT
VChJbWFnZUFuYWx5c2lzVGVzdHMsIE1lbnVDb250cm9sbGVySXRlbXMpCiAKIHN0YXRpYyB2b2lk
IHJ1bk1hcmt1cFRlc3QoTlNTdHJpbmcgKnRlc3RQYWdlLCBOU1N0cmluZyAqc2NyaXB0VG9TZWxl
Y3RUZXh0LCBGdW5jdGlvbjx2b2lkKFRlc3RXS1dlYlZpZXcgKiwgTlNTdHJpbmcgKik+JiYgY2hl
Y2tXZWJWaWV3KQogewotICAgIEltYWdlQW5hbHlzaXNNYXJrdXBTd2l6emxlciBzd2l6emxlciB7
IFtpY29uSW1hZ2UoKSBDR0ltYWdlXSwgQ0dSZWN0TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9Owor
ICAgIEltYWdlQW5hbHlzaXNNYXJrdXBTd2l6emxlciBzd2l6emxlciB7IGljb25JbWFnZSgpLmF1
dG9yZWxlYXNlKCksIENHUmVjdE1ha2UoMTAsIDEwLCAyMTUsIDE3NCkgfTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCk7
CiAgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbVGVzdElucHV0RGVsZWdhdGUgbmV3
XSk7CkBAIC00MzMsNiArNDQ2LDM4IEBAIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBQZXJmb3Jt
SW1hZ2VBbmFseXNpc01hcmt1cFdpdGhXZWJQSW1hZ2VzKQogCiAjZW5kaWYgLy8gRU5BQkxFKElN
QUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2lm
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpICYmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQorCitURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgTWFya3VwSW1hZ2VJdGVtSW5TZXJ2
aWNlc01lbnUpCit7CisgICAgSW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsg
aWNvbkltYWdlKCkuYXV0b3JlbGVhc2UoKSwgQ0dSZWN0TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9
OworCisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25F
bmhhbmNlbWVudHMoKTsKKyAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVTXTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJpbWFnZS1jb250cm9scyJdOwor
ICAgIFtbd2ViVmlldyB3aW5kb3ddIG9yZGVyRnJvbnRSZWdhcmRsZXNzXTsKKyAgICBbd2ViVmll
dyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAid2FpdEZvckFuZENsaWNrSW1hZ2VDb250cm9scygpIiBh
cmd1bWVudHM6bmlsIGluRnJhbWU6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBh
Z2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZm91bmRN
YXJrdXBJbWFnZUl0ZW0gPSBmYWxzZTsKKyAgICBSZXRhaW5QdHIgdGltZXIgPSBbTlNUaW1lciB0
aW1lcldpdGhUaW1lSW50ZXJ2YWw6MC4xIHJlcGVhdHM6WUVTIGJsb2NrOl4oTlNUaW1lciAqKSB7
CisgICAgICAgIE5TTWVudSAqbWVudSA9IFt3ZWJWaWV3IF9hY3RpdmVNZW51XTsKKyAgICAgICAg
Zm9yIChOU01lbnVJdGVtICppdGVtIGluIG1lbnUuaXRlbUFycmF5KSB7CisgICAgICAgICAgICBp
ZiAoW2l0ZW0udGl0bGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRp
dGxlTWFya3VwSW1hZ2UoKV0pIHsKKyAgICAgICAgICAgICAgICBmb3VuZE1hcmt1cEltYWdlSXRl
bSA9IHRydWU7CisgICAgICAgICAgICAgICAgW21lbnUgY2FuY2VsVHJhY2tpbmddOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfV07CisKKyAg
ICBbTlNSdW5Mb29wLm1haW5SdW5Mb29wIGFkZFRpbWVyOnRpbWVyLmdldCgpIGZvck1vZGU6TlNF
dmVudFRyYWNraW5nUnVuTG9vcE1vZGVdOworICAgIFV0aWw6OnJ1bigmZm91bmRNYXJrdXBJbWFn
ZUl0ZW0pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykgJiYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtY29udHJvbHMuaHRtbCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtY29udHJvbHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZmFmYTk2ZWY1MTRhZDE2MmMxZjQ2ZGJiYWUxNzdiMWRjNjIyNWFlCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9p
bWFnZS1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gewor
ICAgIGlmICghd2luZG93LkhUTUxBdHRhY2htZW50RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50LmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKTsKK30pOworCitmdW5jdGlvbiBzZXJ2aWNlc0NvbnRy
b2xCdXR0b24oKQoreworICAgIHJldHVybiBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKSkuZ2V0RWxlbWVudEJ5SWQoImltYWdlLWNvbnRyb2xzLWJ1dHRv
biIpOworfQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yQW5kQ2xpY2tJbWFnZUNvbnRyb2xzKCkK
K3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybjsKKworICAgIGF3
YWl0IG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4geworICAgICAgICBsZXQgYnV0dG9uID0g
bnVsbDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVxdWVz
dEFuaW1hdGlvbkZyYW1lKTsKKyAgICAgICAgICAgIGJ1dHRvbiA9IHNlcnZpY2VzQ29udHJvbEJ1
dHRvbigpOworICAgICAgICB9IHdoaWxlICghYnV0dG9uKTsKKyAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICBidXR0b24uY2xpY2soKTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+PGltZyBzcmM9Imljb24ucG5nIj48L2ltZz48L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458642</attachid>
            <date>2022-04-30 18:26:05 -0700</date>
            <delta_ts>2022-05-01 10:43:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239933-20220430182604.patch</filename>
            <type>text/plain</type>
            <size>24624</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVhNjQ0ODMzYzMyODRlOGU0
MGI5NzFkOWUxNWRkNGI0N2FiN2Q2MWEuLmE0OWE4OTg2NDk0MjI3OWYwOWQ1NjFkYzU4OGUzMDY0
OTY4ZjQyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDQtMzAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBUaGUgIk1h
cmt1cCBJbWFnZSIgc2VydmljZXMgbWVudSBpdGVtIHNob3VsZCBiZSBnYXRlZCBvbiBpbWFnZSBh
bmFseXNpcyByZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzk5MzMKKyAgICAgICAgcmRhcjovLzkyMzQ4MjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IHNvbWUgbWFjT1Mtc3BlY2lm
aWMgbG9naWMgZm9yIGFwcGVuZGluZyB0aGUgIk1hcmt1cCBJbWFnZSIgbWVudSBpdGVtIGluIHRo
ZSBzZXJ2aWNlcyBtZW51LCBzdWNoIHRoYXQgd2UKKyAgICAgICAgb25seSBhZGQgdGhpcyBuZXcg
aXRlbSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVsZXZhbnQgaW1hZ2UgYW5hbHlzaXMgQVBJcyBj
b21lIGJhY2sgd2l0aCBhIHZhbGlkIGNyb3BwZWQgaW1hZ2UKKyAgICAgICAgcmVzdWx0LiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBJbWFnZUFuYWx5c2lzVGVz
dHMuTWFya3VwSW1hZ2VJdGVtSW5TZXJ2aWNlc01lbnUKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHk6OmNyb3BwZWRJbWFnZVJlc3VsdCBjb25zdCk6CisKKyAgICAgICAgTW92ZSBgbV9jcm9wcGVk
SW1hZ2VGb3JDb250ZXh0TWVudWAgaW50byBgV2ViQ29udGV4dE1lbnVQcm94eU1hY2AgYXMgYG1f
Y3JvcHBlZEltYWdlUmVzdWx0YCwgc28gdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgZWFzaWx5IHVz
ZWQgZm9yIGJvdGggdGhlIG5ldyAiQ29weSBDcm9wcGVkIEltYWdlIiBhbmQgIk1hcmt1cCBJbWFn
ZSIgaXRlbXMuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBs
b2dpYyBmb3IgcmVzZXR0aW5nIHRoaXMgY2FjaGVkIGltYWdlIHJlc3VsdCBzaW5jZSB0aGUgd2hv
bGUgYG1fYWN0aXZlQ29udGV4dE1lbnVgIGlzIGFsd2F5cyBkZXN0cm95ZWQgdXBvbgorICAgICAg
ICBwcmVzZW50aW5nIGEgY29udGV4dCBtZW51LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gc2VwYXJh
dGVseSBjbGVhciBvdXQgYG1fY3JvcHBlZEltYWdlUmVzdWx0YC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVl
ZGVkKToKKworICAgICAgICBQdWxsIHRoaXMgbG9naWMgb3V0IGludG8gYSBzZXBhcmF0ZSBoZWxw
ZXIgbWV0aG9kLCBhbmQgY2hhbmdlIGl0IHNvIHRoYXQ6CisgICAgICAgIC0gV2UgcnVuIHRoZSBp
bWFnZSBhbmFseXNpcyBwcmlvciB0byBjcmVhdGluZyBhbmQgYWRkaW5nIHRoZSBpdGVtLgorICAg
ICAgICAtIE9ubHkgYWRkIHRoZSBpdGVtIGlmIHRoZSBpbWFnZSBhbmFseXNpcyByZXR1cm5lZCBh
IG5vbi1udWxsIENHSW1hZ2VSZWYuCisgICAgICAgIC0gU3RvcmUgdGhlIENHSW1hZ2VSZWYgb24g
YG1fY3JvcHBlZEltYWdlUmVzdWx0YCwgZm9yIHVzZSBpZiB0aGUgbWVudSBpdGVtIGlzIGludm9r
ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6YXBwbHlNYXJr
dXBUb0NvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5k
bGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KTogRGVsZXRlZC4KKwogMjAyMi0w
NC0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTM0ODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0TWVudVByb3h5LmgKaW5kZXggMWI4ZmNjODQ2NjRmMzA5YWZlNWY0ZWFjZDI4
YjU0MTNjMWIxYjkwNy4uOGE1MDZjMmY0Yjk2MTg1NTYwYzhlZTE5OGY5YWY5NTc1MTUyYjE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaApAQCAt
NTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTlNBcnJheSAqcGxhdGZvcm1EYXRh
KCkgY29uc3QgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCisjaWYgRU5BQkxFKElN
QUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgY3JvcHBl
ZEltYWdlUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKIHByb3Rl
Y3RlZDoKICAgICBXZWJDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51
Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjU5YjUwOWU2NTRhZjU1ODFjOWRlMmEyMTg1MzcyNDE4
MzY1MzU4ZS4uYTlkZTdlNTM5MzIyZDNjOWNiZmI5MTFmYWFjZDUxM2JlMDgzNzNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTkwLDEwICsxMTkwLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0g
bnVsbHB0cjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0
TWVudSA9IG51bGxwdHI7Ci0jZW5kaWYKLQogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0
cjsKIAogICAgIG1faW5zcGVjdG9yLT5pbnZhbGlkYXRlKCk7CkBAIC03MDg3LDEwICs3MDgzLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHRE
YXRhJiYgY29udGV4dE1lbnVDb250ZXh0RGEKICAgICAvLyBNb3VzZURvd24gZXZlbnQgdGhhdCB0
cmlnZ2VyZWQgdGhpcyBTaG93Q29udGV4dE1lbnUgbWVzc2FnZS4gVGhpcyBjYW4gaGFwcGVuIGlm
IHdlIHRha2UgdG9vIGxvbmcgdG8gZW50ZXIgdGhlIG5lc3RlZCBydW5sb29wLgogICAgIGRpc2Nh
cmRRdWV1ZWRNb3VzZUV2ZW50cygpOwogCi0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFO
Q0VNRU5UUykKLSAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gbnVsbHB0cjsKLSNl
bmRpZgotCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVD
b250ZXh0RGF0YTsKIAogICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBwYWdlQ2xpZW50KCkuY3Jl
YXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RGTW92ZShjb250ZXh0TWVudUNvbnRleHREYXRh
KSwgdXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3
ODFkYmIzYjg5NjE4NmJmYzExMDc3MDkwODJiMjEyNjc2NDI3ZjExLi41OWZiMWI2YjhkNDllMjU5
Zjg5MDk4MGE3NTczMjIyNGE3YTg1YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMjEwMiwxMCArMjEwMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4dHJhY3RW
aWRlb0luRWxlbWVudEZ1bGxTY3JlZW4oV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9Cb3VuZHMpOwogICAgIHZvaWQgY2FuY2VsVmlkZW9FeHRy
YWN0aW9uSW5FbGVtZW50RnVsbFNjcmVlbigpOwogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
ICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgdm9pZCBzZXRDcm9w
cGVkSW1hZ2VGb3JDb250ZXh0TWVudShDR0ltYWdlUmVmKTsKLSNlbmRpZgotCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBA
IC0yNzk3LDEwICsyNzkzLDYgQEAgcHJpdmF0ZToKICAgICBDb250ZXh0TWVudUNvbnRleHREYXRh
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnU7Ci0jZW5k
aWYKLQogICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IG1fbGFzdE1vdXNlTW92ZUhpdFRl
c3RSZXN1bHQ7CiAKICAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4g
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCmluZGV4IDYxYjk1ZjRmNmQ1Yzg0YTJl
Njk5MGUwNmNiNTVhODhjNTcxNzQ4MDQuLjFhMmM4OTAyMmZkMjNiNWRjNTk3NjUwMGQ5YTM5NDNk
NmRhYWZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMuaApAQCAtNTgsNiArNTgsMTAgQEAgcHVibGljOgogCiAgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OwogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFO
Q0VNRU5UUykKKyAgICBDR0ltYWdlUmVmIGNyb3BwZWRJbWFnZVJlc3VsdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY3JvcHBlZEltYWdlUmVzdWx0LmdldCgpOyB9CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBXZWJDb250ZXh0TWVudVByb3h5TWFjKE5TVmlldyAqLCBXZWJQYWdlUHJveHkmLCBD
b250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJik7CiAKQEAgLTcyLDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNoYXJlTWVudUl0ZW0oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChOU01lbnVJdGVtICopPiYmKTsKICAgICB2b2lkIHNob3dTZXJ2aWNlc01lbnUoKTsK
ICAgICB2b2lkIHNldHVwU2VydmljZXNNZW51KCk7CisgICAgdm9pZCBhcHBlbmRNYXJrdXBJdGVt
VG9Db250cm9sbGVkSW1hZ2VNZW51SWZOZWVkZWQoKTsKICNlbmRpZgogCiAgICAgTlNNZW51ICpw
bGF0Zm9ybU1lbnUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTgwLDYgKzg1LDkgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNNZW51PiBtX21lbnU7CiAgICAgUmV0YWluUHRyPFdLTWVudURlbGVn
YXRlPiBtX21lbnVEZWxlZ2F0ZTsKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc+IG1fd2ViVmlldzsK
KyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2Nyb3BwZWRJbWFnZVJlc3VsdDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IGU4ODM5ZWEzOTg0MzA3MGVhZjQxZWRlZmJiYTdi
ZGRiNjU3ODI5ZTQuLjg1YzljZTRlMzNhNzMwMDRhMmE5OWU5MmZlOWJlZDhhNGNhNDBmNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCkBAIC0yNjEsMjEgKzI2MSw4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2V0dXBTZXJ2aWNlc01lbnUoKQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAg
ICAgICAgIFttX21lbnUgc2V0U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOwotI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgZWxzZSBpZiAocGFnZSgpLT5wcmVmZXJlbmNl
cygpLmltYWdlQW5hbHlzaXNNYXJrdXBFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBtYXJrdXBJ
bWFnZUl0ZW0gPSBhZG9wdE5TKFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjb250
ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFn
ZSkga2V5RXF1aXZhbGVudDpAIiJdKTsKLSAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZVdpdGhTeXN0ZW1TeW1ib2xOYW1lOkAicGVyc29uLmZpbGwudmlld2Zp
bmRlciIgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3Vw
SW1hZ2UoKV1dOwotICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldFRhcmdldDpXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV07
Ci0gICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFn
ZSldOwotICAgICAgICBhdXRvIG51bWJlck9mSXRlbXMgPSBbbV9tZW51IG51bWJlck9mSXRlbXNd
OwotICAgICAgICBpZiAobnVtYmVyT2ZJdGVtcykKLSAgICAgICAgICAgIFttYXJrdXBJbWFnZUl0
ZW0gc2V0SW5kZW50YXRpb25MZXZlbDpbbV9tZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMg
LSAxXS5pbmRlbnRhdGlvbkxldmVsXTsKLSAgICAgICAgaWYgKG51bWJlck9mSXRlbXMgPj0gMSkK
LSAgICAgICAgICAgIFttX21lbnUgaW5zZXJ0SXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCkgYXRJ
bmRleDpudW1iZXJPZkl0ZW1zIC0gMV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFttX21l
bnUgYWRkSXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOwotICAgIH0KLSNlbmRpZiAvLyBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCisgICAgYXBwZW5kTWFya3VwSXRlbVRv
Q29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVkKCk7CiAKICAgICAvLyBFeHBsaWNpdGx5IGFkZCBh
IG1lbnUgaXRlbSBmb3IgZWFjaCB0ZWxlcGhvbmUgbnVtYmVyIHRoYXQgaXMgaW4gdGhlIHNlbGVj
dGlvbi4KICAgICBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+PiB0ZWxlcGhvbmVOdW1iZXJN
ZW51SXRlbXM7CkBAIC0zMDYsNiArMjkzLDQxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2V0dXBTZXJ2aWNlc01lbnUoKQogICAgICAgICBTZXJ2aWNlc0NvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLnJlZnJlc2hFeGlzdGluZ1NlcnZpY2VzKCk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVk
KCkKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmICgh
cGFnZSgpLT5wcmVmZXJlbmNlcygpLmltYWdlQW5hbHlzaXNNYXJrdXBFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIGltYWdlQml0bWFwID0gbV9jb250ZXh0LmNvbnRyb2xs
ZWRJbWFnZSgpOworICAgIGlmICghaW1hZ2VCaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gaW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICByZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChpbWFn
ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWFrTWVudSA9IFdlYWtP
YmpDUHRyPE5TTWVudT4geyBtX21lbnUuZ2V0KCkgfV0oQ0dJbWFnZVJlZiByZXN1bHQsIENHUmVj
dCkgeworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBhdXRvIHN0cm9uZ01lbnUgPSB3ZWFrTWVudS5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdN
ZW51KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gbWFya3VwSW1hZ2VJdGVt
ID0gYWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6Y29udGV4dE1lbnVJ
dGVtVGl0bGVNYXJrdXBJbWFnZSgpIGFjdGlvbjpAc2VsZWN0b3IobWFya3VwSW1hZ2UpIGtleUVx
dWl2YWxlbnQ6QCIiXSk7CisgICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0SW1hZ2U6W05TSW1h
Z2UgaW1hZ2VXaXRoU3lzdGVtU3ltYm9sTmFtZTpAInBlcnNvbi5maWxsLnZpZXdmaW5kZXIiIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbjpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCld
XTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRUYXJnZXQ6V0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlLnNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdOworICAgICAg
ICBbbWFya3VwSW1hZ2VJdGVtIHNldEFjdGlvbjpAc2VsZWN0b3IobWFya3VwSW1hZ2UpXTsKKyAg
ICAgICAgaWYgKGF1dG8gbnVtYmVyT2ZJdGVtcyA9IFtzdHJvbmdNZW51IG51bWJlck9mSXRlbXNd
KQorICAgICAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbmRlbnRhdGlvbkxldmVsOltzdHJv
bmdNZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXS5pbmRlbnRhdGlvbkxldmVsXTsK
KyAgICAgICAgW3N0cm9uZ01lbnUgYWRkSXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOworCisg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY3JvcHBlZEltYWdlUmVzdWx0ID0gcmVzdWx0OworICAg
IH0pOworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCit9CisK
IHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd1NlcnZpY2VzTWVudSgpCiB7CiAgICAg
c2V0dXBTZXJ2aWNlc01lbnUoKTsKQEAgLTMzMSwyNSArMzUzLDExIEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSgpCiAgICAgaWYgKCFl
bGVtZW50Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogaW1hZ2VCaXRtYXAg
PSBtX2NvbnRleHQuY29udHJvbGxlZEltYWdlKCk7Ci0gICAgaWYgKCFpbWFnZUJpdG1hcCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFn
ZSgpOwotICAgIGlmICghaW1hZ2UpCisgICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFG
b3JDcm9wcGVkSW1hZ2VSZXN1bHQobV9jcm9wcGVkSW1hZ2VSZXN1bHQuZ2V0KCksIG1fY29udGV4
dC5jb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdEltYWdlQW5hbHlzaXNN
YXJrdXAoaW1hZ2UuZ2V0KCksIFt3ZWFrUGFnZSA9IFdlYWtQdHIgeyBwYWdlKCkgfSwgcHJlZmVy
cmVkTUlNRVR5cGUgPSBtX2NvbnRleHQuY29udHJvbGxlZEltYWdlTUlNRVR5cGUoKSwgZWxlbWVu
dENvbnRleHQgPSBXVEZNb3ZlKCplbGVtZW50Q29udGV4dCldKENHSW1hZ2VSZWYgcmVzdWx0LCBD
R1JlY3QpIHsKLSAgICAgICAgUmVmUHRyIHByb3RlY3RlZFBhZ2UgPSB3ZWFrUGFnZS5nZXQoKTsK
LSAgICAgICAgaWYgKCFwcm90ZWN0ZWRQYWdlIHx8ICFyZXN1bHQpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFGb3JDcm9wcGVkSW1h
Z2VSZXN1bHQocmVzdWx0LCBwcmVmZXJyZWRNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBy
b3RlY3RlZFBhZ2UtPnJlcGxhY2VJbWFnZVdpdGhNYXJrdXBSZXN1bHRzKGVsZW1lbnRDb250ZXh0
LCB7IFN0cmluZyh0eXBlLmdldCgpKSB9LCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKTsKLSAgICB9KTsK
KyAgICBwYWdlKCktPnJlcGxhY2VJbWFnZVdpdGhNYXJrdXBSZXN1bHRzKCplbGVtZW50Q29udGV4
dCwgeyBTdHJpbmcodHlwZS5nZXQoKSkgfSwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIH0KIApAQCAtNjYxLDcgKzY2
OSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRl
bXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lT
X0VOSEFOQ0VNRU5UUykKICAgICAgICAgICAgIGlmIChjb3B5Q3JvcHBlZEltYWdlSXRlbSkgewog
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGltYWdlID0gaW1hZ2VCaXRtYXAtPm1ha2VDR0ltYWdl
Q29weSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldENyb3BwZWRJbWFnZUZvckNv
bnRleHRNZW51KG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X2Nyb3BwZWRJbWFnZVJlc3VsdCA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RJbWFnZUFuYWx5c2lzTWFya3VwKGltYWdlLmdldCgpLCBbd2Vha1BhZ2UsIHByb3RlY3RlZFRo
aXMsIGNvcHlDcm9wcGVkSW1hZ2VJdGVtID0gV1RGTW92ZSgqY29weUNyb3BwZWRJbWFnZUl0ZW0p
XShhdXRvIHJlc3VsdCwgYXV0bykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY3OCw3
IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMo
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwYWdlLT5zZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudShyZXN1bHQp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jcm9wcGVkSW1hZ2VS
ZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvdGVjdGVkVGhpcy0+
bV9tZW51IGFkZEl0ZW06Y3JlYXRlTWVudUFjdGlvbkl0ZW0oY29weUNyb3BwZWRJbWFnZUl0ZW0p
LmdldCgpXTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYzZk
YjYwZTczZWEzMDA0YzZlZjA2MjlkMDkzNTg5YTg4NDI5NDEyMy4uNDEzMTcyNDdmYzgzN2EyNGRh
NjMzMmZjZGJkZjcxYmY1N2YyOTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03ODEsMTcgKzc4MSwxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd0ltYWdlSW5RdWlja0xvb2tQcmV2aWV3UGFuZWwoU2hhcmVhYmxlQml0bWFwJiBp
bWFnZUJpdG1hcAogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KENHSW1hZ2VS
ZWYgaW1hZ2UpCi17Ci0gICAgbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudSA9IGltYWdlOwot
fQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVDb3B5Q3JvcHBlZEltYWdl
KGNvbnN0IFN0cmluZyYgcHJlZmVycmVkTUlNRVR5cGUpCiB7Ci0gICAgaWYgKCFtX2Nyb3BwZWRJ
bWFnZUZvckNvbnRleHRNZW51KQorICAgIGlmICghbV9hY3RpdmVDb250ZXh0TWVudSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyIGltYWdlID0gbV9hY3RpdmVDb250ZXh0TWVudS0+
Y3JvcHBlZEltYWdlUmVzdWx0KCk7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFGb3JDcm9wcGVkSW1hZ2VSZXN1bHQo
bV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudS5nZXQoKSwgcHJlZmVycmVkTUlNRVR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFG
b3JDcm9wcGVkSW1hZ2VSZXN1bHQoaW1hZ2UuZ2V0KCksIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2E4MTRm
OWNjOGFkN2U0MGIzNTNiOTJjNjA2YzVhZDY0ZDYwMWNhMi4uM2Q4OWFlNWMwODlmYWQ1NzI4ZjRk
ODY5NDNmM2Q5YmJmODE1NWZmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTMwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGhlICJNYXJrdXAg
SW1hZ2UiIHNlcnZpY2VzIG1lbnUgaXRlbSBzaG91bGQgYmUgZ2F0ZWQgb24gaW1hZ2UgYW5hbHlz
aXMgcmVzdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM5OTMzCisgICAgICAgIHJkYXI6Ly85MjM0ODIwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCB0byBzaW11bGF0ZSBj
bGlja2luZyBvbiB0aGUgc2VydmljZXMgbWVudSBidXR0b24gaW4gYW4gYXR0YWNobWVudC1iYWNr
ZWQgaW1hZ2UgZWxlbWVudCB3aGlsZQorICAgICAgICBzd2l6emxpbmcgdGhlIHJlbGV2YW50IGlt
YWdlIGFuYWx5c2lzIEFQSXMgdG8gcmV0dXJuIGEgdmFsaWQgQ0dJbWFnZVJlZjsgdmVyaWZ5IHRo
YXQgdGhlICJNYXJrdXAgSW1hZ2UiIG1lbnUKKyAgICAgICAgaXRlbSBldmVudHVhbGx5IHNob3dz
IHVwLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbWFnZUFuYWx5c2lzVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVX
ZWJWaWV3V2l0aFRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50cyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjppY29uSW1hZ2UpOgorCisgICAgICAgIE1ha2UgdGhpcyB0ZXN0aW5nIGhlbHBlciBm
dW5jdGlvbiB3b3JrIG9uIGJvdGggbWFjT1MgYW5kIGlPUy4KKworICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5NYXJrdXBUZXN0KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWNvbnRyb2xzLmh0
bWw6IEFkZGVkLgorCiAyMDIyLTA0LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTM2MjEuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDc1NzdmNzZmZWU2YzdkMjc5MGJkOTNkMmZkOTc3OGNjODFkODdhMTQuLjNk
ZWViOTU4MmViZTczZmVlMGM0NTkwN2RhMzlmMDdlNTA3YWIyZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTA0LDYgKzExMDQsNyBAQAogCQlGNDg1NkNBMzFFNjQ5RUE4MDA5RDdFRTcg
LyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NTZDQTIxRTY0OThBODAwOUQ3RUU3IC8qIGF0dGFj
aG1lbnQtZWxlbWVudC5odG1sICovOyB9OwogCQlGNDg2QjFEMDFGNjc5NTIzMDBGMzRCREQgLyog
RGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODZCMUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBE
YXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgKi87IH07CiAJCUY0OEQ2QzEwMjI0QjM3NzAw
MEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQ2QzBGMjI0QjM3NzAwMEUzRTJGQiAvKiBQcmVm
ZXJyZWRDb250ZW50TW9kZS5tbSAqLzsgfTsKKwkJRjQ5MURCQUUyODFERTBFODAwODE3MDVGIC8q
IGltYWdlLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ5MURCQUQyODFERTA5ODAwODE3MDVGIC8qIGltYWdlLWNvbnRy
b2xzLmh0bWwgKi87IH07CiAJCUY0OTRCMzZBMjYzMTIwNzgwMDYwQTMxMCAvKiBUZXh0U2Vydmlj
ZXNUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0OTRCMzY5MjYzMTIwNzgwMDYwQTMxMCAvKiBUZXh0U2VydmljZXNUZXN0cy5tbSAqLzsgfTsK
IAkJRjQ5OTkyQzYyNDhEQUJGRDAwMDM0MTY3IC8qIG92ZXJmbG93LWhpZGRlbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTk5MkM1
MjQ4REFCRTQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCAqLzsgfTsKIAkJRjRBMzJF
QzQxRjA1RjM4NTAwNDdDNTQ0IC8qIGRyYWdzdGFydC1jaGFuZ2Utc2VsZWN0aW9uLW9mZnNjcmVl
bi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0QTMyRUMzMUYwNUYzNzgwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlv
bi1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKQEAgLTE0MTcsNiArMTQxOCw3IEBACiAJCQkJRjQxQUI5
QTQxRUY0Njk2QjAwODNGQTA4IC8qIGltYWdlLWFuZC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEUwQTJCNDIxMjI0MDJCMDBBRjdDN0YgLyogaW1hZ2Ut
YW5kLWZpbGUtdXBsb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTUx
RUY0Njk2QjAwODNGQTA4IC8qIGltYWdlLWFuZC10ZXh0YXJlYS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCUY0OTFEQkFFMjgxREUwRTgwMDgxNzA1RiAvKiBpbWFnZS1jb250cm9scy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0REVGNkVEMUU5QjREQjYwMDQ4RUY2MSAv
KiBpbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUY0NUI2M0ZCMUYxOTdGNEEwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQkzMTI4QTgxNTIzNzY0MTMzMDBEOTBENDAgLyogaW1hZ2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTMxNDIsNiArMzE0NCw3IEBACiAJCUY0ODU2Q0EyMUU2NDk4
QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJhdHRhY2htZW50LWVsZW1lbnQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0ODZCMUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJh
Z0ltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVyLXNl
dERyYWdJbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDZDMEYy
MjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRNb2RlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJlZmVycmVkQ29udGVudE1vZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0OTFEQkFEMjgxREUwOTgwMDgxNzA1RiAvKiBpbWFnZS1jb250cm9scy5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gImltYWdlLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDkzMjQ3QzFGNDRERjhEMDA2RjQzMzYgLyogVUlLaXRTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVUlLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NEIzNjkyNjMx
MjA3ODAwNjBBMzEwIC8qIFRleHRTZXJ2aWNlc1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVGV4dFNlcnZpY2VzVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
OTk5MkM1MjQ4REFCRTQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJvdmVyZmxvdy1oaWRkZW4uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MjE0LDYgKzQyMTcsNyBAQAogCQkJCUY0MUFCOTk5MUVGNDY5MkMw
MDgzRkEwOCAvKiBpbWFnZS1hbmQtY29udGVudGVkaXRhYmxlLmh0bWwgKi8sCiAJCQkJRjRFMEEy
QjMyMTIyM0YyRDAwQUY3QzdGIC8qIGltYWdlLWFuZC1maWxlLXVwbG9hZC5odG1sICovLAogCQkJ
CUY0MUFCOTkzMUVGNDY5MkMwMDgzRkEwOCAvKiBpbWFnZS1hbmQtdGV4dGFyZWEuaHRtbCAqLywK
KwkJCQlGNDkxREJBRDI4MURFMDk4MDA4MTcwNUYgLyogaW1hZ2UtY29udHJvbHMuaHRtbCAqLywK
IAkJCQlGNERFRjZFQzFFOUI0RDk1MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQu
aHRtbCAqLywKIAkJCQlGNDVCNjNGQTFGMTk3RjMzMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwg
Ki8sCiAJCQkJMzEyOEE4MTQyMzc2NDBGRDAwRDkwRDQwIC8qIGltYWdlLmh0bWwgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5hbHlz
aXNUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VB
bmFseXNpc1Rlc3RzLm1tCmluZGV4IDBhZDIxZDdhMDQwM2VlOTZmYmI4ODM1ZDg0MzNmMWMyNzUz
YTk3NTYuLmRhZjY4ZWVhMzEyMDMzZWRlOWQ4OTNhZmI0ZjEwZjJkYzZiOTZhZWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rl
c3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VB
bmFseXNpc1Rlc3RzLm1tCkBAIC0xNTcsNiArMTU3LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMo
KQogICAgICAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJUZXh0UmVjb2duaXRpb25Fbmhh
bmNlbWVudHNFbmFibGVkIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJJbWFnZUFuYWx5c2lz
UXVldWVFbmFibGVkIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJJbWFnZUFuYWx5c2lzTWFy
a3VwRW5hYmxlZCJdKQogICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0RW5hYmxlZDpZRVMgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CiAgICAgfQor
ICAgIFtjb25maWd1cmF0aW9uIF9zZXRBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVTXTsKKyNp
ZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0SW1hZ2VD
b250cm9sc0VuYWJsZWQ6WUVTXTsKKyNlbmRpZgogICAgIHJldHVybiBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIH0KIApAQCAtMzIyLDE0ICszMjYs
MjMgQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIEltYWdlQW5hbHlzaXNXaXRoVHJhbnNwYXJl
bnRJbWFnZXMpCiAgICAgRVhQRUNUX0ZBTFNFKHJlYWRlci5pc1RyYW5zcGFyZW50QmxhY2socmVh
ZGVyLndpZHRoKCkgLyAyLCByZWFkZXIuaGVpZ2h0KCkgLyAyKSk7CiB9CiAKLSNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lm
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKLXN0YXRpYyBSZXRhaW5QdHI8
VUlJbWFnZT4gaWNvbkltYWdlKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaWNvbklt
YWdlKCkKIHsKICAgICBhdXRvIGljb25QYXRoID0gW05TQnVuZGxlLm1haW5CdW5kbGUgcGF0aEZv
clJlc291cmNlOkAiaWNvbiIgb2ZUeXBlOkAicG5nIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07Ci0gICAgcmV0dXJuIFtVSUltYWdlIGltYWdlV2l0aENvbnRlbnRzT2ZG
aWxlOmljb25QYXRoXTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiBbVUlJ
bWFnZSBpbWFnZVdpdGhDb250ZW50c09mRmlsZTppY29uUGF0aF0uQ0dJbWFnZTsKKyNlbHNlCisg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRz
T2ZGaWxlOmljb25QYXRoXSk7CisgICAgcmV0dXJuIFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRS
ZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdOworI2VuZGlmCiB9CiAKKyNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCisjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogc3RhdGljIHZv
aWQgc2ltdWxhdGVDYWxsb3V0QmFyQXBwZWFyYW5jZShUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3KQog
ewogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CkBAIC0zNTEsNyArMzY0LDcgQEAgc3Rh
dGljIHZvaWQgaW52b2tlSW1hZ2VNYXJrdXBBY3Rpb24oVGVzdFdLV2ViVmlldyAqd2ViVmlldykK
IAogVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIE1lbnVDb250cm9sbGVySXRlbXMpCiB7Ci0gICAg
SW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsgW2ljb25JbWFnZSgpIENHSW1h
Z2VdLCBDR1JlY3RNYWtlKDEwLCAxMCwgMjE1LCAxNzQpIH07CisgICAgSW1hZ2VBbmFseXNpc01h
cmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsgaWNvbkltYWdlKCkuYXV0b3JlbGVhc2UoKSwgQ0dSZWN0
TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9OwogCiAgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2Vi
Vmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMoKTsKICAgICBhdXRvIGlucHV0RGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0SW5wdXREZWxlZ2F0ZSBuZXddKTsKQEAgLTM4OSw3ICs0MDIs
NyBAQCBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgTWVudUNvbnRyb2xsZXJJdGVtcykKIAogc3Rh
dGljIHZvaWQgcnVuTWFya3VwVGVzdChOU1N0cmluZyAqdGVzdFBhZ2UsIE5TU3RyaW5nICpzY3Jp
cHRUb1NlbGVjdFRleHQsIEZ1bmN0aW9uPHZvaWQoVGVzdFdLV2ViVmlldyAqLCBOU1N0cmluZyAq
KT4mJiBjaGVja1dlYlZpZXcpCiB7Ci0gICAgSW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3
aXp6bGVyIHsgW2ljb25JbWFnZSgpIENHSW1hZ2VdLCBDR1JlY3RNYWtlKDEwLCAxMCwgMjE1LCAx
NzQpIH07CisgICAgSW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsgaWNvbklt
YWdlKCkuYXV0b3JlbGVhc2UoKSwgQ0dSZWN0TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9OwogCiAg
ICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNl
bWVudHMoKTsKICAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0SW5wdXREZWxl
Z2F0ZSBuZXddKTsKQEAgLTQzMyw2ICs0NDYsMzggQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMs
IFBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwV2l0aFdlYlBJbWFnZXMpCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCisKK1RFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBNYXJrdXBJbWFnZUl0
ZW1JblNlcnZpY2VzTWVudSkKK3sKKyAgICBJbWFnZUFuYWx5c2lzTWFya3VwU3dpenpsZXIgc3dp
enpsZXIgeyBpY29uSW1hZ2UoKS5hdXRvcmVsZWFzZSgpLCBDR1JlY3RNYWtlKDEwLCAxMCwgMjE1
LCAxNzQpIH07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aFRleHRSZWNv
Z25pdGlvbkVuaGFuY2VtZW50cygpOworICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImltYWdlLWNvbnRy
b2xzIl07CisgICAgW1t3ZWJWaWV3IHdpbmRvd10gb3JkZXJGcm9udFJlZ2FyZGxlc3NdOworICAg
IFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJ3YWl0Rm9yQW5kQ2xpY2tJbWFnZUNvbnRy
b2xzKCkiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICB9XTsKKworICAgIF9fYmxvY2sgYm9v
bCBmb3VuZE1hcmt1cEltYWdlSXRlbSA9IGZhbHNlOworICAgIFJldGFpblB0ciB0aW1lciA9IFtO
U1RpbWVyIHRpbWVyV2l0aFRpbWVJbnRlcnZhbDowLjEgcmVwZWF0czpZRVMgYmxvY2s6XihOU1Rp
bWVyICopIHsKKyAgICAgICAgTlNNZW51ICptZW51ID0gW3dlYlZpZXcgX2FjdGl2ZU1lbnVdOwor
ICAgICAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gbWVudS5pdGVtQXJyYXkpIHsKKyAgICAg
ICAgICAgIGlmIChbaXRlbS50aXRsZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpXSkgeworICAgICAgICAgICAgICAgIGZvdW5kTWFya3Vw
SW1hZ2VJdGVtID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBbbWVudSBjYW5jZWxUcmFja2luZ107
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
XTsKKworICAgIFtOU1J1bkxvb3AubWFpblJ1bkxvb3AgYWRkVGltZXI6dGltZXIuZ2V0KCkgZm9y
TW9kZTpOU0V2ZW50VHJhY2tpbmdSdW5Mb29wTW9kZV07CisgICAgVXRpbDo6cnVuKCZmb3VuZE1h
cmt1cEltYWdlSXRlbSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5I
QU5DRU1FTlRTKSAmJiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1jb250cm9s
cy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1jb250
cm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmYWZhOTZlZjUxNGFkMTYyYzFmNDZkYmJhZTE3N2IxZGM2
MjI1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL2ltYWdlLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAo
KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuSFRNTEF0dGFjaG1lbnRFbGVtZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNobWVudElkZW50aWZp
ZXIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOworfSk7CisKK2Z1bmN0aW9uIHNlcnZp
Y2VzQ29udHJvbEJ1dHRvbigpCit7CisgICAgcmV0dXJuIGludGVybmFscy5zaGFkb3dSb290KGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKS5nZXRFbGVtZW50QnlJZCgiaW1hZ2UtY29udHJv
bHMtYnV0dG9uIik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JBbmRDbGlja0ltYWdlQ29u
dHJvbHMoKQoreworICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXdhaXQgbmV3IFByb21pc2UoYXN5bmMgcmVzb2x2ZSA9PiB7CisgICAgICAgIGxldCBi
dXR0b24gPSBudWxsOworICAgICAgICBkbyB7CisgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlz
ZShyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOworICAgICAgICAgICAgYnV0dG9uID0gc2VydmljZXND
b250cm9sQnV0dG9uKCk7CisgICAgICAgIH0gd2hpbGUgKCFidXR0b24pOworICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgIGJ1dHRvbi5jbGljaygpOworICAgIH0pOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT48aW1nIHNyYz0iaWNvbi5wbmciPjwvaW1nPjwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458651</attachid>
            <date>2022-05-01 10:43:02 -0700</date>
            <delta_ts>2022-05-02 11:03:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239933-20220501104301.patch</filename>
            <type>text/plain</type>
            <size>24529</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVhNjQ0ODMzYzMyODRlOGU0
MGI5NzFkOWUxNWRkNGI0N2FiN2Q2MWEuLmE0OWE4OTg2NDk0MjI3OWYwOWQ1NjFkYzU4OGUzMDY0
OTY4ZjQyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDQtMzAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBUaGUgIk1h
cmt1cCBJbWFnZSIgc2VydmljZXMgbWVudSBpdGVtIHNob3VsZCBiZSBnYXRlZCBvbiBpbWFnZSBh
bmFseXNpcyByZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzk5MzMKKyAgICAgICAgcmRhcjovLzkyMzQ4MjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IHNvbWUgbWFjT1Mtc3BlY2lm
aWMgbG9naWMgZm9yIGFwcGVuZGluZyB0aGUgIk1hcmt1cCBJbWFnZSIgbWVudSBpdGVtIGluIHRo
ZSBzZXJ2aWNlcyBtZW51LCBzdWNoIHRoYXQgd2UKKyAgICAgICAgb25seSBhZGQgdGhpcyBuZXcg
aXRlbSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVsZXZhbnQgaW1hZ2UgYW5hbHlzaXMgQVBJcyBj
b21lIGJhY2sgd2l0aCBhIHZhbGlkIGNyb3BwZWQgaW1hZ2UKKyAgICAgICAgcmVzdWx0LiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBJbWFnZUFuYWx5c2lzVGVz
dHMuTWFya3VwSW1hZ2VJdGVtSW5TZXJ2aWNlc01lbnUKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHk6OmNyb3BwZWRJbWFnZVJlc3VsdCBjb25zdCk6CisKKyAgICAgICAgTW92ZSBgbV9jcm9wcGVk
SW1hZ2VGb3JDb250ZXh0TWVudWAgaW50byBgV2ViQ29udGV4dE1lbnVQcm94eU1hY2AgYXMgYG1f
Y3JvcHBlZEltYWdlUmVzdWx0YCwgc28gdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgZWFzaWx5IHVz
ZWQgZm9yIGJvdGggdGhlIG5ldyAiQ29weSBDcm9wcGVkIEltYWdlIiBhbmQgIk1hcmt1cCBJbWFn
ZSIgaXRlbXMuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBs
b2dpYyBmb3IgcmVzZXR0aW5nIHRoaXMgY2FjaGVkIGltYWdlIHJlc3VsdCBzaW5jZSB0aGUgd2hv
bGUgYG1fYWN0aXZlQ29udGV4dE1lbnVgIGlzIGFsd2F5cyBkZXN0cm95ZWQgdXBvbgorICAgICAg
ICBwcmVzZW50aW5nIGEgY29udGV4dCBtZW51LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gc2VwYXJh
dGVseSBjbGVhciBvdXQgYG1fY3JvcHBlZEltYWdlUmVzdWx0YC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVl
ZGVkKToKKworICAgICAgICBQdWxsIHRoaXMgbG9naWMgb3V0IGludG8gYSBzZXBhcmF0ZSBoZWxw
ZXIgbWV0aG9kLCBhbmQgY2hhbmdlIGl0IHNvIHRoYXQ6CisgICAgICAgIC0gV2UgcnVuIHRoZSBp
bWFnZSBhbmFseXNpcyBwcmlvciB0byBjcmVhdGluZyBhbmQgYWRkaW5nIHRoZSBpdGVtLgorICAg
ICAgICAtIE9ubHkgYWRkIHRoZSBpdGVtIGlmIHRoZSBpbWFnZSBhbmFseXNpcyByZXR1cm5lZCBh
IG5vbi1udWxsIENHSW1hZ2VSZWYuCisgICAgICAgIC0gU3RvcmUgdGhlIENHSW1hZ2VSZWYgb24g
YG1fY3JvcHBlZEltYWdlUmVzdWx0YCwgZm9yIHVzZSBpZiB0aGUgbWVudSBpdGVtIGlzIGludm9r
ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6YXBwbHlNYXJr
dXBUb0NvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5k
bGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KTogRGVsZXRlZC4KKwogMjAyMi0w
NC0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTM0ODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0TWVudVByb3h5LmgKaW5kZXggMWI4ZmNjODQ2NjRmMzA5YWZlNWY0ZWFjZDI4
YjU0MTNjMWIxYjkwNy4uOGE1MDZjMmY0Yjk2MTg1NTYwYzhlZTE5OGY5YWY5NTc1MTUyYjE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaApAQCAt
NTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTlNBcnJheSAqcGxhdGZvcm1EYXRh
KCkgY29uc3QgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCisjaWYgRU5BQkxFKElN
QUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgY3JvcHBl
ZEltYWdlUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKIHByb3Rl
Y3RlZDoKICAgICBXZWJDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51
Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjU5YjUwOWU2NTRhZjU1ODFjOWRlMmEyMTg1MzcyNDE4
MzY1MzU4ZS4uYTlkZTdlNTM5MzIyZDNjOWNiZmI5MTFmYWFjZDUxM2JlMDgzNzNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTkwLDEwICsxMTkwLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0g
bnVsbHB0cjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0
TWVudSA9IG51bGxwdHI7Ci0jZW5kaWYKLQogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0
cjsKIAogICAgIG1faW5zcGVjdG9yLT5pbnZhbGlkYXRlKCk7CkBAIC03MDg3LDEwICs3MDgzLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHRE
YXRhJiYgY29udGV4dE1lbnVDb250ZXh0RGEKICAgICAvLyBNb3VzZURvd24gZXZlbnQgdGhhdCB0
cmlnZ2VyZWQgdGhpcyBTaG93Q29udGV4dE1lbnUgbWVzc2FnZS4gVGhpcyBjYW4gaGFwcGVuIGlm
IHdlIHRha2UgdG9vIGxvbmcgdG8gZW50ZXIgdGhlIG5lc3RlZCBydW5sb29wLgogICAgIGRpc2Nh
cmRRdWV1ZWRNb3VzZUV2ZW50cygpOwogCi0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFO
Q0VNRU5UUykKLSAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gbnVsbHB0cjsKLSNl
bmRpZgotCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVD
b250ZXh0RGF0YTsKIAogICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBwYWdlQ2xpZW50KCkuY3Jl
YXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RGTW92ZShjb250ZXh0TWVudUNvbnRleHREYXRh
KSwgdXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3
ODFkYmIzYjg5NjE4NmJmYzExMDc3MDkwODJiMjEyNjc2NDI3ZjExLi41OWZiMWI2YjhkNDllMjU5
Zjg5MDk4MGE3NTczMjIyNGE3YTg1YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMjEwMiwxMCArMjEwMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4dHJhY3RW
aWRlb0luRWxlbWVudEZ1bGxTY3JlZW4oV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9Cb3VuZHMpOwogICAgIHZvaWQgY2FuY2VsVmlkZW9FeHRy
YWN0aW9uSW5FbGVtZW50RnVsbFNjcmVlbigpOwogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
ICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgdm9pZCBzZXRDcm9w
cGVkSW1hZ2VGb3JDb250ZXh0TWVudShDR0ltYWdlUmVmKTsKLSNlbmRpZgotCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBA
IC0yNzk3LDEwICsyNzkzLDYgQEAgcHJpdmF0ZToKICAgICBDb250ZXh0TWVudUNvbnRleHREYXRh
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnU7Ci0jZW5k
aWYKLQogICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IG1fbGFzdE1vdXNlTW92ZUhpdFRl
c3RSZXN1bHQ7CiAKICAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4g
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCmluZGV4IDYxYjk1ZjRmNmQ1Yzg0YTJl
Njk5MGUwNmNiNTVhODhjNTcxNzQ4MDQuLjFhMmM4OTAyMmZkMjNiNWRjNTk3NjUwMGQ5YTM5NDNk
NmRhYWZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMuaApAQCAtNTgsNiArNTgsMTAgQEAgcHVibGljOgogCiAgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OwogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFO
Q0VNRU5UUykKKyAgICBDR0ltYWdlUmVmIGNyb3BwZWRJbWFnZVJlc3VsdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY3JvcHBlZEltYWdlUmVzdWx0LmdldCgpOyB9CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBXZWJDb250ZXh0TWVudVByb3h5TWFjKE5TVmlldyAqLCBXZWJQYWdlUHJveHkmLCBD
b250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJik7CiAKQEAgLTcyLDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNoYXJlTWVudUl0ZW0oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChOU01lbnVJdGVtICopPiYmKTsKICAgICB2b2lkIHNob3dTZXJ2aWNlc01lbnUoKTsK
ICAgICB2b2lkIHNldHVwU2VydmljZXNNZW51KCk7CisgICAgdm9pZCBhcHBlbmRNYXJrdXBJdGVt
VG9Db250cm9sbGVkSW1hZ2VNZW51SWZOZWVkZWQoKTsKICNlbmRpZgogCiAgICAgTlNNZW51ICpw
bGF0Zm9ybU1lbnUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTgwLDYgKzg1LDkgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNNZW51PiBtX21lbnU7CiAgICAgUmV0YWluUHRyPFdLTWVudURlbGVn
YXRlPiBtX21lbnVEZWxlZ2F0ZTsKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc+IG1fd2ViVmlldzsK
KyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2Nyb3BwZWRJbWFnZVJlc3VsdDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IGU4ODM5ZWEzOTg0MzA3MGVhZjQxZWRlZmJiYTdi
ZGRiNjU3ODI5ZTQuLjg1YzljZTRlMzNhNzMwMDRhMmE5OWU5MmZlOWJlZDhhNGNhNDBmNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCkBAIC0yNjEsMjEgKzI2MSw4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2V0dXBTZXJ2aWNlc01lbnUoKQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAg
ICAgICAgIFttX21lbnUgc2V0U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOwotI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgZWxzZSBpZiAocGFnZSgpLT5wcmVmZXJlbmNl
cygpLmltYWdlQW5hbHlzaXNNYXJrdXBFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBtYXJrdXBJ
bWFnZUl0ZW0gPSBhZG9wdE5TKFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjb250
ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFn
ZSkga2V5RXF1aXZhbGVudDpAIiJdKTsKLSAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZVdpdGhTeXN0ZW1TeW1ib2xOYW1lOkAicGVyc29uLmZpbGwudmlld2Zp
bmRlciIgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3Vw
SW1hZ2UoKV1dOwotICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldFRhcmdldDpXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV07
Ci0gICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFn
ZSldOwotICAgICAgICBhdXRvIG51bWJlck9mSXRlbXMgPSBbbV9tZW51IG51bWJlck9mSXRlbXNd
OwotICAgICAgICBpZiAobnVtYmVyT2ZJdGVtcykKLSAgICAgICAgICAgIFttYXJrdXBJbWFnZUl0
ZW0gc2V0SW5kZW50YXRpb25MZXZlbDpbbV9tZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMg
LSAxXS5pbmRlbnRhdGlvbkxldmVsXTsKLSAgICAgICAgaWYgKG51bWJlck9mSXRlbXMgPj0gMSkK
LSAgICAgICAgICAgIFttX21lbnUgaW5zZXJ0SXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCkgYXRJ
bmRleDpudW1iZXJPZkl0ZW1zIC0gMV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFttX21l
bnUgYWRkSXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOwotICAgIH0KLSNlbmRpZiAvLyBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCisgICAgYXBwZW5kTWFya3VwSXRlbVRv
Q29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVkKCk7CiAKICAgICAvLyBFeHBsaWNpdGx5IGFkZCBh
IG1lbnUgaXRlbSBmb3IgZWFjaCB0ZWxlcGhvbmUgbnVtYmVyIHRoYXQgaXMgaW4gdGhlIHNlbGVj
dGlvbi4KICAgICBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+PiB0ZWxlcGhvbmVOdW1iZXJN
ZW51SXRlbXM7CkBAIC0zMDYsNiArMjkzLDQxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2V0dXBTZXJ2aWNlc01lbnUoKQogICAgICAgICBTZXJ2aWNlc0NvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLnJlZnJlc2hFeGlzdGluZ1NlcnZpY2VzKCk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVk
KCkKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmICgh
cGFnZSgpLT5wcmVmZXJlbmNlcygpLmltYWdlQW5hbHlzaXNNYXJrdXBFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIGltYWdlQml0bWFwID0gbV9jb250ZXh0LmNvbnRyb2xs
ZWRJbWFnZSgpOworICAgIGlmICghaW1hZ2VCaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gaW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICByZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChpbWFn
ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWFrTWVudSA9IFdlYWtP
YmpDUHRyPE5TTWVudT4geyBtX21lbnUuZ2V0KCkgfV0oQ0dJbWFnZVJlZiByZXN1bHQsIENHUmVj
dCkgeworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBhdXRvIHN0cm9uZ01lbnUgPSB3ZWFrTWVudS5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdN
ZW51KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gbWFya3VwSW1hZ2VJdGVt
ID0gYWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6Y29udGV4dE1lbnVJ
dGVtVGl0bGVNYXJrdXBJbWFnZSgpIGFjdGlvbjpAc2VsZWN0b3IobWFya3VwSW1hZ2UpIGtleUVx
dWl2YWxlbnQ6QCIiXSk7CisgICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0SW1hZ2U6W05TSW1h
Z2UgaW1hZ2VXaXRoU3lzdGVtU3ltYm9sTmFtZTpAInBlcnNvbi5maWxsLnZpZXdmaW5kZXIiIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbjpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCld
XTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRUYXJnZXQ6V0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlLnNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdOworICAgICAg
ICBbbWFya3VwSW1hZ2VJdGVtIHNldEFjdGlvbjpAc2VsZWN0b3IobWFya3VwSW1hZ2UpXTsKKyAg
ICAgICAgaWYgKGF1dG8gbnVtYmVyT2ZJdGVtcyA9IFtzdHJvbmdNZW51IG51bWJlck9mSXRlbXNd
KQorICAgICAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbmRlbnRhdGlvbkxldmVsOltzdHJv
bmdNZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXS5pbmRlbnRhdGlvbkxldmVsXTsK
KyAgICAgICAgW3N0cm9uZ01lbnUgYWRkSXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOworCisg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY3JvcHBlZEltYWdlUmVzdWx0ID0gcmVzdWx0OworICAg
IH0pOworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCit9CisK
IHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd1NlcnZpY2VzTWVudSgpCiB7CiAgICAg
c2V0dXBTZXJ2aWNlc01lbnUoKTsKQEAgLTMzMSwyNSArMzUzLDExIEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSgpCiAgICAgaWYgKCFl
bGVtZW50Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogaW1hZ2VCaXRtYXAg
PSBtX2NvbnRleHQuY29udHJvbGxlZEltYWdlKCk7Ci0gICAgaWYgKCFpbWFnZUJpdG1hcCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFn
ZSgpOwotICAgIGlmICghaW1hZ2UpCisgICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFG
b3JDcm9wcGVkSW1hZ2VSZXN1bHQobV9jcm9wcGVkSW1hZ2VSZXN1bHQuZ2V0KCksIG1fY29udGV4
dC5jb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdEltYWdlQW5hbHlzaXNN
YXJrdXAoaW1hZ2UuZ2V0KCksIFt3ZWFrUGFnZSA9IFdlYWtQdHIgeyBwYWdlKCkgfSwgcHJlZmVy
cmVkTUlNRVR5cGUgPSBtX2NvbnRleHQuY29udHJvbGxlZEltYWdlTUlNRVR5cGUoKSwgZWxlbWVu
dENvbnRleHQgPSBXVEZNb3ZlKCplbGVtZW50Q29udGV4dCldKENHSW1hZ2VSZWYgcmVzdWx0LCBD
R1JlY3QpIHsKLSAgICAgICAgUmVmUHRyIHByb3RlY3RlZFBhZ2UgPSB3ZWFrUGFnZS5nZXQoKTsK
LSAgICAgICAgaWYgKCFwcm90ZWN0ZWRQYWdlIHx8ICFyZXN1bHQpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFGb3JDcm9wcGVkSW1h
Z2VSZXN1bHQocmVzdWx0LCBwcmVmZXJyZWRNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBy
b3RlY3RlZFBhZ2UtPnJlcGxhY2VJbWFnZVdpdGhNYXJrdXBSZXN1bHRzKGVsZW1lbnRDb250ZXh0
LCB7IFN0cmluZyh0eXBlLmdldCgpKSB9LCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKTsKLSAgICB9KTsK
KyAgICBwYWdlKCktPnJlcGxhY2VJbWFnZVdpdGhNYXJrdXBSZXN1bHRzKCplbGVtZW50Q29udGV4
dCwgeyBTdHJpbmcodHlwZS5nZXQoKSkgfSwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIH0KIApAQCAtNjYxLDcgKzY2
OSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRl
bXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lT
X0VOSEFOQ0VNRU5UUykKICAgICAgICAgICAgIGlmIChjb3B5Q3JvcHBlZEltYWdlSXRlbSkgewog
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGltYWdlID0gaW1hZ2VCaXRtYXAtPm1ha2VDR0ltYWdl
Q29weSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldENyb3BwZWRJbWFnZUZvckNv
bnRleHRNZW51KG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X2Nyb3BwZWRJbWFnZVJlc3VsdCA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RJbWFnZUFuYWx5c2lzTWFya3VwKGltYWdlLmdldCgpLCBbd2Vha1BhZ2UsIHByb3RlY3RlZFRo
aXMsIGNvcHlDcm9wcGVkSW1hZ2VJdGVtID0gV1RGTW92ZSgqY29weUNyb3BwZWRJbWFnZUl0ZW0p
XShhdXRvIHJlc3VsdCwgYXV0bykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY3OCw3
IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMo
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwYWdlLT5zZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudShyZXN1bHQp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jcm9wcGVkSW1hZ2VS
ZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvdGVjdGVkVGhpcy0+
bV9tZW51IGFkZEl0ZW06Y3JlYXRlTWVudUFjdGlvbkl0ZW0oY29weUNyb3BwZWRJbWFnZUl0ZW0p
LmdldCgpXTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYzZk
YjYwZTczZWEzMDA0YzZlZjA2MjlkMDkzNTg5YTg4NDI5NDEyMy4uNDEzMTcyNDdmYzgzN2EyNGRh
NjMzMmZjZGJkZjcxYmY1N2YyOTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03ODEsMTcgKzc4MSwxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd0ltYWdlSW5RdWlja0xvb2tQcmV2aWV3UGFuZWwoU2hhcmVhYmxlQml0bWFwJiBp
bWFnZUJpdG1hcAogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KENHSW1hZ2VS
ZWYgaW1hZ2UpCi17Ci0gICAgbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudSA9IGltYWdlOwot
fQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVDb3B5Q3JvcHBlZEltYWdl
KGNvbnN0IFN0cmluZyYgcHJlZmVycmVkTUlNRVR5cGUpCiB7Ci0gICAgaWYgKCFtX2Nyb3BwZWRJ
bWFnZUZvckNvbnRleHRNZW51KQorICAgIGlmICghbV9hY3RpdmVDb250ZXh0TWVudSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyIGltYWdlID0gbV9hY3RpdmVDb250ZXh0TWVudS0+
Y3JvcHBlZEltYWdlUmVzdWx0KCk7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFGb3JDcm9wcGVkSW1hZ2VSZXN1bHQo
bV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudS5nZXQoKSwgcHJlZmVycmVkTUlNRVR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgYXV0byBbZGF0YSwgdHlwZV0gPSBpbWFnZURhdGFG
b3JDcm9wcGVkSW1hZ2VSZXN1bHQoaW1hZ2UuZ2V0KCksIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2E4MTRm
OWNjOGFkN2U0MGIzNTNiOTJjNjA2YzVhZDY0ZDYwMWNhMi4uM2Q4OWFlNWMwODlmYWQ1NzI4ZjRk
ODY5NDNmM2Q5YmJmODE1NWZmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTMwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGhlICJNYXJrdXAg
SW1hZ2UiIHNlcnZpY2VzIG1lbnUgaXRlbSBzaG91bGQgYmUgZ2F0ZWQgb24gaW1hZ2UgYW5hbHlz
aXMgcmVzdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM5OTMzCisgICAgICAgIHJkYXI6Ly85MjM0ODIwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCB0byBzaW11bGF0ZSBj
bGlja2luZyBvbiB0aGUgc2VydmljZXMgbWVudSBidXR0b24gaW4gYW4gYXR0YWNobWVudC1iYWNr
ZWQgaW1hZ2UgZWxlbWVudCB3aGlsZQorICAgICAgICBzd2l6emxpbmcgdGhlIHJlbGV2YW50IGlt
YWdlIGFuYWx5c2lzIEFQSXMgdG8gcmV0dXJuIGEgdmFsaWQgQ0dJbWFnZVJlZjsgdmVyaWZ5IHRo
YXQgdGhlICJNYXJrdXAgSW1hZ2UiIG1lbnUKKyAgICAgICAgaXRlbSBldmVudHVhbGx5IHNob3dz
IHVwLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbWFnZUFuYWx5c2lzVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVX
ZWJWaWV3V2l0aFRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50cyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjppY29uSW1hZ2UpOgorCisgICAgICAgIE1ha2UgdGhpcyB0ZXN0aW5nIGhlbHBlciBm
dW5jdGlvbiB3b3JrIG9uIGJvdGggbWFjT1MgYW5kIGlPUy4KKworICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5NYXJrdXBUZXN0KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWNvbnRyb2xzLmh0
bWw6IEFkZGVkLgorCiAyMDIyLTA0LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTM2MjEuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDc1NzdmNzZmZWU2YzdkMjc5MGJkOTNkMmZkOTc3OGNjODFkODdhMTQuLjNk
ZWViOTU4MmViZTczZmVlMGM0NTkwN2RhMzlmMDdlNTA3YWIyZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTA0LDYgKzExMDQsNyBAQAogCQlGNDg1NkNBMzFFNjQ5RUE4MDA5RDdFRTcg
LyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NTZDQTIxRTY0OThBODAwOUQ3RUU3IC8qIGF0dGFj
aG1lbnQtZWxlbWVudC5odG1sICovOyB9OwogCQlGNDg2QjFEMDFGNjc5NTIzMDBGMzRCREQgLyog
RGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODZCMUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBE
YXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgKi87IH07CiAJCUY0OEQ2QzEwMjI0QjM3NzAw
MEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQ2QzBGMjI0QjM3NzAwMEUzRTJGQiAvKiBQcmVm
ZXJyZWRDb250ZW50TW9kZS5tbSAqLzsgfTsKKwkJRjQ5MURCQUUyODFERTBFODAwODE3MDVGIC8q
IGltYWdlLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ5MURCQUQyODFERTA5ODAwODE3MDVGIC8qIGltYWdlLWNvbnRy
b2xzLmh0bWwgKi87IH07CiAJCUY0OTRCMzZBMjYzMTIwNzgwMDYwQTMxMCAvKiBUZXh0U2Vydmlj
ZXNUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0OTRCMzY5MjYzMTIwNzgwMDYwQTMxMCAvKiBUZXh0U2VydmljZXNUZXN0cy5tbSAqLzsgfTsK
IAkJRjQ5OTkyQzYyNDhEQUJGRDAwMDM0MTY3IC8qIG92ZXJmbG93LWhpZGRlbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTk5MkM1
MjQ4REFCRTQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCAqLzsgfTsKIAkJRjRBMzJF
QzQxRjA1RjM4NTAwNDdDNTQ0IC8qIGRyYWdzdGFydC1jaGFuZ2Utc2VsZWN0aW9uLW9mZnNjcmVl
bi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0QTMyRUMzMUYwNUYzNzgwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlv
bi1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKQEAgLTE0MTcsNiArMTQxOCw3IEBACiAJCQkJRjQxQUI5
QTQxRUY0Njk2QjAwODNGQTA4IC8qIGltYWdlLWFuZC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEUwQTJCNDIxMjI0MDJCMDBBRjdDN0YgLyogaW1hZ2Ut
YW5kLWZpbGUtdXBsb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTUx
RUY0Njk2QjAwODNGQTA4IC8qIGltYWdlLWFuZC10ZXh0YXJlYS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCUY0OTFEQkFFMjgxREUwRTgwMDgxNzA1RiAvKiBpbWFnZS1jb250cm9scy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0REVGNkVEMUU5QjREQjYwMDQ4RUY2MSAv
KiBpbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUY0NUI2M0ZCMUYxOTdGNEEwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQkzMTI4QTgxNTIzNzY0MTMzMDBEOTBENDAgLyogaW1hZ2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTMxNDIsNiArMzE0NCw3IEBACiAJCUY0ODU2Q0EyMUU2NDk4
QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJhdHRhY2htZW50LWVsZW1lbnQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0ODZCMUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJh
Z0ltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVyLXNl
dERyYWdJbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDZDMEYy
MjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRNb2RlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJlZmVycmVkQ29udGVudE1vZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0OTFEQkFEMjgxREUwOTgwMDgxNzA1RiAvKiBpbWFnZS1jb250cm9scy5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gImltYWdlLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDkzMjQ3QzFGNDRERjhEMDA2RjQzMzYgLyogVUlLaXRTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVUlLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NEIzNjkyNjMx
MjA3ODAwNjBBMzEwIC8qIFRleHRTZXJ2aWNlc1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVGV4dFNlcnZpY2VzVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
OTk5MkM1MjQ4REFCRTQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJvdmVyZmxvdy1oaWRkZW4uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MjE0LDYgKzQyMTcsNyBAQAogCQkJCUY0MUFCOTk5MUVGNDY5MkMw
MDgzRkEwOCAvKiBpbWFnZS1hbmQtY29udGVudGVkaXRhYmxlLmh0bWwgKi8sCiAJCQkJRjRFMEEy
QjMyMTIyM0YyRDAwQUY3QzdGIC8qIGltYWdlLWFuZC1maWxlLXVwbG9hZC5odG1sICovLAogCQkJ
CUY0MUFCOTkzMUVGNDY5MkMwMDgzRkEwOCAvKiBpbWFnZS1hbmQtdGV4dGFyZWEuaHRtbCAqLywK
KwkJCQlGNDkxREJBRDI4MURFMDk4MDA4MTcwNUYgLyogaW1hZ2UtY29udHJvbHMuaHRtbCAqLywK
IAkJCQlGNERFRjZFQzFFOUI0RDk1MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQu
aHRtbCAqLywKIAkJCQlGNDVCNjNGQTFGMTk3RjMzMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwg
Ki8sCiAJCQkJMzEyOEE4MTQyMzc2NDBGRDAwRDkwRDQwIC8qIGltYWdlLmh0bWwgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5hbHlz
aXNUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VB
bmFseXNpc1Rlc3RzLm1tCmluZGV4IDBhZDIxZDdhMDQwM2VlOTZmYmI4ODM1ZDg0MzNmMWMyNzUz
YTk3NTYuLmRhZjY4ZWVhMzEyMDMzZWRlOWQ4OTNhZmI0ZjEwZjJkYzZiOTZhZWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rl
c3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VB
bmFseXNpc1Rlc3RzLm1tCkBAIC0xNTcsNiArMTU3LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMo
KQogICAgICAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJUZXh0UmVjb2duaXRpb25Fbmhh
bmNlbWVudHNFbmFibGVkIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJJbWFnZUFuYWx5c2lz
UXVldWVFbmFibGVkIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJJbWFnZUFuYWx5c2lzTWFy
a3VwRW5hYmxlZCJdKQogICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0RW5hYmxlZDpZRVMgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CiAgICAgfQor
ICAgIFtjb25maWd1cmF0aW9uIF9zZXRBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVTXTsKKyNp
ZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0SW1hZ2VD
b250cm9sc0VuYWJsZWQ6WUVTXTsKKyNlbmRpZgogICAgIHJldHVybiBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIH0KIApAQCAtMzIyLDE0ICszMjYs
MjMgQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIEltYWdlQW5hbHlzaXNXaXRoVHJhbnNwYXJl
bnRJbWFnZXMpCiAgICAgRVhQRUNUX0ZBTFNFKHJlYWRlci5pc1RyYW5zcGFyZW50QmxhY2socmVh
ZGVyLndpZHRoKCkgLyAyLCByZWFkZXIuaGVpZ2h0KCkgLyAyKSk7CiB9CiAKLSNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lm
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKLXN0YXRpYyBSZXRhaW5QdHI8
VUlJbWFnZT4gaWNvbkltYWdlKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaWNvbklt
YWdlKCkKIHsKICAgICBhdXRvIGljb25QYXRoID0gW05TQnVuZGxlLm1haW5CdW5kbGUgcGF0aEZv
clJlc291cmNlOkAiaWNvbiIgb2ZUeXBlOkAicG5nIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07Ci0gICAgcmV0dXJuIFtVSUltYWdlIGltYWdlV2l0aENvbnRlbnRzT2ZG
aWxlOmljb25QYXRoXTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiBbVUlJ
bWFnZSBpbWFnZVdpdGhDb250ZW50c09mRmlsZTppY29uUGF0aF0uQ0dJbWFnZTsKKyNlbHNlCisg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRz
T2ZGaWxlOmljb25QYXRoXSk7CisgICAgcmV0dXJuIFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRS
ZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdOworI2VuZGlmCiB9CiAKKyNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCisjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogc3RhdGljIHZv
aWQgc2ltdWxhdGVDYWxsb3V0QmFyQXBwZWFyYW5jZShUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3KQog
ewogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CkBAIC0zNTEsNyArMzY0LDcgQEAgc3Rh
dGljIHZvaWQgaW52b2tlSW1hZ2VNYXJrdXBBY3Rpb24oVGVzdFdLV2ViVmlldyAqd2ViVmlldykK
IAogVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIE1lbnVDb250cm9sbGVySXRlbXMpCiB7Ci0gICAg
SW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsgW2ljb25JbWFnZSgpIENHSW1h
Z2VdLCBDR1JlY3RNYWtlKDEwLCAxMCwgMjE1LCAxNzQpIH07CisgICAgSW1hZ2VBbmFseXNpc01h
cmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsgaWNvbkltYWdlKCkuYXV0b3JlbGVhc2UoKSwgQ0dSZWN0
TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9OwogCiAgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2Vi
Vmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMoKTsKICAgICBhdXRvIGlucHV0RGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0SW5wdXREZWxlZ2F0ZSBuZXddKTsKQEAgLTM4OSw3ICs0MDIs
NyBAQCBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgTWVudUNvbnRyb2xsZXJJdGVtcykKIAogc3Rh
dGljIHZvaWQgcnVuTWFya3VwVGVzdChOU1N0cmluZyAqdGVzdFBhZ2UsIE5TU3RyaW5nICpzY3Jp
cHRUb1NlbGVjdFRleHQsIEZ1bmN0aW9uPHZvaWQoVGVzdFdLV2ViVmlldyAqLCBOU1N0cmluZyAq
KT4mJiBjaGVja1dlYlZpZXcpCiB7Ci0gICAgSW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3
aXp6bGVyIHsgW2ljb25JbWFnZSgpIENHSW1hZ2VdLCBDR1JlY3RNYWtlKDEwLCAxMCwgMjE1LCAx
NzQpIH07CisgICAgSW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6bGVyIHN3aXp6bGVyIHsgaWNvbklt
YWdlKCkuYXV0b3JlbGVhc2UoKSwgQ0dSZWN0TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9OwogCiAg
ICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNl
bWVudHMoKTsKICAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0SW5wdXREZWxl
Z2F0ZSBuZXddKTsKQEAgLTQzMyw2ICs0NDYsMzggQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMs
IFBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwV2l0aFdlYlBJbWFnZXMpCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCisKK1RFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBNYXJrdXBJbWFnZUl0
ZW1JblNlcnZpY2VzTWVudSkKK3sKKyAgICBJbWFnZUFuYWx5c2lzTWFya3VwU3dpenpsZXIgc3dp
enpsZXIgeyBpY29uSW1hZ2UoKS5hdXRvcmVsZWFzZSgpLCBDR1JlY3RNYWtlKDEwLCAxMCwgMjE1
LCAxNzQpIH07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aFRleHRSZWNv
Z25pdGlvbkVuaGFuY2VtZW50cygpOworICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImltYWdlLWNvbnRy
b2xzIl07CisgICAgW1t3ZWJWaWV3IHdpbmRvd10gb3JkZXJGcm9udFJlZ2FyZGxlc3NdOworICAg
IFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJ3YWl0Rm9yQW5kQ2xpY2tJbWFnZUNvbnRy
b2xzKCkiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICB9XTsKKworICAgIF9fYmxvY2sgYm9v
bCBmb3VuZE1hcmt1cEltYWdlSXRlbSA9IGZhbHNlOworICAgIFJldGFpblB0ciB0aW1lciA9IFtO
U1RpbWVyIHRpbWVyV2l0aFRpbWVJbnRlcnZhbDowLjEgcmVwZWF0czpZRVMgYmxvY2s6XihOU1Rp
bWVyICopIHsKKyAgICAgICAgTlNNZW51ICptZW51ID0gW3dlYlZpZXcgX2FjdGl2ZU1lbnVdOwor
ICAgICAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gbWVudS5pdGVtQXJyYXkpIHsKKyAgICAg
ICAgICAgIGlmIChbaXRlbS50aXRsZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpXSkgeworICAgICAgICAgICAgICAgIGZvdW5kTWFya3Vw
SW1hZ2VJdGVtID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBbbWVudSBjYW5jZWxUcmFja2luZ107
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
XTsKKworICAgIFtOU1J1bkxvb3AubWFpblJ1bkxvb3AgYWRkVGltZXI6dGltZXIuZ2V0KCkgZm9y
TW9kZTpOU0V2ZW50VHJhY2tpbmdSdW5Mb29wTW9kZV07CisgICAgVXRpbDo6cnVuKCZmb3VuZE1h
cmt1cEltYWdlSXRlbSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5I
QU5DRU1FTlRTKSAmJiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1jb250cm9s
cy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1jb250
cm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYzllNDE4Mzg0ZWY0NDJmNzE3ODY0OGQ4ZTQ1YTc0ZTU1
MTM5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL2ltYWdlLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAo
KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuSFRNTEF0dGFjaG1lbnRFbGVtZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNobWVudElkZW50aWZp
ZXIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOworfSk7CisKK2Z1bmN0aW9uIHNlcnZp
Y2VzQ29udHJvbEJ1dHRvbigpCit7CisgICAgcmV0dXJuIGludGVybmFscy5zaGFkb3dSb290KGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKS5nZXRFbGVtZW50QnlJZCgiaW1hZ2UtY29udHJv
bHMtYnV0dG9uIik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JBbmRDbGlja0ltYWdlQ29u
dHJvbHMoKQoreworICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbGV0IGJ1dHRvbiA9IG51bGw7CisgICAgZG8geworICAgICAgICBhd2FpdCBuZXcgUHJv
bWlzZShyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOworICAgICAgICBidXR0b24gPSBzZXJ2aWNlc0Nv
bnRyb2xCdXR0b24oKTsKKyAgICB9IHdoaWxlICghYnV0dG9uKTsKKyAgICBidXR0b24uY2xpY2so
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+PGltZyBzcmM9Imljb24ucG5nIj48L2lt
Zz48L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="487554"
          type_id="1"
          status="+"
          setter="katherine_cheney"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458697</attachid>
            <date>2022-05-02 11:43:15 -0700</date>
            <delta_ts>2022-05-02 13:30:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-239933-20220502114314.patch</filename>
            <type>text/plain</type>
            <size>24650</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjODljOTZkOTI5ZDE0YmY4
MWUyMmJlZDI0MjExZDkwZTI4MmI5YTUuLmExZjBlNDEzMjEzMWQ0MjI1OWE4YjBhYTFhNWVmOTAx
YWI4NzYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDQtMzAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBUaGUgIk1h
cmt1cCBJbWFnZSIgc2VydmljZXMgbWVudSBpdGVtIHNob3VsZCBiZSBnYXRlZCBvbiBpbWFnZSBh
bmFseXNpcyByZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzk5MzMKKyAgICAgICAgcmRhcjovLzkyMzQ4MjAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2F0ZSBDaGVuZXkuCisKKyAgICAgICAgQWRqdXN0IHNvbWUgbWFjT1Mtc3BlY2lmaWMg
bG9naWMgZm9yIGFwcGVuZGluZyB0aGUgIk1hcmt1cCBJbWFnZSIgbWVudSBpdGVtIGluIHRoZSBz
ZXJ2aWNlcyBtZW51LCBzdWNoIHRoYXQgd2UKKyAgICAgICAgb25seSBhZGQgdGhpcyBuZXcgaXRl
bSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVsZXZhbnQgaW1hZ2UgYW5hbHlzaXMgQVBJcyBjb21l
IGJhY2sgd2l0aCBhIHZhbGlkIGNyb3BwZWQgaW1hZ2UKKyAgICAgICAgcmVzdWx0LiBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBJbWFnZUFuYWx5c2lzVGVzdHMu
TWFya3VwSW1hZ2VJdGVtSW5TZXJ2aWNlc01lbnUKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6
OmNyb3BwZWRJbWFnZVJlc3VsdCBjb25zdCk6CisKKyAgICAgICAgTW92ZSBgbV9jcm9wcGVkSW1h
Z2VGb3JDb250ZXh0TWVudWAgaW50byBgV2ViQ29udGV4dE1lbnVQcm94eU1hY2AgYXMgYG1fY3Jv
cHBlZEltYWdlUmVzdWx0YCwgc28gdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgZWFzaWx5IHVzZWQg
Zm9yIGJvdGggdGhlIG5ldyAiQ29weSBDcm9wcGVkIEltYWdlIiBhbmQgIk1hcmt1cCBJbWFnZSIg
aXRlbXMuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBsb2dp
YyBmb3IgcmVzZXR0aW5nIHRoaXMgY2FjaGVkIGltYWdlIHJlc3VsdCBzaW5jZSB0aGUgd2hvbGUg
YG1fYWN0aXZlQ29udGV4dE1lbnVgIGlzIGFsd2F5cyBkZXN0cm95ZWQgdXBvbgorICAgICAgICBw
cmVzZW50aW5nIGEgY29udGV4dCBtZW51LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gc2VwYXJhdGVs
eSBjbGVhciBvdXQgYG1fY3JvcHBlZEltYWdlUmVzdWx0YC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWM6OnNldHVwU2VydmljZXNNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6YXBwZW5kTWFya3VwSXRlbVRvQ29udHJvbGxlZEltYWdlTWVudUlmTmVlZGVk
KToKKworICAgICAgICBQdWxsIHRoaXMgbG9naWMgb3V0IGludG8gYSBzZXBhcmF0ZSBoZWxwZXIg
bWV0aG9kLCBhbmQgY2hhbmdlIGl0IHNvIHRoYXQ6CisgICAgICAgIC0gV2UgcnVuIHRoZSBpbWFn
ZSBhbmFseXNpcyBwcmlvciB0byBjcmVhdGluZyBhbmQgYWRkaW5nIHRoZSBpdGVtLgorICAgICAg
ICAtIE9ubHkgYWRkIHRoZSBpdGVtIGlmIHRoZSBpbWFnZSBhbmFseXNpcyByZXR1cm5lZCBhIG5v
bi1udWxsIENHSW1hZ2VSZWYuCisgICAgICAgIC0gU3RvcmUgdGhlIENHSW1hZ2VSZWYgb24gYG1f
Y3JvcHBlZEltYWdlUmVzdWx0YCwgZm9yIHVzZSBpZiB0aGUgbWVudSBpdGVtIGlzIGludm9rZWQu
CisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6YXBwbHlNYXJrdXBU
b0NvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlN
YWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVD
b250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KTogRGVsZXRlZC4KKwogMjAyMi0wNS0w
MiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBBZGQgc3VwcG9ydCBmb3IgdGhlICJNYXJrdXAgSW1hZ2UiIGFjdGlvbiB3aGVuIHJpZ2h0IGNs
aWNraW5nIGFuIGltYWdlIGluIGVkaXRhYmxlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAppbmRleCAxYjhmY2M4NDY2NGYzMDlhZmU1ZjRl
YWNkMjhiNTQxM2MxYjFiOTA3Li44YTUwNmMyZjRiOTYxODU1NjBjOGVlMTk4ZjlhZjk1NzUxNTJi
MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5o
CkBAIC01Myw2ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOU0FycmF5ICpwbGF0Zm9y
bURhdGEoKSBjb25zdCA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKKyNpZiBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBj
cm9wcGVkSW1hZ2VSZXN1bHQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwog
cHJvdGVjdGVkOgogICAgIFdlYkNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiNTliNTA5ZTY1NGFmNTU4MWM5ZGUyYTIxODUz
NzI0MTgzNjUzNThlLi5hOWRlN2U1MzkzMjJkM2M5Y2JmYjkxMWZhYWNkNTEzYmUwODM3M2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExOTAsMTAgKzEx
OTAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fYWN0aXZlQ29udGV4dE1l
bnUgPSBudWxscHRyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgRU5B
QkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICBtX2Nyb3BwZWRJbWFnZUZvckNv
bnRleHRNZW51ID0gbnVsbHB0cjsKLSNlbmRpZgotCiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBu
dWxscHRyOwogCiAgICAgbV9pbnNwZWN0b3ItPmludmFsaWRhdGUoKTsKQEAgLTcwODcsMTAgKzcw
ODMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHREYQogICAgIC8vIE1vdXNlRG93biBldmVudCB0
aGF0IHRyaWdnZXJlZCB0aGlzIFNob3dDb250ZXh0TWVudSBtZXNzYWdlLiBUaGlzIGNhbiBoYXBw
ZW4gaWYgd2UgdGFrZSB0b28gbG9uZyB0byBlbnRlciB0aGUgbmVzdGVkIHJ1bmxvb3AuCiAgICAg
ZGlzY2FyZFF1ZXVlZE1vdXNlRXZlbnRzKCk7CiAKLSNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNf
RU5IQU5DRU1FTlRTKQotICAgIG1fY3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUgPSBudWxscHRy
OwotI2VuZGlmCi0KICAgICBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEgPSBjb250ZXh0
TWVudUNvbnRleHREYXRhOwogCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IHBhZ2VDbGllbnQo
KS5jcmVhdGVDb250ZXh0TWVudVByb3h5KCp0aGlzLCBXVEZNb3ZlKGNvbnRleHRNZW51Q29udGV4
dERhdGEpLCB1c2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDQ0YjgyNmVkYTE0ZGY5MzljMDVkYWNiZDYwZWE5MDU0NGY3YTE4ZDkuLmY0MWRhNGY1M2Ux
OTIwMTYwYTFjOTFkMGEyMmE5ZjMzODcxMTNjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0yMTAyLDEwICsyMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgZXh0
cmFjdFZpZGVvSW5FbGVtZW50RnVsbFNjcmVlbihXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aWRlb0JvdW5kcyk7CiAgICAgdm9pZCBjYW5jZWxWaWRl
b0V4dHJhY3Rpb25JbkVsZW1lbnRGdWxsU2NyZWVuKCk7CiAKLSNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICB2b2lkIHNl
dENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KENHSW1hZ2VSZWYpOwotI2VuZGlmCi0KIHByaXZh
dGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUo
KTsKQEAgLTI3OTcsMTAgKzI3OTMsNiBAQCBwcml2YXRlOgogICAgIENvbnRleHRNZW51Q29udGV4
dERhdGEgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudTsK
LSNlbmRpZgotCiAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gbV9sYXN0TW91c2VNb3Zl
SGl0VGVzdFJlc3VsdDsKIAogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5PiBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggNjFiOTVmNGY2ZDVj
ODRhMmU2OTkwZTA2Y2I1NWE4OGM1NzE3NDgwNC4uMWEyYzg5MDIyZmQyM2I1ZGM1OTc2NTAwZDlh
Mzk0M2Q2ZGFhZmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCkBAIC01OCw2ICs1OCwxMCBAQCBwdWJsaWM6CiAKICAg
ICBOU1dpbmRvdyAqd2luZG93KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNf
RU5IQU5DRU1FTlRTKQorICAgIENHSW1hZ2VSZWYgY3JvcHBlZEltYWdlUmVzdWx0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jcm9wcGVkSW1hZ2VSZXN1bHQuZ2V0KCk7IH0KKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3ICosIFdlYlBhZ2VQcm94
eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIApAQCAtNzIs
NiArNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2hhcmVNZW51SXRlbShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE5TTWVudUl0ZW0gKik+JiYpOwogICAgIHZvaWQgc2hvd1NlcnZpY2VzTWVu
dSgpOwogICAgIHZvaWQgc2V0dXBTZXJ2aWNlc01lbnUoKTsKKyAgICB2b2lkIGFwcGVuZE1hcmt1
cEl0ZW1Ub0NvbnRyb2xsZWRJbWFnZU1lbnVJZk5lZWRlZCgpOwogI2VuZGlmCiAKICAgICBOU01l
bnUgKnBsYXRmb3JtTWVudSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODAsNiArODUsOSBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxOU01lbnU+IG1fbWVudTsKICAgICBSZXRhaW5QdHI8V0tNZW51
RGVsZWdhdGU+IG1fbWVudURlbGVnYXRlOwogICAgIFdlYWtPYmpDUHRyPE5TVmlldz4gbV93ZWJW
aWV3OworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY3JvcHBlZEltYWdlUmVzdWx0OworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggZTg4MzllYTM5ODQzMDcwZWFmNDFlZGVm
YmJhN2JkZGI2NTc4MjllNC4uMjFhOWRlNTk3NmMxOWZjMGE0NjgyNjZjM2YzZjMwMjM3MjA1ZjEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
ZW51UHJveHlNYWMubW0KQEAgLTI2MSwyMSArMjYxLDggQEAgdm9pZCBXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudSgpCiAKICAgICBpZiAoIWhhc0NvbnRyb2xsZWRJbWFn
ZSkKICAgICAgICAgW21fbWVudSBzZXRTaG93c1N0YXRlQ29sdW1uOllFU107Ci0jaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICBlbHNlIGlmIChwYWdlKCktPnByZWZl
cmVuY2VzKCkuaW1hZ2VBbmFseXNpc01hcmt1cEVuYWJsZWQoKSkgewotICAgICAgICBhdXRvIG1h
cmt1cEltYWdlSXRlbSA9IGFkb3B0TlMoW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxl
OmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKG1hcmt1
cEltYWdlKSBrZXlFcXVpdmFsZW50OkAiIl0pOwotICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNl
dEltYWdlOltOU0ltYWdlIGltYWdlV2l0aFN5c3RlbVN5bWJvbE5hbWU6QCJwZXJzb24uZmlsbC52
aWV3ZmluZGVyIiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb246Y29udGV4dE1lbnVJdGVtVGl0bGVN
YXJrdXBJbWFnZSgpXV07Ci0gICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0VGFyZ2V0OldLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5zaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlXTsKLSAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRBY3Rpb246QHNlbGVjdG9yKG1hcmt1
cEltYWdlKV07Ci0gICAgICAgIGF1dG8gbnVtYmVyT2ZJdGVtcyA9IFttX21lbnUgbnVtYmVyT2ZJ
dGVtc107Ci0gICAgICAgIGlmIChudW1iZXJPZkl0ZW1zKQotICAgICAgICAgICAgW21hcmt1cElt
YWdlSXRlbSBzZXRJbmRlbnRhdGlvbkxldmVsOlttX21lbnUgaXRlbUF0SW5kZXg6bnVtYmVyT2ZJ
dGVtcyAtIDFdLmluZGVudGF0aW9uTGV2ZWxdOwotICAgICAgICBpZiAobnVtYmVyT2ZJdGVtcyA+
PSAxKQotICAgICAgICAgICAgW21fbWVudSBpbnNlcnRJdGVtOm1hcmt1cEltYWdlSXRlbS5nZXQo
KSBhdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
W21fbWVudSBhZGRJdGVtOm1hcmt1cEltYWdlSXRlbS5nZXQoKV07Ci0gICAgfQotI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKKyAgICBhcHBlbmRNYXJrdXBJ
dGVtVG9Db250cm9sbGVkSW1hZ2VNZW51SWZOZWVkZWQoKTsKIAogICAgIC8vIEV4cGxpY2l0bHkg
YWRkIGEgbWVudSBpdGVtIGZvciBlYWNoIHRlbGVwaG9uZSBudW1iZXIgdGhhdCBpcyBpbiB0aGUg
c2VsZWN0aW9uLgogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4+IHRlbGVwaG9uZU51
bWJlck1lbnVJdGVtczsKQEAgLTMwNiw2ICsyOTMsNDIgQEAgdm9pZCBXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudSgpCiAgICAgICAgIFNlcnZpY2VzQ29udHJvbGxlcjo6
c2luZ2xldG9uKCkucmVmcmVzaEV4aXN0aW5nU2VydmljZXMoKTsKIH0KIAordm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjphcHBlbmRNYXJrdXBJdGVtVG9Db250cm9sbGVkSW1hZ2VNZW51SWZO
ZWVkZWQoKQoreworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAg
YXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPnByZWZl
cmVuY2VzKCkuaW1hZ2VBbmFseXNpc01hcmt1cEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogaW1hZ2VCaXRtYXAgPSBtX2NvbnRleHQuY29udHJvbGxlZEltYWdlKCk7Cisg
ICAgaWYgKCFpbWFnZUJpdG1hcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpbWFnZSA9
IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFnZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIHJlcXVlc3RJbWFnZUFuYWx5c2lzTWFya3VwKGltYWdlLmdldCgpLCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdlYWtNZW51ID0gV2Vha09iakNQdHI8TlNNZW51
PiB7IG1fbWVudS5nZXQoKSB9XShDR0ltYWdlUmVmIHJlc3VsdCwgQ0dSZWN0KSB7CisgICAgICAg
IGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gc3Ryb25n
TWVudSA9IHdlYWtNZW51LmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ01lbnUpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBtYXJrdXBJbWFnZUl0ZW0gPSBhZG9wdE5TKFtb
TlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1
cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFnZSkga2V5RXF1aXZhbGVudDpAIiJd
KTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZVdpdGhT
eXN0ZW1TeW1ib2xOYW1lOkAicGVyc29uLmZpbGwudmlld2ZpbmRlciIgYWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKV1dOworICAgICAgICBb
bWFya3VwSW1hZ2VJdGVtIHNldFRhcmdldDpXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUu
c2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV07CisgICAgICAgIFttYXJrdXBJbWFn
ZUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFnZSldOworICAgICAgICBpZiAoYXV0
byBudW1iZXJPZkl0ZW1zID0gW3N0cm9uZ01lbnUgbnVtYmVyT2ZJdGVtc10pCisgICAgICAgICAg
ICBbbWFya3VwSW1hZ2VJdGVtIHNldEluZGVudGF0aW9uTGV2ZWw6W3N0cm9uZ01lbnUgaXRlbUF0
SW5kZXg6bnVtYmVyT2ZJdGVtcyAtIDFdLmluZGVudGF0aW9uTGV2ZWxdOworICAgICAgICBbc3Ry
b25nTWVudSBhZGRJdGVtOm1hcmt1cEltYWdlSXRlbS5nZXQoKV07CisKKyAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9jcm9wcGVkSW1hZ2VSZXN1bHQgPSByZXN1bHQ7CisgICAgfSk7CisjZW5kaWYg
Ly8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKK30KKwogdm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjpzaG93U2VydmljZXNNZW51KCkKIHsKICAgICBzZXR1cFNlcnZpY2Vz
TWVudSgpOwpAQCAtMzMxLDI1ICszNTQsMTEgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFj
OjphcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCkKICAgICBpZiAoIWVsZW1lbnRDb250ZXh0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBpbWFnZUJpdG1hcCA9IG1fY29udGV4dC5j
b250cm9sbGVkSW1hZ2UoKTsKLSAgICBpZiAoIWltYWdlQml0bWFwKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBhdXRvIGltYWdlID0gaW1hZ2VCaXRtYXAtPm1ha2VDR0ltYWdlKCk7Ci0gICAgaWYg
KCFpbWFnZSkKKyAgICBhdXRvIFtkYXRhLCB0eXBlXSA9IGltYWdlRGF0YUZvckNyb3BwZWRJbWFn
ZVJlc3VsdChtX2Nyb3BwZWRJbWFnZVJlc3VsdC5nZXQoKSwgbV9jb250ZXh0LmNvbnRyb2xsZWRJ
bWFnZU1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChpbWFnZS5n
ZXQoKSwgW3dlYWtQYWdlID0gV2Vha1B0ciB7IHBhZ2UoKSB9LCBwcmVmZXJyZWRNSU1FVHlwZSA9
IG1fY29udGV4dC5jb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpLCBlbGVtZW50Q29udGV4dCA9IFdU
Rk1vdmUoKmVsZW1lbnRDb250ZXh0KV0oQ0dJbWFnZVJlZiByZXN1bHQsIENHUmVjdCkgewotICAg
ICAgICBSZWZQdHIgcHJvdGVjdGVkUGFnZSA9IHdlYWtQYWdlLmdldCgpOwotICAgICAgICBpZiAo
IXByb3RlY3RlZFBhZ2UgfHwgIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBhdXRvIFtkYXRhLCB0eXBlXSA9IGltYWdlRGF0YUZvckNyb3BwZWRJbWFnZVJlc3VsdChyZXN1
bHQsIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotICAgICAgICBp
ZiAoIWRhdGEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcHJvdGVjdGVkUGFnZS0+
cmVwbGFjZUltYWdlV2l0aE1hcmt1cFJlc3VsdHMoZWxlbWVudENvbnRleHQsIHsgU3RyaW5nKHR5
cGUuZ2V0KCkpIH0sIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSkpOwotICAgIH0pOworICAgIHBhZ2UoKS0+
cmVwbGFjZUltYWdlV2l0aE1hcmt1cFJlc3VsdHMoKmVsZW1lbnRDb250ZXh0LCB7IFN0cmluZyh0
eXBlLmdldCgpKSB9LCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKTsKICNlbmRpZiAvLyBFTkFCTEUoSU1B
R0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQogfQogCkBAIC02NjEsNyArNjcwLDcgQEAgdm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnUKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRT
KQogICAgICAgICAgICAgaWYgKGNvcHlDcm9wcGVkSW1hZ2VJdGVtKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0Q3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUobnVs
bHB0cik7CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY3JvcHBlZEltYWdl
UmVzdWx0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEltYWdlQW5hbHlz
aXNNYXJrdXAoaW1hZ2UuZ2V0KCksIFt3ZWFrUGFnZSwgcHJvdGVjdGVkVGhpcywgY29weUNyb3Bw
ZWRJbWFnZUl0ZW0gPSBXVEZNb3ZlKCpjb3B5Q3JvcHBlZEltYWdlSXRlbSldKGF1dG8gcmVzdWx0
LCBhdXRvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjc5LDcgQEAgdm9pZCBXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnUKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFnZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2UtPnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2Nyb3BwZWRJbWFnZVJlc3VsdCA9IHJlc3Vs
dDsKICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm90ZWN0ZWRUaGlzLT5tX21lbnUgYWRkSXRl
bTpjcmVhdGVNZW51QWN0aW9uSXRlbShjb3B5Q3JvcHBlZEltYWdlSXRlbSkuZ2V0KCldOwogICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjNmRiNjBlNzNlYTMwMDRj
NmVmMDYyOWQwOTM1ODlhODg0Mjk0MTIzLi40MTMxNzI0N2ZjODM3YTI0ZGE2MzMyZmNkYmRmNzFi
ZjU3ZjI5OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTc4MSwxNyArNzgxLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93SW1h
Z2VJblF1aWNrTG9va1ByZXZpZXdQYW5lbChTaGFyZWFibGVCaXRtYXAmIGltYWdlQml0bWFwCiAK
ICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Q3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUoQ0dJbWFnZVJlZiBpbWFnZSkKLXsK
LSAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gaW1hZ2U7Ci19Ci0KIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UoY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRNSU1FVHlwZSkKIHsKLSAgICBpZiAoIW1fY3JvcHBlZEltYWdlRm9yQ29udGV4
dE1lbnUpCisgICAgaWYgKCFtX2FjdGl2ZUNvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CisK
KyAgICBSZXRhaW5QdHIgaW1hZ2UgPSBtX2FjdGl2ZUNvbnRleHRNZW51LT5jcm9wcGVkSW1hZ2VS
ZXN1bHQoKTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIFtk
YXRhLCB0eXBlXSA9IGltYWdlRGF0YUZvckNyb3BwZWRJbWFnZVJlc3VsdChtX2Nyb3BwZWRJbWFn
ZUZvckNvbnRleHRNZW51LmdldCgpLCBwcmVmZXJyZWRNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKKyAgICBhdXRvIFtkYXRhLCB0eXBlXSA9IGltYWdlRGF0YUZvckNyb3BwZWRJbWFn
ZVJlc3VsdChpbWFnZS5nZXQoKSwgcHJlZmVycmVkTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YmNkYzcyZTJiYWJhMTJmYmY3
MjhiOWUwYjg1ODExNzQ5NTUwODhiLi5kMmRlY2NjM2QyMGRhMzllOTdiM2NmM2RhZGQ0MWUyZjc5
YmU5ZjM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMjItMDQtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBUaGUgIk1hcmt1cCBJbWFnZSIgc2Vydmlj
ZXMgbWVudSBpdGVtIHNob3VsZCBiZSBnYXRlZCBvbiBpbWFnZSBhbmFseXNpcyByZXN1bHRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk5MzMKKyAg
ICAgICAgcmRhcjovLzkyMzQ4MjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2F0ZSBDaGVuZXku
CisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRvIHNpbXVsYXRlIGNsaWNraW5nIG9uIHRoZSBz
ZXJ2aWNlcyBtZW51IGJ1dHRvbiBpbiBhbiBhdHRhY2htZW50LWJhY2tlZCBpbWFnZSBlbGVtZW50
IHdoaWxlCisgICAgICAgIHN3aXp6bGluZyB0aGUgcmVsZXZhbnQgaW1hZ2UgYW5hbHlzaXMgQVBJ
cyB0byByZXR1cm4gYSB2YWxpZCBDR0ltYWdlUmVmOyB2ZXJpZnkgdGhhdCB0aGUgIk1hcmt1cCBJ
bWFnZSIgbWVudQorICAgICAgICBpdGVtIGV2ZW50dWFsbHkgc2hvd3MgdXAuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNU
ZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJl
Y29nbml0aW9uRW5oYW5jZW1lbnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omljb25JbWFn
ZSk6CisKKyAgICAgICAgTWFrZSB0aGlzIHRlc3RpbmcgaGVscGVyIGZ1bmN0aW9uIHdvcmsgb24g
Ym90aCBtYWNPUyBhbmQgaU9TLgorCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bk1hcmt1cFRlc3QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtY29udHJvbHMuaHRtbDogQWRkZWQuCisKIDIw
MjItMDUtMDIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvY29hXSBBbGxvdyBtb3JlIG1pbWUgdHlwZXMgaW4gY2FwdGl2ZSBwb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTc3Zjc2ZmVlNmM3ZDI3OTBiZDkzZDJmZDk3Nzhj
YzgxZDg3YTE0Li4zZGVlYjk1ODJlYmU3M2ZlZTBjNDU5MDdkYTM5ZjA3ZTUwN2FiMmZlIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwNCw2ICsxMTA0LDcgQEAKIAkJRjQ4NTZDQTMxRTY0
OUVBODAwOUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODU2Q0EyMUU2NDk4QTgwMDlE
N0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCAqLzsgfTsKIAkJRjQ4NkIxRDAxRjY3OTUy
MzAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDg2QjFDRjFGNjc5NEZG
MDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovOyB9OwogCQlGNDhE
NkMxMDIyNEIzNzcwMDBFM0UyRkIgLyogUHJlZmVycmVkQ29udGVudE1vZGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhENkMwRjIyNEIzNzcwMDBF
M0UyRkIgLyogUHJlZmVycmVkQ29udGVudE1vZGUubW0gKi87IH07CisJCUY0OTFEQkFFMjgxREUw
RTgwMDgxNzA1RiAvKiBpbWFnZS1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTFEQkFEMjgxREUwOTgwMDgxNzA1RiAv
KiBpbWFnZS1jb250cm9scy5odG1sICovOyB9OwogCQlGNDk0QjM2QTI2MzEyMDc4MDA2MEEzMTAg
LyogVGV4dFNlcnZpY2VzVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDk0QjM2OTI2MzEyMDc4MDA2MEEzMTAgLyogVGV4dFNlcnZpY2VzVGVz
dHMubW0gKi87IH07CiAJCUY0OTk5MkM2MjQ4REFCRkQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRk
ZW4uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDk5OTJDNTI0OERBQkU0MDAwMzQxNjcgLyogb3ZlcmZsb3ctaGlkZGVuLmh0bWwgKi87
IH07CiAJCUY0QTMyRUM0MUYwNUYzODUwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVj
dGlvbi1vZmZzY3JlZW4uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEEzMkVDMzFGMDVGMzc4MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNo
YW5nZS1zZWxlY3Rpb24tb2Zmc2NyZWVuLmh0bWwgKi87IH07CkBAIC0xNDE3LDYgKzE0MTgsNyBA
QAogCQkJCUY0MUFCOUE0MUVGNDY5NkIwMDgzRkEwOCAvKiBpbWFnZS1hbmQtY29udGVudGVkaXRh
YmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRFMEEyQjQyMTIyNDAyQjAwQUY3
QzdGIC8qIGltYWdlLWFuZC1maWxlLXVwbG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUY0MUFCOUE1MUVGNDY5NkIwMDgzRkEwOCAvKiBpbWFnZS1hbmQtdGV4dGFyZWEuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlGNDkxREJBRTI4MURFMEU4MDA4MTcwNUYgLyogaW1h
Z2UtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNERFRjZFRDFFOUI0
REI2MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDVCNjNGQjFGMTk3RjRBMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzEyOEE4MTUyMzc2NDEzMzAwRDkwRDQwIC8qIGlt
YWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zMTQyLDYgKzMxNDQsNyBAQAogCQlG
NDg1NkNBMjFFNjQ5OEE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXR0YWNobWVudC1lbGVtZW50Lmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRy
YW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkRh
dGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0OEQ2QzBGMjI0QjM3NzAwMEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcnJlZENvbnRlbnRNb2RlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDkxREJBRDI4MURFMDk4MDA4MTcwNUYgLyogaW1hZ2UtY29u
dHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJpbWFnZS1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5MzI0N0MxRjQ0REY4RDAwNkY0MzM2IC8qIFVJS2l0U1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVJS2l0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0OTRCMzY5MjYzMTIwNzgwMDYwQTMxMCAvKiBUZXh0U2VydmljZXNUZXN0cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRleHRTZXJ2aWNlc1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDk5OTJDNTI0OERBQkU0MDAwMzQxNjcgLyogb3ZlcmZsb3ctaGlkZGVuLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAib3ZlcmZsb3ctaGlkZGVuLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIxNCw2ICs0MjE3LDcgQEAKIAkJCQlGNDFB
Qjk5OTFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZS5odG1sICov
LAogCQkJCUY0RTBBMkIzMjEyMjNGMkQwMEFGN0M3RiAvKiBpbWFnZS1hbmQtZmlsZS11cGxvYWQu
aHRtbCAqLywKIAkJCQlGNDFBQjk5MzFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLXRleHRh
cmVhLmh0bWwgKi8sCisJCQkJRjQ5MURCQUQyODFERTA5ODAwODE3MDVGIC8qIGltYWdlLWNvbnRy
b2xzLmh0bWwgKi8sCiAJCQkJRjRERUY2RUMxRTlCNEQ5NTAwNDhFRjYxIC8qIGltYWdlLWluLWxp
bmstYW5kLWlucHV0Lmh0bWwgKi8sCiAJCQkJRjQ1QjYzRkExRjE5N0YzMzAwOUQzOEI5IC8qIGlt
YWdlLW1hcC5odG1sICovLAogCQkJCTMxMjhBODE0MjM3NjQwRkQwMEQ5MEQ0MCAvKiBpbWFnZS5o
dG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbWFnZUFuYWx5c2lzVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbQppbmRleCBhMmJjN2U1ZDY4NzFjMTEzOTNlZWVk
NDQ5ZjJmM2Y2ZDEyN2UwMWVlLi5hNzg4ZjAxNjg3OGNkNTQ1NmEzY2EyNjY4N2FjMWNkMWQzZWEy
MGM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lt
YWdlQW5hbHlzaXNUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbQpAQCAtMTU3LDYgKzE1NywxMCBAQCBzdGF0aWMg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9u
RW5oYW5jZW1lbnRzKCkKICAgICAgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiVGV4dFJl
Y29nbml0aW9uRW5oYW5jZW1lbnRzRW5hYmxlZCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
SW1hZ2VBbmFseXNpc1F1ZXVlRW5hYmxlZCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiSW1h
Z2VBbmFseXNpc01hcmt1cEVuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1
cmVdOwogICAgIH0KKyAgICBbY29uZmlndXJhdGlvbiBfc2V0QXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkOllFU107CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgW2NvbmZpZ3VyYXRp
b24gX3NldEltYWdlQ29udHJvbHNFbmFibGVkOllFU107CisjZW5kaWYKICAgICByZXR1cm4gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiB9CiAKQEAg
LTMyMiwxNCArMzI2LDIzIEBAIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBJbWFnZUFuYWx5c2lz
V2l0aFRyYW5zcGFyZW50SW1hZ2VzKQogICAgIEVYUEVDVF9GQUxTRShyZWFkZXIuaXNUcmFuc3Bh
cmVudEJsYWNrKHJlYWRlci53aWR0aCgpIC8gMiwgcmVhZGVyLmhlaWdodCgpIC8gMikpOwogfQog
Ci0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQogCi1zdGF0
aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25JbWFnZSgpCitzdGF0aWMgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGljb25JbWFnZSgpCiB7CiAgICAgYXV0byBpY29uUGF0aCA9IFtOU0J1bmRsZS5tYWlu
QnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAImljb24iIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotICAgIHJldHVybiBbVUlJbWFnZSBpbWFnZVdp
dGhDb250ZW50c09mRmlsZTppY29uUGF0aF07CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICByZXR1cm4gW1VJSW1hZ2UgaW1hZ2VXaXRoQ29udGVudHNPZkZpbGU6aWNvblBhdGhdLkNHSW1h
Z2U7CisjZWxzZQorICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhDb250ZW50c09mRmlsZTppY29uUGF0aF0pOworICAgIHJldHVybiBbaW1hZ2UgQ0dJbWFn
ZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXTsKKyNlbmRpZgogfQog
CisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKworI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKIHN0YXRpYyB2b2lkIHNpbXVsYXRlQ2FsbG91dEJhckFwcGVhcmFuY2UoVGVzdFdLV2ViVmll
dyAqd2ViVmlldykKIHsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtMzc5LDcg
KzM5Miw3IEBAIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBNYXJrdXBJbWFnZVVzaW5nQ29udGV4
dE1lbnUpCiAKIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBNZW51Q29udHJvbGxlckl0ZW1zKQog
ewotICAgIEltYWdlQW5hbHlzaXNNYXJrdXBTd2l6emxlciBzd2l6emxlciB7IFtpY29uSW1hZ2Uo
KSBDR0ltYWdlXSwgQ0dSZWN0TWFrZSgxMCwgMTAsIDIxNSwgMTc0KSB9OworICAgIEltYWdlQW5h
bHlzaXNNYXJrdXBTd2l6emxlciBzd2l6emxlciB7IGljb25JbWFnZSgpLmF1dG9yZWxlYXNlKCks
IENHUmVjdE1ha2UoMTAsIDEwLCAyMTUsIDE3NCkgfTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGNy
ZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCk7CiAgICAgYXV0byBp
bnB1dERlbGVnYXRlID0gYWRvcHROUyhbVGVzdElucHV0RGVsZWdhdGUgbmV3XSk7CkBAIC00MTcs
NyArNDMwLDcgQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIE1lbnVDb250cm9sbGVySXRlbXMp
CiAKIHN0YXRpYyB2b2lkIHJ1bk1hcmt1cFRlc3QoTlNTdHJpbmcgKnRlc3RQYWdlLCBOU1N0cmlu
ZyAqc2NyaXB0VG9TZWxlY3RUZXh0LCBGdW5jdGlvbjx2b2lkKFRlc3RXS1dlYlZpZXcgKiwgTlNT
dHJpbmcgKik+JiYgY2hlY2tXZWJWaWV3KQogewotICAgIEltYWdlQW5hbHlzaXNNYXJrdXBTd2l6
emxlciBzd2l6emxlciB7IFtpY29uSW1hZ2UoKSBDR0ltYWdlXSwgQ0dSZWN0TWFrZSgxMCwgMTAs
IDIxNSwgMTc0KSB9OworICAgIEltYWdlQW5hbHlzaXNNYXJrdXBTd2l6emxlciBzd2l6emxlciB7
IGljb25JbWFnZSgpLmF1dG9yZWxlYXNlKCksIENHUmVjdE1ha2UoMTAsIDEwLCAyMTUsIDE3NCkg
fTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9u
RW5oYW5jZW1lbnRzKCk7CiAgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbVGVzdElu
cHV0RGVsZWdhdGUgbmV3XSk7CkBAIC00NjEsNiArNDc0LDM4IEBAIFRFU1QoSW1hZ2VBbmFseXNp
c1Rlc3RzLCBQZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cFdpdGhXZWJQSW1hZ2VzKQogCiAjZW5k
aWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpICYmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQorCitURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgTWFya3Vw
SW1hZ2VJdGVtSW5TZXJ2aWNlc01lbnUpCit7CisgICAgSW1hZ2VBbmFseXNpc01hcmt1cFN3aXp6
bGVyIHN3aXp6bGVyIHsgaWNvbkltYWdlKCkuYXV0b3JlbGVhc2UoKSwgQ0dSZWN0TWFrZSgxMCwg
MTAsIDIxNSwgMTc0KSB9OworCisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhU
ZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMoKTsKKyAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6
WUVTXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJpbWFn
ZS1jb250cm9scyJdOworICAgIFtbd2ViVmlldyB3aW5kb3ddIG9yZGVyRnJvbnRSZWdhcmRsZXNz
XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAid2FpdEZvckFuZENsaWNrSW1h
Z2VDb250cm9scygpIiBhcmd1bWVudHM6bmlsIGluRnJhbWU6bmlsIGluQ29udGVudFdvcmxkOldL
Q29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgfV07CisKKyAgICBfX2Js
b2NrIGJvb2wgZm91bmRNYXJrdXBJbWFnZUl0ZW0gPSBmYWxzZTsKKyAgICBSZXRhaW5QdHIgdGlt
ZXIgPSBbTlNUaW1lciB0aW1lcldpdGhUaW1lSW50ZXJ2YWw6MC4xIHJlcGVhdHM6WUVTIGJsb2Nr
Ol4oTlNUaW1lciAqKSB7CisgICAgICAgIE5TTWVudSAqbWVudSA9IFt3ZWJWaWV3IF9hY3RpdmVN
ZW51XTsKKyAgICAgICAgZm9yIChOU01lbnVJdGVtICppdGVtIGluIG1lbnUuaXRlbUFycmF5KSB7
CisgICAgICAgICAgICBpZiAoW2l0ZW0udGl0bGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmNv
bnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKV0pIHsKKyAgICAgICAgICAgICAgICBmb3Vu
ZE1hcmt1cEltYWdlSXRlbSA9IHRydWU7CisgICAgICAgICAgICAgICAgW21lbnUgY2FuY2VsVHJh
Y2tpbmddOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfV07CisKKyAgICBbTlNSdW5Mb29wLm1haW5SdW5Mb29wIGFkZFRpbWVyOnRpbWVyLmdl
dCgpIGZvck1vZGU6TlNFdmVudFRyYWNraW5nUnVuTG9vcE1vZGVdOworICAgIFV0aWw6OnJ1bigm
Zm91bmRNYXJrdXBJbWFnZUl0ZW0pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykgJiYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2Ut
Y29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1h
Z2UtY29udHJvbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWM5ZTQxODM4NGVmNDQyZjcxNzg2NDhkOGU0
NWE3NGU1NTEzOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CithZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgKCkgPT4geworICAgIGlmICghd2luZG93LkhUTUxBdHRhY2htZW50RWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50LmdldEF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKTsKK30pOworCitmdW5jdGlv
biBzZXJ2aWNlc0NvbnRyb2xCdXR0b24oKQoreworICAgIHJldHVybiBpbnRlcm5hbHMuc2hhZG93
Um9vdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSkuZ2V0RWxlbWVudEJ5SWQoImltYWdl
LWNvbnRyb2xzLWJ1dHRvbiIpOworfQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yQW5kQ2xpY2tJ
bWFnZUNvbnRyb2xzKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJl
dHVybjsKKworICAgIGxldCBidXR0b24gPSBudWxsOworICAgIGRvIHsKKyAgICAgICAgYXdhaXQg
bmV3IFByb21pc2UocmVxdWVzdEFuaW1hdGlvbkZyYW1lKTsKKyAgICAgICAgYnV0dG9uID0gc2Vy
dmljZXNDb250cm9sQnV0dG9uKCk7CisgICAgfSB3aGlsZSAoIWJ1dHRvbik7CisgICAgYnV0dG9u
LmNsaWNrKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PjxpbWcgc3JjPSJpY29uLnBu
ZyI+PC9pbWc+PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>