<?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>87920</bug_id>
          
          <creation_ts>2012-05-30 20:31:52 -0700</creation_ts>
          <short_desc>[chromium] Software compositor initialization and base classes</short_desc>
          <delta_ts>2012-06-01 23:07:51 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88132</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>sievers</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>637968</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-30 20:31:52 -0700</bug_when>
    <thetext>[chromium] Software compositor initialization and base classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637973</commentid>
    <comment_count>1</comment_count>
      <attachid>144978</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-30 20:37:49 -0700</bug_when>
    <thetext>Created attachment 144978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637974</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 20:40:08 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638411</commentid>
    <comment_count>3</comment_count>
      <attachid>144978</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-31 07:48:41 -0700</bug_when>
    <thetext>Comment on attachment 144978
Patch

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

nice!

&gt; Source/WebCore/platform/graphics/chromium/ManagedTexture.cpp:126
&gt; +    if (!context3D) {
&gt; +        // ASSERT(false);

How come the assert is commented out here, and in a number of other places?

Also, ASSERT(false) is generally done via ASSERT_NOT_REACHED() I think, or assert on opposite thing as in the if, before doing the if()return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638516</commentid>
    <comment_count>4</comment_count>
      <attachid>144978</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-31 09:57:53 -0700</bug_when>
    <thetext>Comment on attachment 144978
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:79
&gt; +class CCRenderer {

Please put this in a separate file.  Same with the definition.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:99
&gt; +    const FloatQuad&amp; sharedGeometryQuad() const { return m_sharedGeometryQuad; }

Does this belong in the base class?  It seems like a GL implementation detail.  Are you really planning to use this for software mode?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:122
&gt; +    static void toGLMatrix(float*, const TransformationMatrix&amp;);

Same with this.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:132
&gt; +    virtual void drawTexturedQuad(const TransformationMatrix&amp; layerMatrix,
&gt; +                          float width, float height, float opacity, const FloatQuad&amp;,
&gt; +                          int matrixLocation, int alphaLocation, int quadLocation) = 0;

Same with this.

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureSubImage.cpp:95
&gt; +    if (!context3D) {
&gt; +        // ASSERT(false);
&gt; +        return;
&gt; +    }

I&apos;m guessing that these are just early outs so that you can incrementally get software compositing working.  If so, can you remove the commented assert and instead add a &quot;FIXME: enable this path for software compositing&quot; or some such, here and in a number of other places in the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638770</commentid>
    <comment_count>5</comment_count>
      <attachid>144978</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-31 15:40:29 -0700</bug_when>
    <thetext>Comment on attachment 144978
Patch

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

This does end up being pretty nice, I think it&apos;ll definitely work out.  Some things need addressing of the more nitpicky variety.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:252
&gt; +                                             PassRefPtr&lt;CCGraphicsContext&gt; context,

Why does LRC need a CCGraphicsContext? It seems to me like it&apos;d make more sense for whoever constructs a LRC to have already extracted the GraphicsContext3D and pass that in, since they&apos;ve clearly already decided to use the GC3D-specific CCRenderer implementation.  I don&apos;t think we should need any changes in the implementation of any LayerRendererChromium functions due to CCGraphicsContext

&gt;&gt; Source/WebCore/platform/graphics/chromium/ManagedTexture.cpp:126
&gt;&gt; +        // ASSERT(false);
&gt; 
&gt; How come the assert is commented out here, and in a number of other places?
&gt; 
&gt; Also, ASSERT(false) is generally done via ASSERT_NOT_REACHED() I think, or assert on opposite thing as in the if, before doing the if()return.

What Dana says is truth. Also, normally we just ASSERT() our invariants and keep going, we don&apos;t add a release mode branch for it if we expect it to be a &quot;can never happen&quot; scenario. If we want to make sure we explicitly crash instead of potentially doing weird things we add CRASH() instead of just return, but that&apos;s rare

&gt; Source/WebCore/platform/graphics/chromium/cc/CCGraphicsContext.h:32
&gt; +#if USE(ACCELERATED_COMPOSITING)

I&apos;d not bother with this guard - we&apos;re in the chromium compositor directory, so obviously we have accelerated_compositing enabled. We can&apos;t even compile the chromium port these days without USE(ACCELERATED_COMPOSITING) and I don&apos;t think we will ever want to, so having the guard is just line noise

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:552
&gt; +    if (!context3d) {
&gt; +        ASSERT(false);
&gt; +        return false;

same comments here RE assert()s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639066</commentid>
    <comment_count>6</comment_count>
      <attachid>145234</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 01:02:57 -0700</bug_when>
    <thetext>Created attachment 145234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639071</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 01:08:13 -0700</bug_when>
    <thetext>All done.


&gt; Why does LRC need a CCGraphicsContext? It seems to me like it&apos;d make more sense for whoever constructs a LRC to have already extracted the GraphicsContext3D and pass that in, since they&apos;ve clearly already decided to use the GC3D-specific CCRenderer implementation.  I don&apos;t think we should need any changes in the implementation of any LayerRendererChromium functions due to CCGraphicsContext

I needed it because some holders of CCRenderer assumed they could get a CCGraphicsContext from it.  But there weren&apos;t too many, mainly CCLayerImpl::willDraw() overriders and CCLayerTreeHostImpl.  I changed to keep around an extra CCGraphicsContext ref in CCLayerTreeHostImpl instead.

&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/ManagedTexture.cpp:126
&gt; &gt;&gt; +        // ASSERT(false);
&gt; &gt; 
&gt; &gt; How come the assert is commented out here, and in a number of other places?
&gt; &gt; 
&gt; &gt; Also, ASSERT(false) is generally done via ASSERT_NOT_REACHED() I think, or assert on opposite thing as in the if, before doing the if()return.
&gt; 
&gt; What Dana says is truth. Also, normally we just ASSERT() our invariants and keep going, we don&apos;t add a release mode branch for it if we expect it to be a &quot;can never happen&quot; scenario. If we want to make sure we explicitly crash instead of potentially doing weird things we add CRASH() instead of just return, but that&apos;s rare

OK, I added an early return with a FIXME in all the places I had that, except I put a CRASH() in WebViewImpl createContext functions, because I want to be alerted if some random component tries to create a context3D in software mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639652</commentid>
    <comment_count>8</comment_count>
      <attachid>145363</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 13:01:24 -0700</bug_when>
    <thetext>Created attachment 145363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639653</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 13:01:39 -0700</bug_when>
    <thetext>Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639715</commentid>
    <comment_count>10</comment_count>
      <attachid>145363</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-01 14:25:42 -0700</bug_when>
    <thetext>Comment on attachment 145363
Patch

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

R=me

&gt; Source/WebCore/platform/graphics/chromium/cc/CCGraphicsContext.h:36
&gt; +class CCGraphicsContext : public RefCounted&lt;CCGraphicsContext&gt; {

As a follow-up, could you please make this class be single-ownership instead of refcounted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639722</commentid>
    <comment_count>11</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 14:33:05 -0700</bug_when>
    <thetext>Agreed, I&apos;m somewhat uneasy about all the refcounting as well.  I put that on my todo list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639761</commentid>
    <comment_count>12</comment_count>
      <attachid>145363</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 15:03:45 -0700</bug_when>
    <thetext>Comment on attachment 145363
Patch

Rejecting attachment 145363 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:

Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp:65: note:   because the following virtual functions are pure within &apos;&lt;unnamed&gt;::MockLayerTreeHostClient&apos;:
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:63: note: 	virtual WTF::PassRefPtr&lt;WebCore::GraphicsContext3D&gt; WebCore::CCLayerTreeHostClient::createContext3D()
make: *** [out/Debug/obj.target/webkit_unit_tests/Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/12873400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639775</commentid>
    <comment_count>13</comment_count>
      <attachid>145388</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 15:16:14 -0700</bug_when>
    <thetext>Created attachment 145388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639777</commentid>
    <comment_count>14</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 15:16:45 -0700</bug_when>
    <thetext>Rebased again and resolved the conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639782</commentid>
    <comment_count>15</comment_count>
      <attachid>145388</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-01 15:21:00 -0700</bug_when>
    <thetext>Comment on attachment 145388
Patch

Take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639926</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-01 19:38:17 -0700</bug_when>
    <thetext>It looks like some layout tests are failing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639943</commentid>
    <comment_count>17</comment_count>
      <attachid>145388</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 20:49:24 -0700</bug_when>
    <thetext>Comment on attachment 145388
Patch

Rejecting attachment 145388 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
FAILED at 69.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp.rej
patching file Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp
patching file Source/WebKit/chromium/tests/TextureCopierTest.cpp
patching file Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;James Robi...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12859885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639945</commentid>
    <comment_count>18</comment_count>
      <attachid>145426</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-01 21:39:07 -0700</bug_when>
    <thetext>Created attachment 145426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639958</commentid>
    <comment_count>19</comment_count>
      <attachid>145426</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 23:07:44 -0700</bug_when>
    <thetext>Comment on attachment 145426
Patch

Clearing flags on attachment: 145426

Committed r119313: &lt;http://trac.webkit.org/changeset/119313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639959</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 23:07:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144978</attachid>
            <date>2012-05-30 20:37:49 -0700</date>
            <delta_ts>2012-06-01 01:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87920-20120530203749.patch</filename>
            <type>text/plain</type>
            <size>117130</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWE0M2MzMzI5ZWVm
MmZiZmMxYWZmNmU3YjY4YWMwYjMzNzczYjM5Li5lMWY5ODMzZDhjNzIyODI3Yzg1MGQ5ODFlM2Qy
NmM4MjFjMGQ3N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0zMCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNl
dHRpbmcgdG8gZm9yY2Ugc29mdHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlzIG1vZGUsCisgICAg
ICAgIG5vIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoU2V0dGlu
Z3MpOgorCiAyMDEyLTA1LTI1ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIERlcHJlY2F0ZSBGaWxlVXRpbGl0aWVzOjpnZXRGaWxlU2l6
ZSBhbmQgZ2V0RmlsZU1vZGlmaWVkVGltZSBpbiBmYXZvciBvZiBnZXRGaWxlTWV0YWRhdGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxMTAxMjQ3MmI0YTc0MDU1MTg3MGQ0YWNlY2NhNDkyYzVjYjYwNmI4Li42YjQx
YTFkMDNhZjgxMDU2ZjRiYTI4MmJiYTJjMTFhYTc4NzA2ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTU0IEBACisyMDEyLTA1LTMwICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbY2hyb21pdW1dIFNvZnR3YXJlIGNvbXBvc2l0b3IgaW5pdGlhbGl6YXRp
b24gYW5kIGJhc2UgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGludHJvZHVjZXMgbmV3IHdyYXBwZXIgY2xhc3MgQ0NHcmFwaGljc0Nv
bnRleHQgYW5kIGJhc2UgY2xhc3MKKyAgICAgICAgQ0NSZW5kZXJlciB3aGljaCB3aWxsIGJlIHVz
ZWQgZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nIHN1cHBvcnQuCisgICAgICAgIElmIG5vIEdyYXBo
aWNzQ29udGV4dDNEIGlzIGF2YWlsYWJsZSwgYXNzZXJ0IG9yIGVhcmx5IHJldHVybgorICAgICAg
ICB3aGVyZSBpdCdzIHVzZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoTm8tb3AgY2hhbmdl
IGluIDNkIG1vZGUuKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAg
ICAgICAgKFRleHR1cmUpOgorICAgICAgICAoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjp0b0dMTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6Q0NSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQbGFu
ZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChD
Q1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyZXI6On5DQ1JlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyZXI6OmNjQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
Ojp2aWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6dmlld3BvcnRX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjp2aWV3cG9ydEhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpwcm9qZWN0aW9uTWF0cml4KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyZXI6OndpbmRvd01hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlcmVyOjpzaGFyZWRHZW9tZXRyeVF1YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRl
eHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAg
ICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6CisgICAgICAgIChUaHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhp
Y3NDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ0NHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250
ZXh0OjpjcmVhdGUzRCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29u
dGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1Nl
dHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NQ
cm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6
OndpbGxEcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1
cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6
CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlk
ZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllcklt
cGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1w
bDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwog
MjAxMi0wNS0yOSAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVcGRhdGUgbGFiZWwgZm9yIGJsYWNrbGlzdGVkIHBsdWctaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggN2NkNDNiYzkyZTVkYTEyOGRhMzdhYjhhNGI4ZGYwYWViYjI1MGVmNS4uOTJk
ZDI4Mjc5YjVjZTlhNzdlMjRiZWMzM2Q2OWQ4Y2NhNjQxZTI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMi0wNS0zMCAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBTb2Z0d2FyZSBjb21wb3Np
dG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNldHRpbmcgdG8gZm9yY2Ugc29m
dHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlzIG1vZGUsCisgICAgICAgIG5vIEdyYXBoaWNzQ29u
dGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0ZWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0
dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29udGV4dCk6CisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0lt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEZvcmNlU29mdHdhcmVD
b21wb3NpdGluZyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNldHRpbmdzSW1wbDo6Zm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpjcmVhdGVDb250ZXh0M0QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdDo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdDo6Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFk
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdDo6ZHJhd0xh
eWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0
ZTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRl
c3RDb21tb24uY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uLmg6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpG
YWtlVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAqIHRlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgorICAgICAgICAqIHRlc3RzL0Zha2VDQ0xheWVyVHJl
ZUhvc3RDbGllbnQuaDoKKyAgICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
LmNwcDoKKyAgICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW06OkZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW0pOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAg
KFdURjo6VEVTVCk6CisKIDIwMTItMDUtMjkgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4
IDJiMGYzMGFkZWI1ZWExYWMxOGI5YWIwZDJhMjUyM2U3YzVmZmRhMTcuLjIzZDBkNjNjZTlkZDI4
YTViNWJhZDcxMjhlYWExNDlhOTczYjlkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC01MCw2ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgU2V0dGluZ3MgewogICAgICAgICBTZXR0aW5ncygpCiAgICAgICAgICAg
ICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKKyAgICAgICAgICAgICwgZm9yY2VTb2Z0d2Fy
ZUNvbXBvc2l0aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkK
ICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAg
LCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgICAg
ICB9CiAKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CisgICAgICAgIGJvb2wgZm9y
Y2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAgICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAg
ICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICAgICAgYm9vbCBzaG93UGFpbnRS
ZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggZjU1YzA2MjE2YWRlMTJkMDgxYTQ1OTgyMThjOTEyYjM1YzVkMmY2YS4uODI0
NWFhOWU2ODg0ODYwYjZkMmIxZmU5ZjQwNGNkNWI3NGQyZTEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQog
ewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0
ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
CiB7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxs
b2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KQEAgLTk1LDcgKzk1
LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBwYWludENvbnRlbnRzKCpjYW52YXNQ
YWludGVyLmNvbnRleHQoKSwgKmNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKSwgY29udGVudFJl
Y3QsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogfQogCi12b2lkIEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0
dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4
dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRv
TG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMDRjYzQxYTI0NjI1YTcwODMxMWVhYjdjNGVi
OTRlMzExODkwZTUxYi4uNmZmN2M2Mzk2YWMwNjhmZmVmNGY1OGE3MWY4YTE0OWYxMTk3Y2MwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAg
dmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0
ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVs
Rm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNT
Y2FsZSwgSW50UmVjdCYgcmVzdWx0aW5nT3BhcXVlUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4
dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVy
ZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShi
b29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBlOWMyNjE5YjA2NGMwZTg0YjU1MmQzOGJl
NGNlNjUwNTZjMGMxNTFlLi5iNzU5MjUyZTFmN2FiMmFiZGM2YWFhYWNkOTA5ZGE4NzlmNDdlZmRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0
IEludFJlYwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KCZjYW52YXMs
IHNvdXJjZVJlY3QpOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgdGV4dHVyZSgpLT5iaW5kVGV4
dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChT
a0NhbnZhcyogY2FudmEKICAgICBkcmF3UGljdHVyZShjYW52YXMpOwogfQogCi12b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBj
b25zdCB1aW50OF90KiBwaXhlbHMpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQocGl4ZWxz
LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCmluZGV4IGJiMTQzMTAwNDNhZGRlYTU4ZTI2ZjExNDMzYmQ5YTU1YzM1YWFjYWMu
LjUwOTdjZTBiMmYwMDczZTM3MjM3NTQzMTEzN2E1MGU2NWZmNDZhZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
Pik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEND
R3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVS
ZWN0KTsKICAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVp
bnQ4X3QqIHBpeGVscyk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29u
dGV4dCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVp
bnQ4X3QqIHBpeGVscyk7CiAKIHByaXZhdGU6CiAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1
c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggNGZiNGI4ZDAxNzRlNDIwNWY0NzEzMjZhMmU4OGZlYzM2ZGFkYTQ0OC4uYWJhOWNh
NDc5OWFmOTc5ZjEzZGUxZGY3ZDdiNTZhMzM5Y2Y1MTQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzMsNyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hy
b21pdW07CiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCAwY2EzNTRkNzRhMGVhZGMxZjcxYzBiMzUyNGRjZjc3YWM5MTY4Nzg1Li5m
MDE4ODliNGFlNzg5MjE5ZTY0NDZlYzRiNmRkNjBlMmE4OGQzNDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJl
Y3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
IH0KQEAgLTk2LDE1ICs5NiwxOCBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVy
biBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lk
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4
dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29u
dGV4dDNEKCk7CisgICAgQVNTRVJUKGNvbnRleHQzZCk7CisKICAgICAvLyBNYWtlIHN1cmUgZ2Fu
ZXNoIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KLSAgICBjb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBjb250ZXh0M2QtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIC8v
IE5vdGlmeSBnYW5lc2ggdG8gc3luYyBpdHMgaW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4
dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOworICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0
KCktPnJlc2V0Q29udGV4dCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZh
cyB0byBkcmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxl
cmF0ZWRDYW52YXMoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKKyAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQzZCwgYWxsb2Nh
dG9yLCB0ZXh0dXJlKTsKIAogICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhlIHRleHR1
cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0IGNhbiBmbGlwCiAgICAgLy8gdGhlIGZpbmFsIGNv
bXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdlCkBA
IC0xMjAsNyArMTIzLDcgQEAgdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ28KICAgICBkcmF3UGljdHVy
ZShjYW52YXMuZ2V0KCkpOwogCiAgICAgLy8gRmx1c2ggZ2FuZXNoIGNvbnRleHQgc28gdGhhdCBh
bGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCi0gICAgY29udGV4
dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CisgICAgY29udGV4dDNkLT5nckNvbnRleHQoKS0+Zmx1
c2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCA1MDM5YmE5MDJjMWU1ZDFmZWZiYmI1MTNmYzg1Mzg2MjY1ZGEwMzcwLi5lYzRkMDg4
ZjIzODliNTI2MjQ3Yzg4MjVjMmFmY2Q2NWRiNTY4MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVB
bGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJl
VXBkYXRlcjsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJl
TWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2Nh
dG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQ0YTQzMDEy
ZDQ1NmI5MTAwMGRhZjcyZTIxYzViZGVhZGI1MzViYzUuLjBlY2VlYzYyNjYwZjg4M2EyMzliOGQy
NjgyNWJkYjhhYzAzODM3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICAgICAgewog
ICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwg
YWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQpA
QCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1h
Z2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewogICAgICAgICB0ZXh0dXJlLT5iaW5kVGV4
dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggOWJlMDI3
OWUyYWViY2Q3Y2RjN2M2OGJkMDI1ZWJlMDg0MWMxNzVkMy4uNTVmN2Y1MWFjYzNhMzM3MDdhMTI2
MjNjNzI4YWRjYTEzYzM3YmM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNjIsNyArNjIsNiBA
QCBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIGNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07CiAKIC8vIEJhc2Ug
Y2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJp
dmVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGE5ZjNk
NDY2NWQzNmU1MjhkM2ZlM2ZjOTFjODYwMjVmNGU5YTg3ZWQuLmVjMTY5ZjljZTNiMGY3ZTU1YjJh
M2NhMjZlZWUyNDljYjg2MDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcApAQCAtNzMsNiArNzMsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit2b2lkIENDUmVuZGVyZXI6OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5l
ZCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCit7CisgICAgZmxhdHRlbmVkWzBdID0g
bS5tMTEoKTsKKyAgICBmbGF0dGVuZWRbMV0gPSBtLm0xMigpOworICAgIGZsYXR0ZW5lZFsyXSA9
IG0ubTEzKCk7CisgICAgZmxhdHRlbmVkWzNdID0gbS5tMTQoKTsKKyAgICBmbGF0dGVuZWRbNF0g
PSBtLm0yMSgpOworICAgIGZsYXR0ZW5lZFs1XSA9IG0ubTIyKCk7CisgICAgZmxhdHRlbmVkWzZd
ID0gbS5tMjMoKTsKKyAgICBmbGF0dGVuZWRbN10gPSBtLm0yNCgpOworICAgIGZsYXR0ZW5lZFs4
XSA9IG0ubTMxKCk7CisgICAgZmxhdHRlbmVkWzldID0gbS5tMzIoKTsKKyAgICBmbGF0dGVuZWRb
MTBdID0gbS5tMzMoKTsKKyAgICBmbGF0dGVuZWRbMTFdID0gbS5tMzQoKTsKKyAgICBmbGF0dGVu
ZWRbMTJdID0gbS5tNDEoKTsKKyAgICBmbGF0dGVuZWRbMTNdID0gbS5tNDIoKTsKKyAgICBmbGF0
dGVuZWRbMTRdID0gbS5tNDMoKTsKKyAgICBmbGF0dGVuZWRbMTVdID0gbS5tNDQoKTsKK30KKwog
bmFtZXNwYWNlIHsKIAogc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9ydGhvTWF0cml4KGZs
b2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCkKQEAgLTE1NSw3
ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBlbmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4
dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KQEAgLTIx
Miw3ICsyMzIsNyBAQCBwcml2YXRlOgogfTsKIAogCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQs
IFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQorUGFzc093blB0
cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExh
eWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0
dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVy
KGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0
dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5pdGlhbGl6
ZSgpKQpAQCAtMjIxLDIwICsyNDEsMjcgQEAgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHIKICAgICBy
ZXR1cm4gbGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CiB9CiAKK0NDUmVuZGVyZXI6OkNDUmVuZGVy
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8Q0NHcmFw
aGljc0NvbnRleHQ+IGNvbnRleHQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2Nj
Q29udGV4dChjb250ZXh0KQorICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0w
LjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCit7Cit9CisKIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVXBs
b2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKLSAgICA6IG1fY2xpZW50KGNsaWVu
dCkKKyAgICA6IENDUmVuZGVyZXIoY2xpZW50LCBjb250ZXh0KQogICAgICwgbV9jdXJyZW50UmVu
ZGVyU3VyZmFjZSgwKQogICAgICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAgICAsIG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAg
LCBtX2NvbnRleHQoY2NDb250ZXh0KCktPmNvbnRleHQzRCgpKQogICAgICwgbV9kZWZhdWx0UmVu
ZGVyU3VyZmFjZSgwKQotICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVm
LCAtMC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBtX2lzVmlld3BvcnRDaGFuZ2VkKGZhbHNlKQog
ICAgICwgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKGZhbHNlKQogICAgICwgbV90ZXh0dXJlVXBs
b2FkZXJTZXR0aW5nKHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CisgICAgQVNTRVJUKG1fY29u
dGV4dC5nZXQoKSk7CiB9CiAKIGNsYXNzIENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyIDogcHVi
bGljIEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrIHsKQEAgLTkzOSw3ICs5
NjYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKGNv
bnN0IENDVmlkZW9EcmF3UXVhZCogcXVhZCwgY29ucwogewogICAgIENDVmlkZW9MYXllckltcGw6
OlRleHR1cmUmIHRleHR1cmUgPSBxdWFkLT50ZXh0dXJlcygpW2luZGV4XTsKICAgICBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpOwot
ICAgIHRleHR1cmUubV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0KCksIGFsbG9jYXRvcik7
CisgICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dCgpLCBhbGxvY2F0
b3IpOwogICAgIEdDM0RlbnVtIGZvcm1hdCA9IHRleHR1cmUubV90ZXh0dXJlLT5mb3JtYXQoKTsK
ICAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpOwogCkBA
IC0xMDc5LDcgKzExMDYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRz
VXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiBodWRUZXh0dXJlLCBjb25zdAogICAgIGNvbnN0IEhl
YWRzVXBEaXNwbGF5UHJvZ3JhbSogcHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwog
ICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTApKTsKLSAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRleHQuZ2V0KCksIHJl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0
dXJlKGNjQ29udGV4dCgpLCByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7
CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCkBAIC0xMTA0LDI2ICsxMTMxLDYg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSgpCiAgICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG0pCi17Ci0gICAgZmxhdHRlbmVkWzBdID0gbS5tMTEoKTsKLSAgICBmbGF0
dGVuZWRbMV0gPSBtLm0xMigpOwotICAgIGZsYXR0ZW5lZFsyXSA9IG0ubTEzKCk7Ci0gICAgZmxh
dHRlbmVkWzNdID0gbS5tMTQoKTsKLSAgICBmbGF0dGVuZWRbNF0gPSBtLm0yMSgpOwotICAgIGZs
YXR0ZW5lZFs1XSA9IG0ubTIyKCk7Ci0gICAgZmxhdHRlbmVkWzZdID0gbS5tMjMoKTsKLSAgICBm
bGF0dGVuZWRbN10gPSBtLm0yNCgpOwotICAgIGZsYXR0ZW5lZFs4XSA9IG0ubTMxKCk7Ci0gICAg
ZmxhdHRlbmVkWzldID0gbS5tMzIoKTsKLSAgICBmbGF0dGVuZWRbMTBdID0gbS5tMzMoKTsKLSAg
ICBmbGF0dGVuZWRbMTFdID0gbS5tMzQoKTsKLSAgICBmbGF0dGVuZWRbMTJdID0gbS5tNDEoKTsK
LSAgICBmbGF0dGVuZWRbMTNdID0gbS5tNDIoKTsKLSAgICBmbGF0dGVuZWRbMTRdID0gbS5tNDMo
KTsKLSAgICBmbGF0dGVuZWRbMTVdID0gbS5tNDQoKTsKLX0KLQogdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdNYXRyaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQm
IHF1YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKQpAQCAt
MTI4Myw3ICsxMjkwLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVm
ZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QKICAgICBpZiAoIXRleHR1
cmUtPnJlc2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRl
eHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIHRl
eHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yLmdldCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNvcHlUZXhJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0ZXh0dXJlLT5mb3JtYXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVJlY3Qu
eCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53aWR0aCgpLCBkZXZpY2VSZWN0LmhlaWdo
dCgpLCAwKSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzI1LDcgKzEzMzIsNyBAQCBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0
dXJlKiB0ZXh0dXJlLCBjbwogewogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFt
ZWJ1ZmZlcklkKSk7CiAKLSAgICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRl
eHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIHRl
eHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29udGV4dCgpLCBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBp
ZiAobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDFhMmViZWQwZTg2Yjk5ZjU4
MTk2ODMxYmNlY2U0NjMwMTQ3MmM5NTkuLjdmZTA3ZmI2ZTEyYWE0MmVkMGZhNGJlNjNlYzhmMDM4
Yjg2N2M2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC03Niw2NSAr
NzYsMTIwIEBAIHB1YmxpYzoKIAogZW51bSBUZXh0dXJlVXBsb2FkZXJPcHRpb24geyBUaHJvdHRs
ZWRVcGxvYWRlciwgVW50aHJvdHRsZWRVcGxvYWRlciB9OwogCitjbGFzcyBDQ1JlbmRlcmVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlcmVyKTsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5DQ1JlbmRlcmVyKCkgeyB9CisKKyAgICBDQ0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jY0NvbnRleHQuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgY29u
c3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwor
CisgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dC0+c2V0dGluZ3MoKTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyBy
ZXR1cm4gbV9jbGllbnQtPmRldmljZVZpZXdwb3J0U2l6ZSgpOyB9CisgICAgaW50IHZpZXdwb3J0
V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0aCgpOyB9CisgICAgaW50IHZpZXdw
b3J0SGVpZ2h0KCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7IH0KKworICAgIHZp
cnR1YWwgdm9pZCB2aWV3cG9ydENoYW5nZWQoKSA9IDA7CisKKyAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlv
bk1hdHJpeDsgfQorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgo
KSBjb25zdCB7IHJldHVybiBtX3dpbmRvd01hdHJpeDsgfQorCisgICAgY29uc3QgRmxvYXRRdWFk
JiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVh
ZDsgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFj
ZSogZGVmYXVsdFJlbmRlclN1cmZhY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlbmRl
clBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hE
cmF3aW5nRnJhbWUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRzVXBEaXNwbGF5
KE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkgPSAwOworCisgICAgLy8g
d2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvTm9PcCgpID0gMDsKKyAgICAvLyBwdXRzIGJhY2ti
dWZmZXIgb25zY3JlZW4KKyAgICB2aXJ0dWFsIGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVj
dCYgc3ViQnVmZmVyKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhl
bHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgPSAwOworCisgICAgdmlydHVhbCBUZXh0
dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVGV4dHVyZUNvcGllciogdGV4dHVyZUNvcGllcigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3Io
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSBjb25zdCA9IDA7CisKKyAgICBzdGF0aWMgdm9pZCB0b0dMTWF0cml4KGZs
b2F0KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDb250ZXh0TG9zdCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBsYXllck1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRRdWFkJiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFM
b2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbikgPSAwOworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0
IENDUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4pOworCisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBtX2Ns
aWVudDsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY2NDb250ZXh0OworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3dpbmRvd01hdHJpeDsKKyAgICBGbG9hdFF1YWQgbV9zaGFyZWRHZW9tZXRyeVF1
YWQ7Cit9OworCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBjb21wb3NpdGVkIHJl
bmRlciBsYXllcnMgdXNpbmcgR0wuCi1jbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0geworY2xh
c3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJl
ckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVV
cGxvYWRlck9wdGlvbik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAKLSAgICB+TGF5ZXJSZW5k
ZXJlckNocm9taXVtKCk7CisgICAgdmlydHVhbCB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAK
LSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
LT5zZXR0aW5ncygpOyB9Ci0gICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2Fw
YWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CiAKICAgICBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCgpOwotICAgIGJvb2wgY29udGV4dFN1cHBvcnRzTWFwU3ViKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYXBhYmlsaXRpZXMudXNpbmdNYXBTdWI7IH0KIAotICAgIHZvaWQgdmlld3BvcnRD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0Q2hhbmdlZCgpIE9WRVJSSURFOwog
Ci0gICAgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1cmZhY2UqIGRlZmF1bHRSZW5k
ZXJTdXJmYWNlKTsKLSAgICB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyop
OwotICAgIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCk7CisgICAgdmlydHVhbCB2b2lkIGJlZ2lu
RHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmZhY2UpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3Mq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgT1ZFUlJJ
REU7CiAKLSAgICB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0
IEludFNpemUmIGh1ZFNpemUpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVhZHNVcERpc3BsYXko
TWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiBodWRTaXplKSBPVkVSUklERTsKIAogICAg
IC8vIHdhaXRzIGZvciByZW5kZXJpbmcgdG8gZmluaXNoCi0gICAgdm9pZCBmaW5pc2goKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIGRvTm9PcCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkb05vT3AoKSBPVkVSUklERTsKICAgICAvLyBwdXRzIGJhY2tidWZm
ZXIgb25zY3JlZW4KLSAgICBib29sIHN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZl
cik7CisgICAgdmlydHVhbCBib29sIHN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZl
cikgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgdm9pZCBkZWJ1Z0dMQ2FsbChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsK
IAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4OyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9
Ci0KICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQotICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hh
cmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0K
IAogCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4
ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgYm9vbCBnZXRGcmFtZWJ1ZmZlclRl
eHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KTsKIAotICAg
IFRleHR1cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQotICAgIFRleHR1cmVD
b3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0
KCk7IH0KLSAgICBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZVVwbG9hZGVyLmdldCgpOyB9Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogcmVu
ZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlci5nZXQoKTsgfQorICAgIHZpcnR1YWwgVGV4dHVyZUNvcGllciogdGV4dHVy
ZUNvcGllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsg
fQorICAgIHZpcnR1YWwgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3RleHR1cmVVcGxvYWRlci5nZXQoKTsgfQorICAgIHZpcnR1YWwg
VGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9
CisgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci5nZXQo
KTsgfQogCi0gICAgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAK
LSAgICBib29sIGlzQ29udGV4dExvc3QoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9z
dCgpIE9WRVJSSURFOwogCi0gICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURFOwogCi0gICAgR0MzRGVudW0gYmVzdFRleHR1
cmVGb3JtYXQoKTsKLQotICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJNYXRyaXgsCisgICAgdmlydHVhbCB2b2lkIGRyYXdU
ZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2Nh
dGlvbiwgaW50IHF1YWRMb2NhdGlvbikgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBmcmll
bmQgY2xhc3MgTGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tB
ZGFwdGVyOwpAQCAtMTQyLDcgKzE5Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUZy
YW1lYnVmZmVyKCk7CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwog
CiBwcml2YXRlOgpAQCAtMTkwLDEzICsyNDUsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKICAgICB2
b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
Q2xpZW50KiBtX2NsaWVudDsKLQogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBh
YmlsaXRpZXM7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Byb2plY3Rpb25NYXRyaXg7
Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7Ci0KICAgICBDQ1JlbmRl
clN1cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZhY2U7CiAgICAgTWFuYWdlZFRleHR1cmUqIG1f
Y3VycmVudE1hbmFnZWRUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZm
ZXJJZDsKQEAgLTI5Niw4ICszNDYsNiBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNl
KiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlOwogCi0gICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0
cnlRdWFkOwotCiAgICAgYm9vbCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0Zy
YW1lYnVmZmVyRGlzY2FyZGVkOwogICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiBtX3RleHR1cmVV
cGxvYWRlclNldHRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXgg
OGZlYTM4YTY5MGM5NWNlN2EzOTg3NmI3MGMzYmQwZTY5N2IyZWI4Ni4uZjM5MDUzN2E3NTg2NWEx
MmZkZGMzOWNlZWFjNWViNzBiNGQwNWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdl
LmgiCiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50
U2l6ZSYgc3ViSW1hZ2VTaXplKQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQo
Y29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgICAgIHVwbG9h
ZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBMYXllclRleHR1cmVT
dWJJbWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFn
ZVJlY3QKIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdl
KGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1
YkltYWdlIiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3N1YkltYWdlKQpAQCAtODcsMTkgKzg3LDMx
IEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9z
dWJJbWFnZVswXTsKICAgICB9Ci0gICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RS
ZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M0QpIHsK
KyAgICAgICAgLy8gQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBj
b250ZXh0M0QtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5o
ZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxT
b3VyY2UpOwogfQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4
U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdl
Ojp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0
M0QpIHsKKyAgICAgICAgLy8gQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50
UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55
KCkgLSBpbWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEgdmlhIGEgbWFw
cGVkIHRyYW5zZmVyIGJ1ZmZlcgotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkpOworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKSk7CiAg
ICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMt
Pm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0
LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhlbERlc3QpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVN1YkltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCmluZGV4IGQ5ZjA4MzcxOWUwMWRiMDZjODg5
M2ViODg1ZWYzNzMyMzUyN2JjMDguLjRmMWM0MTUyMTRkMjMyOWFiNmU3MmNkZTFiMWYyZmUyMmYy
OGEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaApAQCAtMzYsNyArMzYsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xh
c3MgQ0NHcmFwaGljc0NvbnRleHQ7CiAKIGNsYXNzIExheWVyVGV4dHVyZVN1YkltYWdlIHsKIHB1
YmxpYzoKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWJJbWFnZVNp
emUoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgdXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdl
LCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAg
R0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCopOworICAgICAgICAgICAgICAgIEdD
M0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3ND
b250ZXh0Kik7CiAgICAgdm9pZCB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhf
dCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCopOwogCiAgICAgYm9vbCBtX3Vz
ZU1hcFRleFN1YkltYWdlOwogICAgIEludFNpemUgbV9zdWJJbWFnZVNpemU7CkBAIC02NCw0ICs2
NCwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2VuZGlmIC8vIExheWVyVGV4dHVyZVN1YkltYWdlX2gK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDVkYjdiNGM1MTJlNTZhYTQ2N2Jh
NTYzZjg0MzdlYjJmNDA5ZDdjZjAuLjYxZTQyNTllNmNjNzk3ZDgxNjkyZTA2MDk0NjJmZjNlZjE0
ZjY2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMxLDExICszMSwxMiBA
QAogCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVz
M0QuaCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJ
bnRTaXplOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKQEAgLTUwLDcgKzUxLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0
JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRU
ZXh0dXJlLmNwcAppbmRleCA5YmM3MDBkYzkwZjZlYjYxOGQxMjI0ZTU0YTIxZjkwMGMxY2NhMjVh
Li43N2YzMWFiMzM3MTViNzdhMTQ0Zjk0MWYzOTExYTc0MjQzYmJkYzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdl
ZFRleHR1cmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTcsMTYgKzExOCwy
NiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCiAgICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVU
ZXh0dXJlKGFsbG9jYXRvciwgbV90b2tlbik7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIGFsbG9j
YXRlKGFsbG9jYXRvcik7Ci0gICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M0QpIHsKKyAg
ICAgICAgLy8gQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250
ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1
cmVJZCk7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2
b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIGFsbG9jYXRl
KGFsbG9jYXRvcik7Ci0gICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7CisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAg
IGlmICghY29udGV4dDNEKSB7CisgICAgICAgIC8vIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgY29udGV4dDNELT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hN
RU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkLCAwKTsKIH0K
IAogUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gTWFuYWdlZFRleHR1cmU6OnN0ZWFsKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFn
ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5oCmluZGV4IGVkNGQ0NTBlOTY5Y2UwYWI1NDdhOWFjNTEzOGQ0YzA5M2Q4
MzlkNjIuLjhhNjU2NmMzMWY4Mjk4Y2VhZDFmYjRkMzRmYmQ1OTI3NGNmMDY3YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0
dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiAKIGNs
YXNzIE1hbmFnZWRUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYW5hZ2VkVGV4
dHVyZSk7CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGFsbG9j
YXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBiaW5k
VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lk
IGZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRv
ciopOwogCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAg
dW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9S
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCmluZGV4IDgwYThhMDNlYmE2MDZhNDI1M2JjYWU3NDg4
MjIxNDU0MDJjODU0MTIuLjdhYjliYTAwODZlMWQyMDMyYzgzMThiZDk2MDAwMDAwODRiNGJjNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Jl
bmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiRmlsdGVy
T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKaW5kZXggYTU5
MWEzMmExMTM2ODE4ODM3ZTM4NGY0ZjU0MmFmMjM2YmNiYjFiNy4uY2FhMmJkM2ZkNTk2N2JmYTI0
ODZhYTEzMGIyZDAxNmFiODFmYzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKQEAgLTYxLDEw
ICs2MSwxNiBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6On5BY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXIoKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVm
ZmVyKG1fZmJvKSk7CiB9CiAKLXZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlk
LCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBBY2Nl
bGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjY0Nv
bnRleHQsIHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBUUkFDRV9FVkVOVCgiVGV4dHVyZUNvcGllcjo6
Y29weVRleHR1cmUiLCB0aGlzLCAwKTsKIAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
ID0gY2NDb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAg
Ly8gQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIE5vdGU6
IHRoaXMgY29kZSBkb2VzIG5vdCByZXN0b3JlIHRoZSB2aWV3cG9ydCwgYm91bmQgcHJvZ3JhbSwg
MkQgdGV4dHVyZSwgZnJhbWVidWZmZXIsIGJ1ZmZlciBvciBibGVuZCBlbmFibGUuCiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fZmJvKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZGVz
dFRleHR1cmVJZCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCmluZGV4IDczYmU1ZWNhZDE2Zjg4NTUy
NTExODFkNjUyYjRkZjhjMzg0YjhiMDUuLjNhYzJkMTE5MTRmZmExNWY4ZGVjMmNhYjNkZjVjZDI4
MGEzYTZmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM3LDcgKzM4LDcgQEAgcHVibGljOgogICAgIC8vIENvcHkgdGhlIGJhc2UgbGV2ZWwgY29udGVu
dHMgb2YgfHNvdXJjZVRleHR1cmVJZHwgdG8gfGRlc3RUZXh0dXJlSWR8LiBCb3RoIHRleHR1cmUg
b2JqZWN0cwogICAgIC8vIG11c3QgYmUgY29tcGxldGUgYW5kIGhhdmUgYSBiYXNlIGxldmVsIG9m
IHxzaXplfCBkaW1lbnNpb25zLiBUaGUgY29sb3IgZm9ybWF0cyBkbyBub3QgbmVlZAogICAgIC8v
IHRvIG1hdGNoLCBidXQgfGRlc3RUZXh0dXJlSWR8IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9y
bWF0LgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoQ0NHcmFwaGljc0NvbnRl
eHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNv
bnN0IEludFNpemUmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5UZXh0dXJlQ29w
aWVyKCkgeyB9CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVk
IGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2ln
bmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCmluZGV4IGUzYjQ0ZmQ2YjE3ZjNmMmY5NDFhODZm
MmYyYjc0MGYyNjQ1MTE0OWEuLjBlYWUyZTY1ZGQwMjQ2NGNkMjBmYmYzOGZkYmI3OGVjY2RkYzg5
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9h
ZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRU
ZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QgZGVzdFJlY3QpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIuY3BwCmluZGV4IDUxODEzYzVjYjU1NjFmOTA1N2MxMjkyYzhhNWQzYWFlYzJjMWUy
MmYuLmY1Y2YyYTRlMTM5NzdiZDhhOTgzMTUxNDkwNWQzMTAzYjMyMWQzMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1
cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZv
aWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKCkKICAgICBtX3BlbmRpbmdR
dWVyaWVzLmFwcGVuZChtX2F2YWlsYWJsZVF1ZXJpZXMudGFrZUZpcnN0KCkpOwogfQogCi12b2lk
IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QgZGVzdFJlY3QpCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4
dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpCiB7CiAgICAgdGV4dHVyZS0+dXBk
YXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90
dGxlZFRleHR1cmVVcGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggYTcyMDU4NjQ5YWExMWVi
NmU3NWNhZTg5OWFmYWRjOTcyYmI3MmMyZC4uZGVhM2QzNTRjNWIxZTVlMzAwZmQwODIyYWVkNzFm
ZWFlZWE4YTE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGVuZFVwbG9hZHMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
IGRlc3RSZWN0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dy
YXBoaWNzQ29udGV4dCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0
KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBRdWVyeSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NH
cmFwaGljc0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2MwYzAwNjg5MTNlMzNiMTVhYWM4MzgwZGZj
NTk2YmNhNTJhZjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDQ0dyYXBoaWNzQ29udGV4dF9oCisjZGVmaW5lIENDR3JhcGhpY3ND
b250ZXh0X2gKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKKworY2xhc3MgQ0NH
cmFwaGljc0NvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDQ0dyYXBoaWNzQ29udGV4dD4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGUy
RCgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENDR3JhcGhpY3NDb250ZXh0
KCkpOworICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY3Jl
YXRlM0QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNEKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0dyYXBoaWNzQ29udGV4dChjb250ZXh0M0QpKTsK
KyAgICB9CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKCkgeyByZXR1cm4gbV9j
b250ZXh0M0QuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBDQ0dyYXBoaWNzQ29udGV4dCgpIHsg
fQorICAgIGV4cGxpY2l0IENDR3JhcGhpY3NDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQzRCkKKyAgICAgICAgOiBtX2NvbnRleHQzRChjb250ZXh0M0QpIHsgfQor
CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKK307CisKK30KKwor
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBDQ0dyYXBo
aWNzQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDdkNDlm
Nzk4ZDFhYzdkNDhiZjc3NDM0N2JiYmM5N2ZiYTA4ZjNhMTYuLjA5OTk3ZDg4NTRlNWNhMmExNDk3
NGRmNjFiZTkwODA3YjYzNDZiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3Bw
CkBAIC02OSw4ICs2OSwxMiBAQCBib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3Rz
KGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogCiB2b2lkIENDSGVhZHNVcERpc3Bs
YXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiB7Ci0gICAg
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKTsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKTsKKyAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5
ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNjQ29udGV4dCgpLT5jb250ZXh0M0QoKTsKKyAgICBp
ZiAoIWNvbnRleHQpIHsKKyAgICAgICAgLy8gQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICBpZiAoIW1faHVkVGV4dHVyZSkKICAgICAgICAgbV9odWRUZXh0dXJlID0g
TWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVy
ZU1hbmFnZXIoKSk7CiAKQEAgLTEwMSw5ICsxMDUsOSBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6
OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgewogICAg
ICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7CiAKLSAgICAg
ICAgbV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBsYXllclJlbmRlcmVyLT5yZW5k
ZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9odWRUZXh0dXJlLT5iaW5k
VGV4dHVyZShsYXllclJlbmRlcmVyLT5jY0NvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+cmVuZGVy
U3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAg
PSBmYWxzZTsKLSAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNvbnRleHRTdXBwb3J0c01hcFN1
YigpKSB7CisgICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ01h
cFN1YikgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBz
dGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KSk7CiAgICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCmluZGV4IDZkODA2ODRmNjY0ZjAyNWRmNTM2YTcwZWVkZmQ0NDViZmI4MzQ0ZjQuLmM1
OGRjNzQ2ZWIwMTZmMDY5ZTg1MTAxMDE0MjE0YWRhYjAxZTVjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgi
CiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKQEAgLTE0Myw3ICsxNDIsNyBAQCBQYXNzT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29u
c3QKICAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShxdWFkVHJhbnNmb3JtKCks
IGRyYXdUcmFuc2Zvcm0oKSwgdmlzaWJsZUxheWVyUmVjdCgpLCBsYXllckNsaXBSZWN0LCBkcmF3
T3BhY2l0eSgpLCBvcGFxdWUoKSk7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OndpbGxEcmF3KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSopCit2b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRl
cmVyKikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gd2lsbERyYXcvZGlkRHJhdyBtdXN0IGJl
IG1hdGNoZWQuCkBAIC0xNjksNyArMTY4LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVi
dWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXUKICAg
ICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBsYXllclJlY3QsIGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgp
KSk7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKikKK3ZvaWQgQ0NMYXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUoQ0NS
ZW5kZXJlciopCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaAppbmRleCBiYjc1YTg5ZWJhZDNmNWFhYTM5ODUyZDQ0ZDk4NGE4MjExOWI5NmYwLi41MjUx
ODQ5ZTE1ZmQzODRkOWNmOWZiMzI1ZWE1OWFkYzRjNzM3ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVy
U29ydGVyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOworY2xhc3MgQ0NSZW5kZXJlcjsKIGNsYXNzIExh
eWVyQ2hyb21pdW07Ci1jbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiAKIGNsYXNzIENDTGF5
ZXJJbXBsIDogcHVibGljIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IHsKIHB1Ymxp
YzoKQEAgLTgzLDEyICs4MywxMiBAQCBwdWJsaWM6CiAgICAgLy8gZGlkRHJhdyBpcyBndWFyYW50
ZWVkIHRvIGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZvcmUKICAgICAv
LyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0
IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNs
YXNzIHZlcnNpb24uCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKik7CiAgICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJh
dygpOwogICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRl
bnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmlu
ZENvbnRlbnRzVGV4dHVyZShDQ1JlbmRlcmVyKik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyBsYXllciBoYXMgY29udGVudCB0byBkcmF3LgogICAgIHZvaWQgc2V0RHJhd3NDb250ZW50
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOTYzOTdjYTQ1YzQy
MTY0OTVhY2ZiOGEwN2U0YjZhMGExNTk5MDFhYy4uMDIzZDk0MGNmNGVmMGVkNzY4YTc4NzgxZTMw
YzIzNDk5Y2E5MWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNjQs
OSArMjY0LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgpCiAgICAg
bV9jbGllbnQtPmRpZENvbW1pdCgpOwogfQogCi1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvbnRleHQoKQorUGFzc1JlZlB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0KCkKIHsKLSAgICByZXR1cm4g
bV9jbGllbnQtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNvbnRleHQ7CisgICAgaWYgKHNldHRpbmdzKCkuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKQor
ICAgICAgICByZXR1cm4gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTJEKCk7CisgICAgcmV0dXJu
IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NsaWVudC0+Y3JlYXRlQ29udGV4dDNEKCkp
OwogfQogCiBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50
KQpAQCAtMjg0LDcgKzI4Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkaWRMb3NlQ29udGV4
dCgpCiB9CiAKIC8vIFRlbXBvcmFyeSBoYWNrIHVudGlsIFdlYlZpZXdJbXBsIGNvbnRleHQgY3Jl
YXRpb24gZ2V0cyBzaW1wbGlmaWVkCi1HcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0
Ojpjb250ZXh0KCkKK0NDR3JhcGhpY3NDb250ZXh0KiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHQo
KQogewogICAgIHJldHVybiBtX3Byb3h5LT5jb250ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCmluZGV4IGVjZWMyM2IxMWRhZDdmZjE5MGE5OTNjNzM0OTVhMjg4Zjg1ODk1ZWIu
LjEzYzBhMjJlNWZjM2Y1ZDRhM2VmNzY1ZjFhMDg4MmRlM2I0MGQ1ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmF0ZUxpbWl0ZXIu
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDQW5p
bWF0aW9uRXZlbnRzLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAKQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXQoKSA9IDA7CkBAIC03Nyw2ICs3OCw3IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICBDQ1NldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5n
KGZhbHNlKQorICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCiAg
ICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxh
dGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNl
KQpAQCAtOTMsNiArOTUsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgeyB9CiAKICAgICBi
b29sIGFjY2VsZXJhdGVQYWludGluZzsKKyAgICBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGlu
ZzsKICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlOwogICAgIGJvb2wgc2hvd1BhaW50UmVjdHM7CkBAIC0xNjAsNyArMTYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCop
OwogICAgIHZvaWQgZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KTsKICAgICB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0gICAgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlQ29udGV4dCgpOworICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCopOwogICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0
IHsKQEAgLTE4Nyw3ICsxOTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOT1RFOiBUaGUgcmV0dXJu
ZWQgdmFsdWUgY2FuIG9ubHkgYmUgdXNlZCB0byBtYWtlIEdMIGNhbGxzIG9yIG1ha2UgdGhlCiAg
ICAgLy8gY29udGV4dCBjdXJyZW50IG9uIHRoZSB0aHJlYWQgdGhlIGNvbXBvc2l0b3IgaXMgcnVu
bmluZyBvbiEKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOworICAgIENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KCk7CiAKICAgICAvLyBDb21wb3NpdGVzIGFuZCBhdHRlbXB0cyB0
byByZWFkIGJhY2sgdGhlIHJlc3VsdCBpbnRvIHRoZSBwcm92aWRlZAogICAgIC8vIGJ1ZmZlci4g
SWYgaXQgd2Fzbid0IHBvc3NpYmxlLCBlLmcuIGR1ZSB0byBjb250ZXh0IGxvc3QsIHdpbGwgcmV0
dXJuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDkxMzM2YTc3
NjhkM2RkNjIxMWIwOTg0ODQ5YzYyYzIzYTRlZDUzNjAuLmJmYzBlYjc0ZmYyMmE0ZmRkYzY2OGMz
ZjlhYTJmYjQ1ODNkODk5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCkBAIC0x
NjUsOSArMTY0LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNvbnRleHQoKQorQ0NHcmFwaGljc0NvbnRleHQqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRl
eHQoKQogewotICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNv
bnRleHQoKSA6IDA7CisgICAgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlciA/IG1fbGF5ZXJSZW5kZXJl
ci0+Y2NDb250ZXh0KCkgOiAwOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1h
dGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQpAQCAtNTQ1LDgg
KzU0NCwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2aXNp
YmxlKQogICAgIHNldEJhY2tncm91bmRUaWNraW5nRW5hYmxlZCghbV92aXNpYmxlICYmIG1fbmVl
ZHNBbmltYXRlTGF5ZXJzKTsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBU
ZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyKQorYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250
ZXh0PiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyKQogewor
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsK
KyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4g
bGF5ZXJSZW5kZXJlcjsKICAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjcmVhdGUodGhpcywgY29udGV4dCwgdGV4dHVyZVVwbG9hZGVyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGY4Yjc2MzE0MDRkN2MyMzgzMTE3YzU4NmFmZGJm
YTRjYTBjMzIwYjAuLjMzMzQwZGRjN2ZkYWRkMjJhOTg2YWU5OWNmMjIwYjU5NTJkOTI3MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbgogICAgIGJvb2wgY2FuRHJhdygpOwotICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CisgICAgQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQoKTsKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKICAgICB2b2lk
IHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CkBAIC0xMjIsOSArMTIyLDkg
QEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IGZyYW1l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgYm9vbCBpbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVy
ZVVwbG9hZGVyT3B0aW9uKTsKKyAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NS
ZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJv
b2wgaXNDb250ZXh0TG9zdCgpOwotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcigpIHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQorICAgIENDUmVuZGVyZXIq
IGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAgICBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkgY29uc3Q7CiAgICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
KCkgY29uc3Q7CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkdW1w
UmVuZGVyU3VyZmFjZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIGNvbnN0IENDTGF5ZXJJbXBs
KikgY29uc3Q7CiAKLSAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVu
ZGVyZXI7CisgICAgT3duUHRyPENDUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25Q
dHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKICAgICBDQ0xheWVySW1wbCogbV9zY3Jv
bGxMYXllckltcGw7CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4
IDM2NjI5MTc5YTJlMTY1MzkwZWQyODJiOGQ1NWI3MzU0YTdjNWQwNDAuLmZiMmNiYmFlOTZmMDcz
MzAwNzVjMjUzMzVkYmEwN2U1OWE1ZDJlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0ZvbnRBdGxhczsKIGNsYXNzIENDVGhy
ZWFkOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsK
IHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogCiAvLyBBYnN0cmFjdCBjbGFzcyBy
ZXNwb25zaWJsZSBmb3IgcHJveHlpbmcgY29tbWFuZHMgZnJvbSB0aGUgbWFpbi10aHJlYWQgc2lk
ZSBvZgpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gVGVtcG9y
YXJ5IGhhY2sgd2hpbGUgcmVuZGVyX3dpZGdldCBzdGlsbCBkb2VzIHNjaGVkdWxpbmcgZm9yIEND
TGF5ZXJUcmVlSG9zdE1haW5UaHJlYWRJCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCkg
PSAwOwogCiAgICAgLy8gVGVzdGluZyBob29rcwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4
dCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCAy
NDNhZDIzMWU3ZjQ2ZmM4OWViMDQwNWQ4ZDBiZjUzNjgzMWVjNjE0Li4yZGVmNjdiOTUyMmY1OWI5
Njk5MmM5YTJiNDc2ZGRmZDE4OTkwMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuY3BwCkBAIC01MCw3ICs1MCw3IEBAIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Nj
cm9sbGJhckxheWVySW1wbChpbnQgaWQpCiB7CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllcklt
cGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQg
Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIp
CiB7CiAgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIpOwogCkBAIC03Nywx
MCArNzcsMTUgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogCiAgICAgewogICAgICAgICBQbGF0Zm9ybUNh
bnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwotICAgICAgICBtX3RleHR1
cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGxheWVyUmVu
ZGVyZXItPmNjQ29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvcigpKTsKIAogICAgICAgICAvLyBGSVhNRTogU2tpYSB1c2VzIEJHUkEgYWN0dWFsbHks
IHdlIGNvcnJlY3QgdGhhdCB3aXRoIHRoZSBzd2l6emxlIHBpeGVsIHNoYWRlci4KKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5jY0NvbnRleHQoKS0+
Y29udGV4dDNEKCk7CisgICAgICAgIGlmICghY29udGV4dCkgeworICAgICAgICAgICAgLy8gQVNT
RVJUKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCBtX3RleHR1cmUtPmZvcm1hdCgpLCBjYW52YXMuc2l6ZSgpLndpZHRoKCksIGNhbnZh
cy5zaXplKCkuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgbG9ja2VyLnBpeGVscygpKSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggMzJhZDFkOGRkZmVmOTk3MjI3
NGExZWYwMTg0NzAzNjVhY2RlNjFkOC4uZDVmNGE2NTA4NjViNWQ4Njg0MDZlNTgxMjZiZTM1MjMw
Y2ZkYTQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVy
SW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWREcmF3KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKaW5kZXggMDExM2MwNzlhNjg0YmFhZGNkZDRlZTQ3MTYyYjNjZmIxOTI4Yjk4Ny4uMWEz
YmM0MWEzNjI5YjJmNzI0ODMxYWMxODY2ZDczMDA5NzQ2YzJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgImNj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCkBAIC0xMTUsNyArMTE0LDcgQEAgdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRT
aXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Qq
IENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQorQ0NHcmFwaGljc0NvbnRleHQqIENDU2lu
Z2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKQpAQCAtMTQy
LDcgKzE0MSw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aXNTdGFydGVkKCkgY29uc3QK
IGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQoKQogewogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CisgICAgUmVm
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVD
b250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
QVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKQEAgLTE3Niw3ICsxNzUsNyBAQCBib29sIEND
U2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZXh0TG9zdCk7CiAKLSAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNv
bnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVy
VHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDhm
Yzg5ODRiZjk0MDBmMmI4M2ZmYjhlMTRhZGMxZTQyMGYyMWRmZWMuLjk1ODdmZjg4MDgxYzJkMGFh
NjNmNDkwYzgzNTFlNDk5ZDBmOWNiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIC8vIENDUHJveHkgaW1wbGVtZW50
YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxz
LCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hv
ciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
QWxsUmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplQ29udGV4dCgpIE9WRVJS
SURFOwpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSG9sZHMgb24gdG8gdGhl
IGNvbnRleHQgYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpIGFuZCBpbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcigpIGNhbGxzLiBTaG91bGRuJ3QKICAgICAvLyBiZSB1c2VkIGZvciBhbnl0aGluZyBl
bHNlLgotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlh
bGl6YXRpb247CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRCZWZvcmVJ
bml0aWFsaXphdGlvbjsKIAogICAgIE93blB0cjxDQ1NpbmdsZVRocmVhZFByb3h5QW5pbWF0aW9u
VGltZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5j
cHAKaW5kZXggYWI1NmQxZjM3N2EyYzZmOGNlNWI3MjNjY2Q2NTFhYWVlMTRiZTlhMS4uYmQ0OWEz
NTUzZGMyZjc5NGU1NGNmNmJkYjY2ODNmM2QyYjNlNDMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpo
YXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9w
YXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCkgfHwgbV9tYW5hZ2Vk
Q29weUVudHJpZXMuc2l6ZSgpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBU
ZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBj
b3VudCkKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGll
ciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgc2l6ZV90IGNvdW50KQogewogICAgIHNpemVf
dCBpbmRleDsKIApAQCAtMTQyLDggKzE0MiwxMiBAQCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsbwog
ICAgIC8vIElmIHdlJ3ZlIHBlcmZvcm1lZCBhbnkgdGV4dHVyZSBjb3BpZXMsIHdlIG5lZWQgdG8g
aW5zZXJ0IGEgZmx1c2ggaGVyZSBpbnRvIHRoZSBjb21wb3NpdG9yIGNvbnRleHQKICAgICAvLyBi
ZWZvcmUgbGV0dGluZyB0aGUgbWFpbiB0aHJlYWQgcHJvY2VlZCBhcyBpdCBtYXkgbWFrZSBkcmF3
IGNhbGxzIHRvIHRoZSBzb3VyY2UgdGV4dHVyZSBvZiBvbmUgb2YKICAgICAvLyBvdXIgY29weSBv
cGVyYXRpb25zLgotICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUoKSB8fCBtX21hbmFnZWRDb3B5
RW50cmllcy5zaXplKCkpCi0gICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CisgICAgaWYgKG1fY29w
eUVudHJpZXMuc2l6ZSgpIHx8IG1fbWFuYWdlZENvcHlFbnRyaWVzLnNpemUoKSkgeworICAgICAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Cisg
ICAgICAgIC8vIEFTU0VSVChjb250ZXh0M2QpOworICAgICAgICBpZiAoY29udGV4dDNkKQorICAg
ICAgICAgICAgY29udGV4dDNkLT5mbHVzaCgpOworICAgIH0KIAogICAgIC8vIElmIG5vIGVudHJp
ZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgogICAgIGNsZWFyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgKaW5kZXggMjRkODk2ZjJiNTkxMjA5MDA0MWE0MzNmMTY2NTFkNjIz
YzBkYjYyZi4uN2M5ZmUyZTMwOGNhNGYyNDRjMjY3NjFlODNhODQ1ODJiYzNjZDRkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsNyArMzIsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgVGV4dHVyZUFsbG9j
YXRvcjsKIGNsYXNzIFRleHR1cmVDb3BpZXI7CiBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CkBAIC01
MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAK
ICAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4KLSAgICB2b2lkIHVwZGF0ZShHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9h
ZGVyKiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIHVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCos
IFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVyKiwgc2l6
ZV90IGNvdW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAppbmRleCBmYjBhNWMxMGI1N2Y3OTg4MTAzZDIxMzIzOThjNmExOGNjM2MxNDE5Li5lOTU1
NTU1MTA1NjdlMjk3ZjM5YTBlM2MxOTZlZmE4ZjI4MmFjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVz
dFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zCiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdl
dFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSwgZHVyYXRpb24pOwogfQogCi1HcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQcm94eTo6Y29u
dGV4dCgpCitDQ0dyYXBoaWNzQ29udGV4dCogQ0NUaHJlYWRQcm94eTo6Y29udGV4dCgpCiB7CiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC0xNzYsMTMgKzE3NiwxMyBAQCBib29sIENDVGhyZWFkUHJveHk6
OmlzU3RhcnRlZCgpIGNvbnN0CiBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0
KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQi
LCB0aGlzLCAwKTsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xh
eWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQoY29udGV4dC0+aGFz
T25lUmVmKCkpOwogCiAgICAgLy8gTGVhayB0aGUgY29udGV4dCBwb2ludGVyIHNvIHdlIGNhbiB0
cmFuc2ZlciBvd25lcnNoaXAgb2YgaXQgdG8gdGhlIG90aGVyIHNpZGUuLi4KLSAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAg
ICBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKICAgICBBU1NFUlQoY29udGV4dFB0ci0+aGFzT25lUmVmKCkpOwogCiAgICAgQ0NQcm94
eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkLApAQCAtMjI5LDE3ICsyMjks
MTcgQEAgYm9vbCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBUcnkgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgotICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3Jl
YXRlQ29udGV4dCgpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1f
bGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzRmlsdGVyQ29u
dGV4dCgpKQorICAgIGlmIChDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzRmlsdGVyQ29udGV4dCgpICYm
ICFtX2xheWVyVHJlZUhvc3QtPnNldHRpbmdzKCkuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKQog
ICAgICAgICBpZiAoIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JJbXBsVGhyZWFk
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoY29udGV4dC0+aGFz
T25lUmVmKCkpOwogCiAgICAgLy8gTGVhayB0aGUgY29udGV4dCBwb2ludGVyIHNvIHdlIGNhbiB0
cmFuc2ZlciBvd25lcnNoaXAgb2YgaXQgdG8gdGhlIG90aGVyIHNpZGUuLi4KLSAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAg
ICBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKICAgICBBU1NFUlQoY29udGV4dFB0ci0+aGFzT25lUmVmKCkpOwogCiAgICAgLy8gTWFr
ZSBhIGJsb2NraW5nIGNhbGwgdG8gcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLiBUaGUgcmVz
dWx0cyBvZiB0aGF0CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChDQ0xheWVyVHJlZUhv
c3Q6Om5lZWRzRmlsdGVyQ29udGV4dCgpICYmICFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6aGF2
ZUZvckltcGxUaHJlYWQoKSkKKyAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNv
bnRleHQoKSAmJiAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21w
b3NpdGluZyAmJiAhU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmhhdmVGb3JJbXBsVGhyZWFkKCkp
CiAgICAgICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JJbXBsVGhyZWFkKCk7
CiAKICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlPiByZXF1ZXN0KG1fcGVuZGlu
Z0JlZ2luRnJhbWVSZXF1ZXN0LnJlbGVhc2UoKSk7CkBAIC04MDcsNyArODA3LDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAotdm9pZCBDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxU
aHJlYWQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnNldEZvbnRBdGxhc09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFz
PiBmb250QXRsYXMpCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0Rm9udEF0bGFzKGZvbnRB
dGxhcyk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMqIGNhcGFiaWxpdGllcykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMqIGNhcGFiaWxpdGllcykKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhy
ZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOWQyZWRkYTZmZGUwZGRm
NzEwN2ZlMWM3NTk3YTJhMGU5ZjMyM2VlOC4uMjRkYjkyZTZlYTE1YzlmNDYyODI5Njk5MDFlZWJi
ZTVmOTg5ZTZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNTMsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBj
b21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6
ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1
cmF0aW9uKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGluaXRpYWxpemVDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC0xMzYsMTIgKzEzNiwxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgc2V0U3VyZmFjZVJlYWR5T25JbXBsVGhyZWFkKCk7
Ci0gICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQz
RCopOworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NHcmFwaGljc0Nv
bnRleHQqKTsKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyopOwogICAgIHZvaWQgbGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9u
SW1wbFRocmVhZCgpOwogICAgIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXNGb3JNYWluVGhyZWFk
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9pZCByZWNyZWF0ZUNvbnRl
eHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGljc0NvbnRleHQzRCosIGJv
b2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CisgICAg
dm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ0dy
YXBoaWNzQ29udGV4dCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CiAgICAgdm9p
ZCBzZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogICAg
IHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50Kik7CkBAIC0xNjgsOSArMTY4LDkgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxDQ1Nj
b3BlZFRocmVhZFByb3h5PiBtX21haW5UaHJlYWRQcm94eTsKIAotICAgIC8vIEhvbGRzIG9uIHRv
IHRoZSBHcmFwaGljc0NvbnRleHQzRCB3ZSBtaWdodCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJl
dHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQoKQorICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBjb250ZXh0
IHdlIG1pZ2h0IHVzZSBmb3IgY29tcG9zaXRpbmcgaW4gYmV0d2VlbiBpbml0aWFsaXplQ29udGV4
dCgpCiAgICAgLy8gYW5kIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgY2FsbHMuCi0gICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1w
bFRocmVhZDsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dEJlZm9yZUlu
aXRpYWxpemF0aW9uT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhy
ZWFkIGlzIHdhaXRpbmcgb24gYSBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIHRvIGJlIGlzc3Vl
ZC4KICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBmNTg1ZDY4
MDQwZmFhZWVmMzBkMmE0YjMzZDc2YWUwMTAxZDk1MmRkLi4yZjdkYWUzZGY1ZjkxN2ZmY2MxYzJl
YzI5M2JmMzQ0YzJmMTFiN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApA
QCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNE
Rm9ybWF0KGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOwogfQogCi12b2lkIENDVmlkZW9MYXllcklt
cGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlcikKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIENDTGF5ZXJJbXBsOjp3
aWxsRHJhdyhsYXllclJlbmRlcmVyKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIENDVmlkZW9M
YXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
ICAgICAgICAgbV9wcm92aWRlck11dGV4LnVubG9jaygpOwogfQogCi12b2lkIENDVmlkZW9MYXll
ckltcGw6OndpbGxEcmF3SW50ZXJuYWwoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVuZGVyZXIq
IGxheWVyUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
IApAQCAtMjQ0LDcgKzI0NCw3IEBAIEludFNpemUgQ0NWaWRlb0xheWVySW1wbDo6Y29tcHV0ZVZp
c2libGVTaXplKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUsCiAgICAgcmV0dXJu
IEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVpZ2h0KTsKIH0KIAotYm9vbCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpyZXNlcnZlVGV4dHVyZXMoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBm
cmFtZSwgR0MzRGVudW0gZm9ybWF0LCBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCitib29sIENDVmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6
OldlYlZpZGVvRnJhbWUmIGZyYW1lLCBHQzNEZW51bSBmb3JtYXQsIENDUmVuZGVyZXIqIGxheWVy
UmVuZGVyZXIpCiB7CiAgICAgaWYgKGZyYW1lLnBsYW5lcygpID4gTWF4UGxhbmVzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggNDQ2MDZj
MTNiMmQ3MTAyYjkyYjRlMzFlMGZkM2E5MDJmNDU1MTQ1My4uMmFjZmEwODY5YmFjOWFhMTBiNmZk
MjI0NWQ1M2RlZjBhMTE0ZGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllcklt
cGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZERyYXcoKSBPVkVSUklERTsKIApAQCAtODEsOCArODEsOCBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6
OldlYlZpZGVvRnJhbWUmLCB1bnNpZ25lZCBwbGFuZSk7CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJWaWRlb0xheWVy
IjsgfQogCi0gICAgdm9pZCB3aWxsRHJhd0ludGVybmFsKExheWVyUmVuZGVyZXJDaHJvbWl1bSop
OwotICAgIGJvb2wgcmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYs
IEdDM0RlbnVtIGZvcm1hdCwgTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgdm9pZCB3aWxs
RHJhd0ludGVybmFsKENDUmVuZGVyZXIqKTsKKyAgICBib29sIHJlc2VydmVUZXh0dXJlcyhjb25z
dCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmLCBHQzNEZW51bSBmb3JtYXQsIENDUmVuZGVyZXIqKTsK
IAogICAgIC8vIEd1YXJkcyB0aGUgZGVzdHJ1Y3Rpb24gb2YgbV9wcm92aWRlciBhbmQgdGhlIGZy
YW1lIHRoYXQgaXQgcHJvdmlkZXMKICAgICBNdXRleCBtX3Byb3ZpZGVyTXV0ZXg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBjY2YzMzAzYzc1NzM3
OWY4ZTk4ZmZiNzc4N2JiZDQ4M2QzMGEwZmMyLi5kNmUwNjU4MWQwZjJiMWI2ZDRhMDRiNTgwODdh
YThlZDZjMWJhOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVk
aXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChi
b29sKSA9IDA7CkBAIC0xNTYsNiArMTU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFN5bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQoYm9vbCkgPSAwOwogCisgICAg
dmlydHVhbCBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpIGNvbnN0ID0gMDsKKwogcHJv
dGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggNjVhMmE2M2IxOGEyYzhjY2Zk
YzVmZWMxZTEwZjE5YzYzM2FjYTU1OC4uYWUyMGFlYTlhMzU4M2U2MzQyNDlmNWJiNGRiNDA4ODI4
NGQ4MjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9w
ZXJhdG9yIENDU2V0dGluZ3MoKSBjb25zdAogewogICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAg
ICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gYWNjZWxlcmF0ZVBhaW50aW5nOworICAg
IHNldHRpbmdzLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyA9IGZvcmNlU29mdHdhcmVDb21wb3Np
dGluZzsKICAgICBzZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHNob3dGUFNDb3VudGVyOwogICAg
IHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNob3dQbGF0Zm9ybUxheWVyVHJlZTsK
ICAgICBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNob3dQYWludFJlY3RzOwpAQCAtMTYxLDcg
KzE2Miw3IEBAIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKIAog
V2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkxheWVyVHJlZVZpZXc6OmNvbnRleHQoKQogewotICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29udGV4dCgpKTsKKyAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogfQogCiB2
b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5jcHAKaW5kZXggNDVhOTk2MDNjYjFmNWIzZmU2N2M2OTI5ZTg1ODU0MzU3ZTNmZjIyNi4uMTdk
NWZlODY3NWE3ZWNhZTI0MjA2M2UyYTczMDJhNzM2NDcyMDlmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVBbmlt
YXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBPVkVSUklERSB7IG1fY2xpZW50LT5sYXlvdXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBh
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBm
bG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUo
c2Nyb2xsRGVsdGEsIHBhZ2VTY2FsZSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERQorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNE
KCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4g
d2ViQ29udGV4dCA9IGFkb3B0UHRyKG1fY2xpZW50LT5jcmVhdGVDb250ZXh0M0QoKSk7CiAgICAg
ICAgIGlmICghd2ViQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwCmluZGV4IGM1MWZmZmJmNzlhZTcxNmJjN2M2NjY3NzYxYjMxOTYzZmE3
OTRjNDAuLjUzNTEwNGI5ZDQ1Y2M0OGJmZWI0ODNmZjRmNGJiOGQ2ODFjYWE0OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNDcsNiAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5n
c0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgIDogbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICAsIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291
bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwg
bV9zaG93UGFpbnRSZWN0cyhmYWxzZSkKQEAgLTM4OCw2ICszODksMTEgQEAgdm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZW5hYmxlZCkKICAgICBtX3Nl
dHRpbmdzLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShlbmFibGVkKTsKIH0KIAordm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldEZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhib29sIGVuYWJsZWQpCit7
CisgICAgbV9mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcgPSBlbmFibGVkOworfQorCiB2b2lkIFdl
YlNldHRpbmdzSW1wbDo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
ICAgICBtX3NldHRpbmdzLT5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGMyODkwODQ0
MWYyZjUzZjJiYWE0M2FjZTdkMWRiY2Y3NDk4MTk4MDAuLjcyOTIwMDVjYzc5Y2NhZjVjZmJjMDc4
MzMxZDA5Y2YxZGY5ZTNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmcoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tTY3Jv
bGxiYXJzRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCk7CkBAIC0xNTgsOSAr
MTU5LDExIEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseURlZmF1bHREZXZpY2VTY2FsZUZh
Y3RvckluQ29tcG9zaXRvcjsgfQogICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0VGlsZVNpemU7IH0KICAgICBXZWJTaXplIG1heFVudGlsZWRMYXll
clNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFVudGlsZWRMYXllclNpemU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9mb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmc7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5n
cyogbV9zZXR0aW5nczsKKyAgICBib29sIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAg
IGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
OwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCBkYWUwZDY1NTk4ZTViNmQxOTQ3OWM1MmE1ZTQ4Y2IxZTRi
OWMzMTBiLi4yNjllODlhZTk5MDVjMzIwNWFhMzlhNThiNzNlY2UyZTRlNDYyZDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zNDQ2LDYgKzM0NDYs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93RlBTQ291bnRl
ciA9IHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBsYXllclRyZWVW
aWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3NJbXBsKCktPnNob3dQ
bGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1Bh
aW50UmVjdHMgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd1BhaW50UmVjdHMoKTsKKyAgICAgICAgbGF5
ZXJUcmVlVmlld1NldHRpbmdzLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyA9IHNldHRpbmdzKCkt
PmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpOwogCiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0
aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPnBlclRpbGVEcmF3aW5n
RW5hYmxlZCgpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGFydGlhbFN3YXBFbmFi
bGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKQEAgLTM0OTQs
NiArMzQ5NSwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0NvbnRleHQzRCgp
CiB7CisgICAgaWYgKHNldHRpbmdzKCktPmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpKSB7Cisg
ICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwog
ICAgIC8vIEV4cGxpY2l0bHkgZGlzYWJsZSBhbnRpYWxpYXNpbmcgZm9yIHRoZSBjb21wb3NpdG9y
LiBBcyBvZiB0aGUgdGltZSBvZgogICAgIC8vIHRoaXMgd3JpdGluZywgdGhlIG9ubHkgcGxhdGZv
cm0gdGhhdCBzdXBwb3J0ZWQgYW50aWFsaWFzaW5nIGZvciB0aGUKICAgICAvLyBjb21wb3NpdG9y
IHdhcyBNYWMgT1MgWCwgYmVjYXVzZSB0aGUgb24tc2NyZWVuIE9wZW5HTCBjb250ZXh0IGNyZWF0
aW9uCkBAIC0zNTE3LDYgKzM1MjMsMTEgQEAgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEPiBXZWJWaWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvckdyYXBoaWNzQ28KIAogV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0ltcGw6OmNyZWF0ZUNvbnRleHQzRCgp
CiB7CisgICAgaWYgKHNldHRpbmdzKCktPmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpKSB7Cisg
ICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIE93
blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0OwogCiAgICAgLy8g
SWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGFuIG9uc2NyZWVuIGNvbnRleHQgZm9yIHRoaXMgdmll
dywgcmV0dXJuIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDkxYzJkMWRmZjEyMTI3OWE3Yzc0
NjA3MGM1Y2JkYzIyMjRmMmI2NWEuLjc5OWQzNjFkYWNkNjJkM2FmMzQ0YzkyZGZiMjM5N2M3ZGQy
MDMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0
ZUNvbnRleHQoKQorICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRl
eHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFw
aGljc0NvbnRleHQzRCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QoKSksIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogICAgIH0KIAogICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBtX2Fsd2F5c0ltcGxUaHJlYWQ7CkBAIC05ODgsNyArOTg4LDggQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3
KQogewogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIgPSBuZXcgUmVz
aGFwZVRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJhY2tlciksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgUmVmUHRyPEND
R3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0Qo
Y29udGV4dCk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY2NDb250
ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3
IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMCwgMCkpOwpAQCAtMTAzMSwxMyArMTAzMiwxNCBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQogewogICAgIFBh
cnRpYWxTd2FwVHJhY2tlckNvbnRleHQqIHBhcnRpYWxTd2FwVHJhY2tlciA9IG5ldyBQYXJ0aWFs
U3dhcFRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihwYXJ0aWFsU3dhcFRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQpOwog
CiAgICAgLy8gVGhpcyB0ZXN0IGNyZWF0ZXMgaXRzIG93biBDQ0xheWVyVHJlZUhvc3RJbXBsLCBz
bwogICAgIC8vIHRoYXQgd2UgY2FuIGZvcmNlIHBhcnRpYWwgc3dhcCBlbmFibGVkLgogICAgIEND
U2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gdHJ1
ZTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9zdEltcGwgPSBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRocm90dGxlZFVw
bG9hZGVyKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y2NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKIAogICAgIENDTGF5ZXJJbXBsKiBy
b290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpAQCAtMTE1MSw3ICsxMTUzLDcg
QEAgcHVibGljOgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBmaW5pc2hBbGxSZW5k
ZXJpbmdBZnRlckNvbnRleHRMb3N0KQogewogICAgIC8vIFRoZSBjb250ZXh0IGluaXRpYWxpemF0
aW9uIHdpbGwgZmFpbCwgYnV0IHdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGNhbGwgZmluaXNo
QWxsUmVuZGVyaW5nKCkgd2l0aG91dCBhbnkgaWxsIGVmZmVjdHMuCi0gICAgbV9ob3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdyksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSksIFVudGhyb3R0
bGVkVXBsb2FkZXIpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQog
CkBAIC0xMzU2LDcgKzEzNTgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRv
bnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogCiAgICAgLy8gTG9zZSB0aGUgY29u
dGV4dCwgcmVwbGFjaW5nIGl0IHdpdGggYSBTdHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRCwgdGhh
dAogICAgIC8vIHdpbGwgd2FybiBpZiBhbnkgcmVzb3VyY2UgZnJvbSB0aGUgcHJldmlvdXMgY29u
dGV4dCBnZXRzIHVzZWQuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
U3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLCBVbnRo
cm90dGxlZFVwbG9hZGVyKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgRVhQ
RUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMo
ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKaW5kZXggMTI3NWVjODU0MjgxMDk4YzMxZTFiODAzMDYxYzljY2E0ZGJm
NWQ4Yy4uZmY2ZTM5ODM4M2Q5NTVjNTczMGQ4MGVmMjU5OGFhZmY0Y2I5ZmI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+YXBwbHlT
Y3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0YSwgc2NhbGUpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0M0Qo
KSBPVkVSUklERQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnM7CiAgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJz
OwpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsKLSAg
ICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tp
bmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFj
dFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKSkpOworICAgICAgICBDb21wb3Np
dG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9
IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVy
ZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3ND
b250ZXh0M0QoaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSkpOwogCiAgICAgICAgIHN3aXRj
aCAoaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkgewogICAgICAgICBjYXNlIDA6CkBAIC0yMDgx
LDcgKzIwODEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0
b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJl
VHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0Nv
bnRleHQzRChpbXBsLT5jb250ZXh0KCkpKTsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFw
aGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwt
PmNvbnRleHQoKS0+Y29udGV4dDNEKCkpKTsKIAogICAgICAgICAvLyBOdW1iZXIgb2YgdGV4dHVy
ZXMgdXNlZCBmb3IgZHJhdyBzaG91bGQgYWx3YXlzIGJlIG9uZS4KICAgICAgICAgRVhQRUNUX0VR
KDEsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKQEAgLTIxNTEsNyArMjE1MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBs
LT5jb250ZXh0KCkpKTsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQz
RFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKS0+
Y29udGV4dDNEKCkpKTsKIAogICAgICAgICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVy
KCkpIHsKICAgICAgICAgY2FzZSAwOgpAQCAtMjIyMCw3ICsyMjIwLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGltcGwpCiAgICAgewotICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
V2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7
CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRy
YWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4
dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7
CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXdpbmcgc2hvdWxk
IHR3byBleGNlcHQgZm9yIGZyYW1lIDQKICAgICAgICAgLy8gd2hlcmUgdGhlIHZpZXdwb3J0IG9u
bHkgY29udGFpbnMgb25lIGxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKaW5kZXggNDZkMTFhOTZlN2Y4ZDQ4
MjQ5N2RjZDQ5ZmU0NDYxZmI1YWNhZmJjYy4uNzAxN2EwMWZmNjlhNjJkMzJmYTMxOWI4ZGE3NDdh
MWE0NTQ4M2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikKK3ZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NH
cmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JikKIHsKICAgICBpZiAoYWxsb2NhdG9yKQogICAgICAgICB0ZXh0
dXJlKCktPmFsbG9jYXRlKGFsbG9jYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDRlYjg3NWIxZWMzNzg5
MWM1ODY3ODEyM2E0MWNjMzIyYzVkZGQ5ZjQuLjk4MjRkOGMwNjRmZDQwN2FhMjdjYWVlMzhkMDcw
OTBlN2ZiMmRjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaWZuZGVmIENDVGls
ZWRMYXllclRlc3RDb21tb25faAogI2RlZmluZSBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKIAot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCkBAIC0z
NCw2ICszMyw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJUZXh0
dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgICAgICBUZXh0dXJlKEZha2VMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093
blB0cjxXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0QqLCBXZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiAsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiwgV2ViQ29yZTo6VGV4dHVyZUFs
bG9jYXRvciogLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAKIGNs
YXNzIEZha2VUZXh0dXJlQ29waWVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVDb3BpZXIgewog
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4
dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQogfTsK
IAogY2xhc3MgRmFrZVRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlVXBs
b2FkZXIgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNC
dXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dXBsb2FkVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgV2ViQ29y
ZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2ViQ29yZTo6VGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChj
b250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZpcnR1YWwg
dm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBX
ZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNl
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVS
ZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBiNDI0ODViNzE4ZjA4YTU2OWYwZjEyNmQ0OWNmZjYw
MGI1YmNkNzViLi5hNTY1MTQ2YTVkNDkxOTY1YjdiMWFkMjVkNmZlNjljNTE1MTU0MGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogCiBjbGFzcyBNb2Nr
VGV4dHVyZUNvcGllciA6IHB1YmxpYyBUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICBNT0NL
X01FVEhPRDQoY29weVRleHR1cmUsIHZvaWQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCwg
dW5zaWduZWQsIGNvbnN0IEludFNpemUmKSk7CisgICAgTU9DS19NRVRIT0Q0KGNvcHlUZXh0dXJl
LCB2b2lkKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBJbnRT
aXplJikpOwogfTsKIAogY2xhc3MgTW9ja1RleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJl
VXBsb2FkZXIgewpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QwKGlz
QnVzeSwgYm9vbCgpKTsKICAgICBNT0NLX01FVEhPRDAoYmVnaW5VcGxvYWRzLCB2b2lkKCkpOwog
ICAgIE1PQ0tfTUVUSE9EMChlbmRVcGxvYWRzLCB2b2lkKCkpOwotICAgIE1PQ0tfTUVUSE9ENSh1
cGxvYWRUZXh0dXJlLCB2b2lkKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0LCBjb25zdCBJbnRS
ZWN0KSk7CisgICAgTU9DS19NRVRIT0Q1KHVwbG9hZFRleHR1cmUsIHZvaWQoQ0NHcmFwaGljc0Nv
bnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QsIGNvbnN0IEludFJlY3QpKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCkBA
IC0xMDUsNyArMTA1LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRyczsKIAogICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1h
aW5Db250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSksIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgICAgIFJlZlB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NNYWluQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGUzRChtYWluQ29udGV4dCk7CiAgICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
aW1wbENvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCgpKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICAgICAgUmVm
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0ltcGxDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZTNEKGltcGxDb250ZXh0KTsKIAogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgbWFp
bk1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtYWluQ29udGV4dC5nZXQoKSkp
OwogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9j
a0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFw
aGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwpAQCAtMTQwLDcgKzE0Miw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdGV4dHVyZSBhbmQgZG8gdGhlIGNv
cHkgKG9uIHRoZSBpbXBsIHRocmVhZCkuCiAgICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoYWxs
b2NhdG9yTW9jaywgY3JlYXRlVGV4dHVyZShzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkp
CiAgICAgICAgICAgICAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oZnJvbnRUZXh0dXJlSWQpKTsK
LSAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChjb3BpZXJNb2NrLCBjb3B5VGV4dHVyZShpbXBs
Q29udGV4dC5nZXQoKSwgYmFja1RleHR1cmVJZCwgZnJvbnRUZXh0dXJlSWQsIHNpemUpKTsKKyAg
ICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChjb3BpZXJNb2NrLCBjb3B5VGV4dHVyZShjY0ltcGxD
b250ZXh0LmdldCgpLCBiYWNrVGV4dHVyZUlkLCBmcm9udFRleHR1cmVJZCwgc2l6ZSkpOwogICAg
ICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2NrLCBmbHVzaCgpKTsKIAogICAgICAgICAg
ICAgICAgIC8vIFRlYXJkb3duIFRleHR1cmVNYW5hZ2VyLgpAQCAtMTY0LDcgKzE2Niw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2Fu
dmFzLT5jcmVhdGVDQ0xheWVySW1wbCgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBzdGF0
aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQo
KSk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKGltcGxDb250ZXh0LmdldCgpLCAmYWxs
b2NhdG9yTW9jaywgJmNvcGllck1vY2ssICZ1cGxvYWRlck1vY2ssIDEpOworICAgICAgICAgICAg
dXBkYXRlci51cGRhdGUoY2NJbXBsQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRvck1vY2ssICZjb3Bp
ZXJNb2NrLCAmdXBsb2FkZXJNb2NrLCAxKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQgJiYg
IWRlZmVycmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtl
Q0NMYXllclRyZWVIb3N0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zh
a2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAppbmRleCA5OTI1MDljNGZkY2Q5ZjMwYTM4MmExNmI1
MzdhMGE1YTY1YWQyMmI4Li42YWI2MTZkM2M4YTc5NzEzMmVlNGVmY2Q4NzFiODk3OWMwN2IyZjc5
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJl
ZUhvc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xh
eWVyVHJlZUhvc3RDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBP
VkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURF
CiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggODQ0NWZlYmE3NjAwYTQyMThlY2M5NGY0Zjc1Njkw
MWMxZDg2MTNkMS4uYjBiOWM3NTZlMjUyZTk2ZDg3ZGJlNjY4NjM1OTE2ZTJjZTEwYWM5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZh
a2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsK
IHB1YmxpYzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
KSA6IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBs
b2FkZXIpIHsgfQorICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRl
eHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgVW50aHJvdHRsZWRV
cGxvYWRlcikgeyB9CiAKICAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW0gbWV0aG9kcy4KIApA
QCAtMTA1LDggKzEwNSw4IEBAIHByb3RlY3RlZDoKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0KCkKICAgICAgICAgOiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllcygxLCB0cnVlKQogICAg
ICAgICAsIG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8oMSwgZmFsc2UpCi0gICAgICAgICwgbV9j
b250ZXh0KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJv
bVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0
dGluZ0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdykpCi0gICAgICAgICwgbV9tb2NrQ29udGV4dCgqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGlu
Z01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dC5nZXQoKSkpKQorICAgICAg
ICAsIG1fY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihu
ZXcgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCgpKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkpCisgICAgICAgICwgbV9t
b2NrQ29udGV4dCgqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0
aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKG1fY29udGV4dC0+Y29udGV4dDNEKCkpKSkKICAgICAgICAgLCBtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVsZWFzZSgpKQogICAgIHsK
ICAgICB9CkBAIC0xMjQsNyArMTI0LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkdyYXBoaWNzTWVt
b3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllczsKICAgICBXZWJHcmFwaGlj
c01lbW9yeUFsbG9jYXRpb24gbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObzsKIAotICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gbV9jb250ZXh0OwogICAgIEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGlu
Z0NvbnRleHQmIG1fbW9ja0NvbnRleHQ7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNs
aWVudCBtX21vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBtX2xheWVy
UmVuZGVyZXJDaHJvbWl1bTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBwdWJsaWM6CiBURVNUKExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3luY2hyb25v
dXNDYWxscykKIHsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1vY2tDbGll
bnQ7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0o
Jm1vY2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRl
eHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAg
ICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0Ns
aWVudCwgQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJp
ZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpKSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21p
dW0uaW5pdGlhbGl6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKaW5kZXggMTcxNzNjMGE1YjM3ZDFiOGViMDhkNmNiMTgy
YWQxZDA3NGU1NDg2ZS4uZDcxYjhjZTQ1YTNlYTMwMzI0NDJmODY0ODk1ZDQ1MzBkZTZhN2Q1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVz
dC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERyYXdB
cnJheXNDb3B5KQogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwogICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1v
Y2tDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3cpOwogICAgIE1vY2tDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxNb2NrQ29u
dGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4
dDNEKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29u
dGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKIAogICAgIHsKICAg
ICAgICAgSW5TZXF1ZW5jZSBzZXF1ZW5jZTsKQEAgLTc5LDcgKzgwLDcgQEAgVEVTVChUZXh0dXJl
Q29waWVyVGVzdCwgdGVzdERyYXdBcnJheXNDb3B5KQogICAgIGludCBkZXN0VGV4dHVyZUlkID0g
MjsKICAgICBJbnRTaXplIHNpemUoMjU2LCAxMjgpOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXI+IGNvcGllcihBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShjb250
ZXh0KSk7Ci0gICAgY29waWVyLT5jb3B5VGV4dHVyZShjb250ZXh0LmdldCgpLCBzb3VyY2VUZXh0
dXJlSWQsIGRlc3RUZXh0dXJlSWQsIHNpemUpOworICAgIGNvcGllci0+Y29weVRleHR1cmUoY2ND
b250ZXh0LmdldCgpLCBzb3VyY2VUZXh0dXJlSWQsIGRlc3RUZXh0dXJlSWQsIHNpemUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYzkxMjVhODUyOWIxMTE4ZDhmYWYz
MjUyZDIxZDczMDNiMjk5MzYyMi4uZDVkMTBkOTQ2ZjE4OTRhODE3MjBjNWM4MDFmY2M0NWMwNDE1
YWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02NzEsMTIgKzY3MSwxMyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBGYWtlVGV4dHVyZUNv
cGllciBmYWtlQ29waWVyOwogICAgIEZha2VUZXh0dXJlVXBsb2FkZXIgZmFrZVVwbG9hZGVyOwog
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JN
b2NrR3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSk7Cisg
ICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlM0QoY29udGV4dCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAs
IHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXll
ci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRl
KGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRl
ciwgMTAwMCk7CisgICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9j
YXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBi
b3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC02ODksNyArNjkwLDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgLy8gSW52b2tl
IHVwZGF0ZUxheWVyUmVjdCBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHVwZGF0ZUxheWVy
UmVjdCBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRh
dGVyLgogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxs
b2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CisgICAgdXBkYXRlci51
cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtl
VXBsb2FkZXIsIDEwMDApOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CkBAIC02OTcsMTIgKzY5OCwxMiBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDI1LCAy
NSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRl
KGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRl
ciwgMTAwMCk7CisgICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9j
YXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOwogICAgIEVYUEVDVF9FUSgx
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwog
ICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyB1cGRhdGVMYXllclJl
Y3QgaW52b2tlZCBpbnZhbGlkYXRlLgogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRl
eHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAw
MCk7CisgICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwg
JmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOwogICAgIEVYUEVDVF9FUSgxLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145234</attachid>
            <date>2012-06-01 01:02:57 -0700</date>
            <delta_ts>2012-06-01 13:01:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87920-20120601010256.patch</filename>
            <type>text/plain</type>
            <size>126378</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWE0M2MzMzI5ZWVm
MmZiZmMxYWZmNmU3YjY4YWMwYjMzNzczYjM5Li5lMWY5ODMzZDhjNzIyODI3Yzg1MGQ5ODFlM2Qy
NmM4MjFjMGQ3N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0zMCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNl
dHRpbmcgdG8gZm9yY2Ugc29mdHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlzIG1vZGUsCisgICAg
ICAgIG5vIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoU2V0dGlu
Z3MpOgorCiAyMDEyLTA1LTI1ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIERlcHJlY2F0ZSBGaWxlVXRpbGl0aWVzOjpnZXRGaWxlU2l6
ZSBhbmQgZ2V0RmlsZU1vZGlmaWVkVGltZSBpbiBmYXZvciBvZiBnZXRGaWxlTWV0YWRhdGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxMTAxMjQ3MmI0YTc0MDU1MTg3MGQ0YWNlY2NhNDkyYzVjYjYwNmI4Li4xODY4
ODNmYzVjODcyMzUwMDAyZWExM2NkYWIyZGIzMDE1ZWZiMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUzIEBACisyMDEyLTA1LTMwICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbY2hyb21pdW1dIFNvZnR3YXJlIGNvbXBvc2l0b3IgaW5pdGlhbGl6YXRp
b24gYW5kIGJhc2UgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGludHJvZHVjZXMgbmV3IHdyYXBwZXIgY2xhc3MgQ0NHcmFwaGljc0Nv
bnRleHQgYW5kIGJhc2UgY2xhc3MKKyAgICAgICAgQ0NSZW5kZXJlciB3aGljaCB3aWxsIGJlIHVz
ZWQgZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nIHN1cHBvcnQuCisgICAgICAgIElmIG5vIEdyYXBo
aWNzQ29udGV4dDNEIGlzIGF2YWlsYWJsZSwgZWFybHkgcmV0dXJuIGZvciBub3cuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoTm8tb3AgY2hhbmdlIGluIDNkIG1vZGUuKQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6Cisg
ICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoVGV4dHVyZSk6CisgICAgICAgIChCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAo
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
VGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlcmVyOjp0b0dMTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJlcjo6Q0NSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyZXI6On5DQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
ZXI6OmNjQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJlcjo6dmlld3BvcnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlcmVyOjp2aWV3cG9ydEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
Ojpwcm9qZWN0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyZXI6OndpbmRv
d01hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzaGFyZWRHZW9tZXRyeVF1
YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhT
dWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2Fk
V2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChM
YXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoK
KyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2Fk
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6
CisgICAgICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NHcmFwaGljc0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJpbmRD
b250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyUmVuZGVyZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAg
ICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xl
VGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wNS0yOSAgSm9obiBTdWxsaXZhbiAg
PHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgbGFiZWwgZm9yIGJsYWNrbGlz
dGVkIHBsdWctaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2NkNDNiYzkyZTVkYTEy
OGRhMzdhYjhhNGI4ZGYwYWViYjI1MGVmNS4uOTJkZDI4Mjc5YjVjZTlhNzdlMjRiZWMzM2Q2OWQ4
Y2NhNjQxZTI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAor
MjAxMi0wNS0zMCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNl
IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3OTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgbmV3IHNldHRpbmcgdG8gZm9yY2Ugc29mdHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlz
IG1vZGUsCisgICAgICAgIG5vIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0
ZWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNl
dHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlldzo6Y29udGV4dCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nc0ltcGw6OnNldEZvcmNlU29mdHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRp
bmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6Zm9yY2VTb2Z0d2Fy
ZUNvbXBvc2l0aW5nKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0Nv
bnRleHQzRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVDb250ZXh0M0Qp
OgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6Y3JlYXRlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0Nv
bW1pdDo6Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdEF0b21pY0NvbW1pdDo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmNv
bW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgor
ICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToK
KyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgIChUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZUNvcGllcjo6Y29weVRleHR1
cmUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRl
eHR1cmUpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoQ2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgor
ICAgICAgICAqIHRlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaDoKKyAgICAgICAgKiB0
ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKEZha2VMYXllclJl
bmRlcmVyQ2hyb21pdW06OkZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoTGF5
ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAg
ICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIHRlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVCk6CisKIDIwMTItMDUtMjkg
IFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDJiMGYzMGFkZWI1ZWExYWMxOGI5YWIwZDJh
MjUyM2U3YzVmZmRhMTcuLjIzZDBkNjNjZTlkZDI4YTViNWJhZDcxMjhlYWExNDlhOTczYjlkZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU2V0dGluZ3Mgewog
ICAgICAgICBTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxz
ZSkKKyAgICAgICAgICAgICwgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGZhbHNlKQogICAgICAg
ICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKQEAg
LTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBhY2NlbGVy
YXRlUGFpbnRpbmc7CisgICAgICAgIGJvb2wgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAg
ICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAgICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVy
VHJlZTsKICAgICAgICAgYm9vbCBzaG93UGFpbnRSZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZjU1YzA2MjE2YWRlMTJk
MDgxYTQ1OTgyMThjOTEyYjM1YzVkMmY2YS4uODI0NWFhOWU2ODg0ODYwYjZkMmIxZmU5ZjQwNGNk
NWI3NGQyZTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKIH0KQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QKICAgICBwYWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgKmNhbnZhc1Bh
aW50ZXIuc2tpYUNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGlu
Z09wYXF1ZVJlY3QpOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5k
ZXggMDRjYzQxYTI0NjI1YTcwODMxMWVhYjdjNGViOTRlMzExODkwZTUxYi4uNmZmN2M2Mzk2YWMw
NjhmZmVmNGY1OGE3MWY4YTE0OWYxMTk3Y2MwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRh
dGVyOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdl
ciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCYgcmVzdWx0aW5nT3Bh
cXVlUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCBlOWMyNjE5YjA2NGMwZTg0YjU1MmQzOGJlNGNlNjUwNTZjMGMxNTFlLi5iNzU5MjUyZTFm
N2FiMmFiZGM2YWFhYWNkOTA5ZGE4NzlmNDdlZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0IEludFJlYwogICAgIHRleHR1cmVVcGRhdGVy
KCktPnBhaW50Q29udGVudHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOwogfQogCi12b2lkIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2
b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVw
ZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCiB7CiAgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwog
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmEKICAgICBkcmF3UGlj
dHVyZShjYW52YXMpOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBH
QzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBw
aXhlbHMpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHQzNEZW51bSBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpCiB7CiAg
ICAgbV90ZXhTdWJJbWFnZS51cGxvYWQocGl4ZWxzLCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RS
ZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJiMTQzMTAwNDNh
ZGRlYTU4ZTI2ZjExNDMzYmQ5YTU1YzM1YWFjYWMuLjUwOTdjZTBiMmYwMDczZTM3MjM3NTQzMTEz
N2E1MGU2NWZmNDZhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgICAgICBUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRl
cjsgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1Nj
YWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIHBhaW50Q29udGVu
dHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisgICAgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIEdDM0RlbnVtIGZvcm1hdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKIHByaXZhdGU6
CiAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGZiNGI4ZDAxNzRlNDIwNWY0
NzEzMjZhMmU4OGZlYzM2ZGFkYTQ0OC4uYWJhOWNhNDc5OWFmOTc5ZjEzZGUxZGY3ZDdiNTZhMzM5
Y2Y1MTQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
MzMsNyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiBjbGFzcyBQbGF0Zm9ybUNvbnRl
eHRTa2lhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwY2EzNTRkNzRhMGVh
ZGMxZjcxYzBiMzUyNGRjZjc3YWM5MTY4Nzg1Li5kYWMwMzU1NTI5ODI1MjZjNDkwZDFjYzdkZDEy
Zjk0NTBlY2ViYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgdGV4
dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KQEAgLTk2LDE1ICs5NiwyMSBAQCBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0
M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gTWFrZSBzdXJl
IGdhbmVzaCB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgY29udGV4dDNkLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICAvLyBOb3RpZnkgZ2FuZXNoIHRvIHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgotICAgIGNv
bnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKyAgICBjb250ZXh0M2QtPmdyQ29u
dGV4dCgpLT5yZXNldENvbnRleHQoKTsKIAogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBj
YW52YXMgdG8gZHJhdyBvbi4KLSAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFj
Y2VsZXJhdGVkQ2FudmFzKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7CisgICAgT3duUHRy
PFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb250ZXh0M2QsIGFs
bG9jYXRvciwgdGV4dHVyZSk7CiAKICAgICAvLyBUaGUgY29tcG9zaXRvciBleHBlY3RzIHRoZSB0
ZXh0dXJlcyB0byBiZSB1cHNpZGUtZG93biBzbyBpdCBjYW4gZmxpcAogICAgIC8vIHRoZSBmaW5h
bCBjb21wb3NpdGVkIGltYWdlLiBHYW5lc2ggcmVuZGVycyB0aGUgaW1hZ2UgdXByaWdodCBzbyB3
ZQpAQCAtMTIwLDcgKzEyNiw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvCiAgICAgZHJhd1Bp
Y3R1cmUoY2FudmFzLmdldCgpKTsKIAogICAgIC8vIEZsdXNoIGdhbmVzaCBjb250ZXh0IHNvIHRo
YXQgYWxsIHRoZSByZW5kZXJlZCBzdHVmZiBhcHBlYXJzIG9uIHRoZSB0ZXh0dXJlLgotICAgIGNv
bnRleHQtPmdyQ29udGV4dCgpLT5mbHVzaCgpOworICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0KCkt
PmZsdXNoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKaW5kZXggNTAzOWJhOTAyYzFlNWQxZmVmYmJiNTEzZmM4NTM4NjI2NWRhMDM3MC4uZWM0
ZDA4OGYyMzg5YjUyNjI0N2M4ODI1YzJhZmNkNjVkYjU2ODEyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4
dHVyZVVwZGF0ZXI7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4
ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFs
bG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCBkNGE0
MzAxMmQ0NTZiOTEwMDBkYWY3MmUyMWM1YmRlYWRiNTM1YmM1Li4wZWNlZWM2MjY2MGY4ODNhMjM5
YjhkMjY4MjViZGI4YWMwMzgzNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRl
eHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAg
IH0KQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1
YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRl
eHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsKICAgICAgICAgdGV4dHVyZS0+Ymlu
ZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDli
ZTAyNzllMmFlYmNkN2NkYzdjNjhiZDAyNWViZTA4NDFjMTc1ZDMuLjU1ZjdmNTFhY2MzYTMzNzA3
YTEyNjIzYzcyOGFkY2ExM2MzN2JjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTYyLDcgKzYy
LDYgQEAgY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlOwogY2xhc3MgQ0NMYXllckltcGw7
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBTY3JvbGxiYXJMYXllckNocm9taXVtOwogCiAvLyBC
YXNlIGNsYXNzIGZvciBjb21wb3NpdGVkIGxheWVycy4gU3BlY2lhbCBsYXllciB0eXBlcyBhcmUg
ZGVyaXZlZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBh
OWYzZDQ2NjVkMzZlNTI4ZDNmZTNmYzkxYzg2MDI1ZjRlOWE4N2VkLi5mMjNmMjYwMTVjOWQ2Y2Zk
NDBjY2ZhZjA3NDliMzQ1OTllNGJmZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
QnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2Fkcygp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29u
c3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUt
PnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVz
dFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXIoKSB7IH0KQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRlOgogfTsKIAogCi1QYXNzT3du
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUo
TGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJT
ZXR0aW5nKQorUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y3JlYXRlKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxv
YWRlclNldHRpbmcpCiB7CiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJS
ZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4
dCwgdGV4dHVyZVVwbG9hZGVyU2V0dGluZykpKTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXItPmlu
aXRpYWxpemUoKSkKQEAgLTIyMSwyNSArMjIxLDI2IEBAIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJl
ckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hy
CiAgICAgcmV0dXJuIGxheWVyUmVuZGVyZXIucmVsZWFzZSgpOwogfQogCi1MYXllclJlbmRlcmVy
Q2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQqIGNsaWVudCwKK0xheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVXBsb2Fk
ZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKLSAgICA6IG1fY2xpZW50KGNsaWVudCkK
KyAgICA6IENDUmVuZGVyZXIoY2xpZW50KQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgw
KQogICAgICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJh
bWVidWZmZXJJZCgwKQorICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVm
LCAtMC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKLSAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0
UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdl
ZChmYWxzZSkKICAgICAsIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZChmYWxzZSkKICAgICAsIG1f
dGV4dHVyZVVwbG9hZGVyU2V0dGluZyh0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogeworICAgIEFT
U0VSVChtX2NvbnRleHQuZ2V0KCkpOwogfQogCiBjbGFzcyBDb250ZXh0TG9zdENhbGxiYWNrQWRh
cHRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExvc3RDYWxsYmFjayB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI+
IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKENDUmVuZGVyZXJD
bGllbnQqIGNsaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4
dExvc3RDYWxsYmFja0FkYXB0ZXIoY2xpZW50KSk7CiAgICAgfQpAQCAtMjUwLDEwICsyNTEsMTAg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb250ZXh0TG9zdENh
bGxiYWNrQWRhcHRlcihMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCkKKyAgICBl
eHBsaWNpdCBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcihDQ1JlbmRlcmVyQ2xpZW50KiBjbGll
bnQpCiAgICAgICAgIDogbV9jbGllbnQoY2xpZW50KSB7IH0KIAotICAgIExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCogbV9jbGllbnQ7CisgICAgQ0NSZW5kZXJlckNsaWVudCogbV9jbGllbnQ7
CiB9OwogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCkBAIC05Mzks
NyArOTQwLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVy
ZShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQsIGNvbnMKIHsKICAgICBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpUZXh0dXJlJiB0ZXh0dXJlID0gcXVhZC0+dGV4dHVyZXMoKVtpbmRleF07CiAgICAgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yID0gcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3Io
KTsKLSAgICB0ZXh0dXJlLm1fdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCgpLCBhbGxvY2F0
b3IpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7CisgICAgdGV4dHVyZS5tX3RleHR1cmUtPmJp
bmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgYWxsb2NhdG9yKTsKICAgICBHQzNEZW51bSBmb3Jt
YXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7CiAgICAgSW50U2l6ZSBkaW1lbnNpb25z
ID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKIApAQCAtMTA3OSw3ICsxMDgxLDggQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVy
ZSogaHVkVGV4dHVyZSwgY29uc3QKICAgICBjb25zdCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIHBy
b2dyYW0gPSBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBw
cm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgaHVkVGV4dHVy
ZS0+YmluZFRleHR1cmUobV9jb250ZXh0LmdldCgpLCByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9j
YXRvcigpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAgIGh1ZFRleHR1cmUtPmJpbmRU
ZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7
CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dy
YW0oKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTI4Myw3ICsx
Mjg2LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVy
ZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QKICAgICBpZiAoIXRleHR1cmUtPnJlc2Vy
dmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRleHQuZ2V0KCks
IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIFJlZlB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1f
Y29udGV4dCk7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCB0ZXh0dXJlLT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53aWR0
aCgpLCBkZXZpY2VSZWN0LmhlaWdodCgpLCAwKSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzI1
LDcgKzEzMjksOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjbwogewogICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKLSAgICB0ZXh0dXJlLT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxv
Y2F0b3IuZ2V0KCkpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0g
Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7CisgICAgdGV4dHVyZS0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoY2NDb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJl
QWxsb2NhdG9yLmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9j
b250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDFhMmViZWQwZTg2Yjk5ZjU4MTk2ODMx
YmNlY2U0NjMwMTQ3MmM5NTkuLmI5ZmFkYjFhMGM5NzQ0YzM2ZGIyNjFlZjQ3YThiYjIxNTQzMDJm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0zNCwxNyArMzQsMTEg
QEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgi
CiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw3ICs0Niw2IEBAIGNsYXNzIENDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFzcyBDQ0RyYXdRdWFk
OwogY2xhc3MgQ0NJT1N1cmZhY2VEcmF3UXVhZDsKLWNsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNz
IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQ7CiBj
bGFzcyBDQ1RleHR1cmVEcmF3UXVhZDsKQEAgLTY0LDc0ICs1Nyw1NyBAQCBjbGFzcyBMYXllclJl
bmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXI7CiBjbGFzcyBM
YXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKIGNsYXNzIFNj
b3BlZEVuc3VyZUZyYW1lYnVmZmVyQWxsb2NhdGlvbjsKIAotY2xhc3MgTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmlj
ZVZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgPSAwOwot
fTsKLQogZW51bSBUZXh0dXJlVXBsb2FkZXJPcHRpb24geyBUaHJvdHRsZWRVcGxvYWRlciwgVW50
aHJvdHRsZWRVcGxvYWRlciB9OwogCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBj
b21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCi1jbGFzcyBMYXllclJlbmRlcmVyQ2hy
b21pdW0geworY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUo
TGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCosIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogCi0gICAgfkxheWVyUmVu
ZGVyZXJDaHJvbWl1bSgpOworICAgIHZpcnR1YWwgfkxheWVyUmVuZGVyZXJDaHJvbWl1bSgpOwog
Ci0gICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dC0+c2V0dGluZ3MoKTsgfQotICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNh
cGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CisgICAgdmlydHVh
bCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQogCiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQoKTsKLSAgICBib29sIGNvbnRleHRTdXBwb3J0c01hcFN1YigpIGNvbnN0IHsg
cmV0dXJuIG1fY2FwYWJpbGl0aWVzLnVzaW5nTWFwU3ViOyB9CiAKLSAgICB2b2lkIHZpZXdwb3J0
Q2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydENoYW5nZWQoKSBPVkVSUklERTsK
KworICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0KIAotICAgIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUo
Q0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFjZSk7Ci0gICAgdm9pZCBkcmF3UmVu
ZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqKTsKLSAgICB2b2lkIGZpbmlzaERyYXdpbmdGcmFt
ZSgpOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1cmZhY2Uq
IGRlZmF1bHRSZW5kZXJTdXJmYWNlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
bmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGZpbmlzaERyYXdpbmdGcmFtZSgpIE9WRVJSSURFOwogCi0gICAgdm9pZCBkcmF3SGVhZHNVcERp
c3BsYXkoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiBodWRTaXplKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6
ZSYgaHVkU2l6ZSkgT1ZFUlJJREU7CiAKICAgICAvLyB3YWl0cyBmb3IgcmVuZGVyaW5nIHRvIGZp
bmlzaAotICAgIHZvaWQgZmluaXNoKCk7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpIE9WRVJS
SURFOwogCi0gICAgdm9pZCBkb05vT3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9Ob09wKCkgT1ZF
UlJJREU7CiAgICAgLy8gcHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCi0gICAgYm9vbCBzd2FwQnVm
ZmVycyhjb25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpOworICAgIHZpcnR1YWwgYm9vbCBzd2FwQnVm
ZmVycyhjb25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpIE9WRVJSSURFOwogCiAgICAgc3RhdGljIHZv
aWQgZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJp
eDsgfQotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgoKSBjb25z
dCB7IHJldHVybiBtX3dpbmRvd01hdHJpeDsgfQotCiAgICAgY29uc3QgR2VvbWV0cnlCaW5kaW5n
KiBzaGFyZWRHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnkuZ2V0KCk7
IH0KLSAgICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdlb21ldHJ5UXVhZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAKIAotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQ
aXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGdl
dEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpIE9WRVJSSURF
OwogICAgIGJvb2wgZ2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgZGV2aWNlUmVjdCk7CiAKLSAgICBUZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1h
bmFnZXIuZ2V0KCk7IH0KLSAgICBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9Ci0gICAgVGV4dHVyZVVwbG9hZGVyKiB0
ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVVcGxvYWRlci5nZXQoKTsg
fQotICAgIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQot
ICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9Ci0KLSAgICB2b2lkIHNl
dFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFn
ZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgpOyB9CisgICAgdmlydHVhbCBUZXh0
dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0
dXJlQ29waWVyLmdldCgpOyB9CisgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVV
cGxvYWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdGV4dHVyZVVwbG9hZGVyLmdldCgp
OyB9CisgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVB
bGxvY2F0b3IuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yLmdldCgpOyB9CiAKLSAgICBib29sIGlzQ29udGV4dExvc3QoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAK
LSAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGlzQ29udGV4dExv
c3QoKSBPVkVSUklERTsKIAotICAgIEdDM0RlbnVtIGJlc3RUZXh0dXJlRm9ybWF0KCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgT1ZFUlJJREU7CiAKLSAgICBzdGF0aWMgdm9p
ZCB0b0dMTWF0cml4KGZsb2F0KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICB2
b2lkIGRyYXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0
cml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0
aW9uKTsKQEAgLTE0MiwxMyArMTE4LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUZy
YW1lYnVmZmVyKCk7CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKENDUmVuZGVyZXJDbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4
dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToK
LSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2NsaWVudC0+ZGV2
aWNlVmlld3BvcnRTaXplKCk7IH0KLSAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJuIHZp
ZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KLSAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJldHVy
biB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsgfQorICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgo
ZmxvYXQqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgdm9pZCBkcmF3UXVh
ZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7
CiAgICAgdm9pZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdR
dWFkKik7CkBAIC0xOTAsMTggKzE2NCwxNCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBM
YXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKICAgICB2b2lk
IG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xp
ZW50KiBtX2NsaWVudDsKLQogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBhYmls
aXRpZXM7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Byb2plY3Rpb25NYXRyaXg7Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7Ci0KICAgICBDQ1JlbmRlclN1
cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZhY2U7CiAgICAgTWFuYWdlZFRleHR1cmUqIG1fY3Vy
cmVudE1hbmFnZWRUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJ
ZDsKIAogICAgIE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CisgICAg
RmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlRdWFkOwogCiAgICAgLy8gVGhpcyBibG9jayBvZiBi
aW5kaW5ncyBkZWZpbmVzIGFsbCBvZiB0aGUgcHJvZ3JhbXMgdXNlZCBieSB0aGUgY29tcG9zaXRv
ciBpdHNlbGYuCiAKQEAgLTI5Niw4ICsyNjYsNiBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJT
dXJmYWNlKiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlOwogCi0gICAgRmxvYXRRdWFkIG1fc2hhcmVk
R2VvbWV0cnlRdWFkOwotCiAgICAgYm9vbCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wg
bV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOwogICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiBtX3Rl
eHR1cmVVcGxvYWRlclNldHRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAK
aW5kZXggOGZlYTM4YTY5MGM5NWNlN2EzOTg3NmI3MGMzYmQwZTY5N2IyZWI4Ni4uNWQ5MTJlYWVj
NjllNjQ0MzM4OTFjNDI1ODQyOWUyYTUwMWMzMDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVN1YkltYWdlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1
YkltYWdlLmgiCiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUs
NyArNTUsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpemUoY29u
c3QgSW50U2l6ZSYgc3ViSW1hZ2VTaXplKQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1
cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgICAg
IHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBMYXllclRl
eHR1cmVTdWJJbWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0
JiBpbWFnZVJlY3QKIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1
YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0
aFRleFN1YkltYWdlIiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3N1YkltYWdlKQpAQCAtODcsMTkg
Kzg3LDMxIEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFn
ZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAKICAgICAgICAgcGl4ZWxTb3VyY2Ug
PSAmbV9zdWJJbWFnZVswXTsKICAgICB9Ci0gICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCks
IGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7CisKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0
M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnRleHQzZC0+dGV4
U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgp
LCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7CiB9CiAK
IHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhN
YXBUZXhTdWJJbWFnZSIsIHRoaXMsIDApOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0
IHRvIHNvdXJjZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGlt
YWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKICAgICAvLyBV
cGxvYWQgdGlsZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKLSAgICBFeHRlbnNp
b25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9t
aXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1
bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4
dDNkLT5nZXRFeHRlbnNpb25zKCkpOwogICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBk
ZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsK
IAogICAgIGlmICghcGl4ZWxEZXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaApp
bmRleCBkOWYwODM3MTllMDFkYjA2Yzg4OTNlYjg4NWVmMzczMjM1MjdiYzA4Li40ZjFjNDE1MjE0
ZDIzMjlhYjZlNzJjZGUxYjFmMmZlMjJmMjhhMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1
YkltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKK2NsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBM
YXllclRleHR1cmVTdWJJbWFnZSB7CiBwdWJsaWM6CkBAIC00NiwxNSArNDYsMTUgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHVw
bG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAg
ICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LAotICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0
M0QqKTsKKyAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0
Kik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWlu
dDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
IEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIHZvaWQgdXBsb2FkV2l0aE1h
cFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCopOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0Nv
bnRleHQqKTsKIAogICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKICAgICBJbnRTaXplIG1f
c3ViSW1hZ2VTaXplOwpAQCAtNjQsNCArNjQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNlbmRpZiAv
LyBMYXllclRleHR1cmVTdWJJbWFnZV9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApp
bmRleCA1ZGI3YjRjNTEyZTU2YWE0NjdiYTU2M2Y4NDM3ZWIyZjQwOWQ3Y2YwLi42MWU0MjU5ZTZj
Yzc5N2Q4MTY5MmUwNjA5NDYyZmYzZWYxNGY2NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7
CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRl
eHR1cmUpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggOWJjNzAwZGM5MGY2ZWI2
MThkMTIyNGU1NGEyMWY5MDBjMWNjYTI1YS4uOGYwM2UwZDllNjNhYjg1NmNhOTg4NWFkNjc5MDcz
ZDY4MTZlMzM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdl
ci5oIgorI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTE3LDE2ICsxMTgsMjYgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2Nh
dGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAgICBtX3RleHR1cmVJZCA9IG1f
dGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOwogfQog
Ci12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6
YmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKIHsKICAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIGNvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwor
ICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBw
YXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X3RleHR1cmVJZCk7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIGFs
bG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7
CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgp
OworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBjb250ZXh0M2QtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOwogfQogCiBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2VkVGV4dHVyZTo6c3RlYWwoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJl
LmgKaW5kZXggZWQ0ZDQ1MGU5NjljZTBhYjU0N2E5YWM1MTM4ZDRjMDkzZDgzOWQ2Mi4uOGE2NTY2
YzMxZjgyOThjZWFkMWZiNGQzNGZiZDU5Mjc0Y2YwNjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
CkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0Q7CitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIAogY2xhc3MgTWFuYWdlZFRl
eHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZWRUZXh0dXJlKTsKQEAgLTU4
LDggKzU4LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgYWxsb2NhdGUoVGV4dHVyZUFs
bG9jYXRvciopOwotICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3Jh
cGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB1bnNpZ25lZCBmb3Jt
YXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5jcHAKaW5kZXggODBhOGEwM2ViYTYwNmE0MjUzYmNhZTc0ODgyMjE0NTQwMmM4NTQx
Mi4uN2FiOWJhMDA4NmUxZDIwMzJjODMxOGJkOTYwMDAwMDA4NGI0YmM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
UmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAppbmRleCBhNTkxYTMyYTExMzY4MTg4
MzdlMzg0ZjRmNTQyYWYyMzZiY2JiMWI3Li5iZDhjMzNhOWEyNTBhMDUyYTZlZDYwY2RjYzhkOTcw
MTI5NmMwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApAQCAtNjEsMTAgKzYxLDE2IEBAIEFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpCiAgICAg
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pKTsK
IH0KIAotdm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRl
c3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVy
ZUNvcGllcjo6Y29weVRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNjQ29udGV4dCwgdW5zaWdu
ZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogewogICAgIFRSQUNFX0VWRU5UKCJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIs
IHRoaXMsIDApOwogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQt
PmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dCkgeworICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9lcyBub3QgcmVzdG9yZSB0aGUg
dmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZyYW1lYnVmZmVyLCBidWZmZXIg
b3IgYmxlbmQgZW5hYmxlLgogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIu
aAppbmRleCA3M2JlNWVjYWQxNmY4ODU1MjUxMTgxZDY1MmI0ZGY4YzM4NGI4YjA1Li4zYWMyZDEx
OTE0ZmZhMTVmOGRlYzJjYWIzZGY1Y2QyODBhM2E2ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAvLyBD
b3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3VyY2VUZXh0dXJlSWR8IHRvIHxkZXN0
VGV4dHVyZUlkfC4gQm90aCB0ZXh0dXJlIG9iamVjdHMKICAgICAvLyBtdXN0IGJlIGNvbXBsZXRl
IGFuZCBoYXZlIGEgYmFzZSBsZXZlbCBvZiB8c2l6ZXwgZGltZW5zaW9ucy4gVGhlIGNvbG9yIGZv
cm1hdHMgZG8gbm90IG5lZWQKICAgICAvLyB0byBtYXRjaCwgYnV0IHxkZXN0VGV4dHVyZUlkfCBt
dXN0IGhhdmUgYSByZW5kZXJhYmxlIGZvcm1hdC4KLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVk
IGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
cHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1
bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+VGV4dHVyZUNvcGllcigpIHsgfQpAQCAtNTQsNyArNTUsNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
c291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7
CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWdu
ZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
Jik7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIo
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAppbmRl
eCBlM2I0NGZkNmIxN2YzZjJmOTQxYTg2ZjJmMmI3NDBmMjY0NTExNDlhLi4wZWFlMmU2NWRkMDI0
NjRjZDIwZmJmMzhmZGJiNzhlY2NkZGM4OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaApAQCAt
MzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRV
cGxvYWRzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVj
dCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSA9IDA7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcAppbmRleCA1MTgxM2M1Y2I1NTYx
ZjkwNTdjMTI5MmM4YTVkM2FhZWMyYzFlMjJmLi5mNWNmMmE0ZTEzOTc3YmQ4YTk4MzE1MTQ5MDVk
MzEwM2IzMjFkMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5j
cHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5k
VXBsb2FkcygpCiAgICAgbV9wZW5kaW5nUXVlcmllcy5hcHBlbmQobV9hdmFpbGFibGVRdWVyaWVz
LnRha2VGaXJzdCgpKTsKIH0KIAotdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9h
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50
UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQordm9pZCBUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RS
ZWN0KQogewogICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5oCmluZGV4IGE3MjA1ODY0OWFhMTFlYjZlNzVjYWU4OTlhZmFkYzk3MmJiNzJjMmQuLmRlYTNk
MzU0YzViMWU1ZTMwMGZkMDgyMmFlZDcxZmVhZWVhOGExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90
dGxlZFRleHR1cmVVcGxvYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2Fk
cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgY2xh
c3MgUXVlcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk1
ZjE4YzM0OTFiNGM0ZGQ2MTE0MzkxNDE1ODc5OThlMjg4NzQ2ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3ND
b250ZXh0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NHcmFwaGljc0NvbnRl
eHRfaAorI2RlZmluZSBDQ0dyYXBoaWNzQ29udGV4dF9oCisKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisKK2NsYXNzIENDR3JhcGhpY3NDb250
ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q0NHcmFwaGljc0NvbnRleHQ+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY3JlYXRlMkQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICB9
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZTNEKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQzRCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ0NHcmFwaGljc0NvbnRleHQoY29udGV4dDNEKSk7CisgICAgfQorCisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCgpIHsgcmV0dXJuIG1fY29udGV4dDNELmdl
dCgpOyB9CisKK3ByaXZhdGU6CisgICAgQ0NHcmFwaGljc0NvbnRleHQoKSB7IH0KKyAgICBleHBs
aWNpdCBDQ0dyYXBoaWNzQ29udGV4dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0M0QpCisgICAgICAgIDogbV9jb250ZXh0M0QoY29udGV4dDNEKSB7IH0KKworICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7Cit9OworCit9CisKKyNlbmRpZiAvLyBD
Q0dyYXBoaWNzQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4
IDdkNDlmNzk4ZDFhYzdkNDhiZjc3NDM0N2JiYmM5N2ZiYTA4ZjNhMTYuLmUxNGQ1M2IwNjRlYjQy
M2JkMWI0NzAxOTYxMTYzMzk4OGE1YTYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwCkBAIC02OSw4ICs2OSwxMiBAQCBib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1
Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogCiB2b2lkIENDSGVhZHNV
cERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiB7
Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9z
dEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKKyAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVy
ID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgp
OworICAgIGlmICghY29udGV4dCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMg
cGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgaWYgKCFtX2h1ZFRleHR1cmUpCiAgICAgICAgIG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkp
OwogCkBAIC0xMDEsOSArMTA1LDkgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5
ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIHsKICAgICAgICAgUGxhdGZv
cm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwogCi0gICAgICAgIG1faHVkVGV4
dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRl
eHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUobGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRl
eHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBmYWxzZTsK
LSAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKSB7Cisg
ICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yikgewog
ICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2Fz
dDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAg
ICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5z
aW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5z
aW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuY3BwCmluZGV4IDk1YzMyYmRlY2MyMDBmNjhmZjI4OTczY2Y3ODc5ZDQ4ZWIx
N2UzN2QuLjlmZTkxNWQ0ZWE2MGQ2OWExODkwYTVhMDc2NDQ4ODI5YWViZDkxMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKQEAgLTUzLDI1ICs1MywyOSBAQCBD
Q0lPU3VyZmFjZUxheWVySW1wbDo6fkNDSU9TdXJmYWNlTGF5ZXJJbXBsKCkKICAgICBtX2lvU3Vy
ZmFjZVRleHR1cmVJZCA9IDA7CiB9CiAKLXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxE
cmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQgQ0NJT1N1cmZh
Y2VMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQogewotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJl
bmRlcmVyKTsKKyAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4
dCk7CiAKICAgICBpZiAobV9pb1N1cmZhY2VDaGFuZ2VkKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwotICAgICAgICBFeHRl
bnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAgICBpZiAoIWNv
bnRleHQzZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9y
IHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0
ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAg
IEFTU0VSVChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1faW9zdXJmYWNlIikpOwog
ICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3JlY3Rh
bmdsZSIpKTsKIAogICAgICAgICBpZiAoIW1faW9TdXJmYWNlVGV4dHVyZUlkKQotICAgICAgICAg
ICAgbV9pb1N1cmZhY2VUZXh0dXJlSWQgPSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0KLSAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkUwKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVy
ZShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgbV9pb1N1cmZhY2VUZXh0dXJl
SWQpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5z
aW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RB
TkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBh
cmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
KTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9u
czNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dS
QVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgICAgIG1f
aW9TdXJmYWNlVGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVhdGVUZXh0dXJlKCk7CisKKyAgICAg
ICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkpOworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmJpbmRU
ZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBtX2lvU3VyZmFjZVRl
eHR1cmVJZCkpOworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRl
cmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAg
ICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEV4dGVuc2lvbnMzRDo6
VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgICAgIEdMQyhjb250ZXh0M2Qs
IGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xF
X0FSQiwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSkpOworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRl
eFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VE
R0UpKTsKICAgICAgICAgZXh0ZW5zaW9ucy0+dGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNKEV4
dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VTaXplLndpZHRoKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZVNp
emUuaGVpZ2h0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAppbmRleCA1
ZDY2NDk2ZTExNTE1NzhiMWQ1ZTNlZjVkNTI2NTZiNjBjODJlN2NiLi4yOGEzNWNkMGYyMDgzYTg2
MjEwMTcxODc5YzFiOTI2YjUyYmQwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5
ZXJJbXBsLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYg
aGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhM
YXllclJlbmRlcmVyQ2hyb21pdW0qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERy
YXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVt
cExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNmQ4MDY4NGY2NjRmMDI1ZGY1MzZhNzBlZWRm
ZDQ0NWJmYjgzNDRmNC4uNTNiYmQ0YjQ1YTk1ZjQ5MDkyNmIxNDZhYjUyMWUyYjJmNDZlZmIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgpAQCAtMTQzLDcgKzE0Miw3
IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRl
KHF1YWRUcmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxh
eWVyQ2xpcFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBDQ0xheWVy
SW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKikKK3ZvaWQgQ0NMYXllckltcGw6
OndpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopCiB7CiAjaWZuZGVmIE5E
RUJVRwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBiZSBtYXRjaGVkLgpAQCAtMTY5LDcg
KzE2OCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRD
dWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1CiAgICAgcXVhZExpc3QuYXBwZW5kKEND
RGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgbGF5ZXJSZWN0LCBk
ZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgoKSkpOwogfQogCi12b2lkIENDTGF5
ZXJJbXBsOjpiaW5kQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopCit2b2lk
IENDTGF5ZXJJbXBsOjpiaW5kQ29udGVudHNUZXh0dXJlKENDUmVuZGVyZXIqKQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYmI3NWE4OWVi
YWQzZjVhYWEzOTg1MmQ0NGQ5ODRhODIxMTliOTZmMC4uZTk0ZjY2MmM5OGM0ZjhkZDQ3MTdhMDcz
YTViZmU0YTJkMTg4YjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC00MywxMCArNDMsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1JlbmRlcmVy
OwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAog
Y2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQgewogcHVibGljOgpAQCAtODMsMTIgKzg0LDEyIEBAIHB1YmxpYzoKICAgICAvLyBkaWREcmF3
IGlzIGd1YXJhbnRlZWQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbm90aGVyIHdpbGxEcmF3IG9yIGJl
Zm9yZQogICAgIC8vIHRoZSBsYXllciBpcyBkZXN0cm95ZWQuIFRvIGVuZm9yY2UgdGhpcywgYW55
IGNsYXNzIHRoYXQgb3ZlcnJpZGVzCiAgICAgLy8gd2lsbERyYXcvZGlkRHJhdyBtdXN0IGNhbGwg
dGhlIGJhc2UgY2xhc3MgdmVyc2lvbi4KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIq
LCBDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxl
cykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsKICAgICB2b2lkIGFwcGVuZERlYnVn
Qm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKik7CisgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoQ0NSZW5kZXJl
ciopOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbGF5ZXIgaGFzIGNvbnRlbnQgdG8g
ZHJhdy4KICAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDk2Mzk3Y2E0NWM0MjE2NDk1YWNmYjhhMDdlNGI2YTBhMTU5OTAx
YWMuLjAyM2Q5NDBjZjRlZjBlZDc2OGE3ODc4MWUzMGMyMzQ5OWNhOTFhNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjY0LDkgKzI2NCwxMiBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Y29tbWl0Q29tcGxldGUoKQogICAgIG1fY2xpZW50LT5kaWRDb21taXQoKTsKIH0K
IAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGVD
b250ZXh0KCkKK1Bhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5jcmVhdGVDb250ZXh0KCk7
CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0OworICAgIGlmIChzZXR0aW5n
cygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUyRCgpOworICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
M0QobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKIH0KIAogUGFzc093blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKQEAgLTI4NCw3ICsyODcsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6ZGlkTG9zZUNvbnRleHQoKQogfQogCiAvLyBUZW1wb3JhcnkgaGFj
ayB1bnRpbCBXZWJWaWV3SW1wbCBjb250ZXh0IGNyZWF0aW9uIGdldHMgc2ltcGxpZmllZAotR3Jh
cGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCgpCitDQ0dyYXBoaWNzQ29u
dGV4dCogQ0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KCkKIHsKICAgICByZXR1cm4gbV9wcm94eS0+
Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBlY2VjMjNiMTFk
YWQ3ZmYxOTBhOTkzYzczNDk1YTI4OGY4NTg5NWViLi4xM2MwYTIyZTVmYzNmNWQ0YTNlZjc2NWYx
YTA4ODJkZTNiNDBkNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIlJhdGVMaW1pdGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0FuaW1hdGlvbkV2ZW50cy5oIgorI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogCkBAIC02MCw3ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRp
bWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBw
YWdlU2NhbGUpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNyZWF0ZUNvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjcmVhdGVDb250ZXh0M0QoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3Jl
YXRlQ29udGV4dChib29sIHN1Y2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1p
dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgPSAwOwpAQCAtNzcsNiArNzgs
NyBAQCBwcm90ZWN0ZWQ6CiBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgQ0NTZXR0aW5ncygpCiAg
ICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKKyAgICAgICAgICAgICwgZm9y
Y2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRl
cihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAg
ICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKQEAgLTkzLDYgKzk1LDcgQEAgc3RydWN0
IENDU2V0dGluZ3MgewogICAgIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7Cisg
ICAgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgYm9vbCBzaG93RlBTQ291bnRl
cjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIHNob3dQYWludFJl
Y3RzOwpAQCAtMTYwLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luQ29tbWl0T25J
bXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGZpbmlzaENvbW1pdE9u
SW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBjb21taXRDb21wbGV0
ZSgpOwotICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKTsK
KyAgICBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGVDb250ZXh0KCk7CiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhv
c3RJbXBsKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2b2lkIGRpZExvc2VDb250
ZXh0KCk7CiAgICAgZW51bSBSZWNyZWF0ZVJlc3VsdCB7CkBAIC0xODcsNyArMTkwLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gTk9URTogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBvbmx5IGJlIHVzZWQg
dG8gbWFrZSBHTCBjYWxscyBvciBtYWtlIHRoZQogICAgIC8vIGNvbnRleHQgY3VycmVudCBvbiB0
aGUgdGhyZWFkIHRoZSBjb21wb3NpdG9yIGlzIHJ1bm5pbmcgb24hCi0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQoKTsKKyAgICBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpOwogCiAg
ICAgLy8gQ29tcG9zaXRlcyBhbmQgYXR0ZW1wdHMgdG8gcmVhZCBiYWNrIHRoZSByZXN1bHQgaW50
byB0aGUgcHJvdmlkZWQKICAgICAvLyBidWZmZXIuIElmIGl0IHdhc24ndCBwb3NzaWJsZSwgZS5n
LiBkdWUgdG8gY29udGV4dCBsb3N0LCB3aWxsIHJldHVybgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAppbmRleCA5MTMzNmE3NzY4ZDNkZDYyMTFiMDk4NDg0OWM2MmMyM2E0
ZWQ1MzYwLi4zZTE2OWVkOTE1OTAxN2JjZGIwZjg4YWFjNTUwNDRiNzY0OTI3NWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0ND
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oIgpAQCAtMTY1LDkgKzE2NCw5IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FuRHJhdygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkKK0NDR3JhcGhpY3NDb250
ZXh0KiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9sYXll
clJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCkgOiAwOworICAgIHJldHVybiBt
X2NvbnRleHQuZ2V0KCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCkBAIC0zMjksNyArMzI4
LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NS
ZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHND
b250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFk
c0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyKTsKICAgICAgICAg
ZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgp
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJSZW5kZXJlci5n
ZXQoKSk7CisgICAgICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpLCBj
b250ZXh0KCkpOwogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZv
Y2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICB9CiAKQEAgLTU0NSwx
MCArNTQ0LDE2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZp
c2libGUpCiAgICAgc2V0QmFja2dyb3VuZFRpY2tpbmdFbmFibGVkKCFtX3Zpc2libGUgJiYgbV9u
ZWVkc0FuaW1hdGVMYXllcnMpOwogfQogCi1ib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQs
IFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXIpCitib29sIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXIpCiB7
CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgp
OworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXI7
Ci0gICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMs
IGNvbnRleHQsIHRleHR1cmVVcGxvYWRlcik7CisgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNvbnRleHQzZCwgdGV4dHVyZVVwbG9hZGVyKTsK
IAogICAgIC8vIFNpbmNlIHdlIG5vdyBoYXZlIGEgbmV3IGNvbnRleHQvbGF5ZXJSZW5kZXJlciwg
d2UgY2Fubm90IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkCiAgICAgLy8gcmVzb3VyY2VzIChpLmUu
IHJlbmRlclN1cmZhY2VzIGFuZCB0ZXh0dXJlIElEcykuCkBAIC01NTgsNiArNTYzLDggQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPgogICAgIH0KIAogICAgIG1fbGF5ZXJSZW5kZXJlciA9IGxheWVy
UmVuZGVyZXIucmVsZWFzZSgpOworICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCisgICAgICAgIG1f
Y29udGV4dCA9IGNvbnRleHQ7CiAKICAgICBpZiAoIW1fdmlzaWJsZSAmJiBtX2xheWVyUmVuZGVy
ZXIpCiAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFZpc2libGUobV92aXNpYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBmOGI3NjMxNDA0ZDdjMjM4MzEx
N2M1ODZhZmRiZmE0Y2EwYzMyMGIwLi5hNDEzNGMwMjY0ZWE4YWNkOGMyMDExNTNiMDc0YmZjNmNj
YzAwOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9zdEltcGwgb3ducyB0aGUgQ0NM
YXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVyaW5nIHN0YXRlCi1jbGFz
cyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBMYXll
clJlbmRlcmVyQ2hyb21pdW1DbGllbnQgeworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbCA6IHB1
YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCwgQ0NSZW5kZXJlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NMYXllclRyZWVIb3N0SW1wbCk7CiAgICAgdHlwZWRlZiBWZWN0b3I8
Q0NMYXllckltcGwqPiBDQ0xheWVyTGlzdDsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBNdXN0IGJlIGNhbGxlZCBpZiBhbmQgb25seSBpZiBwcmVwYXJlVG9EcmF3IHdhcyBj
YWxsZWQuCiAgICAgdm9pZCBkaWREcmF3QWxsTGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYpOwogCi0g
ICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6
ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9kZXZpY2VW
aWV3cG9ydFNpemU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEltcGxlbWVudGF0aW9uCiAgICAgYm9vbCBjYW5EcmF3KCk7Ci0gICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQoKTsKKyAgICBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpOwog
CiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Rm9udEF0
bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKQEAgLTEyMiw5ICsxMjIsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICBpbnQgZnJhbWVOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVyOyB9CiAKLSAgICBib29sIGluaXRpYWxpemVMYXll
clJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlVXBsb2FkZXJP
cHRpb24pOworICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAgICAgYm9vbCBpc0NvbnRl
eHRMb3N0KCk7Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgeyBy
ZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CisgICAgQ0NSZW5kZXJlciogbGF5ZXJSZW5k
ZXJlcigpIHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQogICAgIGNvbnN0IExheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsK
ICAgICBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdDsK
IApAQCAtMjEwLDcgKzIxMCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGR1bXBSZW5kZXJTdXJm
YWNlcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCwgY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsK
IAotICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKKyAg
ICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZW5k
ZXJlcj4gbV9sYXllclJlbmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5
ZXJJbXBsOwogICAgIENDTGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsKICAgICBDQ1NldHRp
bmdzIG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggMzY2MjkxNzlhMmUxNjUzOTBlZDI4MmI4
ZDU1YjczNTRhN2M1ZDA0MC4uZmIyY2JiYWU5NmYwNzMzMDA3NWMyNTMzNWRiYTA3ZTU5YTVkMmUy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENDRm9udEF0bGFzOwogY2xhc3MgQ0NUaHJlYWQ7Ci1jbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKK2NsYXNzIENDR3JhcGhpY3NDb250ZXh0Owogc3RydWN0IExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXM7CiAKIC8vIEFic3RyYWN0IGNsYXNzIHJlc3BvbnNpYmxlIGZvciBwcm94eWluZyBj
b21tYW5kcyBmcm9tIHRoZSBtYWluLXRocmVhZCBzaWRlIG9mCkBAIC0xMTMsNyArMTEzLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICAvLyBUZW1wb3JhcnkgaGFjayB3aGlsZSByZW5kZXJfd2lk
Z2V0IHN0aWxsIGRvZXMgc2NoZWR1bGluZyBmb3IgQ0NMYXllclRyZWVIb3N0TWFpblRocmVhZEkK
LSAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgPSAwOworICAgIHZpcnR1
YWwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSA9IDA7CiAKICAgICAvLyBUZXN0aW5nIGhv
b2tzCiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkyNTAwY2FhMzg0NmMxMWNlODY5ZjU5ZmUwZjU1MjQ5ODY4ZGRiMWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmVyLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVu
ZGVyZXJfaAorI2RlZmluZSBDQ1JlbmRlcmVyX2gKKworI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgor
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUmVuZGVyUGFzczsKK2NsYXNzIFRleHR1
cmVBbGxvY2F0b3I7CitjbGFzcyBUZXh0dXJlQ29waWVyOworY2xhc3MgVGV4dHVyZU1hbmFnZXI7
CitjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CisKK2NsYXNzIENDUmVuZGVyZXJDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZ1
bGxSb290TGF5ZXJEYW1hZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTWVt
b3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KSA9IDA7Cit9OworCitjbGFzcyBDQ1JlbmRl
cmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlcmVyKTsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5DQ1JlbmRlcmVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKKworICAgIGNvbnN0
IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPnNldHRpbmdz
KCk7IH0KKworICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIHsgcmV0dXJuIG1fY2xp
ZW50LT5kZXZpY2VWaWV3cG9ydFNpemUoKTsgfQorICAgIGludCB2aWV3cG9ydFdpZHRoKCkgeyBy
ZXR1cm4gdmlld3BvcnRTaXplKCkud2lkdGgoKTsgfQorICAgIGludCB2aWV3cG9ydEhlaWdodCgp
IHsgcmV0dXJuIHZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld3BvcnRDaGFuZ2VkKCkgPSAwOworCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXg7IH0K
KyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyBy
ZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdG
cmFtZShDQ1JlbmRlclN1cmZhY2UqIGRlZmF1bHRSZW5kZXJTdXJmYWNlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNp
emUpID0gMDsKKworICAgIC8vIHdhaXRzIGZvciByZW5kZXJpbmcgdG8gZmluaXNoCisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkb05vT3AoKSA9IDA7
CisgICAgLy8gcHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCisgICAgdmlydHVhbCBib29sIHN3YXBC
dWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcikgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0gMDsK
KworICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdl
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRl
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9j
YXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRleHRMb3N0KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGUoYm9vbCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQ0NSZW5kZXJlcihDQ1Jl
bmRlcmVyQ2xpZW50KiBjbGllbnQpCisgICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsK
KyAgICB9CisKKyAgICBDQ1JlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX3Byb2plY3Rpb25NYXRyaXg7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV93aW5kb3dNYXRyaXg7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ1JlbmRlcmVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCAyNDNhZDIzMWU3ZjQ2ZmM4
OWViMDQwNWQ4ZDBiZjUzNjgzMWVjNjE0Li42YjUxYzgxNjliZWZiMDJkNzVlNDA3NDAwMzQ4MmE3
MTIyYzliM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBA
IC01MCw5ICs1MCw5IEBAIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhckxheWVySW1w
bChpbnQgaWQpCiB7CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQgQ0NTY3JvbGxiYXJMYXll
ckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQogewotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVy
KTsKKyAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4dCk7CiAK
ICAgICBpZiAoYm91bmRzKCkuaXNFbXB0eSgpIHx8IGNvbnRlbnRCb3VuZHMoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTc3LDExICs3NywxNiBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5
ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAK
ICAgICB7CiAgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFz
KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5j
b250ZXh0KCk7CiAgICAgICAgIG1fdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgbGF5ZXJS
ZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CiAKICAgICAgICAgLy8g
RklYTUU6IFNraWEgdXNlcyBCR1JBIGFjdHVhbGx5LCB3ZSBjb3JyZWN0IHRoYXQgd2l0aCB0aGUg
c3dpenpsZSBwaXhlbCBzaGFkZXIuCi0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhJ
bWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBtX3RleHR1cmUtPmZvcm1h
dCgpLCBjYW52YXMuc2l6ZSgpLndpZHRoKCksIGNhbnZhcy5zaXplKCkuaGVpZ2h0KCksIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
bG9ja2VyLnBpeGVscygpKSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3Np
dGluZy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEdMQyhjb250
ZXh0M2QsIGNvbnRleHQzZC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgY2FudmFzLnNpemUoKS53aWR0aCgpLCBjYW52YXMu
c2l6ZSgpLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGxvY2tlci5waXhlbHMoKSkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggMzJhZDFkOGRkZmVmOTk3MjI3
NGExZWYwMTg0NzAzNjVhY2RlNjFkOC4uZjk3NWMxOWU5OWE5MzNmZmFlNmIxMTIzNmM3NzhiYzE2
ODNiYTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVy
SW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4
dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwMTEzYzA3OWE2ODRiYWFkY2RkNGVlNDcx
NjJiM2NmYjE5MjhiOTg3Li4xYTNiYzQxYTM2MjliMmY3MjQ4MzFhYzE4NjZkNzMwMDk3NDZjMmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMjYsNyArMjYs
NiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKQEAg
LTExNSw3ICsxMTQsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLAogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNo
b3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgZHVyYXRpb24pOwogfQog
Ci1HcmFwaGljc0NvbnRleHQzRCogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCgpCitDQ0dy
YXBoaWNzQ29udGV4dCogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCgpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9jb250ZXh0QmVmb3JlSW5p
dGlhbGl6YXRpb24pCkBAIC0xNDIsNyArMTQxLDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojppc1N0YXJ0ZWQoKSBjb25zdAogYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXpl
Q29udGV4dCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0
ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xh
eWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQoY29udGV4dC0+aGFzT25lUmVmKCkpOwpAQCAtMTc2
LDcgKzE3NSw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NvbnRl
eHRMb3N0KTsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fbGF5
ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4
dD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKaW5kZXggOGZjODk4NGJmOTQwMGYyYjgzZmZiOGUxNGFkYzFlNDIwZjIxZGZl
Yy4uOTU4N2ZmODgwODFjMmQwYWE2M2Y0OTBjODM1MWU0OTlkMGY5Y2I5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRS
ZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9z
aXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNTdGFydGVkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGluaXRp
YWxpemVDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBIb2xkcyBvbiB0byB0aGUgY29udGV4dCBiZXR3ZWVuIGluaXRpYWxpemVDb250ZXh0KCkg
YW5kIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgY2FsbHMuIFNob3VsZG4ndAogICAgIC8vIGJl
IHVzZWQgZm9yIGFueXRoaW5nIGVsc2UuCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBt
X2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbjsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uOwogCiAgICAgT3duUHRyPENDU2luZ2xl
VGhyZWFkUHJveHlBbmltYXRpb25UaW1lcj4gbV9hbmltYXRpb25UaW1lcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCBhYjU2ZDFmMzc3YTJjNmY4Y2U1YjcyM2NjZDY1
MWFhZWUxNGJlOWExLi4wNWU5ZjU0ZGRhZWNhYWIyNDFlOWI1YTRhZGM1YmYxNWM3NDJkMjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBib29s
IENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9l
bnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSB8fCBtX2NvcHlFbnRyaWVz
LnNpemUoKSB8fCBtX21hbmFnZWRDb3B5RW50cmllcy5zaXplKCk7CiB9CiAKLXZvaWQgQ0NUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVy
KiB1cGxvYWRlciwgc2l6ZV90IGNvdW50KQordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
VGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyLCBzaXplX3Qg
Y291bnQpCiB7CiAgICAgc2l6ZV90IGluZGV4OwogCkBAIC0xNDIsOCArMTQyLDEyIEBAIHZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvCiAgICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFueSB0ZXh0dXJl
IGNvcGllcywgd2UgbmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhlIGNvbXBvc2l0
b3IgY29udGV4dAogICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVhZCBwcm9jZWVk
IGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJlIG9mIG9uZSBv
ZgogICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCi0gICAgaWYgKG1fY29weUVudHJpZXMuc2l6
ZSgpIHx8IG1fbWFuYWdlZENvcHlFbnRyaWVzLnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+Zmx1
c2goKTsKKyAgICBpZiAobV9jb3B5RW50cmllcy5zaXplKCkgfHwgbV9tYW5hZ2VkQ29weUVudHJp
ZXMuc2l6ZSgpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgaWYgKGNvbnRleHQzZCkKKyAgICAgICAgICAgIGNv
bnRleHQzZC0+Zmx1c2goKTsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGgg
Zm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgIH0KIAogICAgIC8vIElmIG5vIGVudHJpZXMg
bGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgogICAgIGNsZWFyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgKaW5kZXggMjRkODk2ZjJiNTkxMjA5MDA0MWE0MzNmMTY2NTFkNjIzYzBk
YjYyZi4uN2M5ZmUyZTMwOGNhNGYyNDRjMjY3NjFlODNhODQ1ODJiYzNjZDRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRv
cjsKIGNsYXNzIFRleHR1cmVDb3BpZXI7CiBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CkBAIC01MCw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKICAg
ICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4KLSAgICB2b2lkIHVwZGF0ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVy
Kiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIHVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVyKiwgc2l6ZV90
IGNvdW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAppbmRleCBmYjBhNWMxMGI1N2Y3OTg4MTAzZDIxMzIzOThjNmExOGNjM2MxNDE5Li5lOTU1NTU1
MTA1NjdlMjk3ZjM5YTBlM2MxOTZlZmE4ZjI4MmFjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBv
c2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwg
ZHVyYXRpb24pOwogfQogCi1HcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQcm94eTo6Y29udGV4
dCgpCitDQ0dyYXBoaWNzQ29udGV4dCogQ0NUaHJlYWRQcm94eTo6Y29udGV4dCgpCiB7CiAgICAg
cmV0dXJuIDA7CiB9CkBAIC0xNzYsMTMgKzE3NiwxMyBAQCBib29sIENDVGhyZWFkUHJveHk6Omlz
U3RhcnRlZCgpIGNvbnN0CiBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0KCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQiLCB0
aGlzLCAwKTsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVy
VHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQoY29udGV4dC0+aGFzT25l
UmVmKCkpOwogCiAgICAgLy8gTGVhayB0aGUgY29udGV4dCBwb2ludGVyIHNvIHdlIGNhbiB0cmFu
c2ZlciBvd25lcnNoaXAgb2YgaXQgdG8gdGhlIG90aGVyIHNpZGUuLi4KLSAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYo
KTsKICAgICBBU1NFUlQoY29udGV4dFB0ci0+aGFzT25lUmVmKCkpOwogCiAgICAgQ0NQcm94eTo6
aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkLApAQCAtMjI5LDE3ICsyMjksMTcg
QEAgYm9vbCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICAvLyBUcnkgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgotICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRl
Q29udGV4dCgpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fbGF5
ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzRmlsdGVyQ29udGV4
dCgpKQorICAgIGlmIChDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzRmlsdGVyQ29udGV4dCgpICYmICFt
X2xheWVyVHJlZUhvc3QtPnNldHRpbmdzKCkuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKQogICAg
ICAgICBpZiAoIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JJbXBsVGhyZWFkKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoY29udGV4dC0+aGFzT25l
UmVmKCkpOwogCiAgICAgLy8gTGVhayB0aGUgY29udGV4dCBwb2ludGVyIHNvIHdlIGNhbiB0cmFu
c2ZlciBvd25lcnNoaXAgb2YgaXQgdG8gdGhlIG90aGVyIHNpZGUuLi4KLSAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYo
KTsKICAgICBBU1NFUlQoY29udGV4dFB0ci0+aGFzT25lUmVmKCkpOwogCiAgICAgLy8gTWFrZSBh
IGJsb2NraW5nIGNhbGwgdG8gcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLiBUaGUgcmVzdWx0
cyBvZiB0aGF0CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChDQ0xheWVyVHJlZUhvc3Q6
Om5lZWRzRmlsdGVyQ29udGV4dCgpICYmICFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6aGF2ZUZv
ckltcGxUaHJlYWQoKSkKKyAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRl
eHQoKSAmJiAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3Np
dGluZyAmJiAhU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmhhdmVGb3JJbXBsVGhyZWFkKCkpCiAg
ICAgICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JJbXBsVGhyZWFkKCk7CiAK
ICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlPiByZXF1ZXN0KG1fcGVuZGluZ0Jl
Z2luRnJhbWVSZXF1ZXN0LnJlbGVhc2UoKSk7CkBAIC04MDcsNyArODA3LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbikKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAotdm9pZCBDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJl
YWQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAg
QVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OnNldEZvbnRBdGxhc09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPiBm
b250QXRsYXMpCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0Rm9udEF0bGFzKGZvbnRBdGxh
cyk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMq
IGNhcGFiaWxpdGllcykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ0dyYXBoaWNzQ29udGV4dCog
Y29udGV4dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMqIGNhcGFiaWxpdGllcykKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOWQyZWRkYTZmZGUwZGRmNzEw
N2ZlMWM3NTk3YTJhMGU5ZjMyM2VlOC4uMjRkYjkyZTZlYTE1YzlmNDYyODI5Njk5MDFlZWJiZTVm
OTg5ZTZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21w
b3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYg
dGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0
aW9uKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGluaXRpYWxpemVDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC0xMzYsMTIgKzEzNiwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCopOwogICAgIHZvaWQgc2V0U3VyZmFjZVJlYWR5T25JbXBsVGhyZWFkKCk7Ci0g
ICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQzRCop
OworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NHcmFwaGljc0NvbnRl
eHQqKTsKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcyopOwogICAgIHZvaWQgbGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1w
bFRocmVhZCgpOwogICAgIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXNGb3JNYWluVGhyZWFkT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9pZCByZWNyZWF0ZUNvbnRleHRP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGljc0NvbnRleHQzRCosIGJvb2wq
IHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CisgICAgdm9p
ZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ0dyYXBo
aWNzQ29udGV4dCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CiAgICAgdm9pZCBz
ZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogICAgIHZv
aWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50Kik7CkBAIC0xNjgsOSArMTY4LDkgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxDQ1Njb3Bl
ZFRocmVhZFByb3h5PiBtX21haW5UaHJlYWRQcm94eTsKIAotICAgIC8vIEhvbGRzIG9uIHRvIHRo
ZSBHcmFwaGljc0NvbnRleHQzRCB3ZSBtaWdodCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdl
ZW4gaW5pdGlhbGl6ZUNvbnRleHQoKQorICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBjb250ZXh0IHdl
IG1pZ2h0IHVzZSBmb3IgY29tcG9zaXRpbmcgaW4gYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgp
CiAgICAgLy8gYW5kIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgY2FsbHMuCi0gICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRo
cmVhZDsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dEJlZm9yZUluaXRp
YWxpemF0aW9uT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFk
IGlzIHdhaXRpbmcgb24gYSBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIHRvIGJlIGlzc3VlZC4K
ICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBmNTg1ZDY4MDQw
ZmFhZWVmMzBkMmE0YjMzZDc2YWUwMTAxZDk1MmRkLi5lMmJjNjMyNzJjODkzODZhNTI1Nzg2MzA3
OTRlYWIzY2I0YzcwMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAt
MTI4LDEwICsxMjgsMTAgQEAgc3RhdGljIEdDM0RlbnVtIGNvbnZlcnRWRkNGb3JtYXRUb0dDM0RG
b3JtYXQoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUU7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQordm9pZCBD
Q1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOwotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVyKTsKKyAgICBD
Q0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4dCk7CiAKICAgICAvLyBF
eHBsaWNpdGx5IGxvY2sgYW5kIHVubG9jayB0aGUgcHJvdmlkZXIgbXV0ZXggc28gaXQgY2FuIGJl
IGhlbGQgZnJvbQogICAgIC8vIHdpbGxEcmF3IHRvIGRpZERyYXcuIFNpbmNlIHRoZSBjb21wb3Np
dG9yIHRocmVhZCBpcyBpbiB0aGUgbWlkZGxlIG9mCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBD
Q1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIpCiAgICAgICAgIG1fcHJvdmlkZXJNdXRleC51bmxvY2soKTsKIH0KIAotdm9pZCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlcikKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChDQ1Jl
bmRlcmVyKiBsYXllclJlbmRlcmVyKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBJbnRTaXplIENDVmlkZW9MYXllckltcGw6OmNv
bXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1lLAogICAg
IHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwgdmlzaWJsZUhlaWdodCk7CiB9CiAKLWJvb2wg
Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9G
cmFtZSYgZnJhbWUsIEdDM0RlbnVtIGZvcm1hdCwgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyKQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpyZXNlcnZlVGV4dHVyZXMoY29uc3Qg
V2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwgR0MzRGVudW0gZm9ybWF0LCBDQ1JlbmRlcmVy
KiBsYXllclJlbmRlcmVyKQogewogICAgIGlmIChmcmFtZS5wbGFuZXMoKSA+IE1heFBsYW5lcykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4
IDQ0NjA2YzEzYjJkNzEwMmI5MmI0ZTMxZTBmZDNhOTAyZjQ1NTE0NTMuLjUwMDNmNzRmNzgzZmU1
YzY5M2EyOTViNzhlMDY2NzYwYTQwMWRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1ZpZGVv
TGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIq
LCBDQ0dyYXBoaWNzQ29udGV4dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSBPVkVSUklE
RTsKIApAQCAtODEsOCArODEsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1
dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmLCB1bnNpZ25lZCBwbGFu
ZSk7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuICJWaWRlb0xheWVyIjsgfQogCi0gICAgdm9pZCB3aWxsRHJhd0ludGVy
bmFsKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwotICAgIGJvb2wgcmVzZXJ2ZVRleHR1cmVzKGNv
bnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYsIEdDM0RlbnVtIGZvcm1hdCwgTGF5ZXJSZW5kZXJl
ckNocm9taXVtKik7CisgICAgdm9pZCB3aWxsRHJhd0ludGVybmFsKENDUmVuZGVyZXIqKTsKKyAg
ICBib29sIHJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmLCBHQzNE
ZW51bSBmb3JtYXQsIENDUmVuZGVyZXIqKTsKIAogICAgIC8vIEd1YXJkcyB0aGUgZGVzdHJ1Y3Rp
b24gb2YgbV9wcm92aWRlciBhbmQgdGhlIGZyYW1lIHRoYXQgaXQgcHJvdmlkZXMKICAgICBNdXRl
eCBtX3Byb3ZpZGVyTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0
dGluZ3MuaAppbmRleCBjY2YzMzAzYzc1NzM3OWY4ZTk4ZmZiNzc4N2JiZDQ4M2QzMGEwZmMyLi5k
NmUwNjU4MWQwZjJiMWI2ZDRhMDRiNTgwODdhYThlZDZjMWJhOWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3Ip
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29s
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhib29s
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5z
Zm9ybXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29sKSA9IDA7CkBAIC0xNTYsNiArMTU3LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5n
Q29udGV4dChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN5bmNYSFJJbkRvY3VtZW50
c0VuYWJsZWQoYm9vbCkgPSAwOwogCisgICAgdmlydHVhbCBib29sIGZvcmNlU29mdHdhcmVDb21w
b3NpdGluZygpIGNvbnN0ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5j
cHAKaW5kZXggNjVhMmE2M2IxOGEyYzhjY2ZkYzVmZWMxZTEwZjE5YzYzM2FjYTU1OC4uYWUyMGFl
YTlhMzU4M2U2MzQyNDlmNWJiNGRiNDA4ODI4NGQ4MjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgV2Vi
TGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDU2V0dGluZ3MoKSBjb25zdAogewog
ICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5n
ID0gYWNjZWxlcmF0ZVBhaW50aW5nOworICAgIHNldHRpbmdzLmZvcmNlU29mdHdhcmVDb21wb3Np
dGluZyA9IGZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsKICAgICBzZXR0aW5ncy5zaG93RlBTQ291
bnRlciA9IHNob3dGUFNDb3VudGVyOwogICAgIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJl
ZSA9IHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9
IHNob3dQYWludFJlY3RzOwpAQCAtMTYxLDcgKzE2Miw3IEBAIHZvaWQgV2ViTGF5ZXJUcmVlVmll
dzo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKIAogV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkxheWVy
VHJlZVZpZXc6OmNvbnRleHQoKQogewotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3Qo
KS0+Y29udGV4dCgpKTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRy
YWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRl
eHQoKS0+Y29udGV4dDNEKCkpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxvc2VDb21w
b3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggNDVhOTk2MDNjYjFmNWIzZmU2
N2M2OTI5ZTg1ODU0MzU3ZTNmZjIyNi4uMTdkNWZlODY3NWE3ZWNhZTI0MjA2M2UyYTczMDJhNzM2
NDcyMDlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmNwcApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVS
UklERSB7IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1l
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7IG1fY2xpZW50LT5sYXlv
dXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgbV9j
bGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHBhZ2VTY2FsZSk7IH0KLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNv
bnRleHQoKSBPVkVSUklERQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIE93
blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKG1fY2xpZW50
LT5jcmVhdGVDb250ZXh0M0QoKSk7CiAgICAgICAgIGlmICghd2ViQ29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IGM1MWZmZmJm
NzlhZTcxNmJjN2M2NjY3NzYxYjMxOTYzZmE3OTRjNDAuLjUzNTEwNGI5ZDQ1Y2M0OGJmZWI0ODNm
ZjRmNGJiOGQ2ODFjYWE0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAg
IDogbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5n
KGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwgbV9zaG93UGFpbnRSZWN0cyhmYWxzZSkKQEAgLTM4
OCw2ICszODksMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9k
ZShlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEZvcmNlU29mdHdhcmVD
b21wb3NpdGluZyhib29sIGVuYWJsZWQpCit7CisgICAgbV9mb3JjZVNvZnR3YXJlQ29tcG9zaXRp
bmcgPSBlbmFibGVkOworfQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TW9ja1Njcm9sbGJh
cnNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRNb2NrU2Nyb2xs
YmFyc0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCmluZGV4IGMyODkwODQ0MWYyZjUzZjJiYWE0M2FjZTdkMWRiY2Y3NDk4MTk4
MDAuLjcyOTIwMDVjYzc5Y2NhZjVjZmJjMDc4MzMxZDA5Y2YxZGY5ZTNlNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMDksNiArMTA5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0Jl
aGF2aW9yKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRl
b0VuYWJsZWQoYm9vbCk7CkBAIC0xNTgsOSArMTU5LDExIEBAIHB1YmxpYzoKICAgICBib29sIGFw
cGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9hcHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcjsgfQogICAgIFdlYlNp
emUgZGVmYXVsdFRpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VGlsZVNpemU7IH0K
ICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFVu
dGlsZWRMYXllclNpemU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKKyAgICBib29sIG1fZm9y
Y2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBi
b29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBkYWUwZDY1
NTk4ZTViNmQxOTQ3OWM1MmE1ZTQ4Y2IxZTRiOWMzMTBiLi43ZTJmNmVjM2E3MzMyZTBjNzg0ZDJk
ZTJkMjNjNDE4OTU1ZjMwNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC0zNDQ2LDYgKzM0NDYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291
bnRlcigpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlID0gc2V0dGluZ3NJbXBsKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAgICBs
YXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgPSBzZXR0aW5nc0ltcGwoKS0+c2hv
d1BhaW50UmVjdHMoKTsKKyAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLmZvcmNlU29mdHdh
cmVDb21wb3NpdGluZyA9IHNldHRpbmdzKCktPmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpOwog
CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwYWdlKCkt
PnNldHRpbmdzKCktPnBlclRpbGVEcmF3aW5nRW5hYmxlZCgpOwogICAgICAgICBsYXllclRyZWVW
aWV3U2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0
aWFsU3dhcEVuYWJsZWQoKTsKQEAgLTM0OTQsNiArMzQ5NSw5IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogUGFzc093
blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBXZWJWaWV3SW1wbDo6Y3JlYXRlQ29t
cG9zaXRvckdyYXBoaWNzQ29udGV4dDNEKCkKIHsKKyAgICBpZiAoc2V0dGluZ3MoKS0+Zm9yY2VT
b2Z0d2FyZUNvbXBvc2l0aW5nKCkpCisgICAgICAgIENSQVNIKCk7CisKICAgICAvLyBFeHBsaWNp
dGx5IGRpc2FibGUgYW50aWFsaWFzaW5nIGZvciB0aGUgY29tcG9zaXRvci4gQXMgb2YgdGhlIHRp
bWUgb2YKICAgICAvLyB0aGlzIHdyaXRpbmcsIHRoZSBvbmx5IHBsYXRmb3JtIHRoYXQgc3VwcG9y
dGVkIGFudGlhbGlhc2luZyBmb3IgdGhlCiAgICAgLy8gY29tcG9zaXRvciB3YXMgTWFjIE9TIFgs
IGJlY2F1c2UgdGhlIG9uLXNjcmVlbiBPcGVuR0wgY29udGV4dCBjcmVhdGlvbgpAQCAtMzUxNyw2
ICszNTIxLDkgQEAgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBXZWJW
aWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvckdyYXBoaWNzQ28KIAogV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogV2ViVmlld0ltcGw6OmNyZWF0ZUNvbnRleHQzRCgpCiB7CisgICAgaWYgKHNl
dHRpbmdzKCktPmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpKQorICAgICAgICBDUkFTSCgpOwor
CiAgICAgT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQ7CiAK
ICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNyZWF0ZWQgYW4gb25zY3JlZW4gY29udGV4dCBmb3Ig
dGhpcyB2aWV3LCByZXR1cm4gdGhhdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggOTFjMmQxZGZmMTIx
Mjc5YTdjNzQ2MDcwYzVjYmRjMjIyNGYyYjY1YS4uYzdkZjE5MTVjY2Q3NmRlZmI4N2QyOTBhYThh
NWIyNGFhNDYyZmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEwNyw5ICsxMDcsOSBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY3JlYXRlQ29udGV4dCgpCisgICAgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY3Jl
YXRlQ29udGV4dCgpCiAgICAgewotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNEKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpOworICAgICAgICByZXR1cm4gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCgpKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAgICAgfQogCiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1wbFRocmVhZDsKQEAgLTQxNiw3ICs0
MTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGlkRHJhd0NhbGxlZCA9IHRydWU7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopCisgICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopCiAg
ICAgewogICAgICAgICBtX3dpbGxEcmF3Q2FsbGVkID0gdHJ1ZTsKICAgICB9CkBAIC05ODgsNyAr
OTg4LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVk
VW50aWxEcmF3KQogewogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIg
PSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJhY2tlciksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgbV9ob3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAg
UmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlM0QoY29udGV4dCk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY2NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKIAogICAgIENDTGF5ZXJJbXBsKiBy
b290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAgIHJvb3QtPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwpAQCAtMTAzMSwxMyArMTAzMiwxNCBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQog
ewogICAgIFBhcnRpYWxTd2FwVHJhY2tlckNvbnRleHQqIHBhcnRpYWxTd2FwVHJhY2tlciA9IG5l
dyBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihwYXJ0aWFsU3dhcFRyYWNrZXIpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgIFJlZlB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNv
bnRleHQpOwogCiAgICAgLy8gVGhpcyB0ZXN0IGNyZWF0ZXMgaXRzIG93biBDQ0xheWVyVHJlZUhv
c3RJbXBsLCBzbwogICAgIC8vIHRoYXQgd2UgY2FuIGZvcmNlIHBhcnRpYWwgc3dhcCBlbmFibGVk
LgogICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFi
bGVkID0gdHJ1ZTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9z
dEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRo
cm90dGxlZFVwbG9hZGVyKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoY2NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVI
b3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKIAogICAgIENDTGF5
ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpAQCAtMTE1MSw3
ICsxMTUzLDcgQEAgcHVibGljOgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBmaW5p
c2hBbGxSZW5kZXJpbmdBZnRlckNvbnRleHRMb3N0KQogewogICAgIC8vIFRoZSBjb250ZXh0IGlu
aXRpYWxpemF0aW9uIHdpbGwgZmFpbCwgYnV0IHdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGNh
bGwgZmluaXNoQWxsUmVuZGVyaW5nKCkgd2l0aG91dCBhbnkgaWxsIGVmZmVjdHMuCi0gICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdl
YkdyYXBoaWNzQ29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKENDR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGUzRChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVu
dEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSks
IFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmlu
ZygpOwogfQogCkBAIC0xMzU2LDcgKzEzNTgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogCiAgICAgLy8gTG9z
ZSB0aGUgY29udGV4dCwgcmVwbGFjaW5nIGl0IHdpdGggYSBTdHJpY3RXZWJHcmFwaGljc0NvbnRl
eHQzRCwgdGhhdAogICAgIC8vIHdpbGwgd2FybiBpZiBhbnkgcmVzb3VyY2UgZnJvbSB0aGUgcHJl
dmlvdXMgY29udGV4dCBnZXRzIHVzZWQuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoU3RyaWN0V2ViR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7
CiAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIG1faG9zdEltcGwtPmRpZERyYXdB
bGxMYXllcnMoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMTI3NWVjODU0MjgxMDk4YzMxZTFiODAzMDYx
YzljY2E0ZGJmNWQ4Yy4uZmY2ZTM5ODM4M2Q5NTVjNTczMGQ4MGVmMjU5OGFhZmY0Y2I5ZmI5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29r
cy0+YXBwbHlTY3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0YSwgc2NhbGUpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9W
RVJSSURFCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVD
b250ZXh0M0QoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnM7CiAgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IHdlYkF0dHJzOwpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQog
ICAgIHsKLSAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0
dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKSkpOworICAgICAg
ICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyog
Y29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RX
aXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSkpOwogCiAgICAg
ICAgIHN3aXRjaCAoaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkgewogICAgICAgICBjYXNlIDA6
CkBAIC0yMDgxLDcgKzIwODEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAg
IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdp
dGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJH
cmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCkpKTsKKyAgICAgICAgQ29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFj
a2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4
dDNEKGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpKTsKIAogICAgICAgICAvLyBOdW1iZXIg
b2YgdGV4dHVyZXMgdXNlZCBmb3IgZHJhdyBzaG91bGQgYWx3YXlzIGJlIG9uZS4KICAgICAgICAg
RVhQRUNUX0VRKDEsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKQEAgLTIxNTEsNyArMjE1
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJh
Y2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChpbXBsLT5jb250ZXh0KCkpKTsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21w
b3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNv
bnRleHQoKS0+Y29udGV4dDNEKCkpKTsKIAogICAgICAgICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZy
YW1lTnVtYmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpAQCAtMjIyMCw3ICsyMjIwLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqIGltcGwpCiAgICAgewotICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBv
c2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29u
dGV4dCgpKSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRo
VGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJH
cmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRl
eHQzRCgpKSk7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXdp
bmcgc2hvdWxkIHR3byBleGNlcHQgZm9yIGZyYW1lIDQKICAgICAgICAgLy8gd2hlcmUgdGhlIHZp
ZXdwb3J0IG9ubHkgY29udGFpbnMgb25lIGxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKaW5kZXggNDZkMTFh
OTZlN2Y4ZDQ4MjQ5N2RjZDQ5ZmU0NDYxZmI1YWNhZmJjYy4uNzAxN2EwMWZmNjlhNjJkMzJmYTMx
OWI4ZGE3NDdhMWE0NTQ4M2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQg
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikKK3ZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0
ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNv
bnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKIHsKICAgICBpZiAoYWxsb2NhdG9yKQogICAg
ICAgICB0ZXh0dXJlKCktPmFsbG9jYXRlKGFsbG9jYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDRlYjg3
NWIxZWMzNzg5MWM1ODY3ODEyM2E0MWNjMzIyYzVkZGQ5ZjQuLjk4MjRkOGMwNjRmZDQwN2FhMjdj
YWVlMzhkMDcwOTBlN2ZiMmRjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaWZu
ZGVmIENDVGlsZWRMYXllclRlc3RDb21tb25faAogI2RlZmluZSBDQ1RpbGVkTGF5ZXJUZXN0Q29t
bW9uX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIK
KyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVy
ZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZha2VMYXllclRleHR1cmVVcGRhdGVy
KiwgUGFzc093blB0cjxXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFs
IH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0QqLCBXZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiAsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiwgV2ViQ29yZTo6
VGV4dHVyZUFsbG9jYXRvciogLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJs
aWM6CiAKIGNsYXNzIEZha2VUZXh0dXJlQ29waWVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVD
b3BpZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBo
aWNzQ29udGV4dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IHsgfQogfTsKIAogY2xhc3MgRmFrZVRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBXZWJDb3JlOjpU
ZXh0dXJlVXBsb2FkZXIgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5V
cGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2ViQ29y
ZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNv
dXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBk
YXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBX
ZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3Qgc291cmNlUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJl
LT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBiNDI0ODViNzE4ZjA4YTU2OWYwZjEy
NmQ0OWNmZjYwMGI1YmNkNzViLi5hNTY1MTQ2YTVkNDkxOTY1YjdiMWFkMjVkNmZlNjljNTE1MTU0
MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogCiBj
bGFzcyBNb2NrVGV4dHVyZUNvcGllciA6IHB1YmxpYyBUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoK
LSAgICBNT0NLX01FVEhPRDQoY29weVRleHR1cmUsIHZvaWQoR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IEludFNpemUmKSk7CisgICAgTU9DS19NRVRIT0Q0KGNv
cHlUZXh0dXJlLCB2b2lkKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBj
b25zdCBJbnRTaXplJikpOwogfTsKIAogY2xhc3MgTW9ja1RleHR1cmVVcGxvYWRlciA6IHB1Ymxp
YyBUZXh0dXJlVXBsb2FkZXIgewpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgTU9DS19N
RVRIT0QwKGlzQnVzeSwgYm9vbCgpKTsKICAgICBNT0NLX01FVEhPRDAoYmVnaW5VcGxvYWRzLCB2
b2lkKCkpOwogICAgIE1PQ0tfTUVUSE9EMChlbmRVcGxvYWRzLCB2b2lkKCkpOwotICAgIE1PQ0tf
TUVUSE9ENSh1cGxvYWRUZXh0dXJlLCB2b2lkKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0LCBj
b25zdCBJbnRSZWN0KSk7CisgICAgTU9DS19NRVRIT0Q1KHVwbG9hZFRleHR1cmUsIHZvaWQoQ0NH
cmFwaGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QsIGNvbnN0IEludFJlY3QpKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCkBAIC0xMDUsNyArMTA1LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKIAogICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1haW5Db250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQo
KSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAg
ICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NNYWluQ29udGV4dCA9IENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChtYWluQ29udGV4dCk7CiAgICAgICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gaW1wbENvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4
dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAg
ICAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0ltcGxDb250ZXh0ID0gQ0NHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZTNEKGltcGxDb250ZXh0KTsKIAogICAgICAgICBNb2NrQ2FudmFzQ29u
dGV4dCYgbWFpbk1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtYWluQ29udGV4
dC5nZXQoKSkpOwogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGlj
X2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJh
Y3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwpAQCAtMTQwLDcgKzE0
Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdGV4dHVyZSBhbmQg
ZG8gdGhlIGNvcHkgKG9uIHRoZSBpbXBsIHRocmVhZCkuCiAgICAgICAgICAgICAgICAgRVhQRUNU
X0NBTEwoYWxsb2NhdG9yTW9jaywgY3JlYXRlVGV4dHVyZShzaXplLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSkpCiAgICAgICAgICAgICAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oZnJvbnRUZXh0
dXJlSWQpKTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChjb3BpZXJNb2NrLCBjb3B5VGV4
dHVyZShpbXBsQ29udGV4dC5nZXQoKSwgYmFja1RleHR1cmVJZCwgZnJvbnRUZXh0dXJlSWQsIHNp
emUpKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChjb3BpZXJNb2NrLCBjb3B5VGV4dHVy
ZShjY0ltcGxDb250ZXh0LmdldCgpLCBiYWNrVGV4dHVyZUlkLCBmcm9udFRleHR1cmVJZCwgc2l6
ZSkpOwogICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2NrLCBmbHVzaCgpKTsKIAog
ICAgICAgICAgICAgICAgIC8vIFRlYXJkb3duIFRleHR1cmVNYW5hZ2VyLgpAQCAtMTY0LDcgKzE2
Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJ
bXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVySW1wbCgpOwogICAgICAgICAgICAgRVhQRUNUX0VR
KDB1LCBzdGF0aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50
ZXh0dXJlSWQoKSk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKGltcGxDb250ZXh0Lmdl
dCgpLCAmYWxsb2NhdG9yTW9jaywgJmNvcGllck1vY2ssICZ1cGxvYWRlck1vY2ssIDEpOworICAg
ICAgICAgICAgdXBkYXRlci51cGRhdGUoY2NJbXBsQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRvck1v
Y2ssICZjb3BpZXJNb2NrLCAmdXBsb2FkZXJNb2NrLCAxKTsKICAgICAgICAgICAgIGNhbnZhcy0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhy
ZWFkZWQgJiYgIWRlZmVycmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAppbmRleCA5OTI1MDljNGZkY2Q5ZjMw
YTM4MmExNmI1MzdhMGE1YTY1YWQyMmI4Li42YWI2MTZkM2M4YTc5NzEzMmVlNGVmY2Q4NzFiODk3
OWMwN2IyZjc5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VD
Q0xheWVyVHJlZUhvc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVn
aW5UaW1lKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRyczsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0
M0QoYXR0cnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggODQ0NWZlYmE3NjAwYTQyMThlY2M5
NGY0Zjc1NjkwMWMxZDg2MTNkMS4uMGJiOTY3MzM0MDk2NTFhZGI2ZmVjNjAxODllZjYyNWQ2NDQy
YmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgcHJpdmF0ZToK
ICAgICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTSog
bV9tZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrOwogfTsKIAotY2xhc3MgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bUNsaWVudCA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQgeworY2xhc3MgRmFrZUNDUmVuZGVyZXJDbGllbnQgOiBwdWJsaWMgQ0NSZW5kZXJlckNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCgpCisgICAg
RmFrZUNDUmVuZGVyZXJDbGllbnQoKQogICAgICAgICA6IG1fc2V0RnVsbFJvb3RMYXllckRhbWFn
ZUNvdW50KDApCiAgICAgICAgICwgbV9yb290TGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSgxKSkK
ICAgICB7CiAgICAgICAgIG1fcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAg
fQogCi0gICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1ldGhvZHMuCisgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2
aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgSW50U2l6ZSBmYWtlU2l6
ZTsgcmV0dXJuIGZha2VTaXplOyB9CiAgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0
aW5ncygpIGNvbnN0IE9WRVJSSURFIHsgc3RhdGljIENDU2V0dGluZ3MgZmFrZVNldHRpbmdzOyBy
ZXR1cm4gZmFrZVNldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkg
T1ZFUlJJREUgeyB9CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKIHB1Ymxp
YzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNs
aWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExh
eWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIp
IHsgfQorICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xp
ZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExheWVyUmVuZGVy
ZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQogCiAg
ICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsK
ICAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0JiBtX21vY2tD
b250ZXh0OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgbV9tb2NrQ2xpZW50
OworICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOwogfTsKIApAQCAtMjcwLDcg
KzI3MCw3IEBAIHB1YmxpYzoKIC8vIFRoaXMgdGVzdCBpc24ndCB1c2luZyB0aGUgc2FtZSBmaXh0
dXJlIGFzIExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIGFuZCB5b3UgY2FuJ3QgbWl4IFRFU1Qo
KSBhbmQgVEVTVF9GKCkgd2l0aCB0aGUgc2FtZSBuYW1lLCBoZW5jZSBMUkMyLgogVEVTVChMYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9u
b3VzQ2FsbHMpCiB7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBtb2NrQ2xp
ZW50OworICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
YWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCAxNzE3M2MwYTViMzdk
MWI4ZWIwOGQ2Y2IxODJhZDFkMDc0ZTU0ODZlLi5kNzFiOGNlNDVhM2VhMzAzMjQ0MmY4NjQ4OTVk
NDUzMGRlNmE3ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVDb3BpZXJUZXN0LmNwcApAQCAtNTQsNiArNTQsNyBAQCBURVNUKFRleHR1cmVDb3BpZXJU
ZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnM7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChh
ZG9wdFB0cihuZXcgTW9ja0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdyk7CiAgICAgTW9ja0NvbnRleHQmIG1vY2tDb250ZXh0ID0gKnN0YXRp
Y19jYXN0PE1vY2tDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQp
OwogCiAgICAgewogICAgICAgICBJblNlcXVlbmNlIHNlcXVlbmNlOwpAQCAtNzksNyArODAsNyBA
QCBURVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgaW50IGRl
c3RUZXh0dXJlSWQgPSAyOwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7CiAgICAgT3duUHRy
PEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cjo6Y3JlYXRlKGNvbnRleHQpKTsKLSAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNvbnRleHQuZ2V0
KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CisgICAgY29waWVyLT5j
b3B5VGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJ
ZCwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBjOTEyNWE4
NTI5YjExMThkOGZhZjMyNTJkMjFkNzMwM2IyOTkzNjIyLi5kNWQxMGQ5NDZmMTg5NGE4MTcyMGM1
YzgwMWZjYzQ1YzA0MTVhZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTY3MSwxMiArNjcxLDEzIEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAg
IEZha2VUZXh0dXJlQ29waWVyIGZha2VDb3BpZXI7CiAgICAgRmFrZVRleHR1cmVVcGxvYWRlciBm
YWtlVXBsb2FkZXI7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3Jl
YXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlcygpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IEND
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKIAogICAgIC8vIFRoZSB0aWxlIHNp
emUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRp
bGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAg
dXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVy
LCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0
KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdl
IHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTY4OSw3ICs2OTAs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkK
ICAgICAvLyBJbnZva2UgdXBkYXRlTGF5ZXJSZWN0IGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFs
aWQgdXBkYXRlTGF5ZXJSZWN0IHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExh
eWVyVGV4dHVyZVVwZGF0ZXIuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5n
ZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsK
KyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFr
ZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKQEAgLTY5NywxMiArNjk4LDEy
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRl
KEludFJlY3QoMjUsIDI1LCA1MCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAg
dXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVy
LCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0
KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAg
ICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
Q291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJl
cGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFz
IHVwZGF0ZUxheWVyUmVjdCBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRl
ci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFr
ZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZm
YWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQ
RUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQo
KSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145363</attachid>
            <date>2012-06-01 13:01:24 -0700</date>
            <delta_ts>2012-06-01 15:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87920-20120601130123.patch</filename>
            <type>text/plain</type>
            <size>126360</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwYTYyNWYwNDY2ZWQ4
NjhiZWUzOTUzZmNlM2JjY2MwMTk2OTk1YTZmLi45Y2MzZjQyMjg4YjUyZDc3ZDNmNTMwZTMyZjRj
ZWNjNzJmMmQxOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0zMCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNl
dHRpbmcgdG8gZm9yY2Ugc29mdHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlzIG1vZGUsCisgICAg
ICAgIG5vIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoU2V0dGlu
Z3MpOgorCiAyMDEyLTA2LTAxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIENhbGwgY2xpcGJvYXJkIG1ldGhvZHMgZGlyZWN0bHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBiZmU1MGUwMWEzMGNkMjRlMjYwNWY3ZWFhOTYxMzI0MjBhZjUwYjE1Li4xNWRm
Y2M5ZWZjODUwMjM0MTIwNjJhZjUxNDZlYTA4YTE4NTU0NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUzIEBACisyMDEyLTA1LTMwICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbY2hyb21pdW1dIFNvZnR3YXJlIGNvbXBvc2l0b3IgaW5pdGlhbGl6YXRp
b24gYW5kIGJhc2UgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGludHJvZHVjZXMgbmV3IHdyYXBwZXIgY2xhc3MgQ0NHcmFwaGljc0Nv
bnRleHQgYW5kIGJhc2UgY2xhc3MKKyAgICAgICAgQ0NSZW5kZXJlciB3aGljaCB3aWxsIGJlIHVz
ZWQgZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nIHN1cHBvcnQuCisgICAgICAgIElmIG5vIEdyYXBo
aWNzQ29udGV4dDNEIGlzIGF2YWlsYWJsZSwgZWFybHkgcmV0dXJuIGZvciBub3cuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoTm8tb3AgY2hhbmdlIGluIDNkIG1vZGUuKQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6Cisg
ICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoVGV4dHVyZSk6CisgICAgICAgIChCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAo
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
VGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlcmVyOjp0b0dMTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJlcjo6Q0NSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyZXI6On5DQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
ZXI6OmNjQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJlcjo6dmlld3BvcnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlcmVyOjp2aWV3cG9ydEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
Ojpwcm9qZWN0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyZXI6OndpbmRv
d01hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzaGFyZWRHZW9tZXRyeVF1
YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhT
dWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2Fk
V2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChM
YXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoK
KyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2Fk
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6
CisgICAgICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NHcmFwaGljc0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJpbmRD
b250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyUmVuZGVyZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAg
ICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xl
VGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wNi0wMSAgSm9lIFRob21hcyAgPGpv
ZXRob21hc0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSBmb3IgYmFj
a2dyb3VuZCBzaG9ydGhhbmQgcHJvcGVydHkgZG9lcyBub3QgcmV0dXJuIGJhY2tncm91bmQtb3Jp
Z2luIGFuZCBiYWNrZ3JvdW5kLWNsaXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk5
NGUzZTY3NTUyNmY2YTAzNTMyYjg0MTg5NThhNjhlNTAzOWZhNTcuLjY3NmFiZTVlYzMxOGFiYjc5
NmUzMzk2ZTVlNWMyMWZlNWUzNmMwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTUgQEAKKzIwMTItMDUtMzAgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gU29mdHdhcmUgY29tcG9zaXRvciBpbml0aWFsaXph
dGlvbiBhbmQgYmFzZSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NzkyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIG5ldyBzZXR0aW5nIHRvIGZvcmNlIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLiAgSW4gdGhpcyBtb2RlLAorICAgICAgICBubyBHcmFwaGljc0NvbnRleHQzRCBzaG91bGQg
ZXZlciBiZSBjcmVhdGVkLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAg
ICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OmNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAg
ICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6
OmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVDb21wb3Np
dG9yR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3Jl
YXRlQ29udGV4dDNEKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3RBdG9taWNDb21taXQ6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OmRyYXdMYXllcnNPbkNDVGhyZWFk
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0
aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmRyYXdMYXllcnNP
bkNDVGhyZWFkKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dXBkYXRlUmVjdCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oOgor
ICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3Bp
ZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9h
ZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZl
Y3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Lmg6
CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKToK
KyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAgIChU
RVNUKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHA6CisgICAgICAgICog
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgor
CiAyMDEyLTA2LTAxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIENhbGwgY2xpcGJvYXJkIG1ldGhvZHMgZGlyZWN0bHkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXgg
MmIwZjMwYWRlYjVlYTFhYzE4YjlhYjBkMmEyNTIzZTdjNWZmZGExNy4uMjNkMGQ2M2NlOWRkMjhh
NWI1YmFkNzEyOGVhYTE0OWE5NzNiOWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGlj
OgogICAgIHN0cnVjdCBTZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKICAgICAgICAgICAg
IDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJl
Q29tcG9zaXRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQog
ICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAs
IHNob3dQYWludFJlY3RzKGZhbHNlKQpAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKKyAgICAgICAgYm9vbCBmb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAg
ICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgICAgICBib29sIHNob3dQYWludFJl
Y3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAppbmRleCBmNTVjMDYyMTZhZGUxMmQwODFhNDU5ODIxOGM5MTJiMzVjNWQyZjZhLi44MjQ1
YWE5ZTY4ODQ4NjBiNmQyYjFmZTlmNDA0Y2Q1Yjc0ZDJlMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBk
YXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRl
UmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
IHsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxv
Y2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQpAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1Bh
aW50ZXIuY29udGV4dCgpLCAqY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVj
dCwgY29udGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0
dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9M
b2NrZXIgbG9ja2VyKCZtX2NhbnZhcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAwNGNjNDFhMjQ2MjVhNzA4MzExZWFiN2M0ZWI5
NGUzMTE4OTBlNTFiLi42ZmY3YzYzOTZhYzA2OGZmZWY0ZjU4YTcxZjhhMTQ5ZjExOTdjYzA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2
aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
cigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBj
cmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1Nj
YWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJv
b2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGU5YzI2MTliMDY0YzBlODRiNTUyZDM4YmU0
Y2U2NTA1NmMwYzE1MWUuLmI3NTkyNTJlMWY3YWIyYWJkYzZhYWFhY2Q5MDlkYTg3OWY0N2VmZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3Qg
SW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoJmNhbnZhcywg
c291cmNlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNr
Q2FudmFzKiBjYW52YQogICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7CiB9CiAKLXZvaWQgQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IHVpbnQ4X3QqIHBpeGVscykKIHsKICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChwaXhlbHMs
IGRlc3RSZWN0LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKaW5kZXggYmIxNDMxMDA0M2FkZGVhNThlMjZmMTE0MzNiZDlhNTVjMzVhYWNhYy4u
NTA5N2NlMGIyZjAwNzNlMzcyMzc1NDMxMTM3YTUwZTY1ZmY0NmFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NH
cmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIo
KSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QmIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpOwogICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWlu
dDhfdCogcGl4ZWxzKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250
ZXh0KiwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWlu
dDhfdCogcGl4ZWxzKTsKIAogcHJpdmF0ZToKICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVz
ZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCA0ZmI0YjhkMDE3NGU0MjA1ZjQ3MTMyNmEyZTg4ZmVjMzZkYWRhNDQ4Li5hYmE5Y2E0
Nzk5YWY5NzlmMTNkZTFkZjdkN2I1NmEzMzljZjUxNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJv
bWl1bTsKIGNsYXNzIFBsYXRmb3JtQ29udGV4dFNraWE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDBjYTM1NGQ3NGEwZWFkYzFmNzFjMGIzNTI0ZGNmNzdhYzkxNjg3ODUuLmRh
YzAzNTU1Mjk4MjUyNmM0OTBkMWNjN2RkMTJmOTQ1MGVjZWJiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwog
fQpAQCAtOTYsMTUgKzk2LDIxIEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJu
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0
dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQogeworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250
ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICAvLyBNYWtlIHN1cmUgZ2FuZXNoIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29u
dGV4dC4KLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjb250ZXh0M2Qt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIC8vIE5vdGlmeSBnYW5lc2ggdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOworICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOwogCiAgICAg
Ly8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgotICAgIE93blB0cjxT
a0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29udGV4dCwgYWxsb2Nh
dG9yLCB0ZXh0dXJlKTsKKyAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2Vs
ZXJhdGVkQ2FudmFzKGNvbnRleHQzZCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKIAogICAgIC8vIFRo
ZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhlIHRleHR1cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0
IGNhbiBmbGlwCiAgICAgLy8gdGhlIGZpbmFsIGNvbXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5k
ZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdlCkBAIC0xMjAsNyArMTI2LDcgQEAgdm9pZCBGcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ28KICAgICBkcmF3UGljdHVyZShjYW52YXMuZ2V0KCkpOwogCiAgICAgLy8g
Rmx1c2ggZ2FuZXNoIGNvbnRleHQgc28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVh
cnMgb24gdGhlIHRleHR1cmUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7Cisg
ICAgY29udGV4dDNkLT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA1MDM5YmE5MDJjMWU1ZDFmZWZi
YmI1MTNmYzg1Mzg2MjY1ZGEwMzcwLi5lYzRkMDg4ZjIzODliNTI2MjQ3Yzg4MjVjMmFmY2Q2NWRi
NTY4MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFs
IH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2Ft
cGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NH
cmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IGQ0YTQzMDEyZDQ1NmI5MTAwMGRhZjcyZTIxYzViZGVhZGI1
MzViYzUuLjBlY2VlYzYyNjYwZjg4M2EyMzliOGQyNjgyNWJkYjhhYzAzODM3OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKICAgICAgICAgewogICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAg
ICAgewogICAgICAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggYTkzZDE3NjBmY2FkMDBlMjEyNzBkNTA2MWEwMjQ3ZTJm
NjIxYmRjZC4uZTgwMmMzNjhjYzFlZjg4NmRiZmZlY2JkMmM4OGMzYTFiZTBkMzExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtNjIsNyArNjIsNiBAQCBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVs
ZWdhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNz
IENDVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFNjcm9s
bGJhckxheWVyQ2hyb21pdW07CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJz
LiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGFjYWNjMzUzYmEzZmU3MzMyOGExMjNmYmY4MmVjZWEw
YzkxOWY5OTAuLjRkOTBjZTU2ODk0Mjc1ZmNiOGUzMGMyODhkNTJkZmFjODA2YjQ3YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9h
ZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJl
KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNv
bnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQpAQCAtMjE3LDcgKzIxNyw3IEBA
IHByaXZhdGU6CiB9OwogCiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNs
aWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgVGV4dHVyZVVwbG9h
ZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCitQYXNzT3duUHRyPExheWVyUmVuZGVy
ZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJl
VXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRl
cmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwog
ICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5pdGlhbGl6ZSgpKQpAQCAtMjI2LDI1ICsyMjYsMjYg
QEAgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHIKICAgICByZXR1cm4gbGF5ZXJSZW5kZXJlci5yZWxl
YXNlKCk7CiB9CiAKLUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LAorTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5n
KQotICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAg
LCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVy
ZSgwKQogICAgICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCisgICAgLCBtX3NoYXJlZEdl
b21ldHJ5UXVhZChGbG9hdFJlY3QoLTAuNWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKICAgICAsIG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQotICAgICwg
bV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikp
CiAgICAgLCBtX2lzVmlld3BvcnRDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9pc0ZyYW1lYnVmZmVy
RGlzY2FyZGVkKGZhbHNlKQogICAgICwgbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKHRleHR1cmVV
cGxvYWRlclNldHRpbmcpCiB7CisgICAgQVNTRVJUKG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIGNs
YXNzIENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNE
OjpDb250ZXh0TG9zdENhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
b250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNs
aWVudCogY2xpZW50KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2tB
ZGFwdGVyPiBjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcihjbGllbnQpKTsK
ICAgICB9CkBAIC0yNTUsMTAgKzI1NiwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKExheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCogY2xpZW50KQorICAgIGV4cGxpY2l0IENvbnRleHRMb3N0Q2FsbGJhY2tBZGFw
dGVyKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCkKICAgICAgICAgOiBtX2NsaWVudChjbGllbnQp
IHsgfQogCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBD
Q1JlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKIH07CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjppbml0aWFsaXplKCkKQEAgLTEwNzcsNyArMTA3OCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjb3B5UGxhbmVUb1RleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFk
LCBjb25zCiB7CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6VGV4dHVyZSYgdGV4dHVyZSA9IHF1YWQt
PnRleHR1cmVzKClbaW5kZXhdOwogICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciA9IHJl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCk7Ci0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJp
bmRUZXh0dXJlKGNvbnRleHQoKSwgYWxsb2NhdG9yKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQp
OworICAgIHRleHR1cmUubV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIGFs
bG9jYXRvcik7CiAgICAgR0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1h
dCgpOwogICAgIEludFNpemUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7
CiAKQEAgLTEyMTcsNyArMTIxOSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
SGVhZHNVcERpc3BsYXkoTWFuYWdlZFRleHR1cmUqIGh1ZFRleHR1cmUsIGNvbnN0CiAgICAgY29u
c3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFtID0gaGVhZHNVcERpc3BsYXlQcm9ncmFt
KCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMCkpOwotICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKG1fY29udGV4dC5nZXQo
KSwgcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgUmVmUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250
ZXh0KTsKKyAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHJlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2Nh
dGlvbigpLCAwKSk7CiAKQEAgLTE0NDIsNyArMTQ0NSw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0CiAgICAgaWYgKCF0ZXh0dXJlLT5yZXNlcnZlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4dHVyZS0+
YmluZFRleHR1cmUobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yLmdldCgpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IEND
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAgIHRleHR1cmUtPmJpbmRU
ZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5n
ZXQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2
aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ4NCw3ICsxNDg4LDggQEAgYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSwgY28KIHsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJ
ZCkpOwogCi0gICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgp
LCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCht
X2NvbnRleHQpOworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29udGV4dC5n
ZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAKICNpZiAhZGVm
aW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApp
bmRleCAwZjk2NWE4YjRmYWQ1M2NlYTFlZmQwOTgzZWU5NWJmOTc3NjcyM2E2Li4yZWZiZGIyNjBi
YzM3NWZhNjNlM2MwODQ5YjM4YjY2YTVkOWI5NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaApAQCAtMzQsMTcgKzM0LDExIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKLSNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVV
cGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNyAr
NDYsNiBAQCBjbGFzcyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOwogY2xhc3MgQ0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkOwogY2xhc3MgQ0NEcmF3UXVhZDsKIGNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7
Ci1jbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDsKIGNs
YXNzIENDU29saWRDb2xvckRyYXdRdWFkOwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CkBAIC02
NCw3NCArNTcsNTcgQEAgY2xhc3MgTGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFu
Z2VkQ2FsbGJhY2tBZGFwdGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxl
dGVDYWxsYmFja0FkYXB0ZXI7CiBjbGFzcyBTY29wZWRFbnN1cmVGcmFtZWJ1ZmZlckFsbG9jYXRp
b247CiAKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
dmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3dh
cEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXll
ckRhbWFnZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0
aW9uTGltaXRCeXRlcyhzaXplX3QpID0gMDsKLX07Ci0KIGVudW0gVGV4dHVyZVVwbG9hZGVyT3B0
aW9uIHsgVGhyb3R0bGVkVXBsb2FkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIgfTsKIAogLy8gQ2xh
c3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5n
IEdMLgotY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKK2NsYXNzIExheWVyUmVuZGVyZXJD
aHJvbWl1bSA6IHB1YmxpYyBDQ1JlbmRlcmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
YXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExh
eWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCos
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVu
ZGVyZXJDbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVwbG9h
ZGVyT3B0aW9uKTsKIAotICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKKyAgICB2aXJ0dWFs
IH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPnNldHRpbmdzKCk7IH0KLSAgICBjb25zdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBt
X2NhcGFiaWxpdGllczsgfQorICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jYXBhYmlsaXRp
ZXM7IH0KIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7Ci0gICAgYm9vbCBjb250
ZXh0U3VwcG9ydHNNYXBTdWIoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllcy51c2luZ01h
cFN1YjsgfQogCi0gICAgdm9pZCB2aWV3cG9ydENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld3BvcnRDaGFuZ2VkKCkgT1ZFUlJJREU7CisKKyAgICBjb25zdCBGbG9hdFF1YWQmIHNoYXJl
ZEdlb21ldHJ5UXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAK
LSAgICB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRl
clN1cmZhY2UpOwotICAgIHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKik7
Ci0gICAgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5E
cmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFjZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklE
RTsKIAotICAgIHZvaWQgZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiwgY29uc3Qg
SW50U2l6ZSYgaHVkU2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShN
YW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpIE9WRVJSSURFOwogCiAgICAg
Ly8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gKLSAgICB2b2lkIGZpbmlzaCgpOworICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2goKSBPVkVSUklERTsKIAotICAgIHZvaWQgZG9Ob09wKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRvTm9PcCgpIE9WRVJSSURFOwogICAgIC8vIHB1dHMgYmFja2J1ZmZl
ciBvbnNjcmVlbgotICAgIGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVy
KTsKKyAgICB2aXJ0dWFsIGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVy
KSBPVkVSUklERTsKIAogICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4
dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwog
Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQotICAgIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2luZG93TWF0cml4OyB9Ci0KICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJl
ZEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQotICAg
IGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWRHZW9tZXRyeVF1YWQ7IH0KIAogCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2
b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVi
dWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAg
Ym9vbCBnZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiBkZXZpY2VSZWN0KTsKIAotICAgIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNlVGV4dHVy
ZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5n
ZXQoKTsgfQotICAgIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KLSAgICBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVV
cGxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZVVwbG9hZGVyLmdldCgpOyB9Ci0gICAg
VGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9Ci0gICAgVGV4
dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0U2Npc3Nv
clRvUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5k
ZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVDb3Bp
ZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVDb3Bp
ZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KKyAg
ICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9y
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKTsgfQorICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IuZ2V0KCk7IH0KIAotICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAotICAgIHZv
aWQgc2V0VmlzaWJsZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9zdCgpIE9W
RVJSSURFOwogCi0gICAgR0MzRGVudW0gYmVzdFRleHR1cmVGb3JtYXQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlzaWJsZShib29sKSBPVkVSUklERTsKIAotICAgIHN0YXRpYyB2b2lkIHRvR0xN
YXRyaXgoZmxvYXQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAg
ICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGxheWVyTWF0cml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9u
LCBpbnQgcXVhZExvY2F0aW9uKTsKQEAgLTE0MywxMyArMTE5LDExIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2Fy
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBM
YXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgTGF5
ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGluaXRpYWxpemUo
KTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVy
biBtX2NsaWVudC0+ZGV2aWNlVmlld3BvcnRTaXplKCk7IH0KLSAgICBpbnQgdmlld3BvcnRXaWR0
aCgpIHsgcmV0dXJuIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KLSAgICBpbnQgdmlld3BvcnRI
ZWlnaHQoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsgfQorICAgIHN0YXRpYyB2
b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4Jik7CiAKICAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBGbG9h
dFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKICAgICB2b2lkIGRyYXdDaGVja2VyYm9hcmRRdWFk
KGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqKTsKQEAgLTE5MSwxOCArMTY1LDE0IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tBZGFwdGVyOwogICAgIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CiAKLSAg
ICBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIG1fY2xpZW50OwotCiAgICAgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcyBtX2NhcGFiaWxpdGllczsKIAotICAgIFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0cml4OwotICAgIFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7Ci0KICAgICBDQ1JlbmRlclN1cmZhY2UqIG1f
Y3VycmVudFJlbmRlclN1cmZhY2U7CiAgICAgTWFuYWdlZFRleHR1cmUqIG1fY3VycmVudE1hbmFn
ZWRUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZDsKIAogICAg
IE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CisgICAgRmxvYXRRdWFk
IG1fc2hhcmVkR2VvbWV0cnlRdWFkOwogCiAgICAgLy8gVGhpcyBibG9jayBvZiBiaW5kaW5ncyBk
ZWZpbmVzIGFsbCBvZiB0aGUgcHJvZ3JhbXMgdXNlZCBieSB0aGUgY29tcG9zaXRvciBpdHNlbGYu
CiAKQEAgLTI5Nyw4ICsyNjcsNiBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlOwogCi0gICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlR
dWFkOwotCiAgICAgYm9vbCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0ZyYW1l
YnVmZmVyRGlzY2FyZGVkOwogICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiBtX3RleHR1cmVVcGxv
YWRlclNldHRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggOGZl
YTM4YTY5MGM5NWNlN2EzOTg3NmI3MGMzYmQwZTY5N2IyZWI4Ni4uNWQ5MTJlYWVjNjllNjQ0MzM4
OTFjNDI1ODQyOWUyYTUwMWMzMDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdl
LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgi
CiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTUsNyBA
QCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50U2l6
ZSYgc3ViSW1hZ2VTaXplKQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQoY29u
c3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
ZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgICAgIHVwbG9hZFdp
dGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwg
Zm9ybWF0LCBjb250ZXh0KTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJ
bWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QKIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNv
bnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1Yklt
YWdlIiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3N1YkltYWdlKQpAQCAtODcsMTkgKzg3LDMxIEBA
IHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1
aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJ
bWFnZVswXTsKICAgICB9Ci0gICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0
LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnRleHQzZC0+dGV4U3ViSW1hZ2Uy
RChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVj
dC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7CiB9CiAKIHZvaWQgTGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90
KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJ
bWFnZSIsIHRoaXMsIDApOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJj
ZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54
KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKICAgICAvLyBVcGxvYWQgdGls
ZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKLSAgICBFeHRlbnNpb25zM0RDaHJv
bWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5z
aW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dDNkLT5nZXRF
eHRlbnNpb25zKCkpOwogICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53
aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIAogICAgIGlm
ICghcGl4ZWxEZXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAppbmRleCBkOWYw
ODM3MTllMDFkYjA2Yzg4OTNlYjg4NWVmMzczMjM1MjdiYzA4Li40ZjFjNDE1MjE0ZDIzMjlhYjZl
NzJjZGUxYjFmMmZlMjJmMjhhMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgK
QEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKK2NsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBMYXllclRleHR1
cmVTdWJJbWFnZSB7CiBwdWJsaWM6CkBAIC00NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHVwbG9hZChjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAot
ICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAg
ICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1h
Z2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNz
Q29udGV4dDNEKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBDQ0dyYXBoaWNzQ29udGV4dCopOwogICAgIHZvaWQgdXBsb2FkV2l0aE1hcFRleFN1Yklt
YWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCopOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsK
IAogICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKICAgICBJbnRTaXplIG1fc3ViSW1hZ2VT
aXplOwpAQCAtNjQsNCArNjQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNlbmRpZiAvLyBMYXllclRl
eHR1cmVTdWJJbWFnZV9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA1ZGI3
YjRjNTEyZTU2YWE0NjdiYTU2M2Y4NDM3ZWIyZjQwOWQ3Y2YwLi42MWU0MjU5ZTZjYzc5N2Q4MTY5
MmUwNjA5NDYyZmYzZWYxNGY2NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBA
IC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJ
bnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC01MCw3
ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsg
cmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJl
Y3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KSA9IDA7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggOWJjNzAwZGM5MGY2ZWI2MThkMTIyNGU1
NGEyMWY5MDBjMWNjYTI1YS4uOGYwM2UwZDllNjNhYjg1NmNhOTg4NWFkNjc5MDczZDY4MTZlMzM0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2lu
Y2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTE3LDE2ICsxMTgsMjYgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1h
bmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOwogfQogCi12b2lkIE1h
bmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1
cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cikKIHsKICAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICgh
Y29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBz
b2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0
M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJ
ZCk7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lk
IE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIGFsbG9jYXRlKGFs
bG9jYXRvcik7Ci0gICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlm
ICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZv
ciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250
ZXh0M2QtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOwogfQogCiBQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiBNYW5hZ2VkVGV4dHVyZTo6c3RlYWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXgg
ZWQ0ZDQ1MGU5NjljZTBhYjU0N2E5YWM1MTM4ZDRjMDkzZDgzOWQ2Mi4uOGE2NTY2YzMxZjgyOThj
ZWFkMWZiNGQzNGZiZDU5Mjc0Y2YwNjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIAogY2xhc3MgTWFuYWdlZFRleHR1cmUgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZWRUZXh0dXJlKTsKQEAgLTU4LDggKzU4LDgg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgYWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciop
OwotICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKik7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250
ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
Q0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKICAgICBJbnRTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB1bnNpZ25lZCBmb3JtYXQoKSBjb25z
dCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5j
cHAKaW5kZXggODBhOGEwM2ViYTYwNmE0MjUzYmNhZTc0ODgyMjE0NTQwMmM4NTQxMi4uN2FiOWJh
MDA4NmUxZDIwMzJjODMxOGJkOTYwMDAwMDA4NGI0YmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmgiCiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAppbmRleCBhNTkxYTMyYTExMzY4MTg4MzdlMzg0ZjRm
NTQyYWYyMzZiY2JiMWI3Li5iZDhjMzNhOWEyNTBhMDUyYTZlZDYwY2RjYzhkOTcwMTI5NmMwZjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApAQCAtNjEsMTAgKzYxLDE2IEBAIEFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpCiAgICAgICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pKTsKIH0KIAotdm9p
ZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJl
SWQsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6
Y29weVRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNjQ29udGV4dCwgdW5zaWduZWQgc291cmNl
VGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQog
ewogICAgIFRSQUNFX0VWRU5UKCJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIsIHRoaXMsIDAp
OwogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQz
RCgpOworICAgIGlmICghY29udGV4dCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9lcyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQs
IGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZyYW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQg
ZW5hYmxlLgogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRleCA3
M2JlNWVjYWQxNmY4ODU1MjUxMTgxZDY1MmI0ZGY4YzM4NGI4YjA1Li4zYWMyZDExOTE0ZmZhMTVm
OGRlYzJjYWIzZGY1Y2QyODBhM2E2ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJQcm9ncmFt
QmluZGluZy5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAvLyBDb3B5IHRoZSBi
YXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3VyY2VUZXh0dXJlSWR8IHRvIHxkZXN0VGV4dHVyZUlk
fC4gQm90aCB0ZXh0dXJlIG9iamVjdHMKICAgICAvLyBtdXN0IGJlIGNvbXBsZXRlIGFuZCBoYXZl
IGEgYmFzZSBsZXZlbCBvZiB8c2l6ZXwgZGltZW5zaW9ucy4gVGhlIGNvbG9yIGZvcm1hdHMgZG8g
bm90IG5lZWQKICAgICAvLyB0byBtYXRjaCwgYnV0IHxkZXN0VGV4dHVyZUlkfCBtdXN0IGhhdmUg
YSByZW5kZXJhYmxlIGZvcm1hdC4KLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJl
KENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBk
ZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB+VGV4dHVyZUNvcGllcigpIHsgfQpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpOwogCi0gICAgdmlydHVh
bCB2b2lkIGNvcHlUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgc291cmNlVGV4
dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CisgICAgdmly
dHVhbCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNl
VGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CiAKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAppbmRleCBlM2I0NGZk
NmIxN2YzZjJmOTQxYTg2ZjJmMmI3NDBmMjY0NTExNDlhLi4wZWFlMmU2NWRkMDI0NjRjZDIwZmJm
MzhmZGJiNzhlY2NkZGM4OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaApAQCAtMzYsNyArMzYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5VcGxvYWRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcAppbmRleCA1MTgxM2M1Y2I1NTYxZjkwNTdjMTI5
MmM4YTVkM2FhZWMyYzFlMjJmLi5mNWNmMmE0ZTEzOTc3YmQ4YTk4MzE1MTQ5MDVkMzEwM2IzMjFk
MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcygp
CiAgICAgbV9wZW5kaW5nUXVlcmllcy5hcHBlbmQobV9hdmFpbGFibGVRdWVyaWVzLnRha2VGaXJz
dCgpKTsKIH0KIAotdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQogewog
ICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCmluZGV4
IGE3MjA1ODY0OWFhMTFlYjZlNzVjYWU4OTlhZmFkYzk3MmJiNzJjMmQuLmRlYTNkMzU0YzViMWU1
ZTMwMGZkMDgyMmFlZDcxZmVhZWVhOGExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1
cmVVcGxvYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNCdXN5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVw
bG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUXVlcnkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk1ZjE4YzM0OTFi
NGM0ZGQ2MTE0MzkxNDE1ODc5OThlMjg4NzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NHcmFwaGljc0NvbnRleHRfaAorI2Rl
ZmluZSBDQ0dyYXBoaWNzQ29udGV4dF9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisKK2NsYXNzIENDR3JhcGhpY3NDb250ZXh0IDogcHVi
bGljIFJlZkNvdW50ZWQ8Q0NHcmFwaGljc0NvbnRleHQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY3JlYXRlMkQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZTNEKFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQzRCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ0NHcmFwaGljc0NvbnRleHQoY29udGV4dDNEKSk7CisgICAgfQorCisgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQzRCgpIHsgcmV0dXJuIG1fY29udGV4dDNELmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgQ0NHcmFwaGljc0NvbnRleHQoKSB7IH0KKyAgICBleHBsaWNpdCBDQ0dy
YXBoaWNzQ29udGV4dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QpCisg
ICAgICAgIDogbV9jb250ZXh0M0QoY29udGV4dDNEKSB7IH0KKworICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0dyYXBoaWNz
Q29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDdkNDlmNzk4
ZDFhYzdkNDhiZjc3NDM0N2JiYmM5N2ZiYTA4ZjNhMTYuLmUxNGQ1M2IwNjRlYjQyM2JkMWI0NzAx
OTYxMTYzMzk4OGE1YTYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBA
IC02OSw4ICs2OSwxMiBAQCBib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogCiB2b2lkIENDSGVhZHNVcERpc3BsYXk6
OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiB7Ci0gICAgTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxh
eWVyUmVuZGVyZXIoKTsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVu
ZGVyZXItPmNvbnRleHQoKTsKKyAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJU
cmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCA9IGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpOworICAgIGlm
ICghY29udGV4dCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Ig
c29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKCFt
X2h1ZFRleHR1cmUpCiAgICAgICAgIG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOwogCkBAIC0x
MDEsOSArMTA1LDkgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9z
dEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6
OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwogCi0gICAgICAgIG1faHVkVGV4dHVyZS0+Ymlu
ZFRleHR1cmUoY29udGV4dCwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxv
Y2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUobGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxv
Y2F0b3IoKSk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBmYWxzZTsKLSAgICAgICAg
aWYgKGxheWVyUmVuZGVyZXItPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKSB7CisgICAgICAgIGlm
IChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1YikgewogICAgICAgICAg
ICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNp
b25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgICAgICB1
aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFw
VGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAw
LCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hy
b21pdW06OldSSVRFX09OTFkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllcklt
cGwuY3BwCmluZGV4IDk1YzMyYmRlY2MyMDBmNjhmZjI4OTczY2Y3ODc5ZDQ4ZWIxN2UzN2QuLjlm
ZTkxNWQ0ZWE2MGQ2OWExODkwYTVhMDc2NDQ4ODI5YWViZDkxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKQEAgLTUzLDI1ICs1MywyOSBAQCBDQ0lPU3VyZmFj
ZUxheWVySW1wbDo6fkNDSU9TdXJmYWNlTGF5ZXJJbXBsKCkKICAgICBtX2lvU3VyZmFjZVRleHR1
cmVJZCA9IDA7CiB9CiAKLXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllcklt
cGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVyKTsK
KyAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4dCk7CiAKICAg
ICBpZiAobV9pb1N1cmZhY2VDaGFuZ2VkKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwotICAgICAgICBFeHRlbnNpb25zM0RD
aHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4o
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAgICBpZiAoIWNvbnRleHQzZCkg
eworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgIEFTU0VSVChl
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1faW9zdXJmYWNlIikpOwogICAgICAgICBB
U1NFUlQoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKTsK
IAogICAgICAgICBpZiAoIW1faW9TdXJmYWNlVGV4dHVyZUlkKQotICAgICAgICAgICAgbV9pb1N1
cmZhY2VUZXh0dXJlSWQgPSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0KLSAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkUwKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShFeHRlbnNp
b25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgbV9pb1N1cmZhY2VUZXh0dXJlSWQpKTsKLSAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpU
RVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmko
RXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhU
VVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgICAgIG1faW9TdXJmYWNl
VGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVhdGVUZXh0dXJlKCk7CisKKyAgICAgICAgR0xDKGNv
bnRleHQzZCwgY29udGV4dDNkLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCkpOworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEV4
dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkp
OworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoRXh0ZW5z
aW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgR0xDKGNv
bnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9S
RUNUQU5HTEVfQVJCLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQz
ZC0+dGV4UGFyYW1ldGVyaShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSkpOworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRl
cmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKICAg
ICAgICAgZXh0ZW5zaW9ucy0+dGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNKEV4dGVuc2lvbnMz
RDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VTaXplLndpZHRoKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZVNpemUuaGVpZ2h0
KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAppbmRleCA1ZDY2NDk2ZTEx
NTE1NzhiMWQ1ZTNlZjVkNTI2NTZiNjBjODJlN2NiLi4yOGEzNWNkMGYyMDgzYTg2MjEwMTcxODc5
YzFiOTI2YjUyYmQwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRl
cmVyQ2hyb21pdW0qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5k
ZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJv
cGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKaW5kZXggMWYwOGI5Yjk5NzM4NDI1ZDQxYTRjNGRmYmM3YjBlMzBiN2Qw
ZmUzNS4uOTNhYjE3ODE4NzJiZDMzZmM4MmQ1MDZmOTVmNDMwZDliZWYxMWJiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXll
ckltcGwuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgpAQCAtMTQ1LDcgKzE0NCw3IEBAIFBhc3NP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3Rh
dGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRUcmFu
c2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xpcFJl
Y3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6d2ls
bERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKikKK3ZvaWQgQ0NMYXllckltcGw6OndpbGxEcmF3
KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopCiB7CiAjaWZuZGVmIE5ERUJVRwogICAg
IC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBiZSBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
aW5kZXggMmM0MWQwNmVhOGIwMGJkZDJlY2Y0Mzc5ZmE4ZDVmYjlkZmMyOWNiYi4uY2RiOGM3ZDU5
YTFjZDE1MWFjZDY3NmZhODNkNjk3YWZjN2Q2MzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBA
IC00MywxMCArNDMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0dyYXBo
aWNzQ29udGV4dDsKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ1F1YWRDdWxsZXI7Citj
bGFzcyBDQ1JlbmRlcmVyOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKLWNsYXNzIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJDbGllbnQgewogcHVibGljOgpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gZGlkRHJhdyBpcyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciB3
aWxsRHJhdyBvciBiZWZvcmUKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZv
cmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERy
YXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZlcnNpb24uCi0gICAgdmlydHVhbCB2b2lkIHdp
bGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJh
dyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBo
YWRNaXNzaW5nVGlsZXMpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCk7CiAgICAgdm9p
ZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGNiNjEw
ZGZkOWU5MmMyMjdjZDgzMTYzYjEzNDA0MDVlYjZjZGZiMTYuLjE2NTllYzViZDg5YTJhNTA5OGRi
YmM0NzMzNDA5ZmNjM2QwNTExMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApA
QCAtMjY1LDkgKzI2NSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUo
KQogICAgIG1fY2xpZW50LT5kaWRDb21taXQoKTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0KCkKK1Bhc3NSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29udGV4dCgpCiB7Ci0gICAg
cmV0dXJuIG1fY2xpZW50LT5jcmVhdGVDb250ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjb250ZXh0OworICAgIGlmIChzZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3Np
dGluZykKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUyRCgpOworICAg
IHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jbGllbnQtPmNyZWF0ZUNvbnRl
eHQzRCgpKTsKIH0KIAogUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJl
ZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQq
IGNsaWVudCkKQEAgLTI4NSw3ICsyODgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkTG9z
ZUNvbnRleHQoKQogfQogCiAvLyBUZW1wb3JhcnkgaGFjayB1bnRpbCBXZWJWaWV3SW1wbCBjb250
ZXh0IGNyZWF0aW9uIGdldHMgc2ltcGxpZmllZAotR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJU
cmVlSG9zdDo6Y29udGV4dCgpCitDQ0dyYXBoaWNzQ29udGV4dCogQ0NMYXllclRyZWVIb3N0Ojpj
b250ZXh0KCkKIHsKICAgICByZXR1cm4gbV9wcm94eS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAppbmRleCBkYzhmYjFjOTM1NGMxYTBhYTQyYTZmYmZiY2NjY2NkNGEz
YTJkYWNhLi40MzRhZWMyNzQyMjAxYzVmNmQ1YjQ5Y2M1MzdlMTgwMzljMmM4NjRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVy
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJSYXRlTGltaXRlci5oIgogI2luY2x1ZGUgImNjL0NDQW5p
bWF0aW9uRXZlbnRzLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXQoKSA9IDA7CkBAIC03Niw2ICs3Nyw3IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICBDQ1NldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5n
KGZhbHNlKQorICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCiAg
ICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxh
dGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNl
KQpAQCAtOTIsNiArOTQsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgeyB9CiAKICAgICBi
b29sIGFjY2VsZXJhdGVQYWludGluZzsKKyAgICBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGlu
ZzsKICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlOwogICAgIGJvb2wgc2hvd1BhaW50UmVjdHM7CkBAIC0xNTksNyArMTYyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCop
OwogICAgIHZvaWQgZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KTsKICAgICB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0gICAgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlQ29udGV4dCgpOworICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCopOwogICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0
IHsKQEAgLTE4Niw3ICsxODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOT1RFOiBUaGUgcmV0dXJu
ZWQgdmFsdWUgY2FuIG9ubHkgYmUgdXNlZCB0byBtYWtlIEdMIGNhbGxzIG9yIG1ha2UgdGhlCiAg
ICAgLy8gY29udGV4dCBjdXJyZW50IG9uIHRoZSB0aHJlYWQgdGhlIGNvbXBvc2l0b3IgaXMgcnVu
bmluZyBvbiEKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOworICAgIENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KCk7CiAKICAgICAvLyBDb21wb3NpdGVzIGFuZCBhdHRlbXB0cyB0
byByZWFkIGJhY2sgdGhlIHJlc3VsdCBpbnRvIHRoZSBwcm92aWRlZAogICAgIC8vIGJ1ZmZlci4g
SWYgaXQgd2Fzbid0IHBvc3NpYmxlLCBlLmcuIGR1ZSB0byBjb250ZXh0IGxvc3QsIHdpbGwgcmV0
dXJuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDBhNDlmOGU3
ZGE1OTA2MmFjYmRhNDZhOGM1OTQ1NDlmOTQ2ODI1MWUuLjdkODNkMjA3ZGM2OTU0MTUyOWMxMTk4
YWFkMzE5ZWVjM2JhODc4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCkBAIC0x
NjcsOSArMTY2LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNvbnRleHQoKQorQ0NHcmFwaGljc0NvbnRleHQqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRl
eHQoKQogewotICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNv
bnRleHQoKSA6IDA7CisgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKIH0KIAogdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2Fs
bENsb2NrVGltZSkKQEAgLTMzMSw3ICszMzAsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQog
ICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkKICAg
ICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgJm9j
Y2x1c2lvblRyYWNrZXIpOwogICAgICAgICBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkg
JiYgIWl0LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpdC0+
d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpKTsKKyAgICAgICAgICAgIGl0LT53aWxsRHJh
dyhtX2xheWVyUmVuZGVyZXIuZ2V0KCksIGNvbnRleHQoKSk7CiAgICAgICAgICAgICBwYXNzLT5h
cHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxl
cyk7CiAgICAgICAgIH0KIApAQCAtNTQ3LDEwICs1NDYsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBzZXRCYWNrZ3JvdW5kVGlja2lu
Z0VuYWJsZWQoIW1fdmlzaWJsZSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycyk7CiB9CiAKLWJvb2wg
Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVV
cGxvYWRlcikKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVy
T3B0aW9uIHRleHR1cmVVcGxvYWRlcikKIHsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5n
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgT3duUHRyPExheWVyUmVuZGVy
ZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dCwgdGV4dHVyZVVwbG9hZGVyKTsKKyAg
ICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29u
dGV4dDNkLCB0ZXh0dXJlVXBsb2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBu
ZXcgY29udGV4dC9sYXllclJlbmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBv
bGQKICAgICAvLyByZXNvdXJjZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURz
KS4KQEAgLTU2MCw2ICs1NjUsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+CiAgICAgfQogCiAg
ICAgbV9sYXllclJlbmRlcmVyID0gbGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CisgICAgaWYgKG1f
bGF5ZXJSZW5kZXJlcikKKyAgICAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKIAogICAgIGlmICgh
bV92aXNpYmxlICYmIG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+
c2V0VmlzaWJsZShtX3Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CmluZGV4IDdmMGM3ZmY2NjNjYTNkZjhjY2U5MzFjMjZhMzFkNTFlN2E2MmM3MTUuLjkwYWEwZmIw
Njg1NjFmNjkyMDljYzQ2YjkzYTViZmQ3YWI2MzliZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogfTsKIAogLy8gQ0NMYXll
clRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2Np
YXRlZCByZW5kZXJpbmcgc3RhdGUKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMg
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCB7CitjbGFz
cyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBDQ1Jl
bmRlcmVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJ
bXBsKTsKICAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVySW1wbCo+IENDTGF5ZXJMaXN0OwogCkBA
IC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIC8vIE11c3QgYmUgY2FsbGVkIGlmIGFuZCBv
bmx5IGlmIHByZXBhcmVUb0RyYXcgd2FzIGNhbGxlZC4KICAgICB2b2lkIGRpZERyYXdBbGxMYXll
cnMoY29uc3QgRnJhbWVEYXRhJik7CiAKLSAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQgaW1wbGVtZW50YXRpb24KKyAgICAvLyBDQ1JlbmRlcmVyQ2xpZW50IGltcGxlbWVudGF0aW9u
CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2RldmljZVZpZXdwb3J0U2l6ZTsgfQogICAgIHZpcnR1YWwgY29u
c3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NldHRp
bmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC0x
MTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50YXRpb24KICAgICBib29s
IGNhbkRyYXcoKTsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOworICAgIENDR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KCk7CiAKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwpA
QCAtMTIxLDkgKzEyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygp
OwogICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0K
IAotICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgYm9vbCBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVy
T3B0aW9uKTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKLSAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0K
KyAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVy
LmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwogICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0OwogCkBAIC0yMDksNyArMjA5LDggQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZHVtcFJlbmRlclN1cmZhY2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBj
b25zdCBDQ0xheWVySW1wbCopIGNvbnN0OwogCi0gICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gbV9sYXllclJlbmRlcmVyOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9j
b250ZXh0OworICAgIE93blB0cjxDQ1JlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fc2Ny
b2xsTGF5ZXJJbXBsOwogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRl
eCAzNjYyOTE3OWEyZTE2NTM5MGVkMjgyYjhkNTViNzM1NGE3YzVkMDQwLi5mYjJjYmJhZTk2ZjA3
MzMwMDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBDQ1Ro
cmVhZDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7
CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKIAogLy8gQWJzdHJhY3QgY2xhc3Mg
cmVzcG9uc2libGUgZm9yIHByb3h5aW5nIGNvbW1hbmRzIGZyb20gdGhlIG1haW4tdGhyZWFkIHNp
ZGUgb2YKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFRlbXBv
cmFyeSBoYWNrIHdoaWxlIHJlbmRlcl93aWRnZXQgc3RpbGwgZG9lcyBzY2hlZHVsaW5nIGZvciBD
Q0xheWVyVHJlZUhvc3RNYWluVGhyZWFkSQotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgp
ID0gMDsKIAogICAgIC8vIFRlc3RpbmcgaG9va3MKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRl
eHQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E0NTUxNTQyYTYxODYzZGJj
N2JhZjQ0NmE3ZGRiNTk0ZDkzYWQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtMCwwICsxLDEx
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5kZXJlcl9oCisjZGVmaW5lIENDUmVuZGVyZXJfaAor
CisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q0NSZW5kZXJQYXNzOworY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKK2NsYXNzIFRleHR1cmVDb3Bp
ZXI7CitjbGFzcyBUZXh0dXJlTWFuYWdlcjsKK2NsYXNzIFRleHR1cmVVcGxvYWRlcjsKKworY2xh
c3MgQ0NSZW5kZXJlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBjb25zdCBJbnRTaXpl
JiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ1Nl
dHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNv
bnRleHQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3Qp
ID0gMDsKK307CisKK2NsYXNzIENDUmVuZGVyZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENDUmVuZGVyZXIpOworcHVibGljOgorICAgIHZpcnR1YWwgfkNDUmVuZGVyZXIoKSB7IH0KKwor
ICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVz
KCkgY29uc3QgPSAwOworCisgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKCkgeyByZXR1cm4gbV9jbGllbnQtPmRldmljZVZpZXdwb3J0U2l6ZSgpOyB9Cisg
ICAgaW50IHZpZXdwb3J0V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0aCgpOyB9
CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0KCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkuaGVpZ2h0
KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydENoYW5nZWQoKSA9IDA7CisKKyAgICBj
b25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93
aW5kb3dNYXRyaXg7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1Jl
bmRlclN1cmZhY2UqIGRlZmF1bHRSZW5kZXJTdXJmYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFk
c1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0gMDsK
KworICAgIC8vIHdhaXRzIGZvciByZW5kZXJpbmcgdG8gZmluaXNoCisgICAgdmlydHVhbCB2b2lk
IGZpbmlzaCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkb05vT3AoKSA9IDA7CisgICAgLy8g
cHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCisgICAgdmlydHVhbCBib29sIHN3YXBCdWZmZXJzKGNv
bnN0IEludFJlY3QmIHN1YkJ1ZmZlcikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldEZyYW1l
YnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZp
cnR1YWwgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJl
QWxsb2NhdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNl
dFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnRleHRMb3N0KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQ0NSZW5kZXJlcihDQ1JlbmRlcmVyQ2xp
ZW50KiBjbGllbnQpCisgICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CisK
KyAgICBDQ1JlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OworfTsKKworfQorCisjZW5kaWYgLy8gQ0NSZW5k
ZXJlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggMjQz
YWQyMzFlN2Y0NmZjODllYjA0MDVkOGQwYmY1MzY4MzFlYzYxNC4uNmI1MWM4MTY5YmVmYjAyZDc1
ZTQwNzQwMDM0ODJhNzEyMmM5YjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcApAQCAtNTAsOSArNTAsOSBAQCBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3Jv
bGxiYXJMYXllckltcGwoaW50IGlkKQogewogfQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBs
Ojp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCit2b2lkIEND
U2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXco
bGF5ZXJSZW5kZXJlcik7CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIs
IGNvbnRleHQpOwogCiAgICAgaWYgKGJvdW5kcygpLmlzRW1wdHkoKSB8fCBjb250ZW50Qm91bmRz
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC03NywxMSArNzcsMTYgQEAgdm9pZCBD
Q1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyKQogCiAgICAgewogICAgICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBs
b2NrZXIoJmNhbnZhcyk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5
ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNv
bnRleHQsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOwog
CiAgICAgICAgIC8vIEZJWE1FOiBTa2lhIHVzZXMgQkdSQSBhY3R1YWxseSwgd2UgY29ycmVjdCB0
aGF0IHdpdGggdGhlIHN3aXp6bGUgcGl4ZWwgc2hhZGVyLgotICAgICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgbV90
ZXh0dXJlLT5mb3JtYXQoKSwgY2FudmFzLnNpemUoKS53aWR0aCgpLCBjYW52YXMuc2l6ZSgpLmhl
aWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUsIGxvY2tlci5waXhlbHMoKSkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIGlmICghY29udGV4
dDNkKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIG1fdGV4dHVyZS0+Zm9ybWF0KCksIGNhbnZhcy5zaXplKCkud2lk
dGgoKSwgY2FudmFzLnNpemUoKS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBsb2NrZXIucGl4ZWxzKCkpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IDMyYWQx
ZDhkZGZlZjk5NzIyNzRhMWVmMDE4NDcwMzY1YWNkZTYxZDguLmY5NzVjMTllOTlhOTMzZmZhZTZi
MTEyMzZjNzc4YmMxNjgzYmE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgQ0NMYXllckltcGwqIHNjcm9sbExh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQogICAgIHZvaWQgc2V0U2Nyb2xs
TGF5ZXIoQ0NMYXllckltcGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxM
YXllcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1
bSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NH
cmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5n
VGlsZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTdjZGM1OWU0NTFh
ZmQ1NDU2ZTc5NzY2MGRhZDYzZDAzMjI0NGMxNS4uZmEwZGVkMGZlMDM5MWFjOTdhZWI4NWI3NzI3
NmNmYjRlMDZlZTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
QEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIK
IAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9u
dEF0bGFzLmgiCkBAIC0xMTIsNyArMTExLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpz
dGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3Np
dGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1
cmF0aW9uKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0QqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNv
bnRleHQoKQorQ0NHcmFwaGljc0NvbnRleHQqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQo
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fY29u
dGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKQpAQCAtMTM5LDcgKzEzOCw3IEBAIGJvb2wgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6aXNTdGFydGVkKCkgY29uc3QKIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6aW5pdGlhbGl6ZUNvbnRleHQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJl
YWQoKSk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRy
ZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJl
ZigpKTsKQEAgLTE3Niw3ICsxNzUsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dCgpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9jb250ZXh0TG9zdCk7CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQo
KTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDQ0MTQ2NmFmY2U1OWVmMTYwMDIyY2FhYWY4
MWVkZjljOGIwNDZlM2IuLjY0NWE4YTlhNGFkMTE3NGMzNmUxZWQyMDcxOWVkMTdlYjNlOGY3ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIC8vIENDUHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wg
Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBk
dXJhdGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpbml0aWFsaXplQ29udGV4dCgpIE9WRVJSSURFOwpAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gSG9sZHMgb24gdG8gdGhlIGNvbnRleHQgYmV0d2VlbiBpbml0aWFs
aXplQ29udGV4dCgpIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLiBTaG91bGRu
J3QKICAgICAvLyBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlLgotICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb247CisgICAgUmVmUHRyPEND
R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbjsKIAogICAgIE93
blB0cjxDQ1NpbmdsZVRocmVhZFByb3h5QW5pbWF0aW9uVGltZXI+IG1fYW5pbWF0aW9uVGltZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYWI1NmQxZjM3N2EyYzZm
OGNlNWI3MjNjY2Q2NTFhYWVlMTRiZTlhMS4uMDVlOWY1NGRkYWVjYWFiMjQxZTliNWE0YWRjNWJm
MTVjNzQyZDIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwg
bV9jb3B5RW50cmllcy5zaXplKCkgfHwgbV9tYW5hZ2VkQ29weUVudHJpZXMuc2l6ZSgpOwogfQog
Ci12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRl
eHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3VudCkKK3ZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxv
YWRlciwgc2l6ZV90IGNvdW50KQogewogICAgIHNpemVfdCBpbmRleDsKIApAQCAtMTQyLDggKzE0
MiwxMiBAQCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsbwogICAgIC8vIElmIHdlJ3ZlIHBlcmZvcm1l
ZCBhbnkgdGV4dHVyZSBjb3BpZXMsIHdlIG5lZWQgdG8gaW5zZXJ0IGEgZmx1c2ggaGVyZSBpbnRv
IHRoZSBjb21wb3NpdG9yIGNvbnRleHQKICAgICAvLyBiZWZvcmUgbGV0dGluZyB0aGUgbWFpbiB0
aHJlYWQgcHJvY2VlZCBhcyBpdCBtYXkgbWFrZSBkcmF3IGNhbGxzIHRvIHRoZSBzb3VyY2UgdGV4
dHVyZSBvZiBvbmUgb2YKICAgICAvLyBvdXIgY29weSBvcGVyYXRpb25zLgotICAgIGlmIChtX2Nv
cHlFbnRyaWVzLnNpemUoKSB8fCBtX21hbmFnZWRDb3B5RW50cmllcy5zaXplKCkpCi0gICAgICAg
IGNvbnRleHQtPmZsdXNoKCk7CisgICAgaWYgKG1fY29weUVudHJpZXMuc2l6ZSgpIHx8IG1fbWFu
YWdlZENvcHlFbnRyaWVzLnNpemUoKSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIGlmIChjb250ZXh0M2QpCisg
ICAgICAgICAgICBjb250ZXh0M2QtPmZsdXNoKCk7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICB9CiAKICAgICAvLyBJ
ZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KICAgICBjbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IDI0ZDg5NmYyYjU5MTIwOTAwNDFhNDMz
ZjE2NjUxZDYyM2MwZGI2MmYuLjdjOWZlMmUzMDhjYTRmMjQ0YzI2NzYxZTgzYTg0NTgyYmMzY2Q0
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFRl
eHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogY2xhc3MgVGV4dHVyZVVwbG9h
ZGVyOwpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygp
IGNvbnN0OwogCiAgICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuCi0gICAgdm9pZCB1cGRhdGUo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRl
eHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CisgICAgdm9pZCB1cGRhdGUoQ0NHcmFwaGlj
c0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxv
YWRlciosIHNpemVfdCBjb3VudCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggZmIwYTVjMTBiNTdmNzk4ODEwM2QyMTMyMzk4YzZhMThjYzNj
MTQxOS4uZTk1NTU1NTEwNTY3ZTI5N2YzOWEwZTNjMTk2ZWZhOGYyODJhYzlhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRh
cmdldFBvcwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFk
UHJveHk6OmNvbnRleHQoKQorQ0NHcmFwaGljc0NvbnRleHQqIENDVGhyZWFkUHJveHk6OmNvbnRl
eHQoKQogewogICAgIHJldHVybiAwOwogfQpAQCAtMTc2LDEzICsxNzYsMTMgQEAgYm9vbCBDQ1Ro
cmVhZFByb3h5Ojppc1N0YXJ0ZWQoKSBjb25zdAogYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplQ29udGV4dCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVDb250ZXh0IiwgdGhpcywgMCk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CisgICAgUmVmUHRyPENDR3Jh
cGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGNv
bnRleHQtPmhhc09uZVJlZigpKTsKIAogICAgIC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBz
byB3ZSBjYW4gdHJhbnNmZXIgb3duZXJzaGlwIG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFr
UmVmKCk7CisgICAgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVh
c2UoKS5sZWFrUmVmKCk7CiAgICAgQVNTRVJUKGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAog
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCwKQEAgLTIy
OSwxNyArMjI5LDE3IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gVHJ5IHRvIGNyZWF0ZSB0aGUgY29u
dGV4dC4KLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJl
ZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVk
c0ZpbHRlckNvbnRleHQoKSkKKyAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNv
bnRleHQoKSAmJiAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21w
b3NpdGluZykKICAgICAgICAgaWYgKCFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9y
SW1wbFRocmVhZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGNv
bnRleHQtPmhhc09uZVJlZigpKTsKIAogICAgIC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBz
byB3ZSBjYW4gdHJhbnNmZXIgb3duZXJzaGlwIG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFr
UmVmKCk7CisgICAgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVh
c2UoKS5sZWFrUmVmKCk7CiAgICAgQVNTRVJUKGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAog
ICAgIC8vIE1ha2UgYSBibG9ja2luZyBjYWxsIHRvIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVh
ZC4gVGhlIHJlc3VsdHMgb2YgdGhhdApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQ0NM
YXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQoKSAmJiAhU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0Q6OmhhdmVGb3JJbXBsVGhyZWFkKCkpCisgICAgaWYgKENDTGF5ZXJUcmVlSG9zdDo6bmVl
ZHNGaWx0ZXJDb250ZXh0KCkgJiYgIW1fbGF5ZXJUcmVlSG9zdC0+c2V0dGluZ3MoKS5mb3JjZVNv
ZnR3YXJlQ29tcG9zaXRpbmcgJiYgIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpoYXZlRm9ySW1w
bFRocmVhZCgpKQogICAgICAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1w
bFRocmVhZCgpOwogCiAgICAgT3duUHRyPEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZT4gcmVxdWVz
dChtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC5yZWxlYXNlKCkpOwpAQCAtODA3LDcgKzgwNyw3
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAK
LXZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCit2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250
ZXh0T25JbXBsVGhyZWFkKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCIsIHRo
aXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBAIC04NjQsNyArODY0LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpzZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxD
Q0ZvbnRBdGxhcz4gZm9udEF0bGFzKQogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldEZvbnRB
dGxhcyhmb250QXRsYXMpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4
dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCit2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRl
Q29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJj
YyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDlkMmVk
ZGE2ZmRlMGRkZjcxMDdmZTFjNzU5N2EyYTBlOWYzMjNlZTguLjI0ZGI5MmU2ZWExNWM5ZjQ2Mjgy
OTY5OTAxZWViYmU1Zjk4OWU2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIC8vIENDUHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNv
bnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUs
IGRvdWJsZSBkdXJhdGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplQ29udGV4dCgpIE9WRVJSSURFOwpAQCAtMTM2LDEy
ICsxMzYsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldFN1cmZhY2VSZWFkeU9uSW1w
bFRocmVhZCgpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKKyAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkKEND
R3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKICAgICB2b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldEZ1bGxSb290TGF5
ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzRm9y
TWFpblRocmVhZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwotICAgIHZvaWQgcmVj
cmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250
ZXh0M0QqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyopOworICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBS
ZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcp
OwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRs
YXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwpAQCAtMTY4LDkgKzE2OCw5IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8Q0NTY29wZWRUaHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7CiAKLSAgICAvLyBI
b2xkcyBvbiB0byB0aGUgR3JhcGhpY3NDb250ZXh0M0Qgd2UgbWlnaHQgdXNlIGZvciBjb21wb3Np
dGluZyBpbiBiZXR3ZWVuIGluaXRpYWxpemVDb250ZXh0KCkKKyAgICAvLyBIb2xkcyBvbiB0byB0
aGUgY29udGV4dCB3ZSBtaWdodCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdlZW4gaW5pdGlh
bGl6ZUNvbnRleHQoKQogICAgIC8vIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxz
LgotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb25PbkltcGxUaHJlYWQ7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRl
eHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRo
ZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIG9uIGEgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSB0
byBiZSBpc3N1ZWQuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fYmVnaW5GcmFtZUNvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5k
ZXggZjU4NWQ2ODA0MGZhYWVlZjMwZDJhNGIzM2Q3NmFlMDEwMWQ5NTJkZC4uZTJiYzYzMjcyYzg5
Mzg2YTUyNTc4NjMwNzk0ZWFiM2NiNGM3MDA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZD
Rm9ybWF0VG9HQzNERm9ybWF0KGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUpCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOwogfQogCi12b2lkIEND
VmlkZW9MYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJS
ZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5k
ZXJlcik7CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQp
OwogCiAgICAgLy8gRXhwbGljaXRseSBsb2NrIGFuZCB1bmxvY2sgdGhlIHByb3ZpZGVyIG11dGV4
IHNvIGl0IGNhbiBiZSBoZWxkIGZyb20KICAgICAvLyB3aWxsRHJhdyB0byBkaWREcmF3LiBTaW5j
ZSB0aGUgY29tcG9zaXRvciB0aHJlYWQgaXMgaW4gdGhlIG1pZGRsZSBvZgpAQCAtMTQ4LDcgKzE0
OCw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICBtX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CiB9
CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3
SW50ZXJuYWwoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgSW50U2l6ZSBDQ1ZpZGVv
TGF5ZXJJbXBsOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1l
JiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQp
OwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJL
aXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1lLCBHQzNEZW51bSBmb3JtYXQsIExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK2Jvb2wgQ0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRl
eHR1cmVzKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUsIEdDM0RlbnVtIGZvcm1h
dCwgQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlcikKIHsKICAgICBpZiAoZnJhbWUucGxhbmVzKCkg
PiBNYXhQbGFuZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuaAppbmRleCA0NDYwNmMxM2IyZDcxMDJiOTJiNGUzMWUwZmQzYTkwMmY0NTUxNDUzLi41
MDAzZjc0Zjc4M2ZlNWM2OTNhMjk1Yjc4ZTA2Njc2MGE0MDFkZDM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJh
dyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KCkgT1ZFUlJJREU7CiAKQEAgLTgxLDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
SW50U2l6ZSBjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiwg
dW5zaWduZWQgcGxhbmUpOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJp
bmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiVmlkZW9MYXllciI7IH0KIAotICAgIHZvaWQg
d2lsbERyYXdJbnRlcm5hbChMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKLSAgICBib29sIHJlc2Vy
dmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmLCBHQzNEZW51bSBmb3JtYXQs
IExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworICAgIHZvaWQgd2lsbERyYXdJbnRlcm5hbChDQ1Jl
bmRlcmVyKik7CisgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMoY29uc3QgV2ViS2l0OjpXZWJWaWRl
b0ZyYW1lJiwgR0MzRGVudW0gZm9ybWF0LCBDQ1JlbmRlcmVyKik7CiAKICAgICAvLyBHdWFyZHMg
dGhlIGRlc3RydWN0aW9uIG9mIG1fcHJvdmlkZXIgYW5kIHRoZSBmcmFtZSB0aGF0IGl0IHByb3Zp
ZGVzCiAgICAgTXV0ZXggbV9wcm92aWRlck11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggY2NmMzMwM2M3NTczNzlmOGU5OGZmYjc3ODdiYmQ0
ODNkMzBhMGZjMi4uZDZlMDY1ODFkMGYyYjFiNmQ0YTA0YjU4MDg3YWE4ZWQ2YzFiYTljNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMTQsNiAr
MTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRp
dGluZ0JlaGF2aW9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VDb21wb3Np
dGluZ01vZGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVNvZnR3YXJlQ29t
cG9zaXRpbmcoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCkgPSAwOwpAQCAtMTU2
LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQb3NpdGlvbkNy
ZWF0ZXNTdGFja2luZ0NvbnRleHQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTeW5j
WEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBmb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICB+V2Vi
U2V0dGluZ3MoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCmluZGV4IDY1YTJhNjNiMThhMmM4Y2NmZGM1ZmVjMWUxMGYxOWM2MzNh
Y2E1NTguLmFlMjBhZWE5YTM1ODNlNjM0MjQ5ZjViYjRkYjQwODgyODRkODI2ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC00MSw2
ICs0MSw3IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdz
KCkgY29uc3QKIHsKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLmFjY2Vs
ZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKKyAgICBzZXR0aW5ncy5mb3JjZVNv
ZnR3YXJlQ29tcG9zaXRpbmcgPSBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgc2V0dGlu
Z3Muc2hvd0ZQU0NvdW50ZXIgPSBzaG93RlBTQ291bnRlcjsKICAgICBzZXR0aW5ncy5zaG93UGxh
dGZvcm1MYXllclRyZWUgPSBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgc2V0dGluZ3Muc2hv
d1BhaW50UmVjdHMgPSBzaG93UGFpbnRSZWN0czsKQEAgLTE2MSw3ICsxNjIsNyBAQCB2b2lkIFdl
YkxheWVyVHJlZVZpZXc6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAKIFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KCkKIHsKLSAgICByZXR1cm4gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5s
YXllclRyZWVIb3N0KCktPmNvbnRleHQoKSk7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVl
SG9zdCgpLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVW
aWV3Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDQ1YTk5
NjAzY2IxZjViM2ZlNjdjNjkyOWU4NTg1NDM1N2UzZmYyMjYuLjE3ZDVmZTg2NzVhN2VjYWUyNDIw
NjNlMmE3MzAyYTczNjQ3MjA5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSkgT1ZFUlJJREUgeyBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNG
cmFtZUJlZ2luVGltZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyBt
X2NsaWVudC0+bGF5b3V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2Fs
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSBP
VkVSUklERSB7IG1fY2xpZW50LT5hcHBseVNjcm9sbEFuZFNjYWxlKHNjcm9sbERlbHRhLCBwYWdl
U2NhbGUpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAgICAg
ewogICAgICAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9w
dFB0cihtX2NsaWVudC0+Y3JlYXRlQ29udGV4dDNEKCkpOwogICAgICAgICBpZiAoIXdlYkNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApp
bmRleCBjNTFmZmZiZjc5YWU3MTZiYzdjNjY2Nzc2MWIzMTk2M2ZhNzk0YzQwLi41MzUxMDRiOWQ0
NWNjNDhiZmViNDgzZmY0ZjRiYjhkNjgxY2FhNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBz
ZXR0aW5ncykKICAgICA6IG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAgLCBtX2ZvcmNlU29mdHdh
cmVDb21wb3NpdGluZyhmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAg
LCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAsIG1fc2hvd1BhaW50UmVjdHMo
ZmFsc2UpCkBAIC0zODgsNiArMzg5LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRGb3Jj
ZUNvbXBvc2l0aW5nTW9kZShib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRG
b3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoYm9vbCBlbmFibGVkKQoreworICAgIG1fZm9yY2VTb2Z0
d2FyZUNvbXBvc2l0aW5nID0gZW5hYmxlZDsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+
c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBjMjg5MDg0NDFmMmY1M2YyYmFhNDNhY2U3
ZDFkYmNmNzQ5ODE5ODAwLi43MjkyMDA1Y2M3OWNjYWY1Y2ZiYzA3ODMzMWQwOWNmMWRmOWUzZTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAt
MTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2
aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VTb2Z0d2FyZUNvbXBvc2l0
aW5nKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5z
Zm9ybXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpOwpAQCAtMTU4LDkgKzE1OSwxMSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBhcHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3I7
IH0KICAgICBXZWJTaXplIGRlZmF1bHRUaWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVs
dFRpbGVTaXplOyB9CiAgICAgV2ViU2l6ZSBtYXhVbnRpbGVkTGF5ZXJTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhVbnRpbGVkTGF5ZXJTaXplOyB9CisgICAgdmlydHVhbCBib29sIGZvcmNlU29m
dHdhcmVDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0
aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7Cisg
ICAgYm9vbCBtX2ZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsKICAgICBib29sIG1fc2hvd0ZQU0Nv
dW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIG1fc2hv
d1BhaW50UmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggZGFjZmExNTJlNTY3YmRjMDFiNTAzMDEwYjZhZDZjMzczOWQxODk4OC4uOGY5NTAyYjQ4
YWVmNDVmZGQ5YjljZmNiMjcwZDQ3YTcxNDMzZTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzQ0Nyw2ICszNDQ3LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAg
ICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5nc0ltcGwo
KS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQ
bGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGxhdGZvcm1MYXllclRyZWUo
KTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2V0dGlu
Z3NJbXBsKCktPnNob3dQYWludFJlY3RzKCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5n
cy5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcgPSBzZXR0aW5ncygpLT5mb3JjZVNvZnR3YXJlQ29t
cG9zaXRpbmcoKTsKIAogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGVyVGlsZVBhaW50
aW5nID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKICAgICAg
ICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhZ2UoKS0+c2V0
dGluZ3MoKS0+cGFydGlhbFN3YXBFbmFibGVkKCk7CkBAIC0zNDk1LDYgKzM0OTYsOSBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3Rp
dmUpCiAKIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0lt
cGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0NvbnRleHQzRCgpCiB7CisgICAgaWYgKHNldHRp
bmdzKCktPmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpKQorICAgICAgICBDUkFTSCgpOworCiAg
ICAgLy8gRXhwbGljaXRseSBkaXNhYmxlIGFudGlhbGlhc2luZyBmb3IgdGhlIGNvbXBvc2l0b3Iu
IEFzIG9mIHRoZSB0aW1lIG9mCiAgICAgLy8gdGhpcyB3cml0aW5nLCB0aGUgb25seSBwbGF0Zm9y
bSB0aGF0IHN1cHBvcnRlZCBhbnRpYWxpYXNpbmcgZm9yIHRoZQogICAgIC8vIGNvbXBvc2l0b3Ig
d2FzIE1hYyBPUyBYLCBiZWNhdXNlIHRoZSBvbi1zY3JlZW4gT3BlbkdMIGNvbnRleHQgY3JlYXRp
b24KQEAgLTM1MTgsNiArMzUyMiw5IEBAIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0NvCiAKIFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpjcmVhdGVDb250ZXh0M0QoKQog
eworICAgIGlmIChzZXR0aW5ncygpLT5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSkKKyAgICAg
ICAgQ1JBU0goKTsKKwogICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3
ZWJDb250ZXh0OwogCiAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGFuIG9uc2NyZWVu
IGNvbnRleHQgZm9yIHRoaXMgdmlldywgcmV0dXJuIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDkxYzJkMWRmZjEyMTI3OWE3Yzc0NjA3MGM1Y2JkYzIyMjRmMmI2NWEuLmM3ZGYxOTE1Y2NkNzZk
ZWZiODdkMjkwYWE4YTViMjRhYTQ2MmZlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xMDcsOSAr
MTA3LDkgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKQorICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0QoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwog
ICAgIH0KIAogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBtX2Fsd2F5c0ltcGxUaHJlYWQ7
CkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogICAgICAgICBtX2RpZERyYXdDYWxsZWQgPSB0
cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hy
b21pdW0qKQorICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGlj
c0NvbnRleHQqKQogICAgIHsKICAgICAgICAgbV93aWxsRHJhd0NhbGxlZCA9IHRydWU7CiAgICAg
fQpAQCAtOTg4LDcgKzk4OCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVz
aGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsKICAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJl
c2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVkVXBs
b2FkZXIpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNjQ29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKICAgICBD
Q0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKICAgICBy
b290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKQEAgLTEwMzEsMTMgKzEwMzIs
MTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVz
RGFtYWdlUmVjdCkKIHsKICAgICBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0KiBwYXJ0aWFsU3dh
cFRyYWNrZXIgPSBuZXcgUGFydGlhbFN3YXBUcmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocGFydGlhbFN3YXBUcmFj
a2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAg
ICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChjb250ZXh0KTsKIAogICAgIC8vIFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24g
Q0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAvLyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFs
IHN3YXAgZW5hYmxlZC4KICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLnBh
cnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGxheWVyVHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdz
LCB0aGlzKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNjQ29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7
CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgx
KTsKQEAgLTExNTEsNyArMTE1Myw3IEBAIHB1YmxpYzoKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgZmluaXNoQWxsUmVuZGVyaW5nQWZ0ZXJDb250ZXh0TG9zdCkKIHsKICAgICAvLyBU
aGUgY29udGV4dCBpbml0aWFsaXphdGlvbiB3aWxsIGZhaWwsIGJ1dCB3ZSBzaG91bGQgc3RpbGwg
YmUgYWJsZSB0byBjYWxsIGZpbmlzaEFsbFJlbmRlcmluZygpIHdpdGhvdXQgYW55IGlsbCBlZmZl
Y3RzLgotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpLCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdykpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBtX2hvc3RJbXBsLT5maW5p
c2hBbGxSZW5kZXJpbmcoKTsKIH0KIApAQCAtMTM1Niw3ICsxMzU4LDcgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkK
IAogICAgIC8vIExvc2UgdGhlIGNvbnRleHQsIHJlcGxhY2luZyBpdCB3aXRoIGEgU3RyaWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QsIHRoYXQKICAgICAvLyB3aWxsIHdhcm4gaWYgYW55IHJlc291cmNl
IGZyb20gdGhlIHByZXZpb3VzIGNvbnRleHQgZ2V0cyB1c2VkLgotICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbV9ob3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKFN0cmlj
dFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSksIFVudGhyb3R0
bGVkVXBsb2FkZXIpOwogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBtX2hvc3RJ
bXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGI5OTYwMDZhZTI4OTFi
OGExODM2MjdkZjVkOWEzYjkyNGZjMzBmMGQuLmFhMjdlODhmN2RjM2VkODA4MDIxMDY0OWNjZDBi
ZTMwMDI3Y2YwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV90ZXN0SG9va3MtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHNjYWxlKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0
ZUNvbnRleHQoKSBPVkVSUklERQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3Rlc3RIb29rcy0+Y3JlYXRlQ29udGV4dCgpOwogICAgIH0KQEAgLTIxNTQsNyArMjE1NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0b3JGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcq
PihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChp
bXBsLT5jb250ZXh0KCkpKTsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9y
RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQo
KS0+Y29udGV4dDNEKCkpKTsKIAogICAgICAgICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZyYW1lTnVt
YmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpAQCAtMjE4OCw3ICsyMTg4LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGltcGwpCiAgICAgewotICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgp
KSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVy
ZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgp
KSk7CiAKICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXcgc2hvdWxk
IGFsd2F5cyBiZSBvbmUuCiAgICAgICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0LT5udW1Vc2VkVGV4
dHVyZXMoKSk7CkBAIC0yMjU4LDcgKzIyNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAg
ICAgewotICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1
cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisgICAgICAg
IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdp
dGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJH
cmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CiAKICAgICAg
ICAgc3dpdGNoIChpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKSB7CiAgICAgICAgIGNhc2UgMDoK
QEAgLTIzMjcsNyArMjMyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5
ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsKLSAgICAgICAg
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNv
bnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0
aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdy
YXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKSkpOworICAgICAgICBDb21wb3NpdG9yRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRp
Y19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNr
aW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0
M0QoaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSkpOwogCiAgICAgICAgIC8vIE51bWJlciBv
ZiB0ZXh0dXJlcyB1c2VkIGZvciBkcmF3aW5nIHNob3VsZCB0d28gZXhjZXB0IGZvciBmcmFtZSA0
CiAgICAgICAgIC8vIHdoZXJlIHRoZSB2aWV3cG9ydCBvbmx5IGNvbnRhaW5zIG9uZSBsYXllci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRl
c3RDb21tb24uY3BwCmluZGV4IDQ2ZDExYTk2ZTdmOGQ0ODI0OTdkY2Q0OWZlNDQ2MWZiNWFjYWZi
Y2MuLjcwMTdhMDFmZjY5YTYyZDMyZmEzMTliOGRhNzQ3YTFhNDU0ODNkNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
flRleHR1cmUoKQogewogfQogCi12b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCit2b2lkIEZha2VMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCiB7
CiAgICAgaWYgKGFsbG9jYXRvcikKICAgICAgICAgdGV4dHVyZSgpLT5hbGxvY2F0ZShhbGxvY2F0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
clRlc3RDb21tb24uaAppbmRleCA0ZWI4NzViMWVjMzc4OTFjNTg2NzgxMjNhNDFjYzMyMmM1ZGRk
OWY0Li45ODI0ZDhjMDY0ZmQ0MDdhYTI3Y2FlZTM4ZDA3MDkwZTdmYjJkY2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24u
aApAQCAtMjUsNyArMjUsNiBAQAogI2lmbmRlZiBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKICNk
ZWZpbmUgQ0NUaWxlZExheWVyVGVzdENvbW1vbl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUg
IlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVk
ZSAiVGlsZWRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxl
ZExheWVySW1wbC5oIgogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVy
ZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8V2ViQ29yZTo6TWFuYWdlZFRl
eHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiwgV2ViQ29yZTo6VGV4
dHVyZUFsbG9jYXRvciogLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChXZWJDb3JlOjpDQ0dy
YXBoaWNzQ29udGV4dCosIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqICwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAogICAgIHByaXZhdGU6
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiBjbGFzcyBGYWtlVGV4dHVyZUNvcGllciA6
IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZv
aWQgY29weVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCwgdW5z
aWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29w
eVRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCwgdW5zaWduZWQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUZXh0dXJlVXBs
b2FkZXIgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyIHsKQEAgLTE2NCw3ICsxNjQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBl
bmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJD
b3JlOjpDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggYjQyNDg1YjcxOGYwOGE1NjlmMGYxMjZkNDljZmY2MDBiNWJjZDc1Yi4uYTU2NTE0NmE1ZDQ5
MTk2NWI3YjFhZDI1ZDZmZTY5YzUxNTE1NDBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgTW9ja1RleHR1cmVDb3BpZXIgOiBwdWJsaWMg
VGV4dHVyZUNvcGllciB7CiBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0Q0KGNvcHlUZXh0dXJlLCB2
b2lkKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBJbnRTaXpl
JikpOworICAgIE1PQ0tfTUVUSE9ENChjb3B5VGV4dHVyZSwgdm9pZChDQ0dyYXBoaWNzQ29udGV4
dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYpKTsKIH07CiAKIGNsYXNzIE1v
Y2tUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9EMChpc0J1c3ksIGJvb2woKSk7CiAgICAgTU9D
S19NRVRIT0QwKGJlZ2luVXBsb2Fkcywgdm9pZCgpKTsKICAgICBNT0NLX01FVEhPRDAoZW5kVXBs
b2Fkcywgdm9pZCgpKTsKLSAgICBNT0NLX01FVEhPRDUodXBsb2FkVGV4dHVyZSwgdm9pZChHcmFw
aGljc0NvbnRleHQzRCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCwgY29uc3QgSW50UmVjdCkpOworICAgIE1PQ0tfTUVUSE9E
NSh1cGxvYWRUZXh0dXJlLCB2b2lkKENDR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0LCBjb25zdCBJ
bnRSZWN0KSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpAQCAtMTA1LDcgKzEwNSw5IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAKICAg
ICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpOworICAgICAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNj
TWFpbkNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobWFpbkNvbnRleHQpOwog
ICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y2NJbXBsQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChpbXBsQ29udGV4dCk7
CiAKICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1v
Y2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0QobWFpbkNvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgTW9ja0NhbnZhc0Nv
bnRleHQmIGltcGxNb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRl
eHQuZ2V0KCkpKTsKQEAgLTE0MCw3ICsxNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAg
ICAgLy8gQ3JlYXRlIHRleHR1cmUgYW5kIGRvIHRoZSBjb3B5IChvbiB0aGUgaW1wbCB0aHJlYWQp
LgogICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGFsbG9jYXRvck1vY2ssIGNyZWF0ZVRleHR1
cmUoc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICAgICAgICAgICAgICAu
V2lsbE9uY2UoUmV0dXJuKGZyb250VGV4dHVyZUlkKSk7Ci0gICAgICAgICAgICAgICAgRVhQRUNU
X0NBTEwoY29waWVyTW9jaywgY29weVRleHR1cmUoaW1wbENvbnRleHQuZ2V0KCksIGJhY2tUZXh0
dXJlSWQsIGZyb250VGV4dHVyZUlkLCBzaXplKSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0NB
TEwoY29waWVyTW9jaywgY29weVRleHR1cmUoY2NJbXBsQ29udGV4dC5nZXQoKSwgYmFja1RleHR1
cmVJZCwgZnJvbnRUZXh0dXJlSWQsIHNpemUpKTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FM
TChpbXBsTW9jaywgZmx1c2goKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUZWFyZG93biBUZXh0
dXJlTWFuYWdlci4KQEAgLTE2NCw3ICsxNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBP
d25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllckltcGwo
KTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJ
bXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAgICB1cGRh
dGVyLnVwZGF0ZShpbXBsQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRvck1vY2ssICZjb3BpZXJNb2Nr
LCAmdXBsb2FkZXJNb2NrLCAxKTsKKyAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKGNjSW1wbENv
bnRleHQuZ2V0KCksICZhbGxvY2F0b3JNb2NrLCAmY29waWVyTW9jaywgJnVwbG9hZGVyTW9jaywg
MSk7CiAgICAgICAgICAgICBjYW52YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgICAgICAgICAgaWYgKHRocmVhZGVkICYmICFkZWZlcnJlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50
LmgKaW5kZXggOTkyNTA5YzRmZGNkOWYzMGEzODJhMTZiNTM3YTBhNWE2NWFkMjJiOC4uNmFiNjE2
ZDNjOGE3OTcxMzJlZTRlZmNkODcxYjg5NzljMDdiMmY3OSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25z
KGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9W
RVJSSURFIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3Jl
YXRlQ29udGV4dCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjcmVhdGVDb250ZXh0M0QoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAgICAgICAgIHJldHVybiBjcmVhdGVDb21w
b3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNEKGF0dHJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDRlZDM1OTg2Y2MxZTg5NTkyYjJjYWVjMjIxNDE2YjJmZWVkNDlmYzcuLjMxNDgyZWQ5OTcx
ODA2ZWZmZDBhYTg4ZTg3ZjljNTlmMDM5ZDEwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAt
NjEsMTYgKzYxLDE2IEBAIHByaXZhdGU6CiAgICAgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9u
Q2hhbmdlZENhbGxiYWNrQ0hST01JVU0qIG1fbWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFj
azsKIH07CiAKLWNsYXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgOiBwdWJsaWMg
TGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IHsKK2NsYXNzIEZha2VDQ1JlbmRlcmVyQ2xpZW50
IDogcHVibGljIENDUmVuZGVyZXJDbGllbnQgewogcHVibGljOgotICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW1DbGllbnQoKQorICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50KCkKICAgICAgICAg
OiBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgwKQogICAgICAgICAsIG1fcm9vdExheWVy
KENDTGF5ZXJJbXBsOjpjcmVhdGUoMSkpCiAgICAgewogICAgICAgICBtX3Jvb3RMYXllci0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KIAotICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1
bUNsaWVudCBtZXRob2RzLgorICAgIC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4KICAgICB2
aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURF
IHsgc3RhdGljIEludFNpemUgZmFrZVNpemU7IHJldHVybiBmYWtlU2l6ZTsgfQogICAgIHZpcnR1
YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBD
Q1NldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0aW5nczsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFIHsgfQpAQCAtOTEsNyArOTEsNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVy
UmVuZGVyZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1
bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250
ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCBVbnRo
cm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bSBtZXRo
b2RzLgogCkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRp
b25TZXR0aW5nQ29udGV4dCYgbV9tb2NrQ29udGV4dDsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50IG1fbW9ja0NsaWVudDsKKyAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtX21v
Y2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBtX2xheWVyUmVuZGVyZXJD
aHJvbWl1bTsKIH07CiAKQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAvLyBUaGlzIHRlc3Qg
aXNuJ3QgdXNpbmcgdGhlIHNhbWUgZml4dHVyZSBhcyBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
LCBhbmQgeW91IGNhbid0IG1peCBURVNUKCkgYW5kIFRFU1RfRigpIHdpdGggdGhlIHNhbWUgbmFt
ZSwgaGVuY2UgTFJDMi4KIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxp
emF0aW9uRG9lc05vdE1ha2VTeW5jaHJvbm91c0NhbGxzKQogewotICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW1DbGllbnQgbW9ja0NsaWVudDsKKyAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBt
b2NrQ2xpZW50OwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNo
cm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0Nh
bGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgp
KTsKQEAgLTMxMSw3ICszMTEsNyBAQCBwcml2YXRlOgogCiBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlja2x5TG9zdENvbnRleHREb2VzTm90QXNz
ZXJ0KQogewotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgbW9ja0NsaWVudDsK
KyAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwogICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKG5ldyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21p
dW0uaW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCAxNzE3M2MwYTViMzdkMWI4ZWIwOGQ2Y2IxODJhZDFk
MDc0ZTU0ODZlLi5kNzFiOGNlNDVhM2VhMzAzMjQ0MmY4NjQ4OTVkNDUzMGRlNmE3ZDU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNw
cApAQCAtNTQsNiArNTQsNyBAQCBURVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5
c0NvcHkpCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0Nv
bnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7
CiAgICAgTW9ja0NvbnRleHQmIG1vY2tDb250ZXh0ID0gKnN0YXRpY19jYXN0PE1vY2tDb250ZXh0
Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
Y29udGV4dC5nZXQoKSkpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0
ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQpOwogCiAgICAgewogICAgICAg
ICBJblNlcXVlbmNlIHNlcXVlbmNlOwpAQCAtNzksNyArODAsNyBAQCBURVNUKFRleHR1cmVDb3Bp
ZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgaW50IGRlc3RUZXh0dXJlSWQgPSAyOwog
ICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVy
ZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKGNvbnRleHQp
KTsKLSAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJ
ZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CisgICAgY29waWVyLT5jb3B5VGV4dHVyZShjY0NvbnRl
eHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA4MGIwOTlmMTlmYmYzNTNmMmE1MjYwNzJh
NmYxNjRiZDY2MzUyNTk0Li5mMGMxMzEzZjkwZWU3NTJkNGMyMjE3OGFkMzk0NDc4YjI1NzYxNjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTY3MywxMiArNjczLDEzIEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIEZha2VUZXh0dXJlQ29waWVy
IGZha2VDb3BpZXI7CiAgICAgRmFrZVRleHR1cmVVcGxvYWRlciBmYWtlVXBsb2FkZXI7CiAgICAg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tH
cmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKTsKKyAgICBS
ZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGUzRChjb250ZXh0KTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28g
dGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29u
dGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAx
MDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9y
LCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGgg
dGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTY5MSw3ICs2OTIsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBJbnZva2UgdXBk
YXRlTGF5ZXJSZWN0IGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgdXBkYXRlTGF5ZXJSZWN0
IHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4dHVyZVVwZGF0ZXIu
CiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0
b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0
ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxv
YWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCA1MCwgNTApKTsKQEAgLTY5OSwxMiArNzAwLDEyIEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1
MCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29u
dGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAx
MDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9y
LCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAg
Ly8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUxheWVyUmVjdCBp
bnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5n
ZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsK
KyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFr
ZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145388</attachid>
            <date>2012-06-01 15:16:14 -0700</date>
            <delta_ts>2012-06-01 21:39:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87920-20120601151613.patch</filename>
            <type>text/plain</type>
            <size>127190</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwYTYyNWYwNDY2ZWQ4
NjhiZWUzOTUzZmNlM2JjY2MwMTk2OTk1YTZmLi45Y2MzZjQyMjg4YjUyZDc3ZDNmNTMwZTMyZjRj
ZWNjNzJmMmQxOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0zMCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNl
dHRpbmcgdG8gZm9yY2Ugc29mdHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlzIG1vZGUsCisgICAg
ICAgIG5vIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoU2V0dGlu
Z3MpOgorCiAyMDEyLTA2LTAxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIENhbGwgY2xpcGJvYXJkIG1ldGhvZHMgZGlyZWN0bHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlMGJhODdjNjQ1OWE3NzhhMzBmNmM5NDJjMTZiZGQyYWE0NDJkYjFlLi42Y2Rh
NTRhZTFjYzIwMWUzOGY5OGM5OTM5NzE4N2FkZTM3ZjIwNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUzIEBACisyMDEyLTA1LTMwICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbY2hyb21pdW1dIFNvZnR3YXJlIGNvbXBvc2l0b3IgaW5pdGlhbGl6YXRp
b24gYW5kIGJhc2UgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGludHJvZHVjZXMgbmV3IHdyYXBwZXIgY2xhc3MgQ0NHcmFwaGljc0Nv
bnRleHQgYW5kIGJhc2UgY2xhc3MKKyAgICAgICAgQ0NSZW5kZXJlciB3aGljaCB3aWxsIGJlIHVz
ZWQgZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nIHN1cHBvcnQuCisgICAgICAgIElmIG5vIEdyYXBo
aWNzQ29udGV4dDNEIGlzIGF2YWlsYWJsZSwgZWFybHkgcmV0dXJuIGZvciBub3cuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoTm8tb3AgY2hhbmdlIGluIDNkIG1vZGUuKQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6Cisg
ICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoVGV4dHVyZSk6CisgICAgICAgIChCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAo
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
VGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlcmVyOjp0b0dMTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJlcjo6Q0NSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyZXI6On5DQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
ZXI6OmNjQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJlcjo6dmlld3BvcnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlcmVyOjp2aWV3cG9ydEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
Ojpwcm9qZWN0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyZXI6OndpbmRv
d01hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzaGFyZWRHZW9tZXRyeVF1
YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhT
dWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2Fk
V2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChM
YXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoK
KyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2Fk
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6
CisgICAgICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NHcmFwaGljc0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJpbmRD
b250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyUmVuZGVyZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAg
ICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xl
VGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wNi0wMSAgSWFuIFZvbGxpY2sgIDx2
b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFjY2VsZXJhdGVkIGFu
aW1hdGlvbnMgc2hvdWxkIHVzZSBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDU0MjRiNTlmMDZjMDJjZDEzMzRmNWUyNDM3ZTI4MTNiN2EwNzhjNDcu
LjI4OWZiOTUxMDg0ODU3MTVmNjRkMGZjMGIyYTRmYjE3MzVhYjQzZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMDUtMzAgIEFsZXhhbmRyZSBFbGlh
cyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gU29mdHdhcmUgY29t
cG9zaXRvciBpbml0aWFsaXphdGlvbiBhbmQgYmFzZSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzkyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBzZXR0aW5nIHRvIGZvcmNl
IHNvZnR3YXJlIGNvbXBvc2l0aW5nLiAgSW4gdGhpcyBtb2RlLAorICAgICAgICBubyBHcmFwaGlj
c0NvbnRleHQzRCBzaG91bGQgZXZlciBiZSBjcmVhdGVkLgorCisgICAgICAgICogcHVibGljL1dl
YlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5n
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OmNvbnRleHQpOgorICAgICAg
ICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGlu
Z3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZVNvZnR3
YXJlQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZXR0aW5nc0ltcGw6OmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpjcmVhdGVDb21wb3NpdG9yR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6Y3JlYXRlQ29udGV4dDNEKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NMYXllclRyZWVI
b3N0SW1wbFRlc3Q6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OmNvbW1pdENvbXBsZXRlT25DQ1Ro
cmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OmRy
YXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0
b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxV
cGRhdGU6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6RmFrZVRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXll
clRyZWVIb3N0Q2xpZW50Lmg6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdC5jcHA6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlQ29waWVyVGVz
dC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAg
ICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTA2LTAxICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBz
aG91bGQgdXNlIFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMmIwZjMwYWRlYjVlYTFh
YzE4YjlhYjBkMmEyNTIzZTdjNWZmZGExNy4uMjNkMGQ2M2NlOWRkMjhhNWI1YmFkNzEyOGVhYTE0
OWE5NzNiOWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllclRyZWVWaWV3LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBT
ZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBh
aW50aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFs
c2UpCiAgICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBz
aG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3Rz
KGZhbHNlKQpAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBi
b29sIGFjY2VsZXJhdGVQYWludGluZzsKKyAgICAgICAgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9z
aXRpbmc7CiAgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgICAgIGJvb2wgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlOwogICAgICAgICBib29sIHNob3dQYWludFJlY3RzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBmNTVj
MDYyMTZhZGUxMmQwODFhNDU5ODIxOGM5MTJiMzVjNWQyZjZhLi44MjQ1YWE5ZTY4ODQ4NjBiNmQy
YjFmZTlmNDA0Y2Q1Yjc0ZDJlMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJl
VXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdAogICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgp
LCAqY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2Fs
ZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZt
X2NhbnZhcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCAwNGNjNDFhMjQ2MjVhNzA4MzExZWFiN2M0ZWI5NGUzMTE4OTBlNTFiLi42
ZmY3YzYzOTZhYzA2OGZmZWY0ZjU4YTcxZjhhMTQ5ZjExOTdjYzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBo
aWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1f
dGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0JiBy
ZXN1bHRpbmdPcGFxdWVSZWN0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBk
YXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFu
YWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IGU5YzI2MTliMDY0YzBlODRiNTUyZDM4YmU0Y2U2NTA1NmMwYzE1MWUu
LmI3NTkyNTJlMWY3YWIyYWJkYzZhYWFhY2Q5MDlkYTg3OWY0N2VmZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4
dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoJmNhbnZhcywgc291cmNlUmVjdCk7CiB9
CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFs
bG9jYXRvcik7CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiBjYW52YQog
ICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IHVpbnQ4X3QqIHBpeGVscykKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdD
M0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBp
eGVscykKIHsKICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0
UmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXgg
YmIxNDMxMDA0M2FkZGVhNThlMjZmMTE0MzNiZDlhNTVjMzVhYWNhYy4uNTA5N2NlMGIyZjAwNzNl
MzcyMzc1NDMxMTM3YTUwZTY1ZmY0NmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNh
bXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1h
dCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUsIEludFJlY3QmIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsK
LSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsK
IAogcHJpdmF0ZToKICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0ZmI0Yjhk
MDE3NGU0MjA1ZjQ3MTMyNmEyZTg4ZmVjMzZkYWRhNDQ4Li5hYmE5Y2E0Nzk5YWY5NzlmMTNkZTFk
ZjdkN2I1NmEzMzljZjUxNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFBs
YXRmb3JtQ29udGV4dFNraWE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBj
YTM1NGQ3NGEwZWFkYzFmNzFjMGIzNTI0ZGNmNzdhYzkxNjg3ODUuLmRhYzAzNTU1Mjk4MjUyNmM0
OTBkMWNjN2RkMTJmOTQ1MGVjZWJiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApA
QCAtNjYsNyArNjYsNyBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRl
UmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
IHsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxv
Y2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQpAQCAtOTYsMTUgKzk2
LDIxIEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogeworICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBp
ZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBm
b3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAv
LyBNYWtlIHN1cmUgZ2FuZXNoIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KLSAgICBjb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjb250ZXh0M2QtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIC8vIE5vdGlmeSBnYW5lc2ggdG8gc3luYyBpdHMgaW50ZXJuYWwgR0wgc3Rh
dGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOworICAgIGNvbnRl
eHQzZC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGFj
Y2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFz
ID0gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsK
KyAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNv
bnRleHQzZCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKIAogICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4
cGVjdHMgdGhlIHRleHR1cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0IGNhbiBmbGlwCiAgICAg
Ly8gdGhlIGZpbmFsIGNvbXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1
cHJpZ2h0IHNvIHdlCkBAIC0xMjAsNyArMTI2LDcgQEAgdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ28K
ICAgICBkcmF3UGljdHVyZShjYW52YXMuZ2V0KCkpOwogCiAgICAgLy8gRmx1c2ggZ2FuZXNoIGNv
bnRleHQgc28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1
cmUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CisgICAgY29udGV4dDNkLT5n
ckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAppbmRleCA1MDM5YmE5MDJjMWU1ZDFmZWZiYmI1MTNmYzg1Mzg2MjY1
ZGEwMzcwLi5lYzRkMDg4ZjIzODliNTI2MjQ3Yzg4MjVjMmFmY2Q2NWRiNTY4MTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRl
eHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29u
dGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyBy
ZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRl
VGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1h
bmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IGQ0YTQzMDEyZDQ1NmI5MTAwMGRhZjcyZTIxYzViZGVhZGI1MzViYzUuLjBlY2VlYzYy
NjYwZjg4M2EyMzliOGQyNjgyNWJkYjhhYzAzODM3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKICAgICAgICAgewogICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVy
ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKICAgICAgICAgfQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3Vi
SW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewogICAgICAgICB0
ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKaW5kZXggODBhY2M4ZWU2ZjQ0YjMxMjc4YzdmNWQyZWJmYjJlNzEzYTUxMGE4Zi4uMDgzMjFj
YzYwZTI2YzBmM2FmODMyNGQ1ZGIzNzJlNjk2MzIzM2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApA
QCAtNjMsNyArNjMsNiBAQCBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBD
Q0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0
ZXI7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21p
dW07CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVy
IHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IGFjYWNjMzUzYmEzZmU3MzMyOGExMjNmYmY4MmVjZWEwYzkxOWY5OTAuLjRkOTBj
ZTU2ODk0Mjc1ZmNiOGUzMGMyODhkNTJkZmFjODA2YjQ3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5VcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3Qp
IHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CiAKIHByb3RlY3RlZDoKICAgICBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcigpIHsgfQpAQCAtMjE3LDcgKzIxNyw3IEBAIHByaXZhdGU6CiB9Owog
CiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1
cmVVcGxvYWRlclNldHRpbmcpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24g
dGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xp
ZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJS
ZW5kZXJlci0+aW5pdGlhbGl6ZSgpKQpAQCAtMjI2LDI1ICsyMjYsMjYgQEAgUGFzc093blB0cjxM
YXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVy
UmVuZGVyZXJDaHIKICAgICByZXR1cm4gbGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CiB9CiAKLUxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCogY2xpZW50LAorTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRl
cmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQotICAgIDogbV9jbGll
bnQoY2xpZW50KQorICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlKDApCiAgICAgLCBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSgwKQogICAgICwgbV9v
ZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCisgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9h
dFJlY3QoLTAuNWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQotICAgICwgbV9zaGFyZWRHZW9tZXRy
eVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBtX2lzVmll
d3BvcnRDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKGZhbHNl
KQogICAgICwgbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKHRleHR1cmVVcGxvYWRlclNldHRpbmcp
CiB7CisgICAgQVNTRVJUKG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIGNsYXNzIENvbnRleHRMb3N0
Q2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENh
bGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxi
YWNrQWRhcHRlcj4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50KQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUo
Q0NSZW5kZXJlckNsaWVudCogY2xpZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcihjbGllbnQpKTsKICAgICB9CkBAIC0yNTUs
MTAgKzI1NiwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENv
bnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xp
ZW50KQorICAgIGV4cGxpY2l0IENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKENDUmVuZGVyZXJD
bGllbnQqIGNsaWVudCkKICAgICAgICAgOiBtX2NsaWVudChjbGllbnQpIHsgfQogCi0gICAgTGF5
ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBDQ1JlbmRlcmVyQ2xpZW50
KiBtX2NsaWVudDsKIH07CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXpl
KCkKQEAgLTEwNzcsNyArMTA3OCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5
UGxhbmVUb1RleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkLCBjb25zCiB7CiAgICAg
Q0NWaWRlb0xheWVySW1wbDo6VGV4dHVyZSYgdGV4dHVyZSA9IHF1YWQtPnRleHR1cmVzKClbaW5k
ZXhdOwogICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciA9IHJlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yKCk7Ci0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQoKSwgYWxsb2NhdG9yKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4
dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAgIHRleHR1cmUu
bV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIGFsbG9jYXRvcik7CiAgICAg
R0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1hdCgpOwogICAgIEludFNp
emUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7CiAKQEAgLTEyMTcsNyAr
MTIxOSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3BsYXko
TWFuYWdlZFRleHR1cmUqIGh1ZFRleHR1cmUsIGNvbnN0CiAgICAgY29uc3QgSGVhZHNVcERpc3Bs
YXlQcm9ncmFtKiBwcm9ncmFtID0gaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7CiAgICAgQVNTRVJU
KHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwot
ICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKG1fY29udGV4dC5nZXQoKSwgcmVuZGVyU3VyZmFj
ZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0Nv
bnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKKyAgICBodWRU
ZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHJlbmRlclN1cmZhY2VUZXh0dXJl
QWxsb2NhdG9yKCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShw
cm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZv
cm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAK
QEAgLTE0NDIsNyArMTQ0NSw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFt
ZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0CiAgICAgaWYgKCF0
ZXh0dXJlLT5yZXNlcnZlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUobV9j
b250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAg
ICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4
dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRl
dmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTQ4NCw3ICsxNDg4LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJp
bmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY28KIHsKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCi0gICAgdGV4
dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAg
IHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29udGV4dC5nZXQoKSwgbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyAp
CiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01Q
TEVURSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAwZjk2NWE4YjRm
YWQ1M2NlYTFlZmQwOTgzZWU5NWJmOTc3NjcyM2E2Li4yZWZiZGIyNjBiYzM3NWZhNjNlM2MwODQ5
YjM4YjY2YTVkOWI5NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAt
MzQsMTcgKzM0LDExIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNp
bmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4
dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNyArNDYsNiBAQCBjbGFzcyBD
Q0NoZWNrZXJib2FyZERyYXdRdWFkOwogY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOwogY2xh
c3MgQ0NEcmF3UXVhZDsKIGNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1JlbmRl
clBhc3M7CiBjbGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xv
ckRyYXdRdWFkOwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CkBAIC02NCw3NCArNTcsNTcgQEAg
Y2xhc3MgTGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFw
dGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0
ZXI7CiBjbGFzcyBTY29wZWRFbnN1cmVGcmFtZWJ1ZmZlckFsbG9jYXRpb247CiAKLWNsYXNzIExh
eWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBjb25zdCBJ
bnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25z
dCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
TG9zZUNvbnRleHQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0
ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhz
aXplX3QpID0gMDsKLX07Ci0KIGVudW0gVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVk
VXBsb2FkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIgfTsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVz
IGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgotY2xhc3MgTGF5
ZXJSZW5kZXJlckNocm9taXVtIHsKK2NsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1Ymxp
YyBDQ1JlbmRlcmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hy
b21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGllbnQqLCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKIAot
ICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKKyAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVy
Q2hyb21pdW0oKTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQtPnNldHRpbmdzKCk7IH0KLSAgICBjb25zdCBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsg
fQorICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0
aWVzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KIAogICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7Ci0gICAgYm9vbCBjb250ZXh0U3VwcG9ydHNNYXBT
dWIoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YjsgfQogCi0gICAg
dm9pZCB2aWV3cG9ydENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRDaGFuZ2Vk
KCkgT1ZFUlJJREU7CisKKyAgICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdlb21ldHJ5UXVhZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAKLSAgICB2b2lkIGJlZ2lu
RHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmZhY2UpOwotICAg
IHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKik7Ci0gICAgdm9pZCBmaW5p
c2hEcmF3aW5nRnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoQ0NS
ZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFjZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsKIAotICAgIHZvaWQg
ZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6
ZSk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFNpemUmIGh1ZFNpemUpIE9WRVJSSURFOwogCiAgICAgLy8gd2FpdHMgZm9yIHJl
bmRlcmluZyB0byBmaW5pc2gKLSAgICB2b2lkIGZpbmlzaCgpOworICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2goKSBPVkVSUklERTsKIAotICAgIHZvaWQgZG9Ob09wKCk7CisgICAgdmlydHVhbCB2b2lk
IGRvTm9PcCgpIE9WRVJSSURFOwogICAgIC8vIHB1dHMgYmFja2J1ZmZlciBvbnNjcmVlbgotICAg
IGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVyKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVyKSBPVkVSUklERTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hh
ciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCi0gICAgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0
cml4OyB9Ci0KICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29u
c3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQotICAgIGNvbnN0IEZsb2F0UXVh
ZCYgc2hhcmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeVF1
YWQ7IH0KIAogCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNv
bnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9p
ZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgYm9vbCBnZXRGcmFtZWJ1
ZmZlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KTsK
IAotICAgIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQotICAgIFRl
eHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVDb3Bp
ZXIuZ2V0KCk7IH0KLSAgICBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZVVwbG9hZGVyLmdldCgpOyB9Ci0gICAgVGV4dHVyZUFsbG9jYXRv
ciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9Ci0gICAgVGV4dHVyZUFsbG9jYXRvciog
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1
cmVNYW5hZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3Bp
ZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KKyAg
ICB2aXJ0dWFsIFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV90ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1
cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQorICAg
IHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0K
IAotICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29y
VG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAotICAgIHZvaWQgc2V0VmlzaWJsZShi
b29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9zdCgpIE9WRVJSSURFOwogCi0gICAg
R0MzRGVudW0gYmVzdFRleHR1cmVGb3JtYXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJs
ZShib29sKSBPVkVSUklERTsKIAotICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBj
b25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgdm9pZCBkcmF3VGV4
dHVyZWRRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0
cml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0
aW9uKTsKQEAgLTE0MywxMyArMTE5LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUZy
YW1lYnVmZmVyKCk7CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKENDUmVuZGVyZXJDbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4
dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToK
LSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2NsaWVudC0+ZGV2
aWNlVmlld3BvcnRTaXplKCk7IH0KLSAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJuIHZp
ZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KLSAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJldHVy
biB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsgfQorICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgo
ZmxvYXQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKICAgICB2
b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VE
YW1hZ2VSZWN0KTsKICAgICB2b2lkIGRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQqKTsKQEAgLTE5MSwxOCArMTY1LDE0IEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVy
OwogICAgIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CiAKLSAgICBMYXllclJlbmRlcmVy
Q2hyb21pdW1DbGllbnQqIG1fY2xpZW50OwotCiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyBtX2NhcGFiaWxpdGllczsKIAotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV9wcm9qZWN0aW9uTWF0cml4OwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV93aW5kb3dNYXRyaXg7Ci0KICAgICBDQ1JlbmRlclN1cmZhY2UqIG1fY3VycmVudFJlbmRlclN1
cmZhY2U7CiAgICAgTWFuYWdlZFRleHR1cmUqIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlOwogICAg
IHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZDsKIAogICAgIE93blB0cjxHZW9tZXRy
eUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CisgICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0
cnlRdWFkOwogCiAgICAgLy8gVGhpcyBibG9jayBvZiBiaW5kaW5ncyBkZWZpbmVzIGFsbCBvZiB0
aGUgcHJvZ3JhbXMgdXNlZCBieSB0aGUgY29tcG9zaXRvciBpdHNlbGYuCiAKQEAgLTI5Nyw4ICsy
NjcsNiBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlOwogCi0gICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlRdWFkOwotCiAgICAgYm9v
bCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
OwogICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiBtX3RleHR1cmVVcGxvYWRlclNldHRpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggOGZlYTM4YTY5MGM5NWNlN2Ez
OTg3NmI3MGMzYmQwZTY5N2IyZWI4Ni4uNWQ5MTJlYWVjNjllNjQ0MzM4OTFjNDI1ODQyOWUyYTUw
MWMzMDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMzAsOCAr
MzAsOCBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAKICNpbmNsdWRlICJF
eHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIExheWVyVGV4
dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50U2l6ZSYgc3ViSW1hZ2VTaXpl
KQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQoY29uc3QgdWludDhfdCogaW1h
Z2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
aWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFn
ZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0
KTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKGNv
bnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QKIAogdm9pZCBMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGlt
YWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51
bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5U
KCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlIiwgdGhpcywgMCk7
CiAgICAgaWYgKCFtX3N1YkltYWdlKQpAQCAtODcsMTkgKzg3LDMxIEBAIHZvaWQgTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwg
Y29uc3QgSW50CiAKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsKICAgICB9
Ci0gICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RS
ZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBw
aXhlbFNvdXJjZSk7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4
dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGNvbnRleHQzZC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0
LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1h
Z2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMsIDAp
OworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0Qo
KTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgogICAgIElu
dFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3Qu
eSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKICAgICAvLyBVcGxvYWQgdGlsZSBkYXRhIHZpYSBhIG1h
cHBlZCB0cmFuc2ZlciBidWZmZXIKLSAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9u
cyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpKTsKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dDNkLT5nZXRFeHRlbnNpb25zKCkpOwog
ICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihleHRlbnNpb25z
LT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVj
dC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0
ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIAogICAgIGlmICghcGl4ZWxEZXN0KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVTdWJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAppbmRleCBkOWYwODM3MTllMDFkYjA2Yzg4
OTNlYjg4NWVmMzczMjM1MjdiYzA4Li40ZjFjNDE1MjE0ZDIzMjlhYjZlNzJjZGUxYjFmMmZlMjJm
MjhhMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKQEAgLTM2LDcgKzM2LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKK2Ns
YXNzIENDR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBMYXllclRleHR1cmVTdWJJbWFnZSB7CiBw
dWJsaWM6CkBAIC00NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViSW1hZ2VT
aXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHVwbG9hZChjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNz
Q29udGV4dCopOwogICAgIHZvaWQgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4
X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBHcmFwaGljc0NvbnRleHQzRCopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsKIAogICAgIGJvb2wgbV91
c2VNYXBUZXhTdWJJbWFnZTsKICAgICBJbnRTaXplIG1fc3ViSW1hZ2VTaXplOwpAQCAtNjQsNCAr
NjQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICNlbmRpZiAvLyBMYXllclRleHR1cmVTdWJJbWFnZV9o
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA1ZGI3YjRjNTEyZTU2YWE0Njdi
YTU2M2Y4NDM3ZWIyZjQwOWQ3Y2YwLi42MWU0MjU5ZTZjYzc5N2Q4MTY5MmUwNjA5NDYyZmYzZWYx
NGY2NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMSwxMSArMzEsMTIg
QEAKIAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
czNELmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC01MCw3ICs1MSw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVy
ZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVy
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5jcHAKaW5kZXggOWJjNzAwZGM5MGY2ZWI2MThkMTIyNGU1NGEyMWY5MDBjMWNjYTI1
YS4uOGYwM2UwZDllNjNhYjg1NmNhOTg4NWFkNjc5MDczZDY4MTZlMzM0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFn
ZWRUZXh0dXJlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDE2ICsxMTgs
MjYgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQogICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRl
VGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpi
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoQ0NHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBhbGxv
Y2F0ZShhbGxvY2F0b3IpOwotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3Np
dGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7CiB9CiAKLXZvaWQg
TWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJl
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAg
Y29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7
CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21w
b3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0M2QtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV90ZXh0dXJlSWQsIDApOwogfQogCiBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2Vk
VGV4dHVyZTo6c3RlYWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggZWQ0ZDQ1MGU5NjljZTBh
YjU0N2E5YWM1MTM4ZDRjMDkzZDgzOWQ2Mi4uOGE2NTY2YzMxZjgyOThjZWFkMWZiNGQzNGZiZDU5
Mjc0Y2YwNjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CitjbGFzcyBDQ0dy
YXBoaWNzQ29udGV4dDsKIAogY2xhc3MgTWFuYWdlZFRleHR1cmUgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1hbmFnZWRUZXh0dXJlKTsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAg
IH0KIAogICAgIHZvaWQgYWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgYmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9p
ZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFs
bG9jYXRvciopOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRl
eHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KICAgICB1bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zv
cm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKaW5kZXggODBhOGEw
M2ViYTYwNmE0MjUzYmNhZTc0ODgyMjE0NTQwMmM4NTQxMi4uN2FiOWJhMDA4NmUxZDIwMzJjODMx
OGJkOTYwMDAwMDA4NGI0YmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgi
CiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
Q29waWVyLmNwcAppbmRleCBhNTkxYTMyYTExMzY4MTg4MzdlMzg0ZjRmNTQyYWYyMzZiY2JiMWI3
Li5iZDhjMzNhOWEyNTBhMDUyYTZlZDYwY2RjYzhkOTcwMTI5NmMwZjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
Q29waWVyLmNwcApAQCAtNjEsMTAgKzYxLDE2IEBAIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6
fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pKTsKIH0KIAotdm9pZCBBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNp
emUmIHNpemUpCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUoQ0NH
cmFwaGljc0NvbnRleHQqIGNjQ29udGV4dCwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNp
Z25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFRSQUNFX0VW
RU5UKCJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIsIHRoaXMsIDApOwogCisgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICgh
Y29udGV4dCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBOb3Rl
OiB0aGlzIGNvZGUgZG9lcyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0s
IDJEIHRleHR1cmUsIGZyYW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQgZW5hYmxlLgogICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2ZibykpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZl
clRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRl
c3RUZXh0dXJlSWQsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRleCA3M2JlNWVjYWQxNmY4ODU1
MjUxMTgxZDY1MmI0ZGY4YzM4NGI4YjA1Li4zYWMyZDExOTE0ZmZhMTVmOGRlYzJjYWIzZGY1Y2Qy
ODBhM2E2ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgogI2lu
Y2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAvLyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRl
bnRzIG9mIHxzb3VyY2VUZXh0dXJlSWR8IHRvIHxkZXN0VGV4dHVyZUlkfC4gQm90aCB0ZXh0dXJl
IG9iamVjdHMKICAgICAvLyBtdXN0IGJlIGNvbXBsZXRlIGFuZCBoYXZlIGEgYmFzZSBsZXZlbCBv
ZiB8c2l6ZXwgZGltZW5zaW9ucy4gVGhlIGNvbG9yIGZvcm1hdHMgZG8gbm90IG5lZWQKICAgICAv
LyB0byBtYXRjaCwgYnV0IHxkZXN0VGV4dHVyZUlkfCBtdXN0IGhhdmUgYSByZW5kZXJhYmxlIGZv
cm1hdC4KLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IElu
dFNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250
ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBj
b25zdCBJbnRTaXplJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGV4dHVyZUNv
cGllcigpIHsgfQpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwg
fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25l
ZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGNvcHlU
ZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNp
Z25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAppbmRleCBlM2I0NGZkNmIxN2YzZjJmOTQxYTg2
ZjJmMmI3NDBmMjY0NTExNDlhLi4wZWFlMmU2NWRkMDI0NjRjZDIwZmJmMzhmZGJiNzhlY2NkZGM4
OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzQnVzeSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxv
YWRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2Fk
VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0IGRlc3RSZWN0KSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyLmNwcAppbmRleCA1MTgxM2M1Y2I1NTYxZjkwNTdjMTI5MmM4YTVkM2FhZWMyYzFl
MjJmLi5mNWNmMmE0ZTEzOTc3YmQ4YTk4MzE1MTQ5MDVkMzEwM2IzMjFkMzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2
b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2FkcygpCiAgICAgbV9wZW5kaW5n
UXVlcmllcy5hcHBlbmQobV9hdmFpbGFibGVRdWVyaWVzLnRha2VGaXJzdCgpKTsKIH0KIAotdm9p
ZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0IGRlc3RSZWN0KQordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRl
eHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQogewogICAgIHRleHR1cmUtPnVw
ZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCmluZGV4IGE3MjA1ODY0OWFhMTFl
YjZlNzVjYWU4OTlhZmFkYzk3MmJiNzJjMmQuLmRlYTNkMzU0YzViMWU1ZTMwMGZkMDgyMmFlZDcx
ZmVhZWVhOGExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwg
VGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NH
cmFwaGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVj
dCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUXVlcnkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
R3JhcGhpY3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk1ZjE4YzM0OTFiNGM0ZGQ2MTE0MzkxNDE1
ODc5OThlMjg4NzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0NHcmFwaGljc0NvbnRleHRfaAorI2RlZmluZSBDQ0dyYXBoaWNz
Q29udGV4dF9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0Q7CisKK2NsYXNzIENDR3JhcGhpY3NDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8
Q0NHcmFwaGljc0NvbnRleHQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gY3JlYXRlMkQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZTNEKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQzRCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NHcmFwaGlj
c0NvbnRleHQoY29udGV4dDNEKSk7CisgICAgfQorCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzRCgpIHsgcmV0dXJuIG1fY29udGV4dDNELmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
Q0NHcmFwaGljc0NvbnRleHQoKSB7IH0KKyAgICBleHBsaWNpdCBDQ0dyYXBoaWNzQ29udGV4dChQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QpCisgICAgICAgIDogbV9jb250
ZXh0M0QoY29udGV4dDNEKSB7IH0KKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0M0Q7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0dyYXBoaWNzQ29udGV4dF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDdkNDlmNzk4ZDFhYzdkNDhiZjc3NDM0
N2JiYmM5N2ZiYTA4ZjNhMTYuLmUxNGQ1M2IwNjRlYjQyM2JkMWI0NzAxOTYxMTYzMzk4OGE1YTYw
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC02OSw4ICs2OSwxMiBA
QCBib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzKSBjb25zdAogCiB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRy
ZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiB7Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsK
LSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQo
KTsKKyAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxh
eWVyUmVuZGVyZXIoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dCkgewor
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCiAg
ICAgICAgIG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJl
ci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOwogCkBAIC0xMDEsOSArMTA1LDkgQEAg
dm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJl
ZUhvc3RJbXBsKQogICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9j
a2VyKCZjYW52YXMpOwogCi0gICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4
dCwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAg
ICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUobGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAg
ICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBmYWxzZTsKLSAgICAgICAgaWYgKGxheWVyUmVuZGVy
ZXItPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKSB7CisgICAgICAgIGlmIChsYXllclJlbmRlcmVy
LT5jYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1YikgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNE
Q2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+
KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgICAgICB1aW50OF90KiBwaXhlbERl
c3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENI
Uk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndp
ZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09O
TFkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCmluZGV4IDk1
YzMyYmRlY2MyMDBmNjhmZjI4OTczY2Y3ODc5ZDQ4ZWIxN2UzN2QuLjlmZTkxNWQ0ZWE2MGQ2OWEx
ODkwYTVhMDc2NDQ4ODI5YWViZDkxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxh
eWVySW1wbC5jcHAKQEAgLTUzLDI1ICs1MywyOSBAQCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6fkND
SU9TdXJmYWNlTGF5ZXJJbXBsKCkKICAgICBtX2lvU3VyZmFjZVRleHR1cmVJZCA9IDA7CiB9CiAK
LXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KEND
UmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewot
ICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVyKTsKKyAgICBDQ0xheWVySW1w
bDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4dCk7CiAKICAgICBpZiAobV9pb1N1cmZh
Y2VDaGFuZ2VkKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJS
ZW5kZXJlci0+Y29udGV4dCgpOwotICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5z
aW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRl
eHQtPmNvbnRleHQzRCgpOworICAgICAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9t
aXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250
ZXh0M2QtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgIEFTU0VSVChleHRlbnNpb25zLT5zdXBw
b3J0cygiR0xfQ0hST01JVU1faW9zdXJmYWNlIikpOwogICAgICAgICBBU1NFUlQoZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKTsKIAogICAgICAgICBpZiAo
IW1faW9TdXJmYWNlVGV4dHVyZUlkKQotICAgICAgICAgICAgbV9pb1N1cmZhY2VUZXh0dXJlSWQg
PSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0KLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShFeHRlbnNpb25zM0Q6OlRFWFRVUkVf
UkVDVEFOR0xFX0FSQiwgbV9pb1N1cmZhY2VUZXh0dXJlSWQpKTsKLSAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdM
RV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpU
RVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywg
R3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9B
UkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgICAgIG1faW9TdXJmYWNlVGV4dHVyZUlkID0gY29u
dGV4dDNkLT5jcmVhdGVUZXh0dXJlKCk7CisKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4
dDNkLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOworICAgICAg
ICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVY
VFVSRV9SRUNUQU5HTEVfQVJCLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkpOworICAgICAgICBHTEMo
Y29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJF
X1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4
dDNkLT50ZXhQYXJhbWV0ZXJpKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6
TElORUFSKSk7CisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVy
aShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAg
ICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNE
OjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBf
VCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKICAgICAgICAgZXh0ZW5zaW9u
cy0+dGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNU
QU5HTEVfQVJCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pb1N1cmZhY2VTaXplLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZVNpemUuaGVpZ2h0KCksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAppbmRleCA1ZDY2NDk2ZTExNTE1NzhiMWQ1ZTNlZjVk
NTI2NTZiNjBjODJlN2NiLi4yOGEzNWNkMGYyMDgzYTg2MjEwMTcxODc5YzFiOTI2YjUyYmQwNGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhp
Y3NDb250ZXh0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3Ry
ZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
aW5kZXggMWYwOGI5Yjk5NzM4NDI1ZDQxYTRjNGRmYmM3YjBlMzBiN2QwZmUzNS4uOTNhYjE3ODE4
NzJiZDMzZmM4MmQ1MDZmOTVmNDMwZDliZWYxMWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKIAotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdC
b3JkZXJEcmF3UXVhZC5oIgpAQCAtMTQ1LDcgKzE0NCw3IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdAogICAg
IHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRUcmFuc2Zvcm0oKSwgZHJhd1Ry
YW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xpcFJlY3QsIGRyYXdPcGFjaXR5
KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKikKK3ZvaWQgQ0NMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqLCBD
Q0dyYXBoaWNzQ29udGV4dCopCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIHdpbGxEcmF3L2Rp
ZERyYXcgbXVzdCBiZSBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMmM0MWQwNmVh
OGIwMGJkZDJlY2Y0Mzc5ZmE4ZDVmYjlkZmMyOWNiYi4uY2RiOGM3ZDU5YTFjZDE1MWFjZDY3NmZh
ODNkNjk3YWZjN2Q2MzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC00MywxMCArNDMsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1JlbmRlcmVy
OwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAog
Y2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQgewogcHVibGljOgpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gZGlkRHJhdyBp
cyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZv
cmUKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBj
bGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRo
ZSBiYXNlIGNsYXNzIHZlcnNpb24uCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVu
ZGVyZXJDaHJvbWl1bSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwg
Q0NHcmFwaGljc0NvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCk7CiAgICAgdm9pZCBhcHBlbmREZWJ1Z0Jv
cmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGNiNjEwZGZkOWU5MmMyMjdjZDgz
MTYzYjEzNDA0MDVlYjZjZGZiMTYuLjE2NTllYzViZDg5YTJhNTA5OGRiYmM0NzMzNDA5ZmNjM2Qw
NTExMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjY1LDkgKzI2NSwx
MiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUoKQogICAgIG1fY2xpZW50
LT5kaWRDb21taXQoKTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gQ0NMYXll
clRyZWVIb3N0OjpjcmVhdGVDb250ZXh0KCkKK1Bhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50
LT5jcmVhdGVDb250ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0
OworICAgIGlmIChzZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKKyAgICAgICAg
cmV0dXJuIENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUyRCgpOworICAgIHJldHVybiBDQ0dyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKIH0KIAog
UGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxh
eWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKQEAgLTI4
NSw3ICsyODgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkTG9zZUNvbnRleHQoKQogfQog
CiAvLyBUZW1wb3JhcnkgaGFjayB1bnRpbCBXZWJWaWV3SW1wbCBjb250ZXh0IGNyZWF0aW9uIGdl
dHMgc2ltcGxpZmllZAotR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdDo6Y29udGV4
dCgpCitDQ0dyYXBoaWNzQ29udGV4dCogQ0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KCkKIHsKICAg
ICByZXR1cm4gbV9wcm94eS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAppbmRleCBkYzhmYjFjOTM1NGMxYTBhYTQyYTZmYmZiY2NjY2NkNGEzYTJkYWNhLi40MzRhZWMy
NzQyMjAxYzVmNmQ1YjQ5Y2M1MzdlMTgwMzljMmM4NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJSYXRlTGltaXRlci5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgi
CisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAKQEAgLTU5LDcgKzYw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBm
cmFtZUJlZ2luVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKSA9IDA7CkBA
IC03Niw2ICs3Nyw3IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBDQ1Nl
dHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQorICAgICAg
ICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHNo
b3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUo
ZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNlKQpAQCAtOTIsNiArOTQs
NyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQ
YWludGluZzsKKyAgICBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsKICAgICBib29sIHNo
b3dGUFNDb3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGJvb2wg
c2hvd1BhaW50UmVjdHM7CkBAIC0xNTksNyArMTYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmVn
aW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZvaWQgZmlu
aXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGNv
bW1pdENvbXBsZXRlKCk7Ci0gICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRl
Q29udGV4dCgpOworICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRl
eHQoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRl
TGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQg
ZGlkTG9zZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0IHsKQEAgLTE4Niw3ICsx
ODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOT1RFOiBUaGUgcmV0dXJuZWQgdmFsdWUgY2FuIG9u
bHkgYmUgdXNlZCB0byBtYWtlIEdMIGNhbGxzIG9yIG1ha2UgdGhlCiAgICAgLy8gY29udGV4dCBj
dXJyZW50IG9uIHRoZSB0aHJlYWQgdGhlIGNvbXBvc2l0b3IgaXMgcnVubmluZyBvbiEKLSAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOworICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KCk7CiAKICAgICAvLyBDb21wb3NpdGVzIGFuZCBhdHRlbXB0cyB0byByZWFkIGJhY2sgdGhl
IHJlc3VsdCBpbnRvIHRoZSBwcm92aWRlZAogICAgIC8vIGJ1ZmZlci4gSWYgaXQgd2Fzbid0IHBv
c3NpYmxlLCBlLmcuIGR1ZSB0byBjb250ZXh0IGxvc3QsIHdpbGwgcmV0dXJuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDBhNDlmOGU3ZGE1OTA2MmFjYmRhNDZh
OGM1OTQ1NDlmOTQ2ODI1MWUuLjdkODNkMjA3ZGM2OTU0MTUyOWMxMTk4YWFkMzE5ZWVjM2JhODc4
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yNyw3ICsy
Nyw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogCiAjaW5jbHVkZSAi
RXh0ZW5zaW9uczNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5j
bHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCkBAIC0xNjcsOSArMTY2LDkgQEAg
Ym9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQorQ0NH
cmFwaGljc0NvbnRleHQqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQogewotICAgIHJl
dHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRleHQoKSA6IDA7Cisg
ICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKQEAg
LTMzMSw3ICszMzAsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAgICAgICBpZiAoaXQu
cmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkKICAgICAgICAgICAgIHBhc3Mt
PmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIp
OwogICAgICAgICBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0LT52aXNpYmxl
TGF5ZXJSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpdC0+d2lsbERyYXcobV9sYXll
clJlbmRlcmVyLmdldCgpKTsKKyAgICAgICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVy
ZXIuZ2V0KCksIGNvbnRleHQoKSk7CiAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0Zvckxh
eWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgICAgIH0K
IApAQCAtNTQ3LDEwICs1NDYsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNp
YmxlKGJvb2wgdmlzaWJsZSkKICAgICBzZXRCYWNrZ3JvdW5kVGlja2luZ0VuYWJsZWQoIW1fdmlz
aWJsZSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycyk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0
SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlcikKK2Jvb2wg
Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxD
Q0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVV
cGxvYWRlcikKIHsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+
Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5
ZXJSZW5kZXJlcjsKLSAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUodGhpcywgY29udGV4dCwgdGV4dHVyZVVwbG9hZGVyKTsKKyAgICBsYXllclJlbmRlcmVy
ID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dDNkLCB0ZXh0dXJl
VXBsb2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBuZXcgY29udGV4dC9sYXll
clJlbmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBvbGQKICAgICAvLyByZXNv
dXJjZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURzKS4KQEAgLTU2MCw2ICs1
NjUsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+CiAgICAgfQogCiAgICAgbV9sYXllclJlbmRl
cmVyID0gbGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikK
KyAgICAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKIAogICAgIGlmICghbV92aXNpYmxlICYmIG1f
bGF5ZXJSZW5kZXJlcikKICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0VmlzaWJsZShtX3Zp
c2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDdmMGM3ZmY2
NjNjYTNkZjhjY2U5MzFjMjZhMzFkNTFlN2E2MmM3MTUuLjkwYWEwZmIwNjg1NjFmNjkyMDljYzQ2
YjkzYTViZmQ3YWI2MzliZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogfTsKIAogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBv
d25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcg
c3RhdGUKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCB7CitjbGFzcyBDQ0xheWVyVHJlZUhv
c3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBDQ1JlbmRlcmVyQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJbXBsKTsKICAgICB0eXBl
ZGVmIFZlY3RvcjxDQ0xheWVySW1wbCo+IENDTGF5ZXJMaXN0OwogCkBAIC0xMDMsNyArMTAzLDcg
QEAgcHVibGljOgogICAgIC8vIE11c3QgYmUgY2FsbGVkIGlmIGFuZCBvbmx5IGlmIHByZXBhcmVU
b0RyYXcgd2FzIGNhbGxlZC4KICAgICB2b2lkIGRpZERyYXdBbGxMYXllcnMoY29uc3QgRnJhbWVE
YXRhJik7CiAKLSAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRp
b24KKyAgICAvLyBDQ1JlbmRlcmVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBj
b25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX2RldmljZVZpZXdwb3J0U2l6ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC0xMTMsNyArMTEzLDcgQEAg
cHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50YXRpb24KICAgICBib29sIGNhbkRyYXcoKTsKLSAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOworICAgIENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCk7CiAKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwpAQCAtMTIxLDkgKzEyMSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGludCBmcmFt
ZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIGJvb2wgaW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1
cmVVcGxvYWRlck9wdGlvbik7CisgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNz
UmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBi
b29sIGlzQ29udGV4dExvc3QoKTsKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KKyAgICBDQ1JlbmRlcmVy
KiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CiAgICAg
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpIGNvbnN0OwogICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpIGNvbnN0OwogCkBAIC0yMDksNyArMjA5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHVt
cFJlbmRlclN1cmZhY2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBjb25zdCBDQ0xheWVySW1w
bCopIGNvbnN0OwogCi0gICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJl
bmRlcmVyOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93
blB0cjxDQ1JlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBtX3Jvb3RMYXllckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fc2Nyb2xsTGF5ZXJJbXBsOwog
ICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCAzNjYyOTE3OWEyZTE2
NTM5MGVkMjgyYjhkNTViNzM1NGE3YzVkMDQwLi5mYjJjYmJhZTk2ZjA3MzMwMDc1YzI1MzM1ZGJh
MDdlNTlhNWQyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBDQ1RocmVhZDsKLWNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllczsKIAogLy8gQWJzdHJhY3QgY2xhc3MgcmVzcG9uc2libGUgZm9y
IHByb3h5aW5nIGNvbW1hbmRzIGZyb20gdGhlIG1haW4tdGhyZWFkIHNpZGUgb2YKQEAgLTExMyw3
ICsxMTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFRlbXBvcmFyeSBoYWNrIHdoaWxl
IHJlbmRlcl93aWRnZXQgc3RpbGwgZG9lcyBzY2hlZHVsaW5nIGZvciBDQ0xheWVyVHJlZUhvc3RN
YWluVGhyZWFkSQotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSA9IDA7
CisgICAgdmlydHVhbCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpID0gMDsKIAogICAgIC8v
IFRlc3RpbmcgaG9va3MKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlcmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E0NTUxNTQyYTYxODYzZGJjN2JhZjQ0NmE3ZGRiNTk0
ZDkzYWQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ0NSZW5kZXJlcl9oCisjZGVmaW5lIENDUmVuZGVyZXJfaAorCisjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NSZW5kZXJQYXNzOwor
Y2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKK2NsYXNzIFRleHR1cmVDb3BpZXI7CitjbGFzcyBUZXh0
dXJlTWFuYWdlcjsKK2NsYXNzIFRleHR1cmVVcGxvYWRlcjsKKworY2xhc3MgQ0NSZW5kZXJlckNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9y
dFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpID0gMDsKK307CisKK2Ns
YXNzIENDUmVuZGVyZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyZXIpOwor
cHVibGljOgorICAgIHZpcnR1YWwgfkNDUmVuZGVyZXIoKSB7IH0KKworICAgIHZpcnR1YWwgY29u
c3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwor
CisgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dC0+c2V0dGluZ3MoKTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyBy
ZXR1cm4gbV9jbGllbnQtPmRldmljZVZpZXdwb3J0U2l6ZSgpOyB9CisgICAgaW50IHZpZXdwb3J0
V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0aCgpOyB9CisgICAgaW50IHZpZXdw
b3J0SGVpZ2h0KCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7IH0KKworICAgIHZp
cnR1YWwgdm9pZCB2aWV3cG9ydENoYW5nZWQoKSA9IDA7CisKKyAgICBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9qZWN0aW9uTWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1cmZhY2UqIGRl
ZmF1bHRSZW5kZXJTdXJmYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNz
KGNvbnN0IENDUmVuZGVyUGFzcyopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2lu
Z0ZyYW1lKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShNYW5h
Z2VkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0gMDsKKworICAgIC8vIHdhaXRz
IGZvciByZW5kZXJpbmcgdG8gZmluaXNoCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkb05vT3AoKSA9IDA7CisgICAgLy8gcHV0cyBiYWNrYnVmZmVy
IG9uc2NyZWVuCisgICAgdmlydHVhbCBib29sIHN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1
YkJ1ZmZlcikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZv
aWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgVGV4dHVyZU1h
bmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFNjaXNzb3JUb1JlY3Qo
Y29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRMb3N0KCkg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgPSAwOworCitwcm90ZWN0
ZWQ6CisgICAgZXhwbGljaXQgQ0NSZW5kZXJlcihDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQpCisg
ICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CisKKyAgICBDQ1JlbmRlcmVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
cHJvamVjdGlvbk1hdHJpeDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
d2luZG93TWF0cml4OworfTsKKworfQorCisjZW5kaWYgLy8gQ0NSZW5kZXJlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9s
bGJhckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggMjQzYWQyMzFlN2Y0NmZjODll
YjA0MDVkOGQwYmY1MzY4MzFlYzYxNC4uNmI1MWM4MTY5YmVmYjAyZDc1ZTQwNzQwMDM0ODJhNzEy
MmM5YjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAt
NTAsOSArNTAsOSBAQCBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxiYXJMYXllckltcGwo
aW50IGlkKQogewogfQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhMYXll
clJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlcik7
CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOwogCiAg
ICAgaWYgKGJvdW5kcygpLmlzRW1wdHkoKSB8fCBjb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CkBAIC03NywxMSArNzcsMTYgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVy
SW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogCiAg
ICAgewogICAgICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpOwogICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBTa2lhIHVzZXMgQkdSQSBhY3R1YWxseSwgd2UgY29ycmVjdCB0aGF0IHdpdGggdGhlIHN3
aXp6bGUgcGl4ZWwgc2hhZGVyLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4SW1h
Z2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgbV90ZXh0dXJlLT5mb3JtYXQo
KSwgY2FudmFzLnNpemUoKS53aWR0aCgpLCBjYW52YXMuc2l6ZSgpLmhlaWdodCgpLCAwLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGxv
Y2tlci5waXhlbHMoKSkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0g
Y29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRp
bmcuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBHTEMoY29udGV4
dDNkLCBjb250ZXh0M2QtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIG1fdGV4dHVyZS0+Zm9ybWF0KCksIGNhbnZhcy5zaXplKCkud2lkdGgoKSwgY2FudmFzLnNp
emUoKS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCBsb2NrZXIucGl4ZWxzKCkpKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IDMyYWQxZDhkZGZlZjk5NzIyNzRh
MWVmMDE4NDcwMzY1YWNkZTYxZDguLmY5NzVjMTllOTlhOTMzZmZhZTZiMTEyMzZjNzc4YmMxNjgz
YmE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgQ0NMYXllckltcGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxMYXllcjsgfQogICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoQ0NMYXllcklt
cGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllcjsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTdjZGM1OWU0NTFhZmQ1NDU2ZTc5NzY2MGRh
ZDYzZDAzMjI0NGMxNS4uZmEwZGVkMGZlMDM5MWFjOTdhZWI4NWI3NzI3NmNmYjRlMDZlZTI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKIAogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCkBAIC0x
MTIsNyArMTExLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAot
R3JhcGhpY3NDb250ZXh0M0QqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQorQ0NHcmFw
aGljc0NvbnRleHQqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fY29udGV4dEJlZm9yZUluaXRp
YWxpemF0aW9uKQpAQCAtMTM5LDcgKzEzOCw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
aXNTdGFydGVkKCkgY29uc3QKIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNv
bnRleHQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVD
b250ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXll
clRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKQEAgLTE3Niw3
ICsxNzUsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZXh0
TG9zdCk7CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVy
VHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCmluZGV4IDQ0MTQ2NmFmY2U1OWVmMTYwMDIyY2FhYWY4MWVkZjljOGIwNDZlM2Iu
LjY0NWE4YTlhNGFkMTE3NGMzNmUxZWQyMDcxOWVkMTdlYjNlOGY3ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIC8v
IENDUHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVh
ZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0
aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGlzU3RhcnRlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplQ29udGV4dCgpIE9WRVJSSURFOwpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gSG9sZHMgb24gdG8gdGhlIGNvbnRleHQgYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpIGFu
ZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLiBTaG91bGRuJ3QKICAgICAvLyBiZSB1
c2VkIGZvciBhbnl0aGluZyBlbHNlLgotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb247CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbjsKIAogICAgIE93blB0cjxDQ1NpbmdsZVRo
cmVhZFByb3h5QW5pbWF0aW9uVGltZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYWI1NmQxZjM3N2EyYzZmOGNlNWI3MjNjY2Q2NTFh
YWVlMTRiZTlhMS4uMDVlOWY1NGRkYWVjYWFiMjQxZTliNWE0YWRjNWJmMTVjNzQyZDIwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW50
cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5z
aXplKCkgfHwgbV9tYW5hZ2VkQ29weUVudHJpZXMuc2l6ZSgpOwogfQogCi12b2lkIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciog
dXBsb2FkZXIsIHNpemVfdCBjb3VudCkKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRl
eHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgc2l6ZV90IGNv
dW50KQogewogICAgIHNpemVfdCBpbmRleDsKIApAQCAtMTQyLDggKzE0MiwxMiBAQCB2b2lkIEND
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsbwogICAgIC8vIElmIHdlJ3ZlIHBlcmZvcm1lZCBhbnkgdGV4dHVyZSBj
b3BpZXMsIHdlIG5lZWQgdG8gaW5zZXJ0IGEgZmx1c2ggaGVyZSBpbnRvIHRoZSBjb21wb3NpdG9y
IGNvbnRleHQKICAgICAvLyBiZWZvcmUgbGV0dGluZyB0aGUgbWFpbiB0aHJlYWQgcHJvY2VlZCBh
cyBpdCBtYXkgbWFrZSBkcmF3IGNhbGxzIHRvIHRoZSBzb3VyY2UgdGV4dHVyZSBvZiBvbmUgb2YK
ICAgICAvLyBvdXIgY29weSBvcGVyYXRpb25zLgotICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUo
KSB8fCBtX21hbmFnZWRDb3B5RW50cmllcy5zaXplKCkpCi0gICAgICAgIGNvbnRleHQtPmZsdXNo
KCk7CisgICAgaWYgKG1fY29weUVudHJpZXMuc2l6ZSgpIHx8IG1fbWFuYWdlZENvcHlFbnRyaWVz
LnNpemUoKSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4
dC0+Y29udGV4dDNEKCk7CisgICAgICAgIGlmIChjb250ZXh0M2QpCisgICAgICAgICAgICBjb250
ZXh0M2QtPmZsdXNoKCk7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZv
ciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICB9CiAKICAgICAvLyBJZiBubyBlbnRyaWVzIGxl
ZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KICAgICBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oCmluZGV4IDI0ZDg5NmYyYjU5MTIwOTAwNDFhNDMzZjE2NjUxZDYyM2MwZGI2
MmYuLjdjOWZlMmUzMDhjYTRmMjQ0YzI2NzYxZTgzYTg0NTgyYmMzY2Q0ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7
CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogY2xhc3MgVGV4dHVyZVVwbG9hZGVyOwpAQCAtNTAsNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAg
Ly8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuCi0gICAgdm9pZCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlcios
IHNpemVfdCBjb3VudCk7CisgICAgdm9pZCB1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBj
b3VudCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
aW5kZXggZmIwYTVjMTBiNTdmNzk4ODEwM2QyMTMyMzk4YzZhMThjYzNjMTQxOS4uZTk1NTU1NTEw
NTY3ZTI5N2YzOWEwZTNjMTk2ZWZhOGYyODJhYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFy
dFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvcwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3Np
dGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1
cmF0aW9uKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQo
KQorQ0NHcmFwaGljc0NvbnRleHQqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIHJl
dHVybiAwOwogfQpAQCAtMTc2LDEzICsxNzYsMTMgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojppc1N0
YXJ0ZWQoKSBjb25zdAogYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCgpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0IiwgdGhp
cywgMCk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRy
ZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJl
ZigpKTsKIAogICAgIC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBzbyB3ZSBjYW4gdHJhbnNm
ZXIgb3duZXJzaGlwIG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgQ0NH
cmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7
CiAgICAgQVNTRVJUKGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAogICAgIENDUHJveHk6Omlt
cGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCwKQEAgLTIyOSwxNyArMjI5LDE3IEBA
IGJvb2wgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgLy8gVHJ5IHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KLSAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNv
bnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVy
VHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQo
KSkKKyAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQoKSAmJiAhbV9s
YXllclRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKICAgICAg
ICAgaWYgKCFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJl
ZigpKTsKIAogICAgIC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBzbyB3ZSBjYW4gdHJhbnNm
ZXIgb3duZXJzaGlwIG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgQ0NH
cmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7
CiAgICAgQVNTRVJUKGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAogICAgIC8vIE1ha2UgYSBi
bG9ja2luZyBjYWxsIHRvIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZC4gVGhlIHJlc3VsdHMg
b2YgdGhhdApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQ0NMYXllclRyZWVIb3N0Ojpu
ZWVkc0ZpbHRlckNvbnRleHQoKSAmJiAhU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmhhdmVGb3JJ
bXBsVGhyZWFkKCkpCisgICAgaWYgKENDTGF5ZXJUcmVlSG9zdDo6bmVlZHNGaWx0ZXJDb250ZXh0
KCkgJiYgIW1fbGF5ZXJUcmVlSG9zdC0+c2V0dGluZ3MoKS5mb3JjZVNvZnR3YXJlQ29tcG9zaXRp
bmcgJiYgIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpoYXZlRm9ySW1wbFRocmVhZCgpKQogICAg
ICAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpOwogCiAg
ICAgT3duUHRyPEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZT4gcmVxdWVzdChtX3BlbmRpbmdCZWdp
bkZyYW1lUmVxdWVzdC5yZWxlYXNlKCkpOwpAQCAtODA3LDcgKzgwNyw3IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQ
cm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQpCit2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFk
KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7CkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9u
dEF0bGFzKQogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldEZvbnRBdGxhcyhmb250QXRsYXMp
OwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHRQ
dHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBj
YXBhYmlsaXRpZXMpCit2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKiBjYXBhYmlsaXRpZXMpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDlkMmVkZGE2ZmRlMGRkZjcxMDdm
ZTFjNzU5N2EyYTBlOWYzMjNlZTguLjI0ZGI5MmU2ZWExNWM5ZjQ2MjgyOTY5OTAxZWViYmU1Zjk4
OWU2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIC8vIENDUHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9z
aXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRh
cmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlv
bikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpbml0aWFsaXplQ29udGV4dCgpIE9WRVJSSURFOwpAQCAtMTM2LDEyICsxMzYsMTIgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldFN1cmZhY2VSZWFkeU9uSW1wbFRocmVhZCgpOwotICAg
IHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqKTsK
KyAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkKENDR3JhcGhpY3NDb250ZXh0
Kik7CiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCosIGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMqKTsKICAgICB2b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxU
aHJlYWQoKTsKICAgICB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzRm9yTWFpblRocmVhZE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwotICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250ZXh0M0QqLCBib29sKiBy
ZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOworICAgIHZvaWQg
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NHcmFwaGlj
c0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0
Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lk
IGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCopOwpAQCAtMTY4LDkgKzE2OCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q0NTY29wZWRU
aHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7CiAKLSAgICAvLyBIb2xkcyBvbiB0byB0aGUg
R3JhcGhpY3NDb250ZXh0M0Qgd2UgbWlnaHQgdXNlIGZvciBjb21wb3NpdGluZyBpbiBiZXR3ZWVu
IGluaXRpYWxpemVDb250ZXh0KCkKKyAgICAvLyBIb2xkcyBvbiB0byB0aGUgY29udGV4dCB3ZSBt
aWdodCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQoKQog
ICAgIC8vIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLgotICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJl
YWQ7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRCZWZvcmVJbml0aWFs
aXphdGlvbk9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBp
cyB3YWl0aW5nIG9uIGEgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSB0byBiZSBpc3N1ZWQuCiAg
ICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fYmVnaW5GcmFtZUNvbXBsZXRpb25FdmVudE9uSW1wbFRo
cmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggZjU4NWQ2ODA0MGZh
YWVlZjMwZDJhNGIzM2Q3NmFlMDEwMWQ5NTJkZC4uZTJiYzYzMjcyYzg5Mzg2YTUyNTc4NjMwNzk0
ZWFiM2NiNGM3MDA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTEy
OCwxMCArMTI4LDEwIEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9y
bWF0KGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6
OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVh
ZCgpKTsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlcik7CisgICAgQ0NM
YXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOwogCiAgICAgLy8gRXhw
bGljaXRseSBsb2NrIGFuZCB1bmxvY2sgdGhlIHByb3ZpZGVyIG11dGV4IHNvIGl0IGNhbiBiZSBo
ZWxkIGZyb20KICAgICAvLyB3aWxsRHJhdyB0byBkaWREcmF3LiBTaW5jZSB0aGUgY29tcG9zaXRv
ciB0aHJlYWQgaXMgaW4gdGhlIG1pZGRsZSBvZgpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQogICAgICAgICBtX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CiB9CiAKLXZvaWQgQ0NWaWRl
b0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5k
ZXJlciogbGF5ZXJSZW5kZXJlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgSW50U2l6ZSBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb21w
dXRlVmlzaWJsZVNpemUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICBy
ZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi1ib29sIEND
VmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJh
bWUmIGZyYW1lLCBHQzNEZW51bSBmb3JtYXQsIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlcikKK2Jvb2wgQ0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFdl
YktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZW5kZXJlciog
bGF5ZXJSZW5kZXJlcikKIHsKICAgICBpZiAoZnJhbWUucGxhbmVzKCkgPiBNYXhQbGFuZXMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCA0
NDYwNmMxM2IyZDcxMDJiOTJiNGUzMWUwZmQzYTkwMmY0NTUxNDUzLi41MDAzZjc0Zjc4M2ZlNWM2
OTNhMjk1Yjc4ZTA2Njc2MGE0MDFkZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5o
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xh
eWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJv
bWl1bSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwg
Q0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNz
aW5nVGlsZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7
CiAKQEAgLTgxLDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRl
VmlzaWJsZVNpemUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiwgdW5zaWduZWQgcGxhbmUp
OwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAiVmlkZW9MYXllciI7IH0KIAotICAgIHZvaWQgd2lsbERyYXdJbnRlcm5h
bChMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKLSAgICBib29sIHJlc2VydmVUZXh0dXJlcyhjb25z
dCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmLCBHQzNEZW51bSBmb3JtYXQsIExheWVyUmVuZGVyZXJD
aHJvbWl1bSopOworICAgIHZvaWQgd2lsbERyYXdJbnRlcm5hbChDQ1JlbmRlcmVyKik7CisgICAg
Ym9vbCByZXNlcnZlVGV4dHVyZXMoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiwgR0MzRGVu
dW0gZm9ybWF0LCBDQ1JlbmRlcmVyKik7CiAKICAgICAvLyBHdWFyZHMgdGhlIGRlc3RydWN0aW9u
IG9mIG1fcHJvdmlkZXIgYW5kIHRoZSBmcmFtZSB0aGF0IGl0IHByb3ZpZGVzCiAgICAgTXV0ZXgg
bV9wcm92aWRlck11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgKaW5kZXggY2NmMzMwM2M3NTczNzlmOGU5OGZmYjc3ODdiYmQ0ODNkMzBhMGZjMi4uZDZl
MDY1ODFkMGYyYjFiNmQ0YTA0YjU4MDg3YWE4ZWQ2YzFiYTljNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoYm9vbCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zv
cm1zRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCkgPSAwOwpAQCAtMTU2LDYgKzE1Nyw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0Nv
bnRleHQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTeW5jWEhSSW5Eb2N1bWVudHNF
bmFibGVkKGJvb2wpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9z
aXRpbmcoKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CmluZGV4IDY1YTJhNjNiMThhMmM4Y2NmZGM1ZmVjMWUxMGYxOWM2MzNhY2E1NTguLmFlMjBhZWE5
YTM1ODNlNjM0MjQ5ZjViYjRkYjQwODgyODRkODI2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC00MSw2ICs0MSw3IEBAIFdlYkxh
eWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKIHsKICAg
ICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9
IGFjY2VsZXJhdGVQYWludGluZzsKKyAgICBzZXR0aW5ncy5mb3JjZVNvZnR3YXJlQ29tcG9zaXRp
bmcgPSBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50
ZXIgPSBzaG93RlBTQ291bnRlcjsKICAgICBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUg
PSBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgPSBz
aG93UGFpbnRSZWN0czsKQEAgLTE2MSw3ICsxNjIsNyBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXc6
OmZpbmlzaEFsbFJlbmRlcmluZygpCiAKIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJMYXllclRy
ZWVWaWV3Ojpjb250ZXh0KCkKIHsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCkt
PmNvbnRleHQoKSk7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFj
dFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0
KCktPmNvbnRleHQzRCgpKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpsb3NlQ29tcG9z
aXRvckNvbnRleHQoaW50IG51bVRpbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDQ1YTk5NjAzY2IxZjViM2ZlNjdj
NjkyOWU4NTg1NDM1N2UzZmYyMjYuLjE3ZDVmZTg2NzVhN2VjYWUyNDIwNjNlMmE3MzAyYTczNjQ3
MjA5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJ
REUgeyBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+bGF5b3V0
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSBPVkVSUklERSB7IG1fY2xp
ZW50LT5hcHBseVNjcm9sbEFuZFNjYWxlKHNjcm9sbERlbHRhLCBwYWdlU2NhbGUpOyB9Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250
ZXh0KCkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBPd25Q
dHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9wdFB0cihtX2NsaWVudC0+
Y3JlYXRlQ29udGV4dDNEKCkpOwogICAgICAgICBpZiAoIXdlYkNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCBjNTFmZmZiZjc5
YWU3MTZiYzdjNjY2Nzc2MWIzMTk2M2ZhNzk0YzQwLi41MzUxMDRiOWQ0NWNjNDhiZmViNDgzZmY0
ZjRiYjhkNjgxY2FhNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdl
YlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICA6
IG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAgLCBtX2ZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhm
YWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9y
bUxheWVyVHJlZShmYWxzZSkKICAgICAsIG1fc2hvd1BhaW50UmVjdHMoZmFsc2UpCkBAIC0zODgs
NiArMzg5LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZUNvbXBvc2l0aW5nTW9k
ZShib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUo
ZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZVNvZnR3YXJlQ29t
cG9zaXRpbmcoYm9vbCBlbmFibGVkKQoreworICAgIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5n
ID0gZW5hYmxlZDsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1vY2tTY3JvbGxiYXJz
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0TW9ja1Njcm9sbGJh
cnNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaAppbmRleCBjMjg5MDg0NDFmMmY1M2YyYmFhNDNhY2U3ZDFkYmNmNzQ5ODE5ODAw
Li43MjkyMDA1Y2M3OWNjYWY1Y2ZiYzA3ODMzMWQwOWNmMWRmOWUzZTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTA5LDYgKzEwOSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhh
dmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9F
bmFibGVkKGJvb2wpOwpAQCAtMTU4LDkgKzE1OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBs
eURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3I7IH0KICAgICBXZWJTaXpl
IGRlZmF1bHRUaWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRpbGVTaXplOyB9CiAg
ICAgV2ViU2l6ZSBtYXhVbnRpbGVkTGF5ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhVbnRp
bGVkTGF5ZXJTaXplOyB9CisgICAgdmlydHVhbCBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOyB9CiAKIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CisgICAgYm9vbCBtX2ZvcmNl
U29mdHdhcmVDb21wb3NpdGluZzsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9v
bCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZGFjZmExNTJl
NTY3YmRjMDFiNTAzMDEwYjZhZDZjMzczOWQxODk4OC4uOGY5NTAyYjQ4YWVmNDVmZGQ5YjljZmNi
MjcwZDQ3YTcxNDMzZTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMzQ0Nyw2ICszNDQ3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBsYXllclRyZWVW
aWV3U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd0ZQU0NvdW50
ZXIoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJl
ZSA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGxhdGZvcm1MYXllclRyZWUoKTsKICAgICAgICAgbGF5
ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2V0dGluZ3NJbXBsKCktPnNob3dQ
YWludFJlY3RzKCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5mb3JjZVNvZnR3YXJl
Q29tcG9zaXRpbmcgPSBzZXR0aW5ncygpLT5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKTsKIAog
ICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGFnZSgpLT5z
ZXR0aW5ncygpLT5wZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgbGF5ZXJUcmVlVmll
d1NldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFydGlh
bFN3YXBFbmFibGVkKCk7CkBAIC0zNDk1LDYgKzM0OTYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKIFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUNvbXBv
c2l0b3JHcmFwaGljc0NvbnRleHQzRCgpCiB7CisgICAgaWYgKHNldHRpbmdzKCktPmZvcmNlU29m
dHdhcmVDb21wb3NpdGluZygpKQorICAgICAgICBDUkFTSCgpOworCiAgICAgLy8gRXhwbGljaXRs
eSBkaXNhYmxlIGFudGlhbGlhc2luZyBmb3IgdGhlIGNvbXBvc2l0b3IuIEFzIG9mIHRoZSB0aW1l
IG9mCiAgICAgLy8gdGhpcyB3cml0aW5nLCB0aGUgb25seSBwbGF0Zm9ybSB0aGF0IHN1cHBvcnRl
ZCBhbnRpYWxpYXNpbmcgZm9yIHRoZQogICAgIC8vIGNvbXBvc2l0b3Igd2FzIE1hYyBPUyBYLCBi
ZWNhdXNlIHRoZSBvbi1zY3JlZW4gT3BlbkdMIGNvbnRleHQgY3JlYXRpb24KQEAgLTM1MTgsNiAr
MzUyMiw5IEBAIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gV2ViVmll
d0ltcGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0NvCiAKIFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqIFdlYlZpZXdJbXBsOjpjcmVhdGVDb250ZXh0M0QoKQogeworICAgIGlmIChzZXR0
aW5ncygpLT5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgQ1JBU0goKTsKKwog
ICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0OwogCiAg
ICAgLy8gSWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGFuIG9uc2NyZWVuIGNvbnRleHQgZm9yIHRo
aXMgdmlldywgcmV0dXJuIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDkxYzJkMWRmZjEyMTI3
OWE3Yzc0NjA3MGM1Y2JkYzIyMjRmMmI2NWEuLmM3ZGYxOTE1Y2NkNzZkZWZiODdkMjkwYWE4YTVi
MjRhYTQ2MmZlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgcHVibGlj
OgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNyZWF0ZUNvbnRleHQoKQorICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0
ZUNvbnRleHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KTsKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUz
RChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJD
b250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QoKSksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogICAgIH0KIAogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBtX2Fsd2F5c0ltcGxUaHJlYWQ7CkBAIC00MTYsNyArNDE2
LDcgQEAgcHVibGljOgogICAgICAgICBtX2RpZERyYXdDYWxsZWQgPSB0cnVlOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKQorICAgIHZp
cnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKQogICAg
IHsKICAgICAgICAgbV93aWxsRHJhd0NhbGxlZCA9IHRydWU7CiAgICAgfQpAQCAtOTg4LDcgKzk4
OCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVu
dGlsRHJhdykKIHsKICAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJlc2hhcGVUcmFja2VyID0g
bmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIG1faG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIFJl
ZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTNEKGNvbnRleHQpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNjQ29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKICAgICBDQ0xheWVySW1wbCogcm9v
dCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKICAgICByb290LT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50KDAsIDApKTsKQEAgLTEwMzEsMTMgKzEwMzIsMTQgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIHsK
ICAgICBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0KiBwYXJ0aWFsU3dhcFRyYWNrZXIgPSBuZXcg
UGFydGlhbFN3YXBUcmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocGFydGlhbFN3YXBUcmFja2VyKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICBSZWZQdHI8Q0NHcmFw
aGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250
ZXh0KTsKIAogICAgIC8vIFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0
SW1wbCwgc28KICAgICAvLyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4K
ICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxl
ZCA9IHRydWU7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJlZUhvc3RJ
bXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKLSAgICBs
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJv
dHRsZWRVcGxvYWRlcik7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNjQ29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgbGF5ZXJUcmVlSG9z
dEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBDQ0xheWVy
SW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKQEAgLTExNTEsNyAr
MTE1Myw3IEBAIHB1YmxpYzoKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZmluaXNo
QWxsUmVuZGVyaW5nQWZ0ZXJDb250ZXh0TG9zdCkKIHsKICAgICAvLyBUaGUgY29udGV4dCBpbml0
aWFsaXphdGlvbiB3aWxsIGZhaWwsIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBjYWxs
IGZpbmlzaEFsbFJlbmRlcmluZygpIHdpdGhvdXQgYW55IGlsbCBlZmZlY3RzLgotICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBtX2hv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
M0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNETWFrZUN1cnJlbnRG
YWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpLCBV
bnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBtX2hvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmco
KTsKIH0KIApAQCAtMTM1Niw3ICsxMzU4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKIAogICAgIC8vIExvc2Ug
dGhlIGNvbnRleHQsIHJlcGxhY2luZyBpdCB3aXRoIGEgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0
M0QsIHRoYXQKICAgICAvLyB3aWxsIHdhcm4gaWYgYW55IHJlc291cmNlIGZyb20gdGhlIHByZXZp
b3VzIGNvbnRleHQgZ2V0cyB1c2VkLgotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQo
KSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKFN0cmljdFdlYkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwog
ICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxs
TGF5ZXJzKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQxM2Q2ZjdkNThjZTlmMWNhMzUzM2RiYWQ4ZDJk
NjU5YjUxZGJjMGUuLmUyNzQyMjQ0OTcyOTJmYjEzNzI3ZDM5MDlmYmU3YzM1MTc2MjQ4MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90ZXN0SG9va3Mt
PmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHNjYWxlKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVS
UklERQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29u
dGV4dDNEKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rlc3RIb29rcy0+Y3Jl
YXRlQ29udGV4dCgpOwogICAgIH0KQEAgLTIxNTQsNyArMjE1NCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCkp
KTsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJl
VHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkp
KTsKIAogICAgICAgICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpIHsKICAgICAg
ICAgY2FzZSAwOgpAQCAtMjE4OCw3ICsyMTg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAg
ewotICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVU
cmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
eHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisgICAgICAgIENv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhU
ZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFw
aGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CiAKICAgICAgICAg
Ly8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXcgc2hvdWxkIGFsd2F5cyBiZSBvbmUu
CiAgICAgICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CkBAIC0y
MjU4LDcgKzIyNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAgewotICAgICAgICBD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29u
dGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRo
VGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tp
bmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQz
RChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CiAKICAgICAgICAgc3dpdGNoIChpbXBs
LT5zb3VyY2VGcmFtZU51bWJlcigpKSB7CiAgICAgICAgIGNhc2UgMDoKQEAgLTIzMjcsNyArMjMy
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsKLSAgICAgICAgQ29tcG9zaXRvckZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2lu
Zyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KGltcGwtPmNvbnRleHQoKSkpOworICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0
b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4
dCgpLT5jb250ZXh0M0QoKSkpOwogCiAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2Vk
IGZvciBkcmF3aW5nIHNob3VsZCB0d28gZXhjZXB0IGZvciBmcmFtZSA0CiAgICAgICAgIC8vIHdo
ZXJlIHRoZSB2aWV3cG9ydCBvbmx5IGNvbnRhaW5zIG9uZSBsYXllci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCmlu
ZGV4IDQ2ZDExYTk2ZTdmOGQ0ODI0OTdkY2Q0OWZlNDQ2MWZiNWFjYWZiY2MuLjcwMTdhMDFmZjY5
YTYyZDMyZmEzMTliOGRhNzQ3YTFhNDU0ODNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewog
fQogCi12b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50UmVjdCYpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKGFsbG9j
YXRvcikKICAgICAgICAgdGV4dHVyZSgpLT5hbGxvY2F0ZShhbGxvY2F0b3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApp
bmRleCA0ZWI4NzViMWVjMzc4OTFjNTg2NzgxMjNhNDFjYzMyMmM1ZGRkOWY0Li45ODI0ZDhjMDY0
ZmQ0MDdhYTI3Y2FlZTM4ZDA3MDkwZTdmYjJkY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApAQCAtMjUsNyArMjUs
NiBAQAogI2lmbmRlZiBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKICNkZWZpbmUgQ0NUaWxlZExh
eWVyVGVzdENvbW1vbl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVGlsZWRMYXllckNo
cm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgog
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlciosIFBhc3NPd25QdHI8V2ViQ29yZTo6TWFuYWdlZFRleHR1cmU+KTsKICAgICAg
ICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciog
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCos
IFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqICwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAogICAgIHByaXZhdGU6CkBAIC0xNTYsNyArMTU2
LDcgQEAgcHVibGljOgogCiBjbGFzcyBGYWtlVGV4dHVyZUNvcGllciA6IHB1YmxpYyBXZWJDb3Jl
OjpUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoV2ViQ29y
ZTo6Q0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGJlZ2luVXBsb2FkcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7IHRl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3Qp
IHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjQyNDg1YjcxOGYw
OGE1NjlmMGYxMjZkNDljZmY2MDBiNWJjZDc1Yi4uYTU2NTE0NmE1ZDQ5MTk2NWI3YjFhZDI1ZDZm
ZTY5YzUxNTE1NDBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKIAogY2xhc3MgTW9ja1RleHR1cmVDb3BpZXIgOiBwdWJsaWMgVGV4dHVyZUNvcGllciB7
CiBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0Q0KGNvcHlUZXh0dXJlLCB2b2lkKEdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJikpOworICAgIE1PQ0tf
TUVUSE9ENChjb3B5VGV4dHVyZSwgdm9pZChDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkLCB1
bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYpKTsKIH07CiAKIGNsYXNzIE1vY2tUZXh0dXJlVXBsb2Fk
ZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgog
ICAgIE1PQ0tfTUVUSE9EMChpc0J1c3ksIGJvb2woKSk7CiAgICAgTU9DS19NRVRIT0QwKGJlZ2lu
VXBsb2Fkcywgdm9pZCgpKTsKICAgICBNT0NLX01FVEhPRDAoZW5kVXBsb2Fkcywgdm9pZCgpKTsK
LSAgICBNT0NLX01FVEhPRDUodXBsb2FkVGV4dHVyZSwgdm9pZChHcmFwaGljc0NvbnRleHQzRCos
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3Qg
SW50UmVjdCwgY29uc3QgSW50UmVjdCkpOworICAgIE1PQ0tfTUVUSE9ENSh1cGxvYWRUZXh0dXJl
LCB2b2lkKENDR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0LCBjb25zdCBJbnRSZWN0KSk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZQpAQCAtMTA1LDcgKzEwNSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAKICAgICAgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52
YXNDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3cpOworICAgICAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjTWFpbkNvbnRleHQgPSBD
Q0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobWFpbkNvbnRleHQpOwogICAgICAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0Nh
bnZhc0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7CisgICAgICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NJbXBsQ29udGV4dCA9
IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChpbXBsQ29udGV4dCk7CiAKICAgICAgICAgTW9j
a0NhbnZhc0NvbnRleHQmIG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0
Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
bWFpbkNvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIGltcGxNb2Nr
ID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQuZ2V0KCkpKTsKQEAg
LTE0MCw3ICsxNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRl
eHR1cmUgYW5kIGRvIHRoZSBjb3B5IChvbiB0aGUgaW1wbCB0aHJlYWQpLgogICAgICAgICAgICAg
ICAgIEVYUEVDVF9DQUxMKGFsbG9jYXRvck1vY2ssIGNyZWF0ZVRleHR1cmUoc2l6ZSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICAgICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KGZyb250VGV4dHVyZUlkKSk7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoY29waWVyTW9j
aywgY29weVRleHR1cmUoaW1wbENvbnRleHQuZ2V0KCksIGJhY2tUZXh0dXJlSWQsIGZyb250VGV4
dHVyZUlkLCBzaXplKSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoY29waWVyTW9jaywg
Y29weVRleHR1cmUoY2NJbXBsQ29udGV4dC5nZXQoKSwgYmFja1RleHR1cmVJZCwgZnJvbnRUZXh0
dXJlSWQsIHNpemUpKTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgZmx1
c2goKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUZWFyZG93biBUZXh0dXJlTWFuYWdlci4KQEAg
LTE2NCw3ICsxNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBPd25QdHI8Q0NMYXllcklt
cGw+IGxheWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBs
LmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShpbXBs
Q29udGV4dC5nZXQoKSwgJmFsbG9jYXRvck1vY2ssICZjb3BpZXJNb2NrLCAmdXBsb2FkZXJNb2Nr
LCAxKTsKKyAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKGNjSW1wbENvbnRleHQuZ2V0KCksICZh
bGxvY2F0b3JNb2NrLCAmY29waWVyTW9jaywgJnVwbG9hZGVyTW9jaywgMSk7CiAgICAgICAgICAg
ICBjYW52YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAg
ICAgaWYgKHRocmVhZGVkICYmICFkZWZlcnJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKaW5kZXggOTkyNTA5
YzRmZGNkOWYzMGEzODJhMTZiNTM3YTBhNWE2NWFkMjJiOC4uNmFiNjE2ZDNjOGE3OTcxMzJlZTRl
ZmNkODcxYjg5NzljMDdiMmY3OSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9u
aWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
IE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgfQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9W
RVJSSURFCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVD
b250ZXh0M0QoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnM7CiAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBo
aWNzQ29udGV4dDNEKGF0dHJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDQzMDRjNmY2YWMx
ZjI1MTU2Yjk3N2FkMWQxZWUxZTg1NmIxNTk3OTIuLmFmZWY1NjdiMjMyY2E5ZjJhZGFhYTU2MDk5
YTUxZjZiY2Q2YTVmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjksNyArNjksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVn
aW5UaW1lKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRyczsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0
M0QoYXR0cnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggNGVkMzU5ODZjYzFlODk1OTJiMmNh
ZWMyMjE0MTZiMmZlZWQ0OWZjNy4uMzE0ODJlZDk5NzE4MDZlZmZkMGFhODhlODdmOWM1OWYwMzlk
MTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgcHJpdmF0ZToK
ICAgICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTSog
bV9tZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrOwogfTsKIAotY2xhc3MgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bUNsaWVudCA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQgeworY2xhc3MgRmFrZUNDUmVuZGVyZXJDbGllbnQgOiBwdWJsaWMgQ0NSZW5kZXJlckNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCgpCisgICAg
RmFrZUNDUmVuZGVyZXJDbGllbnQoKQogICAgICAgICA6IG1fc2V0RnVsbFJvb3RMYXllckRhbWFn
ZUNvdW50KDApCiAgICAgICAgICwgbV9yb290TGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSgxKSkK
ICAgICB7CiAgICAgICAgIG1fcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAg
fQogCi0gICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1ldGhvZHMuCisgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2
aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgSW50U2l6ZSBmYWtlU2l6
ZTsgcmV0dXJuIGZha2VTaXplOyB9CiAgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0
aW5ncygpIGNvbnN0IE9WRVJSSURFIHsgc3RhdGljIENDU2V0dGluZ3MgZmFrZVNldHRpbmdzOyBy
ZXR1cm4gZmFrZVNldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkg
T1ZFUlJJREUgeyB9CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKIHB1Ymxp
YzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNs
aWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExh
eWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIp
IHsgfQorICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xp
ZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExheWVyUmVuZGVy
ZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQogCiAg
ICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsK
ICAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0JiBtX21vY2tD
b250ZXh0OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgbV9tb2NrQ2xpZW50
OworICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOwogfTsKIApAQCAtMjcwLDcg
KzI3MCw3IEBAIHB1YmxpYzoKIC8vIFRoaXMgdGVzdCBpc24ndCB1c2luZyB0aGUgc2FtZSBmaXh0
dXJlIGFzIExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIGFuZCB5b3UgY2FuJ3QgbWl4IFRFU1Qo
KSBhbmQgVEVTVF9GKCkgd2l0aCB0aGUgc2FtZSBuYW1lLCBoZW5jZSBMUkMyLgogVEVTVChMYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9u
b3VzQ2FsbHMpCiB7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBtb2NrQ2xp
ZW50OworICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
YWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwpAQCAtMzExLDcgKzMxMSw3IEBAIHBy
aXZhdGU6CiAKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9u
V2l0aFF1aWNrbHlMb3N0Q29udGV4dERvZXNOb3RBc3NlcnQpCiB7Ci0gICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCBtb2NrQ2xpZW50OworICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50
IG1vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVy
Q2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0T25GaXJz
dEdldENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3cpKTsKIAogICAgIGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCmluZGV4
IDE3MTczYzBhNWIzN2QxYjhlYjA4ZDZjYjE4MmFkMWQwNzRlNTQ4NmUuLmQ3MWI4Y2U0NWEzZWEz
MDMyNDQyZjg2NDg5NWQ0NTMwZGU2YTdkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCkBAIC01NCw2ICs1NCw3IEBAIFRFU1Qo
VGV4dHVyZUNvcGllclRlc3QsIHRlc3REcmF3QXJyYXlzQ29weSkKICAgICBHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRyczsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZy
b21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKICAgICBNb2NrQ29udGV4dCYgbW9ja0Nv
bnRleHQgPSAqc3RhdGljX2Nhc3Q8TW9ja0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CisgICAgUmVm
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoY29udGV4dCk7CiAKICAgICB7CiAgICAgICAgIEluU2VxdWVuY2Ugc2VxdWVuY2U7CkBA
IC03OSw3ICs4MCw3IEBAIFRFU1QoVGV4dHVyZUNvcGllclRlc3QsIHRlc3REcmF3QXJyYXlzQ29w
eSkKICAgICBpbnQgZGVzdFRleHR1cmVJZCA9IDI7CiAgICAgSW50U2l6ZSBzaXplKDI1NiwgMTI4
KTsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBjb3BpZXIoQWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUoY29udGV4dCkpOwotICAgIGNvcGllci0+Y29weVRleHR1
cmUoY29udGV4dC5nZXQoKSwgc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKTsK
KyAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgc291cmNlVGV4dHVyZUlk
LCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CmluZGV4IDgwYjA5OWYxOWZiZjM1M2YyYTUyNjA3MmE2ZjE2NGJkNjYzNTI1OTQuLmYwYzEzMTNm
OTBlZTc1MmQ0YzIyMTc4YWQzOTQ0NzhiMjU3NjE2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjcz
LDEyICs2NzMsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJv
bVByZXBhcmUpCiAgICAgRmFrZVRleHR1cmVDb3BpZXIgZmFrZUNvcGllcjsKICAgICBGYWtlVGV4
dHVyZVVwbG9hZGVyIGZha2VVcGxvYWRlcjsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQgPSBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpOworICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQpOwogCiAgICAg
Ly8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVu
IHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
ICAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKLSAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRv
ciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIHVwZGF0ZXIudXBkYXRl
KGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9h
ZGVyLCAxMDAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpA
QCAtNjkxLDcgKzY5Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0
ZUZyb21QcmVwYXJlKQogICAgIC8vIEludm9rZSB1cGRhdGVMYXllclJlY3QgYWdhaW4uIEFzIHRo
ZSBsYXllciBpcyB2YWxpZCB1cGRhdGVMYXllclJlY3Qgc2hvdWxkbid0IGJlIGludm9rZWQgb24K
ICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KICAgICBsYXllci0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICB1cGRhdGVyLnVw
ZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBs
b2FkZXIsIDEwMDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VB
bGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKICAgICBFWFBFQ1Rf
RVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsK
IAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwpAQCAt
Njk5LDEyICs3MDAsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRl
RnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJl
Y3RUb0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsK
ICAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKLSAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRv
ciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIHVwZGF0ZXIudXBkYXRl
KGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9h
ZGVyLCAxMDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVDb3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIHN0aWxs
IGJlIGludmFsaWQgYXMgdXBkYXRlTGF5ZXJSZWN0IGludm9rZWQgaW52YWxpZGF0ZS4KICAgICBs
YXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKLSAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZh
a2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29u
dGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAx
MDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVDb3VudCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145426</attachid>
            <date>2012-06-01 21:39:07 -0700</date>
            <delta_ts>2012-06-01 23:07:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87920-20120601213906.patch</filename>
            <type>text/plain</type>
            <size>126333</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwYTYyNWYwNDY2ZWQ4
NjhiZWUzOTUzZmNlM2JjY2MwMTk2OTk1YTZmLi43OTZmNWJkMDcwZmJhYTY5MmM2ZGRmNzYwNGEx
MjFkY2UzNDg5MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0zMCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgQWRkIGEgbmV3IHNl
dHRpbmcgdG8gZm9yY2Ugc29mdHdhcmUgY29tcG9zaXRpbmcuICBJbiB0aGlzIG1vZGUsCisgICAg
ICAgIG5vIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBldmVyIGJlIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoU2V0dGlu
Z3MpOgorCiAyMDEyLTA2LTAxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIENhbGwgY2xpcGJvYXJkIG1ldGhvZHMgZGlyZWN0bHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAyZTNjODE1NWRmNWQ3NmFmOTYzNjAxM2I4ODQyOTk5MWNkOWUwMWZkLi4zNzAw
ZjhjZjQ2NjkzMzI2ZTU4ZDVjYjAyNzFhOGVmZTQ5NTQ0ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUzIEBACisyMDEyLTA1LTMwICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbY2hyb21pdW1dIFNvZnR3YXJlIGNvbXBvc2l0b3IgaW5pdGlhbGl6YXRp
b24gYW5kIGJhc2UgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4K
KworICAgICAgICBUaGlzIGludHJvZHVjZXMgbmV3IHdyYXBwZXIgY2xhc3MgQ0NHcmFwaGljc0Nv
bnRleHQgYW5kIGJhc2UgY2xhc3MKKyAgICAgICAgQ0NSZW5kZXJlciB3aGljaCB3aWxsIGJlIHVz
ZWQgZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nIHN1cHBvcnQuCisgICAgICAgIElmIG5vIEdyYXBo
aWNzQ29udGV4dDNEIGlzIGF2YWlsYWJsZSwgZWFybHkgcmV0dXJuIGZvciBub3cuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoTm8tb3AgY2hhbmdlIGluIDNkIG1vZGUuKQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6Cisg
ICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoVGV4dHVyZSk6CisgICAgICAgIChCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAo
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
VGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlcmVyOjp0b0dMTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJlcjo6Q0NSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyZXI6On5DQ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
ZXI6OmNjQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJlcjo6dmlld3BvcnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlcmVyOjp2aWV3cG9ydEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
Ojpwcm9qZWN0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyZXI6OndpbmRv
d01hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzaGFyZWRHZW9tZXRyeVF1
YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhT
dWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2Fk
V2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChM
YXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoK
KyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2Fk
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6
CisgICAgICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NHcmFwaGljc0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJpbmRD
b250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyUmVuZGVyZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAg
ICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xl
VGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wNi0wMSAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjExOTI4MywgcjExOTI4NywgYW5kIHIxMTkyOTEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDAyYjNmOWFjNDNlYWExMDZhMTM2ODBmMTA4MzgyNTNhZDFlYzk1OGQuLjI0NzIy
OTI1MTM0OGU4ZTE4MWEzMmVmM2QzN2ExNzhmZGQ1NzZiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMDUtMzAgIEFsZXhhbmRyZSBFbGlhcyAgPGFl
bGlhc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gU29mdHdhcmUgY29tcG9zaXRv
ciBpbml0aWFsaXphdGlvbiBhbmQgYmFzZSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzkyMAorCisgICAgICAgIFJldmlld2VkIGJ5IEph
bWVzIFJvYmluc29uLgorCisgICAgICAgIEFkZCBhIG5ldyBzZXR0aW5nIHRvIGZvcmNlIHNvZnR3
YXJlIGNvbXBvc2l0aW5nLiAgSW4gdGhpcyBtb2RlLAorICAgICAgICBubyBHcmFwaGljc0NvbnRl
eHQzRCBzaG91bGQgZXZlciBiZSBjcmVhdGVkLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRp
bmdzLmg6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OmNvbnRleHQpOgorICAgICAgICAqIHNy
Yy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZVNvZnR3YXJlQ29t
cG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJ
bXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nc0ltcGw6OmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpj
cmVhdGVDb21wb3NpdG9yR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6Y3JlYXRlQ29udGV4dDNEKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NMYXllclRyZWVIb3N0SW1w
bFRlc3Q6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OmRyYXdMYXll
cnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0Nv
bW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAg
ICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6
OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0
Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFr
ZVRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtl
VGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVI
b3N0Q2xpZW50Lmg6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChX
VEY6OlRFU1QpOgorCiAyMDEyLTA2LTAxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE5MjgzLCBy
MTE5Mjg3LCBhbmQgcjExOTI5MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMmIwZjMwYWRlYjVlYTFhYzE4YjlhYjBkMmEy
NTIzZTdjNWZmZGExNy4uMjNkMGQ2M2NlOWRkMjhhNWI1YmFkNzEyOGVhYTE0OWE5NzNiOWRlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBTZXR0aW5ncyB7CiAg
ICAgICAgIFNldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNl
KQorICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCiAgICAgICAg
ICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1M
YXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNlKQpAQCAt
NjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGFjY2VsZXJh
dGVQYWludGluZzsKKyAgICAgICAgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAg
ICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlOwogICAgICAgICBib29sIHNob3dQYWludFJlY3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBmNTVjMDYyMTZhZGUxMmQw
ODFhNDU5ODIxOGM5MTJiMzVjNWQyZjZhLi44MjQ1YWE5ZTY4ODQ4NjBiNmQyYjFmZTlmNDA0Y2Q1
Yjc0ZDJlMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogfQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dAogICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2FudmFzUGFp
bnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSwgcmVzdWx0aW5n
T3BhcXVlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
CiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZhcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCAwNGNjNDFhMjQ2MjVhNzA4MzExZWFiN2M0ZWI5NGUzMTE4OTBlNTFiLi42ZmY3YzYzOTZhYzA2
OGZmZWY0ZjU4YTcxZjhhMTQ5ZjExOTdjYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0
ZXI7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2Vy
Kik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQg
Ym9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFx
dWVSZWN0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJl
Y3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmlu
ZGV4IGU5YzI2MTliMDY0YzBlODRiNTUyZDM4YmU0Y2U2NTA1NmMwYzE1MWUuLmI3NTkyNTJlMWY3
YWIyYWJkYzZhYWFhY2Q5MDlkYTg3OWY0N2VmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cGFpbnRDb250ZW50c1JlY3QoJmNhbnZhcywgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3Zv
aWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBk
YXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICB0ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiBjYW52YQogICAgIGRyYXdQaWN0
dXJlKGNhbnZhcyk7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEdD
M0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBp
eGVscykKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBk
YXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdDM0RlbnVtIGZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKIHsKICAg
ICBtX3RleFN1YkltYWdlLnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZGVzdFJl
Y3QsIGZvcm1hdCwgY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYmIxNDMxMDA0M2Fk
ZGVhNThlMjZmMTE0MzNiZDlhNTVjMzVhYWNhYy4uNTA5N2NlMGIyZjAwNzNlMzcyMzc1NDMxMTM3
YTUwZTY1ZmY0NmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVy
OyB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CiAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUsIEludFJlY3QmIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQgcGFpbnRDb250ZW50
c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKKyAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgR0MzRGVudW0gZm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIAogcHJpdmF0ZToK
ICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0ZmI0YjhkMDE3NGU0MjA1ZjQ3
MTMyNmEyZTg4ZmVjMzZkYWRhNDQ4Li5hYmE5Y2E0Nzk5YWY5NzlmMTNkZTFkZjdkN2I1NmEzMzlj
ZjUxNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0z
Myw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFBsYXRmb3JtQ29udGV4
dFNraWE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBjYTM1NGQ3NGEwZWFk
YzFmNzFjMGIzNTI0ZGNmNzdhYzkxNjg3ODUuLmRhYzAzNTU1Mjk4MjUyNmM0OTBkMWNjN2RkMTJm
OTQ1MGVjZWJiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1
cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQpAQCAtOTYsMTUgKzk2LDIxIEBAIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
Cit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBk
YXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogeworICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQz
ZCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUg
Y29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBNYWtlIHN1cmUg
Z2FuZXNoIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KLSAgICBjb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBjb250ZXh0M2QtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IC8vIE5vdGlmeSBnYW5lc2ggdG8gc3luYyBpdHMgaW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29u
dGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOworICAgIGNvbnRleHQzZC0+Z3JDb250
ZXh0KCktPnJlc2V0Q29udGV4dCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNh
bnZhcyB0byBkcmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNj
ZWxlcmF0ZWRDYW52YXMoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKKyAgICBPd25QdHI8
U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQzZCwgYWxs
b2NhdG9yLCB0ZXh0dXJlKTsKIAogICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhlIHRl
eHR1cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0IGNhbiBmbGlwCiAgICAgLy8gdGhlIGZpbmFs
IGNvbXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdl
CkBAIC0xMjAsNyArMTI2LDcgQEAgdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ28KICAgICBkcmF3UGlj
dHVyZShjYW52YXMuZ2V0KCkpOwogCiAgICAgLy8gRmx1c2ggZ2FuZXNoIGNvbnRleHQgc28gdGhh
dCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCi0gICAgY29u
dGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CisgICAgY29udGV4dDNkLT5nckNvbnRleHQoKS0+
Zmx1c2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCA1MDM5YmE5MDJjMWU1ZDFmZWZiYmI1MTNmYzg1Mzg2MjY1ZGEwMzcwLi5lYzRk
MDg4ZjIzODliNTI2MjQ3Yzg4MjVjMmFmY2Q2NWRiNTY4MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0
dXJlVXBkYXRlcjsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0
dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhl
bEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQ0YTQz
MDEyZDQ1NmI5MTAwMGRhZjcyZTIxYzViZGVhZGI1MzViYzUuLjBlY2VlYzYyNjYwZjg4M2EyMzli
OGQyNjgyNWJkYjhhYzAzODM3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApA
QCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICAgICAg
ewogICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4
dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAg
fQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3Vi
SW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewogICAgICAgICB0ZXh0dXJlLT5iaW5k
VGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYTkz
ZDE3NjBmY2FkMDBlMjEyNzBkNTA2MWEwMjQ3ZTJmNjIxYmRjZC4uZTgwMmMzNjhjYzFlZjg4NmRi
ZmZlY2JkMmM4OGMzYTFiZTBkMzExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNjIsNyArNjIs
NiBAQCBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBH
cmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07CiAKIC8vIEJh
c2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBk
ZXJpdmVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGFj
YWNjMzUzYmEzZmU3MzMyOGExMjNmYmY4MmVjZWEwYzkxOWY5OTAuLjRkOTBjZTU2ODk0Mjc1ZmNi
OGUzMGMyODhkNTJkZmFjODA2YjQ3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNC
dXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0
UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOyB9CiAKIHByb3RlY3RlZDoKICAgICBVbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcigpIHsgfQpAQCAtMjE3LDcgKzIxNyw3IEBAIHByaXZhdGU6CiB9OwogCiAKLVBhc3NPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShM
YXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNl
dHRpbmcpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9h
ZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJl
bmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0
LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5p
dGlhbGl6ZSgpKQpAQCAtMjI2LDI1ICsyMjYsMjYgQEAgUGFzc093blB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHIK
ICAgICByZXR1cm4gbGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CiB9CiAKLUxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVu
dCogY2xpZW50LAorTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0o
Q0NSZW5kZXJlckNsaWVudCogY2xpZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRl
ck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQotICAgIDogbV9jbGllbnQoY2xpZW50KQor
ICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDAp
CiAgICAgLCBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSgwKQogICAgICwgbV9vZmZzY3JlZW5GcmFt
ZWJ1ZmZlcklkKDApCisgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAuNWYs
IC0wLjVmLCAxLjBmLCAxLjBmKSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQotICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRS
ZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBtX2lzVmlld3BvcnRDaGFuZ2Vk
KGZhbHNlKQogICAgICwgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKGZhbHNlKQogICAgICwgbV90
ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CisgICAgQVNT
RVJUKG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIGNsYXNzIENvbnRleHRMb3N0Q2FsbGJhY2tBZGFw
dGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcj4g
Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50KQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUoQ0NSZW5kZXJlckNs
aWVudCogY2xpZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0
TG9zdENhbGxiYWNrQWRhcHRlcihjbGllbnQpKTsKICAgICB9CkBAIC0yNTUsMTAgKzI1NiwxMCBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRleHRMb3N0Q2Fs
bGJhY2tBZGFwdGVyKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50KQorICAgIGV4
cGxpY2l0IENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKENDUmVuZGVyZXJDbGllbnQqIGNsaWVu
dCkKICAgICAgICAgOiBtX2NsaWVudChjbGllbnQpIHsgfQogCi0gICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBDQ1JlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsK
IH07CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKQEAgLTEwNzcs
NyArMTA3OCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5UGxhbmVUb1RleHR1
cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkLCBjb25zCiB7CiAgICAgQ0NWaWRlb0xheWVy
SW1wbDo6VGV4dHVyZSYgdGV4dHVyZSA9IHF1YWQtPnRleHR1cmVzKClbaW5kZXhdOwogICAgIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciA9IHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9y
KCk7Ci0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQoKSwgYWxsb2Nh
dG9yKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAgIHRleHR1cmUubV90ZXh0dXJlLT5i
aW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIGFsbG9jYXRvcik7CiAgICAgR0MzRGVudW0gZm9y
bWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1hdCgpOwogICAgIEludFNpemUgZGltZW5zaW9u
cyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7CiAKQEAgLTEyMTcsNyArMTIxOSw4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3BsYXkoTWFuYWdlZFRleHR1
cmUqIGh1ZFRleHR1cmUsIGNvbnN0CiAgICAgY29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBw
cm9ncmFtID0gaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYg
cHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIGh1ZFRleHR1
cmUtPmJpbmRUZXh0dXJlKG1fY29udGV4dC5nZXQoKSwgcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxv
Y2F0b3IoKSk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKKyAgICBodWRUZXh0dXJlLT5iaW5k
VGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9n
cmFtKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFt
LT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTE0NDIsNyAr
MTQ0NSw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1
cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0CiAgICAgaWYgKCF0ZXh0dXJlLT5yZXNl
cnZlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUobV9jb250ZXh0LmdldCgp
LCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCht
X2NvbnRleHQpOworICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgdGV4dHVyZS0+Zm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lk
dGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ4
NCw3ICsxNDg4LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY28KIHsKICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCi0gICAgdGV4dHVyZS0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yLmdldCgpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9
IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOworICAgIHRleHR1cmUtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZUFsbG9jYXRvci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1f
Y29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAwZjk2NWE4YjRmYWQ1M2NlYTFlZmQw
OTgzZWU5NWJmOTc3NjcyM2E2Li4yZWZiZGIyNjBiYzM3NWZhNjNlM2MwODQ5YjM4YjY2YTVkOWI5
NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMzQsMTcgKzM0LDEx
IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJGbG9h
dFF1YWQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5o
IgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNyArNDYsNiBAQCBjbGFzcyBDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkOwogY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOwogY2xhc3MgQ0NEcmF3UXVh
ZDsKIGNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFz
cyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwog
Y2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CkBAIC02NCw3NCArNTcsNTcgQEAgY2xhc3MgTGF5ZXJS
ZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyOwogY2xhc3Mg
TGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiBjbGFzcyBT
Y29wZWRFbnN1cmVGcmFtZWJ1ZmZlckFsbG9jYXRpb247CiAKLWNsYXNzIExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZp
Y2VWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpID0gMDsK
LX07Ci0KIGVudW0gVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVkVXBsb2FkZXIsIFVu
dGhyb3R0bGVkVXBsb2FkZXIgfTsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2Yg
Y29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgotY2xhc3MgTGF5ZXJSZW5kZXJlckNo
cm9taXVtIHsKK2NsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBDQ1JlbmRlcmVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRl
KExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGllbnQqLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKIAotICAgIH5MYXllclJl
bmRlcmVyQ2hyb21pdW0oKTsKKyAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsK
IAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQtPnNldHRpbmdzKCk7IH0KLSAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBj
YXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQorICAgIHZpcnR1
YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KIAogICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KCk7Ci0gICAgYm9vbCBjb250ZXh0U3VwcG9ydHNNYXBTdWIoKSBjb25zdCB7
IHJldHVybiBtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YjsgfQogCi0gICAgdm9pZCB2aWV3cG9y
dENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRDaGFuZ2VkKCkgT1ZFUlJJREU7
CisKKyAgICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdlb21ldHJ5UXVhZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAKLSAgICB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1l
KENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmZhY2UpOwotICAgIHZvaWQgZHJhd1Jl
bmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKik7Ci0gICAgdm9pZCBmaW5pc2hEcmF3aW5nRnJh
bWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNl
KiBkZWZhdWx0UmVuZGVyU3VyZmFjZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsKIAotICAgIHZvaWQgZHJhd0hlYWRzVXBE
aXNwbGF5KE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSk7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFNp
emUmIGh1ZFNpemUpIE9WRVJSSURFOwogCiAgICAgLy8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBm
aW5pc2gKLSAgICB2b2lkIGZpbmlzaCgpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKSBPVkVS
UklERTsKIAotICAgIHZvaWQgZG9Ob09wKCk7CisgICAgdmlydHVhbCB2b2lkIGRvTm9PcCgpIE9W
RVJSSURFOwogICAgIC8vIHB1dHMgYmFja2J1ZmZlciBvbnNjcmVlbgotICAgIGJvb2wgc3dhcEJ1
ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVyKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3dhcEJ1
ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVyKSBPVkVSUklERTsKIAogICAgIHN0YXRpYyB2
b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwg
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCi0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
amVjdGlvbk1hdHJpeDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9Ci0KICAg
ICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4g
bV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQotICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2Vv
bWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0KIAogCi0g
ICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBj
b25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgYm9vbCBnZXRGcmFtZWJ1ZmZlclRleHR1cmUo
TWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KTsKIAotICAgIFRleHR1
cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQotICAgIFRleHR1cmVDb3BpZXIq
IHRleHR1cmVDb3BpZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0K
LSAgICBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZVVwbG9hZGVyLmdldCgpOyB9Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3Vy
ZmFjZVRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yLmdldCgpOyB9Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3Iu
Z2V0KCk7IH0KLQotICAgIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0
KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRl
eHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV90ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3Iq
IHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQorICAgIHZpcnR1YWwgVGV4
dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KIAotICAgIGJvb2wg
aXNDb250ZXh0TG9zdCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0
IEludFJlY3QmKSBPVkVSUklERTsKIAotICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9zdCgpIE9WRVJSSURFOwogCi0gICAgR0MzRGVudW0gYmVz
dFRleHR1cmVGb3JtYXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSBPVkVS
UklERTsKIAotICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0
cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKQEAgLTE0
MywxMyArMTE5LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7
CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Zy
YW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJS
ZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRl
eHR1cmVVcGxvYWRlck9wdGlvbik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVy
ZXJDbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVwbG9hZGVy
T3B0aW9uKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2NsaWVudC0+ZGV2aWNlVmlld3BvcnRT
aXplKCk7IH0KLSAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJuIHZpZXdwb3J0U2l6ZSgp
LndpZHRoKCk7IH0KLSAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJldHVybiB2aWV3cG9ydFNp
emUoKS5oZWlnaHQoKTsgfQorICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKICAgICB2b2lkIGRyYXdRdWFk
KGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsK
ICAgICB2b2lkIGRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQqKTsKQEAgLTE5MSwxOCArMTY1LDE0IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExh
eWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOwogICAgIHZvaWQg
b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CiAKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQqIG1fY2xpZW50OwotCiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBtX2NhcGFiaWxp
dGllczsKIAotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9u
TWF0cml4OwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRy
aXg7Ci0KICAgICBDQ1JlbmRlclN1cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZhY2U7CiAgICAg
TWFuYWdlZFRleHR1cmUqIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZDsKIAogICAgIE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1f
c2hhcmVkR2VvbWV0cnk7CisgICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlRdWFkOwogCiAg
ICAgLy8gVGhpcyBibG9jayBvZiBiaW5kaW5ncyBkZWZpbmVzIGFsbCBvZiB0aGUgcHJvZ3JhbXMg
dXNlZCBieSB0aGUgY29tcG9zaXRvciBpdHNlbGYuCiAKQEAgLTI5Nyw4ICsyNjcsNiBAQCBwcml2
YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlOwogCi0g
ICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlRdWFkOwotCiAgICAgYm9vbCBtX2lzVmlld3Bv
cnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOwogICAgIFRleHR1
cmVVcGxvYWRlck9wdGlvbiBtX3RleHR1cmVVcGxvYWRlclNldHRpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggOGZlYTM4YTY5MGM5NWNlN2EzOTg3NmI3MGMzYmQw
ZTY5N2IyZWI4Ni4uNWQ5MTJlYWVjNjllNjQ0MzM4OTFjNDI1ODQyOWUyYTUwMWMzMDE1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2lu
Y2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RD
aHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdl
OjpzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50U2l6ZSYgc3ViSW1hZ2VTaXplKQogCiB2b2lkIExh
eWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IElu
dFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVt
IGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFw
VGV4U3ViSW1hZ2UpCiAgICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1h
Z2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTY1LDcg
KzY1LDcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3Qq
IGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QKIAogdm9pZCBMYXllclRleHR1cmVTdWJJ
bWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJ
bnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1
cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlIiwgdGhpcywgMCk7CiAgICAgaWYgKCFt
X3N1YkltYWdlKQpAQCAtODcsMTkgKzg3LDMxIEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6
OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAK
ICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsKICAgICB9Ci0gICAgY29udGV4
dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgp
LCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSk7
CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNE
KCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGNvbnRleHQzZC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRl
c3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCBwaXhlbFNvdXJjZSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdp
dGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJl
U3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMsIDApOworICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAo
IWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Ig
c29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBP
ZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNl
dChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VS
ZWN0LnkoKSk7CiAKICAgICAvLyBVcGxvYWQgdGlsZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2Zl
ciBidWZmZXIKLSAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAg
ICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lv
bnMzRENocm9taXVtKj4oY29udGV4dDNkLT5nZXRFeHRlbnNpb25zKCkpOwogICAgIHVpbnQ4X3Qq
IHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0
LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwg
Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hy
b21pdW06OldSSVRFX09OTFkpKTsKIAogICAgIGlmICghcGl4ZWxEZXN0KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVT
dWJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaAppbmRleCBkOWYwODM3MTllMDFkYjA2Yzg4OTNlYjg4NWVmMzcz
MjM1MjdiYzA4Li40ZjFjNDE1MjE0ZDIzMjlhYjZlNzJjZGUxYjFmMmZlMjJmMjhhMjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVTdWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKK2NsYXNzIENDR3JhcGhp
Y3NDb250ZXh0OwogCiBjbGFzcyBMYXllclRleHR1cmVTdWJJbWFnZSB7CiBwdWJsaWM6CkBAIC00
NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViSW1hZ2VTaXplKGNvbnN0IElu
dFNpemUmKTsKICAgICB2b2lkIHVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50
UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRo
VGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCopOwog
ICAgIHZvaWQgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBj
b25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGlj
c0NvbnRleHQzRCopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVt
IGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsKIAogICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJ
bWFnZTsKICAgICBJbnRTaXplIG1fc3ViSW1hZ2VTaXplOwpAQCAtNjQsNCArNjQsMyBAQCBwcml2
YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICNlbmRpZiAvLyBMYXllclRleHR1cmVTdWJJbWFnZV9oCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA1ZGI3YjRjNTEyZTU2YWE0NjdiYTU2M2Y4NDM3ZWIy
ZjQwOWQ3Y2YwLi42MWU0MjU5ZTZjYzc5N2Q4MTY5MmUwNjA5NDYyZmYzZWYxNGY2NmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1
ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5j
bHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xh
c3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNl
UmVjdCAqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAK
aW5kZXggOWJjNzAwZGM5MGY2ZWI2MThkMTIyNGU1NGEyMWY5MDBjMWNjYTI1YS4uOGYwM2UwZDll
NjNhYjg1NmNhOTg4NWFkNjc5MDczZDY4MTZlMzM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDE2ICsxMTgsMjYgQEAgdm9pZCBN
YW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAg
ICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxv
Y2F0b3IsIG1fdG9rZW4pOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQor
dm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBhbGxvY2F0ZShhbGxvY2F0
b3IpOwotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmVJZCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNv
bnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1
cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZl
clRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQogewogICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmVJZCwgMCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9
IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0M2QtPmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQs
IDApOwogfQogCiBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2VkVGV4dHVyZTo6c3Rl
YWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggZWQ0ZDQ1MGU5NjljZTBhYjU0N2E5YWM1MTM4
ZDRjMDkzZDgzOWQ2Mi4uOGE2NTY2YzMxZjgyOThjZWFkMWZiNGQzNGZiZDU5Mjc0Y2YwNjdiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4
dDsKIAogY2xhc3MgTWFuYWdlZFRleHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1h
bmFnZWRUZXh0dXJlKTsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHZv
aWQgYWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgYmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZl
clRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2
b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJl
QWxsb2NhdG9yKik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KICAgICB1bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVy
U3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKaW5kZXggODBhOGEwM2ViYTYwNmE0MjUz
YmNhZTc0ODgyMjE0NTQwMmM4NTQxMi4uN2FiOWJhMDA4NmUxZDIwMzJjODMxOGJkOTYwMDAwMDA4
NGI0YmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCkBAIC0zMCw3
ICszMCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAKICNpbmNsdWRl
ICJGaWx0ZXJPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApp
bmRleCBhNTkxYTMyYTExMzY4MTg4MzdlMzg0ZjRmNTQyYWYyMzZiY2JiMWI3Li5iZDhjMzNhOWEy
NTBhMDUyYTZlZDYwY2RjYzhkOTcwMTI5NmMwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApA
QCAtNjEsMTAgKzYxLDE2IEBAIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcigpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRl
RnJhbWVidWZmZXIobV9mYm8pKTsKIH0KIAotdm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6
OmNvcHlUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBzb3VyY2VU
ZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUpCit2
b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUoQ0NHcmFwaGljc0NvbnRl
eHQqIGNjQ29udGV4dCwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4
dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFRSQUNFX0VWRU5UKCJUZXh0dXJl
Q29waWVyOjpjb3B5VGV4dHVyZSIsIHRoaXMsIDApOwogCisgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dCkgewor
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBOb3RlOiB0aGlzIGNvZGUg
ZG9lcyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUs
IGZyYW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQgZW5hYmxlLgogICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2ZibykpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9B
VFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQs
IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRleCA3M2JlNWVjYWQxNmY4ODU1MjUxMTgxZDY1MmI0
ZGY4YzM4NGI4YjA1Li4zYWMyZDExOTE0ZmZhMTVmOGRlYzJjYWIzZGY1Y2QyODBhM2E2ZjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUNvcGllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgIlNoYWRl
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICAvLyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3Vy
Y2VUZXh0dXJlSWR8IHRvIHxkZXN0VGV4dHVyZUlkfC4gQm90aCB0ZXh0dXJlIG9iamVjdHMKICAg
ICAvLyBtdXN0IGJlIGNvbXBsZXRlIGFuZCBoYXZlIGEgYmFzZSBsZXZlbCBvZiB8c2l6ZXwgZGlt
ZW5zaW9ucy4gVGhlIGNvbG9yIGZvcm1hdHMgZG8gbm90IG5lZWQKICAgICAvLyB0byBtYXRjaCwg
YnV0IHxkZXN0VGV4dHVyZUlkfCBtdXN0IGhhdmUgYSByZW5kZXJhYmxlIGZvcm1hdC4KLSAgICB2
aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBzb3Vy
Y2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWdu
ZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
JikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGV4dHVyZUNvcGllcigpIHsgfQpA
QCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVy
ZUlkLCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKENDR3Jh
cGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4
dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nl
bGVyYXRlZFRleHR1cmVDb3BpZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlVXBsb2FkZXIuaAppbmRleCBlM2I0NGZkNmIxN2YzZjJmOTQxYTg2ZjJmMmI3NDBmMjY0
NTExNDlhLi4wZWFlMmU2NWRkMDI0NjRjZDIwZmJmMzhmZGJiNzhlY2NkZGM4OTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBs
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlVXBsb2FkZXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzQnVzeSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGxv
YWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QgZGVzdFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dy
YXBoaWNzQ29udGV4dCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0
KSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNw
cAppbmRleCA1MTgxM2M1Y2I1NTYxZjkwNTdjMTI5MmM4YTVkM2FhZWMyYzFlMjJmLi5mNWNmMmE0
ZTEzOTc3YmQ4YTk4MzE1MTQ5MDVkMzEwM2IzMjFkMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90
dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2FkcygpCiAgICAgbV9wZW5kaW5nUXVlcmllcy5hcHBl
bmQobV9hdmFpbGFibGVRdWVyaWVzLnRha2VGaXJzdCgpKTsKIH0KIAotdm9pZCBUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RS
ZWN0KQordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQogewogICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29u
dGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlci5oCmluZGV4IGE3MjA1ODY0OWFhMTFlYjZlNzVjYWU4OTlh
ZmFkYzk3MmJiNzJjMmQuLmRlYTNkMzU0YzViMWU1ZTMwMGZkMDgyMmFlZDcxZmVhZWVhOGExODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRV
cGxvYWRzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRl
eHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUXVlcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250
ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzk1ZjE4YzM0OTFiNGM0ZGQ2MTE0MzkxNDE1ODc5OThlMjg4NzQ2
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ0NHcmFwaGljc0NvbnRleHRfaAorI2RlZmluZSBDQ0dyYXBoaWNzQ29udGV4dF9oCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisK
K2NsYXNzIENDR3JhcGhpY3NDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q0NHcmFwaGljc0Nv
bnRleHQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4
dD4gY3JlYXRlMkQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0dyYXBo
aWNzQ29udGV4dCgpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNyZWF0ZTNEKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQzRCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NHcmFwaGljc0NvbnRleHQoY29u
dGV4dDNEKSk7CisgICAgfQorCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCgpIHsg
cmV0dXJuIG1fY29udGV4dDNELmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgQ0NHcmFwaGljc0Nv
bnRleHQoKSB7IH0KKyAgICBleHBsaWNpdCBDQ0dyYXBoaWNzQ29udGV4dChQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QpCisgICAgICAgIDogbV9jb250ZXh0M0QoY29udGV4
dDNEKSB7IH0KKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7Cit9
OworCit9CisKKyNlbmRpZiAvLyBDQ0dyYXBoaWNzQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuY3BwCmluZGV4IDdkNDlmNzk4ZDFhYzdkNDhiZjc3NDM0N2JiYmM5N2ZiYTA4
ZjNhMTYuLmUxNGQ1M2IwNjRlYjQyM2JkMWI0NzAxOTYxMTYzMzk4OGE1YTYwNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC02OSw4ICs2OSwxMiBAQCBib29sIENDSGVh
ZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBj
b25zdAogCiB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCog
bGF5ZXJUcmVlSG9zdEltcGwpCiB7Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJl
bmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKKyAgICBDQ1Jl
bmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIo
KTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCktPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dCkgeworICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCiAgICAgICAgIG1faHVk
VGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3Vy
ZmFjZVRleHR1cmVNYW5hZ2VyKCkpOwogCkBAIC0xMDEsOSArMTA1LDkgQEAgdm9pZCBDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQog
ICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMp
OwogCi0gICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgbGF5ZXJSZW5k
ZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4
dHVyZS0+YmluZFRleHR1cmUobGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbGF5ZXJSZW5k
ZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIGJvb2wgdXBs
b2FkZWRWaWFNYXAgPSBmYWxzZTsKLSAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNvbnRleHRT
dXBwb3J0c01hcFN1YigpKSB7CisgICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRp
ZXMoKS51c2luZ01hcFN1YikgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4
dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKSk7CiAgICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNp
emUuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
T1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCmluZGV4IDk1YzMyYmRlY2MyMDBm
NjhmZjI4OTczY2Y3ODc5ZDQ4ZWIxN2UzN2QuLjlmZTkxNWQ0ZWE2MGQ2OWExODkwYTVhMDc2NDQ4
ODI5YWViZDkxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAK
QEAgLTUzLDI1ICs1MywyOSBAQCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6fkNDSU9TdXJmYWNlTGF5
ZXJJbXBsKCkKICAgICBtX2lvU3VyZmFjZVRleHR1cmVJZCA9IDA7CiB9CiAKLXZvaWQgQ0NJT1N1
cmZhY2VMYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxh
eWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewotICAgIENDTGF5ZXJJ
bXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVyKTsKKyAgICBDQ0xheWVySW1wbDo6d2lsbERyYXco
bGF5ZXJSZW5kZXJlciwgY29udGV4dCk7CiAKICAgICBpZiAobV9pb1N1cmZhY2VDaGFuZ2VkKSB7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpOwotICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQz
RCgpOworICAgICAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M2QtPmdldEV4
dGVuc2lvbnMoKSk7CiAgICAgICAgIEFTU0VSVChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1faW9zdXJmYWNlIikpOwogICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy0+c3VwcG9ydHMo
IkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKTsKIAogICAgICAgICBpZiAoIW1faW9TdXJmYWNl
VGV4dHVyZUlkKQotICAgICAgICAgICAgbV9pb1N1cmZhY2VUZXh0dXJlSWQgPSBjb250ZXh0LT5j
cmVhdGVUZXh0dXJlKCk7Ci0KLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5iaW5kVGV4dHVyZShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FS
QiwgbV9pb1N1cmZhY2VUZXh0dXJlSWQpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5z
aW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RB
TkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250
ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VE
R0UpKTsKKyAgICAgICAgICAgIG1faW9TdXJmYWNlVGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVh
dGVUZXh0dXJlKCk7CisKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5hY3RpdmVU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOworICAgICAgICBHTEMoY29udGV4
dDNkLCBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5H
TEVfQVJCLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkpOworICAgICAgICBHTEMoY29udGV4dDNkLCBj
b250ZXh0M2QtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9B
UkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJh
bWV0ZXJpKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Cisg
ICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShFeHRlbnNpb25z
M0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JB
UF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAgICAgICBHTEMoY29u
dGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JF
Q1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKICAgICAgICAgZXh0ZW5zaW9ucy0+dGV4SW1hZ2VJ
T1N1cmZhY2UyRENIUk9NSVVNKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZh
Y2VTaXplLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2lvU3VyZmFjZVNpemUuaGVpZ2h0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuaAppbmRleCA1ZDY2NDk2ZTExNTE1NzhiMWQ1ZTNlZjVkNTI2NTZiNjBjODJl
N2NiLi4yOGEzNWNkMGYyMDgzYTg2MjEwMTcxODc5YzFiOTI2YjUyYmQwNGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAotICAgIHZp
cnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMWYwOGI5
Yjk5NzM4NDI1ZDQxYTRjNGRmYmM3YjBlMzBiN2QwZmUzNS4uOTNhYjE3ODE4NzJiZDMzZmM4MmQ1
MDZmOTVmNDMwZDliZWYxMWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMjksNyAr
MjksNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5oIgpAQCAtMTQ1LDcgKzE0NCw3IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IEND
TGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1No
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRUcmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2
aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xpcFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgp
KTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVt
KikKK3ZvaWQgQ0NMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29u
dGV4dCopCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBi
ZSBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMmM0MWQwNmVhOGIwMGJkZDJlY2Y0
Mzc5ZmE4ZDVmYjlkZmMyOWNiYi4uY2RiOGM3ZDU5YTFjZDE1MWFjZDY3NmZhODNkNjk3YWZjN2Q2
MzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC00MywxMCArNDMsMTEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIENDTGF5ZXJT
b3J0ZXI7CiBjbGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1JlbmRlcmVyOwogY2xhc3MgTGF5
ZXJDaHJvbWl1bTsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAogY2xhc3MgQ0NMYXll
ckltcGwgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgewogcHVibGlj
OgpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gZGlkRHJhdyBpcyBndWFyYW50ZWVk
IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZvcmUKICAgICAvLyB0
aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92
ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNz
IHZlcnNpb24uCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1
bSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0Nv
bnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWREcmF3KCk7CiAgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGNiNjEwZGZkOWU5MmMyMjdjZDgzMTYzYjEzNDA0MDVl
YjZjZGZiMTYuLjE2NTllYzViZDg5YTJhNTA5OGRiYmM0NzMzNDA5ZmNjM2QwNTExMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjY1LDkgKzI2NSwxMiBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUoKQogICAgIG1fY2xpZW50LT5kaWRDb21taXQo
KTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGVDb250ZXh0KCkKK1Bhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5jcmVhdGVDb250
ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0OworICAgIGlmIChz
ZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKKyAgICAgICAgcmV0dXJuIENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUyRCgpOworICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlM0QobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKIH0KIAogUGFzc093blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJ
bXBsKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKQEAgLTI4NSw3ICsyODgsNyBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkTG9zZUNvbnRleHQoKQogfQogCiAvLyBUZW1wb3Jh
cnkgaGFjayB1bnRpbCBXZWJWaWV3SW1wbCBjb250ZXh0IGNyZWF0aW9uIGdldHMgc2ltcGxpZmll
ZAotR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdDo6Y29udGV4dCgpCitDQ0dyYXBo
aWNzQ29udGV4dCogQ0NMYXllclRyZWVIb3N0Ojpjb250ZXh0KCkKIHsKICAgICByZXR1cm4gbV9w
cm94eS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBkYzhm
YjFjOTM1NGMxYTBhYTQyYTZmYmZiY2NjY2NkNGEzYTJkYWNhLi40MzRhZWMyNzQyMjAxYzVmNmQ1
YjQ5Y2M1MzdlMTgwMzljMmM4NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSYXRl
TGltaXRlci5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgiCisjaW5jbHVkZSAi
Y2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21t
b24uaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBh
Z2VTY2FsZSkgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y3JlYXRlQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVh
dGVDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKSA9IDA7CkBAIC03Niw2ICs3Nyw3
IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBDQ1NldHRpbmdzKCkKICAg
ICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBmb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dGUFNDb3VudGVy
KGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAg
ICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNlKQpAQCAtOTIsNiArOTQsNyBAQCBzdHJ1Y3Qg
Q0NTZXR0aW5ncyB7CiAgICAgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKKyAg
ICBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsKICAgICBib29sIHNob3dGUFNDb3VudGVy
OwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGJvb2wgc2hvd1BhaW50UmVj
dHM7CkBAIC0xNTksNyArMTYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5Db21taXRPbklt
cGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZvaWQgZmluaXNoQ29tbWl0T25J
bXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGNvbW1pdENvbXBsZXRl
KCk7Ci0gICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpOwor
ICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQoKTsKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9z
dEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkTG9zZUNvbnRl
eHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0IHsKQEAgLTE4Niw3ICsxODksNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBOT1RFOiBUaGUgcmV0dXJuZWQgdmFsdWUgY2FuIG9ubHkgYmUgdXNlZCB0
byBtYWtlIEdMIGNhbGxzIG9yIG1ha2UgdGhlCiAgICAgLy8gY29udGV4dCBjdXJyZW50IG9uIHRo
ZSB0aHJlYWQgdGhlIGNvbXBvc2l0b3IgaXMgcnVubmluZyBvbiEKLSAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCgpOworICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCk7CiAKICAg
ICAvLyBDb21wb3NpdGVzIGFuZCBhdHRlbXB0cyB0byByZWFkIGJhY2sgdGhlIHJlc3VsdCBpbnRv
IHRoZSBwcm92aWRlZAogICAgIC8vIGJ1ZmZlci4gSWYgaXQgd2Fzbid0IHBvc3NpYmxlLCBlLmcu
IGR1ZSB0byBjb250ZXh0IGxvc3QsIHdpbGwgcmV0dXJuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDBhNDlmOGU3ZGE1OTA2MmFjYmRhNDZhOGM1OTQ1NDlmOTQ2
ODI1MWUuLjdkODNkMjA3ZGM2OTU0MTUyOWMxMTk4YWFkMzE5ZWVjM2JhODc4MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRl
cmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCkBAIC0xNjcsOSArMTY2LDkgQEAgYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotR3JhcGhpY3ND
b250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQorQ0NHcmFwaGljc0NvbnRl
eHQqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQogewotICAgIHJldHVybiBtX2xheWVy
UmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKGRv
dWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKQEAgLTMzMSw3ICszMzAs
NyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1Jl
bmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0Nv
bnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRz
Rm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIpOwogICAgICAgICBl
bHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0LT52aXNpYmxlTGF5ZXJSZWN0KCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdl
dCgpKTsKKyAgICAgICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCksIGNv
bnRleHQoKSk7CiAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9j
Y2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgICAgIH0KIApAQCAtNTQ3LDEw
ICs1NDYsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlz
aWJsZSkKICAgICBzZXRCYWNrZ3JvdW5kVGlja2luZ0VuYWJsZWQoIW1fdmlzaWJsZSAmJiBtX25l
ZWRzQW5pbWF0ZUxheWVycyk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwg
VGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlcikKK2Jvb2wgQ0NMYXllclRyZWVI
b3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlcikKIHsK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7
CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsK
LSAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywg
Y29udGV4dCwgdGV4dHVyZVVwbG9hZGVyKTsKKyAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dDNkLCB0ZXh0dXJlVXBsb2FkZXIpOwog
CiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBuZXcgY29udGV4dC9sYXllclJlbmRlcmVyLCB3
ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBvbGQKICAgICAvLyByZXNvdXJjZXMgKGkuZS4g
cmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURzKS4KQEAgLTU2MCw2ICs1NjUsOCBAQCBib29s
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+CiAgICAgfQogCiAgICAgbV9sYXllclJlbmRlcmVyID0gbGF5ZXJS
ZW5kZXJlci5yZWxlYXNlKCk7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKKyAgICAgICAgbV9j
b250ZXh0ID0gY29udGV4dDsKIAogICAgIGlmICghbV92aXNpYmxlICYmIG1fbGF5ZXJSZW5kZXJl
cikKICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDdmMGM3ZmY2NjNjYTNkZjhjY2U5
MzFjMjZhMzFkNTFlN2E2MmM3MTUuLjkwYWEwZmIwNjg1NjFmNjkyMDljYzQ2YjkzYTViZmQ3YWI2
MzliZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogfTsKIAogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xh
eWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKLWNsYXNz
IENDTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NJbnB1dEhhbmRsZXJDbGllbnQsIExheWVy
UmVuZGVyZXJDaHJvbWl1bUNsaWVudCB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVi
bGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBDQ1JlbmRlcmVyQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJbXBsKTsKICAgICB0eXBlZGVmIFZlY3RvcjxD
Q0xheWVySW1wbCo+IENDTGF5ZXJMaXN0OwogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgog
ICAgIC8vIE11c3QgYmUgY2FsbGVkIGlmIGFuZCBvbmx5IGlmIHByZXBhcmVUb0RyYXcgd2FzIGNh
bGxlZC4KICAgICB2b2lkIGRpZERyYXdBbGxMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKLSAg
ICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICAvLyBD
Q1JlbmRlcmVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXpl
JiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2RldmljZVZp
ZXdwb3J0U2l6ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gSW1wbGVtZW50YXRpb24KICAgICBib29sIGNhbkRyYXcoKTsKLSAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCgpOworICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCk7CiAK
ICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGb250QXRs
YXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwpAQCAtMTIxLDkgKzEyMSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGludCBmcmFtZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9w
dGlvbik7CisgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPENDR3Jh
cGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGlzQ29udGV4
dExvc3QoKTsKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKSB7IHJl
dHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KKyAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRl
cmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0Owog
ICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0Owog
CkBAIC0yMDksNyArMjA5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHVtcFJlbmRlclN1cmZh
Y2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBjb25zdCBDQ0xheWVySW1wbCopIGNvbnN0Owog
Ci0gICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOworICAg
IFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ1JlbmRl
cmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXll
ckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fc2Nyb2xsTGF5ZXJJbXBsOwogICAgIENDU2V0dGlu
Z3MgbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCAzNjYyOTE3OWEyZTE2NTM5MGVkMjgyYjhk
NTViNzM1NGE3YzVkMDQwLi5mYjJjYmJhZTk2ZjA3MzMwMDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcm94eS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBDQ1RocmVhZDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllczsKIAogLy8gQWJzdHJhY3QgY2xhc3MgcmVzcG9uc2libGUgZm9yIHByb3h5aW5nIGNv
bW1hbmRzIGZyb20gdGhlIG1haW4tdGhyZWFkIHNpZGUgb2YKQEAgLTExMyw3ICsxMTMsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFRlbXBvcmFyeSBoYWNrIHdoaWxlIHJlbmRlcl93aWRn
ZXQgc3RpbGwgZG9lcyBzY2hlZHVsaW5nIGZvciBDQ0xheWVyVHJlZUhvc3RNYWluVGhyZWFkSQot
ICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSA9IDA7CisgICAgdmlydHVh
bCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCgpID0gMDsKIAogICAgIC8vIFRlc3RpbmcgaG9v
a3MKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2E0NTUxNTQyYTYxODYzZGJjN2JhZjQ0NmE3ZGRiNTk0ZDkzYWQ4ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5k
ZXJlcl9oCisjZGVmaW5lIENDUmVuZGVyZXJfaAorCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NSZW5kZXJQYXNzOworY2xhc3MgVGV4dHVy
ZUFsbG9jYXRvcjsKK2NsYXNzIFRleHR1cmVDb3BpZXI7CitjbGFzcyBUZXh0dXJlTWFuYWdlcjsK
K2NsYXNzIFRleHR1cmVVcGxvYWRlcjsKKworY2xhc3MgQ0NSZW5kZXJlckNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnVs
bFJvb3RMYXllckRhbWFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1v
cnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpID0gMDsKK307CisKK2NsYXNzIENDUmVuZGVy
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyZXIpOworcHVibGljOgorICAg
IHZpcnR1YWwgfkNDUmVuZGVyZXIoKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOworCisgICAgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3Mo
KTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9jbGll
bnQtPmRldmljZVZpZXdwb3J0U2l6ZSgpOyB9CisgICAgaW50IHZpZXdwb3J0V2lkdGgoKSB7IHJl
dHVybiB2aWV3cG9ydFNpemUoKS53aWR0aCgpOyB9CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0KCkg
eyByZXR1cm4gdmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2
aWV3cG9ydENoYW5nZWQoKSA9IDA7CisKKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9u
TWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2lu
ZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1cmZhY2UqIGRlZmF1bHRSZW5kZXJT
dXJmYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVu
ZGVyUGFzcyopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0gMDsKKworICAgIC8vIHdhaXRzIGZvciByZW5kZXJp
bmcgdG8gZmluaXNoCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBkb05vT3AoKSA9IDA7CisgICAgLy8gcHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCisg
ICAgdmlydHVhbCBib29sIHN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcikgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywg
Y29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHJlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVD
b3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlVXBs
b2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVB
bGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVj
dCYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRMb3N0KCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgQ0NSZW5kZXJlcihDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQpCisgICAgICAgIDogbV9j
bGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CisKKyAgICBDQ1JlbmRlcmVyQ2xpZW50KiBtX2Ns
aWVudDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1h
dHJpeDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4
OworfTsKKworfQorCisjZW5kaWYgLy8gQ0NSZW5kZXJlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggMjQzYWQyMzFlN2Y0NmZjODllYjA0MDVkOGQwYmY1
MzY4MzFlYzYxNC4uNmI1MWM4MTY5YmVmYjAyZDc1ZTQwNzQwMDM0ODJhNzEyMmM5YjNjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAtNTAsOSArNTAsOSBA
QCBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxiYXJMYXllckltcGwoaW50IGlkKQogewog
fQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJh
dyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
IHsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlcik7CisgICAgQ0NMYXll
ckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOwogCiAgICAgaWYgKGJvdW5k
cygpLmlzRW1wdHkoKSB8fCBjb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC03NywxMSArNzcsMTYgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERy
YXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogCiAgICAgewogICAgICAg
ICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAg
ICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnJlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBTa2lhIHVz
ZXMgQkdSQSBhY3R1YWxseSwgd2UgY29ycmVjdCB0aGF0IHdpdGggdGhlIHN3aXp6bGUgcGl4ZWwg
c2hhZGVyLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgY2FudmFzLnNp
emUoKS53aWR0aCgpLCBjYW52YXMuc2l6ZSgpLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGxvY2tlci5waXhlbHMo
KSkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29u
dGV4dDNEKCk7CisgICAgICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0
M2QtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIG1fdGV4dHVy
ZS0+Zm9ybWF0KCksIGNhbnZhcy5zaXplKCkud2lkdGgoKSwgY2FudmFzLnNpemUoKS5oZWlnaHQo
KSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCBsb2NrZXIucGl4ZWxzKCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oCmluZGV4IDMyYWQxZDhkZGZlZjk5NzIyNzRhMWVmMDE4NDcwMzY1
YWNkZTYxZDguLmY5NzVjMTllOTlhOTMzZmZhZTZiMTEyMzZjNzc4YmMxNjgzYmE4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgQ0NMYXllckltcGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3Jv
bGxMYXllcjsgfQogICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIHNjcm9sbExh
eWVyKSB7IG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllcjsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggMTdjZGM1OWU0NTFhZmQ1NDU2ZTc5NzY2MGRhZDYzZDAzMjI0NGMx
NS4uZmEwZGVkMGZlMDM5MWFjOTdhZWI4NWI3NzI3NmNmYjRlMDZlZTI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1
ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCkBAIC0xMTIsNyArMTExLDcg
QEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFy
dFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAotR3JhcGhpY3NDb250
ZXh0M0QqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQorQ0NHcmFwaGljc0NvbnRleHQq
IENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKQpA
QCAtMTM5LDcgKzEzOCw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aXNTdGFydGVkKCkg
Y29uc3QKIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQoKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7Cisg
ICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5j
cmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKQEAgLTE3Niw3ICsxNzUsNyBAQCBi
b29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgQVNTRVJUKEND
UHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZXh0TG9zdCk7CiAKLSAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNy
ZWF0ZUNvbnRleHQoKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBt
X2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmlu
ZGV4IDQ0MTQ2NmFmY2U1OWVmMTYwMDIyY2FhYWY4MWVkZjljOGIwNDZlM2IuLjY0NWE4YTlhNGFk
MTE3NGMzNmUxZWQyMDcxOWVkMTdlYjNlOGY3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIC8vIENDUHJveHkgaW1w
bGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAq
cGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoQWxsUmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRl
ZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplQ29udGV4dCgp
IE9WRVJSSURFOwpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSG9sZHMgb24g
dG8gdGhlIGNvbnRleHQgYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpIGFuZCBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcigpIGNhbGxzLiBTaG91bGRuJ3QKICAgICAvLyBiZSB1c2VkIGZvciBhbnl0
aGluZyBlbHNlLgotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3Jl
SW5pdGlhbGl6YXRpb247CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRC
ZWZvcmVJbml0aWFsaXphdGlvbjsKIAogICAgIE93blB0cjxDQ1NpbmdsZVRocmVhZFByb3h5QW5p
bWF0aW9uVGltZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5jcHAKaW5kZXggYWI1NmQxZjM3N2EyYzZmOGNlNWI3MjNjY2Q2NTFhYWVlMTRiZTlhMS4u
MDVlOWY1NGRkYWVjYWFiMjQxZTliNWE0YWRjNWJmMTVjNzQyZDIwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBDQ1RleHR1cmVVcGRh
dGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkg
fHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCkgfHwgbV9t
YW5hZ2VkQ29weUVudHJpZXMuc2l6ZSgpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNp
emVfdCBjb3VudCkKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIq
IGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgc2l6ZV90IGNvdW50KQogewogICAg
IHNpemVfdCBpbmRleDsKIApAQCAtMTQyLDggKzE0MiwxMiBAQCB2b2lkIENDVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsbwogICAgIC8vIElmIHdlJ3ZlIHBlcmZvcm1lZCBhbnkgdGV4dHVyZSBjb3BpZXMsIHdlIG5l
ZWQgdG8gaW5zZXJ0IGEgZmx1c2ggaGVyZSBpbnRvIHRoZSBjb21wb3NpdG9yIGNvbnRleHQKICAg
ICAvLyBiZWZvcmUgbGV0dGluZyB0aGUgbWFpbiB0aHJlYWQgcHJvY2VlZCBhcyBpdCBtYXkgbWFr
ZSBkcmF3IGNhbGxzIHRvIHRoZSBzb3VyY2UgdGV4dHVyZSBvZiBvbmUgb2YKICAgICAvLyBvdXIg
Y29weSBvcGVyYXRpb25zLgotICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUoKSB8fCBtX21hbmFn
ZWRDb3B5RW50cmllcy5zaXplKCkpCi0gICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CisgICAgaWYg
KG1fY29weUVudHJpZXMuc2l6ZSgpIHx8IG1fbWFuYWdlZENvcHlFbnRyaWVzLnNpemUoKSkgewor
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNE
KCk7CisgICAgICAgIGlmIChjb250ZXh0M2QpCisgICAgICAgICAgICBjb250ZXh0M2QtPmZsdXNo
KCk7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBj
b21wb3NpdGluZy4KKyAgICB9CiAKICAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2Vz
cywgYXV0by1jbGVhci4KICAgICBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
CmluZGV4IDI0ZDg5NmYyYjU5MTIwOTAwNDFhNDMzZjE2NjUxZDYyM2MwZGI2MmYuLjdjOWZlMmUz
MDhjYTRmMjQ0YzI2NzYxZTgzYTg0NTgyYmMzY2Q0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0
dXJlQ29waWVyOwogY2xhc3MgVGV4dHVyZVVwbG9hZGVyOwpAQCAtNTAsNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAgLy8gVXBkYXRlIHNv
bWUgdGV4dHVyZXMuCi0gICAgdm9pZCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3Vu
dCk7CisgICAgdm9pZCB1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CiAKICAg
ICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZmIwYTVj
MTBiNTdmNzk4ODEwM2QyMTMyMzk4YzZhMThjYzNjMTQxOS4uZTk1NTU1NTEwNTY3ZTI5N2YzOWEw
ZTNjMTk2ZWZhOGYyODJhYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvcwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5j
aG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0K
IAotR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQorQ0NHcmFwaGlj
c0NvbnRleHQqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQogewogICAgIHJldHVybiAwOwogfQpA
QCAtMTc2LDEzICsxNzYsMTMgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojppc1N0YXJ0ZWQoKSBjb25z
dAogYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCgpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0IiwgdGhpcywgMCk7Ci0gICAg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVh
dGVDb250ZXh0KCk7CisgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9s
YXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKIAogICAg
IC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBzbyB3ZSBjYW4gdHJhbnNmZXIgb3duZXJzaGlw
IG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgQVNTRVJU
KGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAogICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplQ29udGV4dE9uSW1wbFRocmVhZCwKQEAgLTIyOSwxNyArMjI5LDE3IEBAIGJvb2wgQ0NUaHJl
YWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CiAgICAgLy8gVHJ5IHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KLSAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAg
ICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNy
ZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQoKSkKKyAgICBpZiAo
Q0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQoKSAmJiAhbV9sYXllclRyZWVIb3N0
LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKICAgICAgICAgaWYgKCFTaGFy
ZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKIAogICAg
IC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBzbyB3ZSBjYW4gdHJhbnNmZXIgb3duZXJzaGlw
IG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgQVNTRVJU
KGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAogICAgIC8vIE1ha2UgYSBibG9ja2luZyBjYWxs
IHRvIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZC4gVGhlIHJlc3VsdHMgb2YgdGhhdApAQCAt
NDc2LDcgKzQ3Niw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNv
bnRleHQoKSAmJiAhU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmhhdmVGb3JJbXBsVGhyZWFkKCkp
CisgICAgaWYgKENDTGF5ZXJUcmVlSG9zdDo6bmVlZHNGaWx0ZXJDb250ZXh0KCkgJiYgIW1fbGF5
ZXJUcmVlSG9zdC0+c2V0dGluZ3MoKS5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcgJiYgIVNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjpoYXZlRm9ySW1wbFRocmVhZCgpKQogICAgICAgICBTaGFyZWRH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpOwogCiAgICAgT3duUHRyPEJl
Z2luRnJhbWVBbmRDb21taXRTdGF0ZT4gcmVxdWVzdChtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVz
dC5yZWxlYXNlKCkpOwpAQCAtODA3LDcgKzgwNyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAg
ICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCit2b2lk
IENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkKENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRGb250
QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQogICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwogfQogCi12b2lk
IENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGxldGlvbiwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHRQdHIsIGJvb2wqIHJl
Y3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMp
Cit2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbiwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIsIGJv
b2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmls
aXRpZXMpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0
ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDlkMmVkZGE2ZmRlMGRkZjcxMDdmZTFjNzU5N2EyYTBl
OWYzMjNlZTguLjI0ZGI5MmU2ZWExNWM5ZjQ2MjgyOTY5OTAxZWViYmU1Zjk4OWU2ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIEND
UHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJh
Y2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9u
LCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzU3RhcnRlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXpl
Q29udGV4dCgpIE9WRVJSSURFOwpAQCAtMTM2LDEyICsxMzYsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsK
ICAgICB2b2lkIHNldFN1cmZhY2VSZWFkeU9uSW1wbFRocmVhZCgpOwotICAgIHZvaWQgaW5pdGlh
bGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB2b2lkIGlu
aXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkKENDR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9p
ZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCos
IGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsK
ICAgICB2b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqKTsKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAg
ICB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzRm9yTWFpblRocmVhZE9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCopOwotICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250ZXh0M0QqLCBib29sKiByZWNyZWF0ZVN1Y2Nl
ZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOworICAgIHZvaWQgcmVjcmVhdGVDb250
ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBi
b29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAg
IENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFs
aXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpAQCAtMTY4
LDkgKzE2OCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q0NTY29wZWRUaHJlYWRQcm94eT4g
bV9tYWluVGhyZWFkUHJveHk7CiAKLSAgICAvLyBIb2xkcyBvbiB0byB0aGUgR3JhcGhpY3NDb250
ZXh0M0Qgd2UgbWlnaHQgdXNlIGZvciBjb21wb3NpdGluZyBpbiBiZXR3ZWVuIGluaXRpYWxpemVD
b250ZXh0KCkKKyAgICAvLyBIb2xkcyBvbiB0byB0aGUgY29udGV4dCB3ZSBtaWdodCB1c2UgZm9y
IGNvbXBvc2l0aW5nIGluIGJldHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQoKQogICAgIC8vIGFuZCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLgotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQ7CisgICAgUmVm
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1w
bFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIG9u
IGEgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSB0byBiZSBpc3N1ZWQuCiAgICAgQ0NDb21wbGV0
aW9uRXZlbnQqIG1fYmVnaW5GcmFtZUNvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggZjU4NWQ2ODA0MGZhYWVlZjMwZDJhNGIz
M2Q3NmFlMDEwMWQ5NTJkZC4uZTJiYzYzMjcyYzg5Mzg2YTUyNTc4NjMwNzk0ZWFiM2NiNGM3MDA3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTEyOCwxMCArMTI4LDEw
IEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0KGNvbnN0IFdl
YktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3ZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBD
Q0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlcik7CisgICAgQ0NMYXllckltcGw6Ondp
bGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOwogCiAgICAgLy8gRXhwbGljaXRseSBsb2Nr
IGFuZCB1bmxvY2sgdGhlIHByb3ZpZGVyIG11dGV4IHNvIGl0IGNhbiBiZSBoZWxkIGZyb20KICAg
ICAvLyB3aWxsRHJhdyB0byBkaWREcmF3LiBTaW5jZSB0aGUgY29tcG9zaXRvciB0aHJlYWQgaXMg
aW4gdGhlIG1pZGRsZSBvZgpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgICAg
ICBtX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
d2lsbERyYXdJbnRlcm5hbChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCit2
b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciogbGF5ZXJS
ZW5kZXJlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogCkBAIC0y
NDQsNyArMjQ0LDcgQEAgSW50U2l6ZSBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb21wdXRlVmlzaWJsZVNp
emUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6
ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi1ib29sIENDVmlkZW9MYXllcklt
cGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1lLCBH
QzNEZW51bSBmb3JtYXQsIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK2Jv
b2wgQ0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFdlYktpdDo6V2ViVmlk
ZW9GcmFtZSYgZnJhbWUsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJl
cikKIHsKICAgICBpZiAoZnJhbWUucGxhbmVzKCkgPiBNYXhQbGFuZXMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCA0NDYwNmMxM2IyZDcx
MDJiOTJiNGUzMWUwZmQzYTkwMmY0NTUxNDUzLi41MDAzZjc0Zjc4M2ZlNWM2OTNhMjk1Yjc4ZTA2
Njc2MGE0MDFkZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0Nv
bnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7CiAKQEAgLTgxLDgg
KzgxLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlVmlzaWJsZVNpemUo
Y29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiwgdW5zaWduZWQgcGxhbmUpOwogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAiVmlkZW9MYXllciI7IH0KIAotICAgIHZvaWQgd2lsbERyYXdJbnRlcm5hbChMYXllclJlbmRl
cmVyQ2hyb21pdW0qKTsKLSAgICBib29sIHJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6Oldl
YlZpZGVvRnJhbWUmLCBHQzNEZW51bSBmb3JtYXQsIExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwor
ICAgIHZvaWQgd2lsbERyYXdJbnRlcm5hbChDQ1JlbmRlcmVyKik7CisgICAgYm9vbCByZXNlcnZl
VGV4dHVyZXMoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiwgR0MzRGVudW0gZm9ybWF0LCBD
Q1JlbmRlcmVyKik7CiAKICAgICAvLyBHdWFyZHMgdGhlIGRlc3RydWN0aW9uIG9mIG1fcHJvdmlk
ZXIgYW5kIHRoZSBmcmFtZSB0aGF0IGl0IHByb3ZpZGVzCiAgICAgTXV0ZXggbV9wcm92aWRlck11
dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
Y2NmMzMwM2M3NTczNzlmOGU5OGZmYjc3ODdiYmQ0ODNkMzBhMGZjMi4uZDZlMDY1ODFkMGYyYjFi
NmQ0YTA0YjU4MDg3YWE4ZWQ2YzFiYTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChi
b29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JW
aWRlb0VuYWJsZWQoYm9vbCkgPSAwOwpAQCAtMTU2LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wp
ID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSBjb25z
dCA9IDA7CisKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IDY1YTJh
NjNiMThhMmM4Y2NmZGM1ZmVjMWUxMGYxOWM2MzNhY2E1NTguLmFlMjBhZWE5YTM1ODNlNjM0MjQ5
ZjViYjRkYjQwODgyODRkODI2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC00MSw2ICs0MSw3IEBAIFdlYkxheWVyVHJlZVZpZXc6
OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKIHsKICAgICBDQ1NldHRpbmdz
IHNldHRpbmdzOwogICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQ
YWludGluZzsKKyAgICBzZXR0aW5ncy5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcgPSBmb3JjZVNv
ZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzaG93RlBT
Q291bnRlcjsKICAgICBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzaG93UGxhdGZv
cm1MYXllclRyZWU7CiAgICAgc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgPSBzaG93UGFpbnRSZWN0
czsKQEAgLTE2MSw3ICsxNjIsNyBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OmZpbmlzaEFsbFJl
bmRlcmluZygpCiAKIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJMYXllclRyZWVWaWV3Ojpjb250
ZXh0KCkKIHsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRleHQoKSk7
CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCktPmNvbnRleHQz
RCgpKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQo
aW50IG51bVRpbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDQ1YTk5NjAzY2IxZjViM2ZlNjdjNjkyOWU4NTg1NDM1
N2UzZmYyMjYuLjE3ZDVmZTg2NzVhN2VjYWUyNDIwNjNlMmE3MzAyYTczNjQ3MjA5ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyBtX2NsaWVu
dC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+bGF5b3V0KCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSBPVkVSUklERSB7IG1fY2xpZW50LT5hcHBseVNj
cm9sbEFuZFNjYWxlKHNjcm9sbERlbHRhLCBwYWdlU2NhbGUpOyB9Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJ
REUKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNy
ZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBPd25QdHI8V2ViR3JhcGhp
Y3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlQ29udGV4
dDNEKCkpOwogICAgICAgICBpZiAoIXdlYkNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCBjNTFmZmZiZjc5YWU3MTZiYzdjNjY2
Nzc2MWIzMTk2M2ZhNzk0YzQwLi41MzUxMDRiOWQ0NWNjNDhiZmViNDgzZmY0ZjRiYjhkNjgxY2Fh
NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlNldHRpbmdzSW1w
bDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICA6IG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgLCBtX2ZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkKICAgICAs
IG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShm
YWxzZSkKICAgICAsIG1fc2hvd1BhaW50UmVjdHMoZmFsc2UpCkBAIC0zODgsNiArMzg5LDExIEBA
IHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sIGVuYWJs
ZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZW5hYmxlZCk7CiB9
CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRGb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoYm9v
bCBlbmFibGVkKQoreworICAgIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gZW5hYmxlZDsK
K30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29s
IGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKGVu
YWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApp
bmRleCBjMjg5MDg0NDFmMmY1M2YyYmFhNDNhY2U3ZDFkYmNmNzQ5ODE5ODAwLi43MjkyMDA1Y2M3
OWNjYWY1Y2ZiYzA3ODMzMWQwOWNmMWRmOWUzZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAg
dmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGJvb2wpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wp
OwpAQCAtMTU4LDkgKzE1OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseURlZmF1bHREZXZp
Y2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlEZWZhdWx0
RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3I7IH0KICAgICBXZWJTaXplIGRlZmF1bHRUaWxl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRpbGVTaXplOyB9CiAgICAgV2ViU2l6ZSBt
YXhVbnRpbGVkTGF5ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhVbnRpbGVkTGF5ZXJTaXpl
OyB9CisgICAgdmlydHVhbCBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CisgICAgYm9vbCBtX2ZvcmNlU29mdHdhcmVDb21w
b3NpdGluZzsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0
Zm9ybUxheWVyVHJlZTsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZGFjZmExNTJlNTY3YmRjMDFiNTAz
MDEwYjZhZDZjMzczOWQxODk4OC4uOGY5NTAyYjQ4YWVmNDVmZGQ5YjljZmNiMjcwZDQ3YTcxNDMz
ZTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
MzQ0Nyw2ICszNDQ3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Mu
c2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAg
ICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdz
SW1wbCgpLT5zaG93UGxhdGZvcm1MYXllclRyZWUoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1Nl
dHRpbmdzLnNob3dQYWludFJlY3RzID0gc2V0dGluZ3NJbXBsKCktPnNob3dQYWludFJlY3RzKCk7
CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcg
PSBzZXR0aW5ncygpLT5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKTsKIAogICAgICAgICBsYXll
clRyZWVWaWV3U2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGFnZSgpLT5zZXR0aW5ncygpLT5w
ZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBh
cnRpYWxTd2FwRW5hYmxlZCA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFydGlhbFN3YXBFbmFibGVk
KCk7CkBAIC0zNDk1LDYgKzM0OTYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKIFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGlj
c0NvbnRleHQzRCgpCiB7CisgICAgaWYgKHNldHRpbmdzKCktPmZvcmNlU29mdHdhcmVDb21wb3Np
dGluZygpKQorICAgICAgICBDUkFTSCgpOworCiAgICAgLy8gRXhwbGljaXRseSBkaXNhYmxlIGFu
dGlhbGlhc2luZyBmb3IgdGhlIGNvbXBvc2l0b3IuIEFzIG9mIHRoZSB0aW1lIG9mCiAgICAgLy8g
dGhpcyB3cml0aW5nLCB0aGUgb25seSBwbGF0Zm9ybSB0aGF0IHN1cHBvcnRlZCBhbnRpYWxpYXNp
bmcgZm9yIHRoZQogICAgIC8vIGNvbXBvc2l0b3Igd2FzIE1hYyBPUyBYLCBiZWNhdXNlIHRoZSBv
bi1zY3JlZW4gT3BlbkdMIGNvbnRleHQgY3JlYXRpb24KQEAgLTM1MTgsNiArMzUyMiw5IEBAIFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0
ZUNvbXBvc2l0b3JHcmFwaGljc0NvCiAKIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIFdl
YlZpZXdJbXBsOjpjcmVhdGVDb250ZXh0M0QoKQogeworICAgIGlmIChzZXR0aW5ncygpLT5mb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgQ1JBU0goKTsKKwogICAgIE93blB0cjxX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0OwogCiAgICAgLy8gSWYgd2Un
dmUgYWxyZWFkeSBjcmVhdGVkIGFuIG9uc2NyZWVuIGNvbnRleHQgZm9yIHRoaXMgdmlldywgcmV0
dXJuIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDkxYzJkMWRmZjEyMTI3OWE3Yzc0NjA3MGM1
Y2JkYzIyMjRmMmI2NWEuLmM3ZGYxOTE1Y2NkNzZkZWZiODdkMjkwYWE4YTViMjRhYTQ2MmZlMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgcHVibGljOgogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRl
eHQoKQorICAgIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KTsKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogICAgIH0KIAogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBtX2Fsd2F5c0ltcGxUaHJlYWQ7CkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGlj
OgogICAgICAgICBtX2RpZERyYXdDYWxsZWQgPSB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKQorICAgIHZpcnR1YWwgdm9pZCB3
aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKQogICAgIHsKICAgICAgICAg
bV93aWxsRHJhd0NhbGxlZCA9IHRydWU7CiAgICAgfQpAQCAtOTg4LDcgKzk4OCw4IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsK
ICAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJlc2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVU
cmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgIFJlZlB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRl
eHQpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNjQ29udGV4dCwg
VW50aHJvdHRsZWRVcGxvYWRlcik7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtl
RHJhd2FibGVDQ0xheWVySW1wbCgxKTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50KDAsIDApKTsKQEAgLTEwMzEsMTMgKzEwMzIsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIHsKICAgICBQYXJ0aWFs
U3dhcFRyYWNrZXJDb250ZXh0KiBwYXJ0aWFsU3dhcFRyYWNrZXIgPSBuZXcgUGFydGlhbFN3YXBU
cmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoYWRvcHRQdHIocGFydGlhbFN3YXBUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKIAogICAg
IC8vIFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAg
ICAvLyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KICAgICBDQ1NldHRp
bmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CiAg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJlZUhvc3RJbXBsID0gQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKLSAgICBsYXllclRyZWVIb3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRl
cik7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNjQ29u
dGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9
IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKQEAgLTExNTEsNyArMTE1Myw3IEBAIHB1
YmxpYzoKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZmluaXNoQWxsUmVuZGVyaW5n
QWZ0ZXJDb250ZXh0TG9zdCkKIHsKICAgICAvLyBUaGUgY29udGV4dCBpbml0aWFsaXphdGlvbiB3
aWxsIGZhaWwsIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBjYWxsIGZpbmlzaEFsbFJl
bmRlcmluZygpIHdpdGhvdXQgYW55IGlsbCBlZmZlY3RzLgotICAgIG1faG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3cpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpLCBVbnRocm90dGxlZFVw
bG9hZGVyKTsKICAgICBtX2hvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKIH0KIApAQCAt
MTM1Niw3ICsxMzU4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNl
T2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKIAogICAgIC8vIExvc2UgdGhlIGNvbnRleHQs
IHJlcGxhY2luZyBpdCB3aXRoIGEgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0QsIHRoYXQKICAg
ICAvLyB3aWxsIHdhcm4gaWYgYW55IHJlc291cmNlIGZyb20gdGhlIHByZXZpb3VzIGNvbnRleHQg
Z2V0cyB1c2VkLgotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmlj
dFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSwgVW50aHJvdHRs
ZWRVcGxvYWRlcik7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVHcmFwaGljc0NvbnRleHQoKSksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIEVYUEVDVF9U
UlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCmluZGV4IGI5OTYwMDZhZTI4OTFiOGExODM2MjdkZjVkOWEzYjkyNGZjMzBmMGQu
LmFhMjdlODhmN2RjM2VkODA4MDIxMDY0OWNjZDBiZTMwMDI3Y2YwYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAt
Mjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90ZXN0SG9va3MtPmFwcGx5U2Nyb2xs
QW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHNjYWxlKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERQorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rlc3RIb29rcy0+Y3JlYXRlQ29udGV4dCgp
OwogICAgIH0KQEAgLTIxNTQsNyArMjE1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAg
ICB7Ci0gICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVy
ZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCkpKTsKKyAgICAgICAg
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNv
bnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0
aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdy
YXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpKTsKIAogICAgICAg
ICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpA
QCAtMjE4OCw3ICsyMTg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXll
cnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAgewotICAgICAgICBD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29u
dGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRo
VGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpKSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tp
bmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQz
RChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CiAKICAgICAgICAgLy8gTnVtYmVyIG9m
IHRleHR1cmVzIHVzZWQgZm9yIGRyYXcgc2hvdWxkIGFsd2F5cyBiZSBvbmUuCiAgICAgICAgIEVY
UEVDVF9FUSgxLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CkBAIC0yMjU4LDcgKzIyNTgs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAgewotICAgICAgICBDb21wb3NpdG9yRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRp
Y19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNr
aW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0
M0QoaW1wbC0+Y29udGV4dCgpKSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250
ZXh0KCktPmNvbnRleHQzRCgpKSk7CiAKICAgICAgICAgc3dpdGNoIChpbXBsLT5zb3VyY2VGcmFt
ZU51bWJlcigpKSB7CiAgICAgICAgIGNhc2UgMDoKQEAgLTIzMjcsNyArMjMyNyw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhv
c3RJbXBsKiBpbXBsKQogICAgIHsKLSAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3Np
dG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwtPmNvbnRl
eHQoKSkpOworICAgICAgICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRl
eHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0
M0QoKSkpOwogCiAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBkcmF3aW5n
IHNob3VsZCB0d28gZXhjZXB0IGZvciBmcmFtZSA0CiAgICAgICAgIC8vIHdoZXJlIHRoZSB2aWV3
cG9ydCBvbmx5IGNvbnRhaW5zIG9uZSBsYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCmluZGV4IDQ2ZDExYTk2
ZTdmOGQ0ODI0OTdkY2Q0OWZlNDQ2MWZiNWFjYWZiY2MuLjcwMTdhMDFmZjY5YTYyZDMyZmEzMTli
OGRhNzQ3YTFhNDU0ODNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKGFsbG9jYXRvcikKICAgICAg
ICAgdGV4dHVyZSgpLT5hbGxvY2F0ZShhbGxvY2F0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAppbmRleCA0ZWI4NzVi
MWVjMzc4OTFjNTg2NzgxMjNhNDFjYzMyMmM1ZGRkOWY0Li45ODI0ZDhjMDY0ZmQ0MDdhYTI3Y2Fl
ZTM4ZDA3MDkwZTdmYjJkY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApAQCAtMjUsNyArMjUsNiBAQAogI2lmbmRl
ZiBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKICNkZWZpbmUgQ0NUaWxlZExheWVyVGVzdENvbW1v
bl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCisj
aW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8V2ViQ29yZTo6TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+
VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEKiwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCosIFdlYkNvcmU6OlRl
eHR1cmVBbGxvY2F0b3IqICwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKIAogICAgIHByaXZhdGU6CkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGlj
OgogCiBjbGFzcyBGYWtlVGV4dHVyZUNvcGllciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlQ29w
aWVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGlj
c0NvbnRleHQqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7
IH0KIH07CiAKIGNsYXNzIEZha2VUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgV2ViQ29yZTo6VGV4
dHVyZVVwbG9hZGVyIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBs
b2FkcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFdlYkNvcmU6
OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3Vy
Y2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0
ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2Vi
Q29yZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjQyNDg1YjcxOGYwOGE1NjlmMGYxMjZk
NDljZmY2MDBiNWJjZDc1Yi4uYTU2NTE0NmE1ZDQ5MTk2NWI3YjFhZDI1ZDZmZTY5YzUxNTE1NDBm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKIAogY2xh
c3MgTW9ja1RleHR1cmVDb3BpZXIgOiBwdWJsaWMgVGV4dHVyZUNvcGllciB7CiBwdWJsaWM6Ci0g
ICAgTU9DS19NRVRIT0Q0KGNvcHlUZXh0dXJlLCB2b2lkKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQsIHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJikpOworICAgIE1PQ0tfTUVUSE9ENChjb3B5
VGV4dHVyZSwgdm9pZChDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29u
c3QgSW50U2l6ZSYpKTsKIH07CiAKIGNsYXNzIE1vY2tUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMg
VGV4dHVyZVVwbG9hZGVyIHsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIE1PQ0tfTUVU
SE9EMChpc0J1c3ksIGJvb2woKSk7CiAgICAgTU9DS19NRVRIT0QwKGJlZ2luVXBsb2Fkcywgdm9p
ZCgpKTsKICAgICBNT0NLX01FVEhPRDAoZW5kVXBsb2Fkcywgdm9pZCgpKTsKLSAgICBNT0NLX01F
VEhPRDUodXBsb2FkVGV4dHVyZSwgdm9pZChHcmFwaGljc0NvbnRleHQzRCosIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCwgY29u
c3QgSW50UmVjdCkpOworICAgIE1PQ0tfTUVUSE9ENSh1cGxvYWRUZXh0dXJlLCB2b2lkKENDR3Jh
cGhpY3NDb250ZXh0KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxv
Y2F0b3IqLCBjb25zdCBJbnRSZWN0LCBjb25zdCBJbnRSZWN0KSk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZQpAQCAtMTA1LDcgKzEwNSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAKICAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgICAg
ICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjTWFpbkNvbnRleHQgPSBDQ0dyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlM0QobWFpbkNvbnRleHQpOwogICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQo
KSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAg
ICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NJbXBsQ29udGV4dCA9IENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChpbXBsQ29udGV4dCk7CiAKICAgICAgICAgTW9ja0NhbnZhc0NvbnRl
eHQmIG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobWFpbkNvbnRleHQu
Z2V0KCkpKTsKICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIGltcGxNb2NrID0gKnN0YXRpY19j
YXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0
V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQuZ2V0KCkpKTsKQEAgLTE0MCw3ICsxNDIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRleHR1cmUgYW5kIGRv
IHRoZSBjb3B5IChvbiB0aGUgaW1wbCB0aHJlYWQpLgogICAgICAgICAgICAgICAgIEVYUEVDVF9D
QUxMKGFsbG9jYXRvck1vY2ssIGNyZWF0ZVRleHR1cmUoc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpKQogICAgICAgICAgICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGZyb250VGV4dHVy
ZUlkKSk7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoY29waWVyTW9jaywgY29weVRleHR1
cmUoaW1wbENvbnRleHQuZ2V0KCksIGJhY2tUZXh0dXJlSWQsIGZyb250VGV4dHVyZUlkLCBzaXpl
KSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoY29waWVyTW9jaywgY29weVRleHR1cmUo
Y2NJbXBsQ29udGV4dC5nZXQoKSwgYmFja1RleHR1cmVJZCwgZnJvbnRUZXh0dXJlSWQsIHNpemUp
KTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgZmx1c2goKSk7CiAKICAg
ICAgICAgICAgICAgICAvLyBUZWFyZG93biBUZXh0dXJlTWFuYWdlci4KQEAgLTE2NCw3ICsxNjYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1w
bCA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgw
dSwgc3RhdGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4
dHVyZUlkKCkpOwogCi0gICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShpbXBsQ29udGV4dC5nZXQo
KSwgJmFsbG9jYXRvck1vY2ssICZjb3BpZXJNb2NrLCAmdXBsb2FkZXJNb2NrLCAxKTsKKyAgICAg
ICAgICAgIHVwZGF0ZXIudXBkYXRlKGNjSW1wbENvbnRleHQuZ2V0KCksICZhbGxvY2F0b3JNb2Nr
LCAmY29waWVyTW9jaywgJnVwbG9hZGVyTW9jaywgMSk7CiAgICAgICAgICAgICBjYW52YXMtPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKHRocmVh
ZGVkICYmICFkZWZlcnJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKaW5kZXggOTkyNTA5YzRmZGNkOWYzMGEz
ODJhMTZiNTM3YTBhNWE2NWFkMjJiOC4uNmFiNjE2ZDNjOGE3OTcxMzJlZTRlZmNkODcxYjg5Nzlj
MDdiMmY3OSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NM
YXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9G
YWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0M0QoKSBP
VkVSUklERQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cnM7CiAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNE
KGF0dHJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDRlZDM1OTg2Y2MxZTg5NTkyYjJjYWVj
MjIxNDE2YjJmZWVkNDlmYzcuLjMxNDgyZWQ5OTcxODA2ZWZmZDBhYTg4ZTg3ZjljNTlmMDM5ZDEw
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJl
ckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjEsMTYgKzYxLDE2IEBAIHByaXZhdGU6CiAg
ICAgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQ0hST01JVU0qIG1f
bWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFjazsKIH07CiAKLWNsYXNzIEZha2VMYXllclJl
bmRlcmVyQ2hyb21pdW1DbGllbnQgOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50
IHsKK2NsYXNzIEZha2VDQ1JlbmRlcmVyQ2xpZW50IDogcHVibGljIENDUmVuZGVyZXJDbGllbnQg
ewogcHVibGljOgotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQoKQorICAgIEZh
a2VDQ1JlbmRlcmVyQ2xpZW50KCkKICAgICAgICAgOiBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VD
b3VudCgwKQogICAgICAgICAsIG1fcm9vdExheWVyKENDTGF5ZXJJbXBsOjpjcmVhdGUoMSkpCiAg
ICAgewogICAgICAgICBtX3Jvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIH0K
IAotICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBtZXRob2RzLgorICAgIC8vIEND
UmVuZGVyZXJDbGllbnQgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmlj
ZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgc3RhdGljIEludFNpemUgZmFrZVNpemU7
IHJldHVybiBmYWtlU2l6ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBDQ1NldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0
dXJuIGZha2VTZXR0aW5nczsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9W
RVJSSURFIHsgfQpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CiBwdWJsaWM6
Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXll
clJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7
IH0KKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVu
dCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXllclJlbmRlcmVy
Q2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAg
IC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bSBtZXRob2RzLgogCkBAIC0xMjYsNyArMTI2LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAg
ICAgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCYgbV9tb2NrQ29u
dGV4dDsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1fbW9ja0NsaWVudDsK
KyAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtX21vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bTsKIH07CiAKQEAgLTI3MCw3ICsy
NzAsNyBAQCBwdWJsaWM6CiAvLyBUaGlzIHRlc3QgaXNuJ3QgdXNpbmcgdGhlIHNhbWUgZml4dHVy
ZSBhcyBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBhbmQgeW91IGNhbid0IG1peCBURVNUKCkg
YW5kIFRFU1RfRigpIHdpdGggdGhlIHNhbWUgbmFtZSwgaGVuY2UgTFJDMi4KIFRFU1QoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uRG9lc05vdE1ha2VTeW5jaHJvbm91
c0NhbGxzKQogewotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgbW9ja0NsaWVu
dDsKKyAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwogICAgIEZha2VMYXllclJl
bmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFk
b3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXll
clJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKQEAgLTMxMSw3ICszMTEsNyBAQCBwcml2
YXRlOgogCiBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldp
dGhRdWlja2x5TG9zdENvbnRleHREb2VzTm90QXNzZXJ0KQogewotICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW1DbGllbnQgbW9ja0NsaWVudDsKKyAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBt
b2NrQ2xpZW50OwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNo
cm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBMb3NlQ29udGV4dE9uRmlyc3RH
ZXRDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCAx
NzE3M2MwYTViMzdkMWI4ZWIwOGQ2Y2IxODJhZDFkMDc0ZTU0ODZlLi5kNzFiOGNlNDVhM2VhMzAz
MjQ0MmY4NjQ4OTVkNDUzMGRlNmE3ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcApAQCAtNTQsNiArNTQsNyBAQCBURVNUKFRl
eHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAgICAgTW9ja0NvbnRleHQmIG1vY2tDb250
ZXh0ID0gKnN0YXRpY19jYXN0PE1vY2tDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworICAgIFJlZlB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKGNvbnRleHQpOwogCiAgICAgewogICAgICAgICBJblNlcXVlbmNlIHNlcXVlbmNlOwpAQCAt
NzksNyArODAsNyBAQCBURVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkp
CiAgICAgaW50IGRlc3RUZXh0dXJlSWQgPSAyOwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7
CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcjo6Y3JlYXRlKGNvbnRleHQpKTsKLSAgICBjb3BpZXItPmNvcHlUZXh0dXJl
KGNvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7Cisg
ICAgY29waWVyLT5jb3B5VGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwg
ZGVzdFRleHR1cmVJZCwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApp
bmRleCA4MGIwOTlmMTlmYmYzNTNmMmE1MjYwNzJhNmYxNjRiZDY2MzUyNTk0Li5mMGMxMzEzZjkw
ZWU3NTJkNGMyMjE3OGFkMzk0NDc4YjI1NzYxNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTY3Mywx
MiArNjczLDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21Q
cmVwYXJlKQogICAgIEZha2VUZXh0dXJlQ29waWVyIGZha2VDb3BpZXI7CiAgICAgRmFrZVRleHR1
cmVVcGxvYWRlciBmYWtlVXBsb2FkZXI7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcygpKTsKKyAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNj
Q29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBw
YWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3Is
ICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShj
Y0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRl
ciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTY5MSw3ICs2OTIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVG
cm9tUHJlcGFyZSkKICAgICAvLyBJbnZva2UgdXBkYXRlTGF5ZXJSZWN0IGFnYWluLiBBcyB0aGUg
bGF5ZXIgaXMgdmFsaWQgdXBkYXRlTGF5ZXJSZWN0IHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAg
ICAgLy8gdGhlIExheWVyVGV4dHVyZVVwZGF0ZXIuCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRh
dGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9h
ZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxs
b2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VR
KDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKQEAgLTY5
OSwxMiArNzAwLDEyIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZy
b21QcmVwYXJlKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0
VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1MCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAg
ICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3Is
ICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShj
Y0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRl
ciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBi
ZSBpbnZhbGlkIGFzIHVwZGF0ZUxheWVyUmVjdCBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5
ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
Ci0gICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtl
Q29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRl
eHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAw
MCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlQ291bnQoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>