<?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>88132</bug_id>
          
          <creation_ts>2012-06-01 13:49:27 -0700</creation_ts>
          <short_desc>[chromium] Make LayerRendererChromium use RenderPasses instead of RenderSurfaces</short_desc>
          <delta_ts>2012-06-04 15:59:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>87920</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>rniwa</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>zlieber</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>639692</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-01 13:49:27 -0700</bug_when>
    <thetext>[chromium] Make LayerRendererChromium use RenderPasses instead of RenderSurfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639746</commentid>
    <comment_count>1</comment_count>
      <attachid>145381</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-01 14:51:25 -0700</bug_when>
    <thetext>Created attachment 145381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639747</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-01 14:53:16 -0700</bug_when>
    <thetext>This is going to conflict pretty nicely with the CCRenderer change, waiting for it to land then will rebase.

I had some discussions about what to call the coordinate space that is &quot;physical pixels in the framebuffer, without the viewport/window matrices applied&quot;. We settled on calling this the &quot;framebuffer space&quot;. We&apos;ve called it something like &quot;surface content space&quot; in the past, but that would like a name that does not refer to surfaces, and that isn&apos;t super confusing in the face of device-scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639796</commentid>
    <comment_count>3</comment_count>
      <attachid>145392</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-01 15:42:49 -0700</bug_when>
    <thetext>Created attachment 145392
Patch

rebased onto aelias&apos; patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639933</commentid>
    <comment_count>4</comment_count>
      <attachid>145423</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-01 19:50:55 -0700</bug_when>
    <thetext>Created attachment 145423
Patch

here&apos;s a patch that applies on ToT for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640030</commentid>
    <comment_count>5</comment_count>
      <attachid>145445</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-02 09:06:03 -0700</bug_when>
    <thetext>Created attachment 145445
Patch

heh this patch can&apos;t win :p rebased onto trunk again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640063</commentid>
    <comment_count>6</comment_count>
      <attachid>145445</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-02 11:26:49 -0700</bug_when>
    <thetext>Comment on attachment 145445
Patch

Nice.  R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640064</commentid>
    <comment_count>7</comment_count>
      <attachid>145445</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-02 11:31:15 -0700</bug_when>
    <thetext>Comment on attachment 145445
Patch

thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640065</commentid>
    <comment_count>8</comment_count>
      <attachid>145445</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-02 11:53:40 -0700</bug_when>
    <thetext>Comment on attachment 145445
Patch

Rejecting attachment 145445 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:
, const WebKit::WebFilterOperations&amp;, const WebKit::WebFilterOperations&amp;, unsigned int)&apos;:
Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.cpp:46: error: &apos;m_layer&apos; was not declared in this scope
  CXX(target) out/Debug/obj.target/webcore_platform/Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.o
make: *** [out/Debug/obj.target/webcore_platform/Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/12864893</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640668</commentid>
    <comment_count>9</comment_count>
      <attachid>145603</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-04 10:29:49 -0700</bug_when>
    <thetext>Created attachment 145603
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640675</commentid>
    <comment_count>10</comment_count>
      <attachid>145603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 10:40:37 -0700</bug_when>
    <thetext>Comment on attachment 145603
Patch for landing

Rejecting attachment 145603 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:
uad::CCRenderPassDrawQuad(const WebCore::CCSharedQuadState*, const WebCore::IntRect&amp;, const WebCore::CCRenderPass*, bool, const WebKit::WebFilterOperations&amp;, const WebKit::WebFilterOperations&amp;, unsigned int)&apos;:
Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.cpp:45: error: &apos;m_layer&apos; was not declared in this scope
make: *** [out/Debug/obj.target/webcore_platform/Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/12898271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640680</commentid>
    <comment_count>11</comment_count>
      <attachid>145605</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-04 10:50:10 -0700</bug_when>
    <thetext>Created attachment 145605
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640777</commentid>
    <comment_count>12</comment_count>
      <attachid>145605</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 12:53:59 -0700</bug_when>
    <thetext>Comment on attachment 145605
Patch for landing

Clearing flags on attachment: 145605

Committed r119419: &lt;http://trac.webkit.org/changeset/119419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640778</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 12:54:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640864</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 14:57:16 -0700</bug_when>
    <thetext>It appears that this patch broke GpuFeatureTest.RafNoDamage:

[12655:-1597528768:0604/134340:2263335561903:ERROR:trace_event_analyzer.cc(827)] Not enough events: 0
../../chrome/test/gpu/gpu_feature_browsertest.cc:425: Failure
Value of: trace_analyzer::GetRateStats(events, &amp;stats, &amp;stats_options)
  Actual: false
Expected: true
[12655:-1597528768:0604/134340:2263335777689:INFO:gpu_feature_browsertest.cc(427)] Number of RAFs: 0 Mean: 6.36069e-307 Min: -1.99068 Max: 2.56952e-256 StdDev: 2.57917e-256
../../chrome/test/gpu/gpu_feature_browsertest.cc:435: Failure
Expected: (stats.mean_us) &gt; (15000.0), actual: 6.36069e-307 vs 15000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640891</commentid>
    <comment_count>15</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-04 15:18:03 -0700</bug_when>
    <thetext>Can you explain what that output means?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640898</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 15:25:09 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Can you explain what that output means?

I don&apos;t know anything about this test :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640920</commentid>
    <comment_count>17</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-04 15:47:45 -0700</bug_when>
    <thetext>Bisecting locally it appears to be bug #88003 that causes the failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640935</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 15:59:17 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Bisecting locally it appears to be bug #88003 that causes the failure.

Thanks for the help!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145381</attachid>
            <date>2012-06-01 14:51:25 -0700</date>
            <delta_ts>2012-06-01 15:42:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88132-20120601175124.patch</filename>
            <type>text/plain</type>
            <size>79155</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY5MTE5M2FhNTQzZmM0
OWQ1MzY2ZGIzMTdkZTVlYWE1NWE1NmZmYS4uZjdmMzY5N2I4ZGM1ZmVjNGVlYTFkZDEyNGFlMDMw
YWNjZjQ4ZWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wNi0wMSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1h
a2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQYXNzZXMgaW5zdGVhZCBvZiBSZW5k
ZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGlzIHBhcnRseSByZW5hbWluZywgcGFydGx5IG1vdmluZyBkYXRhIGludG8g
Q0NSZW5kZXJQYXNzCisgICAgICAgIGFuZCBDQ1JlbmRlclBhc3NEcmF3UXVhZC4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtIHNob3VsZCBhY2NlcHQgYXMgaW5wdXQKKyAgICAgICAgYSBzZXQgb2YgUmVu
ZGVyUGFzc2VzIGFuZCB0aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBkcmF3aW5nLiBJdAor
ICAgICAgICBzaG91bGQgaGF2ZSBubyBub3Rpb24gb2YgUmVuZGVyU3VyZmFjZXMgYXQgYWxsLgor
CisgICAgICAgIEZpcnN0LCB3aGF0IGlzbid0IGRvbmU6IFJlbmRlclN1cmZhY2VzIHN0aWxsIGhv
bGQgdGhlIHRleHR1cmVzCisgICAgICAgIHdoZXJlIFJlbmRlclBhc3NlcyBhcmUgZHJhd24gdG8v
ZnJvbSwgc28gdGhhdCB0aGVzZSB0ZXh0dXJlcyBjYW4KKyAgICAgICAgcGVyc2lzdCBhY3Jvc3Mg
ZnJhbWVzLiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgT3Ro
ZXJ3aXNlLCB0aGlzIGNvbXBsZXRlbHkgcmVtb3ZlcyB0aGUgY29uY2VwdCBvZiBSZW5kZXJTdXJm
YWNlIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJDaHJvbWl1bSBhbmQgdGhlIENDRHJhd1F1YWQs
IHJlcGxhY2luZyBpdCB3aXRoIFJlbmRlclBhc3MuCisgICAgICAgIFRoZSAicmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyIiBpcyByZW5hbWVkIHRvIHRoZSAiaW1wbFRleHR1cmVNYW5hZ2VyIgor
ICAgICAgICBhbmQgbGlrZS13aXNlIGZvciB0aGUgVGV4dHVyZUFsbG9jYXRvciwgYXMgdGhlc2Ug
YXJlIG5vdCB1c2VkCisgICAgICAgIGV4Y2x1c2l2ZWx5IGZvciByZW5kZXIgc3VyZmFjZXMgKHBh
c3NlcyksIGFuZCBhIHRleHR1cmUgbWFuYWdlciBmb3IKKyAgICAgICAgcmVuZGVyIHBhc3NlcyB0
aGF0IGRvZXMgbm90IHJlcXVpcmUgYSBSZW5kZXJTdXJmYWNlKiB3aWxsIGJlIHRoZSBmb2N1cwor
ICAgICAgICBvZiBmdXR1cmUgY2hhbmdlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyUGFzc1RleHR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVn
aW5EcmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZm
ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXND
dXJyZW50UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNz
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzTWFza1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW1wbFRleHR1cmVNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW1wbFRleHR1cmVBbGxvY2F0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NEcmF3UXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmZy
YW1lYnVmZmVyT3V0cHV0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NE
cmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFk
OjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFk
LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzc0RyYXdRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpyZW5kZXJQYXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjppc1JlcGxpY2EpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hc2tUZXh0dXJlSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnN1cmZhY2VEYW1hZ2VSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpmaWx0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVCYWNrZ3JvdW5k
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1
cmVzKToKKwogMjAxMi0wNi0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExheW91dCBub3QgdXBkYXRlZCBhZnRlciBzZXR0aW5nIC13ZWJraXQtbGluZS1jbGFt
cCB0byBub25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDkzNjFhNDg1YjhmYjUxZDBi
ZTcwYjhhZDdmZTg1ZDZlNTM1NGU0NjAuLmQ5MjJjZGY4MWExOGIzNDM3NTg4N2ZiMzQ4YTU2YWZk
ZTQ0NzY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTItMDYtMDEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBNYWtlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB1c2UgUmVuZGVyUGFzc2VzIGlu
c3RlYWQgb2YgUmVuZGVyU3VyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAg
ICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQ6OkZha2VMYXllclJlbmRlcmVy
Q2hyb21pdW1DbGllbnQpOgorICAgICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVu
dDo6cm9vdFJlbmRlclBhc3MpOgorICAgICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNs
aWVudCk6CisgICAgICAgIChURVNUX0YpOgorCiAyMDEyLTA2LTAxICBQZXRlciBCZXZlcmxvbyAg
PHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMThhNTE0ZjI1MzMxMTMyMzI0NDM4YTNhMWIxNzgzMzA2MDk5
ZDZmNy4uMmMxMGE3ZDRmZDNkNzNmZWM0NDgwN2RhYTAyMDZlYTYxZThhMTk1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzczMSwxMCArMzczMSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2VGaWx0ZXJzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYWNhY2MzNTNiYTNmZTczMzI4YTEyM2ZiZjgyZWNl
YTBjOTE5Zjk5MC4uODEwMmEwYmM3NDY2OTQ3OGE4MGQ2Y2JiODVmMGY3YWI4Njg0NWU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCkBAIC02Myw3ICs2Miw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5oIgogI2luY2x1ZGUgImNjL0NDU29saWRD
b2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKQEAgLTIz
MCwxMSArMjI5LDExIEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiAgICAgOiBtX2Ns
aWVudChjbGllbnQpCi0gICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCisgICAgLCBtX2N1
cnJlbnRSZW5kZXJQYXNzKDApCiAgICAgLCBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSgwKQogICAg
ICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
LSAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKKyAgICAsIG1fZGVmYXVsdFJlbmRlclBh
c3MoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYs
IDEuMGYsIDEuMGYpKQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1f
aXNGcmFtZWJ1ZmZlckRpc2NhcmRlZChmYWxzZSkKQEAgLTM2MCw3ICszNTksNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0VmlzaWJsZShi
b29sIHZpc2libGUpCiB7CiAgICAgaWYgKCF2aXNpYmxlKQotICAgICAgICByZWxlYXNlUmVuZGVy
U3VyZmFjZVRleHR1cmVzKCk7CisgICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsK
IAogICAgIC8vIFRPRE86IFJlcGxhY2Ugc2V0VmlzaWJpbGl0eUNIUk9NSVVNIHdpdGggYW4gZXh0
ZW5zaW9uIHRvIGV4cGxpY2l0bHkgbWFuYWdlIGZyb250L2JhY2tidWZmZXJzCiAgICAgLy8gY3Ji
dWcuY29tLzExNjA0OQpAQCAtMzcwLDIyICszNjksMjIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIH0KIAotdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKQordm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKQogewotICAgIGlm
IChtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcikKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMobV9yZW5kZXJTdXJmYWNl
VGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgaWYgKG1faW1wbFRleHR1cmVNYW5hZ2VyKQor
ICAgICAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyht
X2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnZpZXdwb3J0Q2hhbmdlZCgpCiB7CiAgICAgbV9pc1ZpZXdwb3J0Q2hhbmdlZCA9IHRy
dWU7CiAKLSAgICAvLyBSZXNldCB0aGUgY3VycmVudCByZW5kZXIgc3VyZmFjZSB0byBmb3JjZSBh
biB1cGRhdGUgb2YgdGhlIHZpZXdwb3J0IGFuZAotICAgIC8vIHByb2plY3Rpb24gbWF0cml4IG5l
eHQgdGltZSB1c2VSZW5kZXJTdXJmYWNlIGlzIGNhbGxlZC4KLSAgICBtX2N1cnJlbnRSZW5kZXJT
dXJmYWNlID0gMDsKKyAgICAvLyBSZXNldCB0aGUgY3VycmVudCBSZW5kZXJQYXNzIHRvIGZvcmNl
IGFuIHVwZGF0ZSBvZiB0aGUgdmlld3BvcnQgYW5kCisgICAgLy8gcHJvamVjdGlvbiBtYXRyaXgg
bmV4dCB0aW1lIHVzZVJlbmRlclBhc3MgaXMgY2FsbGVkLgorICAgIG1fY3VycmVudFJlbmRlclBh
c3MgPSAwOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJTdXJm
YWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSwgQ0NSZW5kZXJTdXJmYWNlKiByb290
UmVuZGVyU3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkKK3ZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhclJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
KiByZW5kZXJQYXNzLCBjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzLCBjb25zdCBG
bG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkKIHsKICAgICAvLyBOb24tcm9vdCBsYXll
cnMgc2hvdWxkIGNsZWFyIHRoZWlyIGVudGlyZSBjb250ZW50cyB0byB0cmFuc3BhcmVudC4gT24g
REVCVUcgYnVpbGRzLCB0aGUgcm9vdCBsYXllcgogICAgIC8vIGlzIGNsZWFyZWQgdG8gYmx1ZSB0
byBlYXNpbHkgc2VlIHJlZ2lvbnMgdGhhdCB3ZXJlIG5vdCBkcmF3biBvbiB0aGUgc2NyZWVuLiBJ
ZiB3ZQpAQCAtMzkzLDM2ICszOTIsMzYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNs
ZWFyUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UsIEMKICAgICAv
LyBjbGVhciB0aGUgZGFtYWdlZCByZWdpb24sIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5
IGNsZWFyIHVuLWNoYW5nZWQgcG9ydGlvbnMKICAgICAvLyBvZiB0aGUgc2NyZWVuLgogCi0gICAg
aWYgKHJlbmRlclN1cmZhY2UgIT0gcm9vdFJlbmRlclN1cmZhY2UpCisgICAgaWYgKHJlbmRlclBh
c3MgIT0gcm9vdFJlbmRlclBhc3MpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
Y2xlYXJDb2xvcigwLCAwLCAwLCAwKSk7CiAgICAgZWxzZQogICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMSwgMSkpOwogCiAgICAgaWYgKG1fY2FwYWJp
bGl0aWVzLnVzaW5nUGFydGlhbFN3YXApCi0gICAgICAgIHNldFNjaXNzb3JUb1JlY3QoZW5jbG9z
aW5nSW50UmVjdChzdXJmYWNlRGFtYWdlUmVjdCkpOworICAgICAgICBzZXRTY2lzc29yVG9SZWN0
KGVuY2xvc2luZ0ludFJlY3QoZnJhbWVidWZmZXJEYW1hZ2VSZWN0KSk7CiAgICAgZWxzZQogICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6
OlNDSVNTT1JfVEVTVCkpOwogCiAjaWYgZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKHJlbmRlclN1
cmZhY2UgIT0gcm9vdFJlbmRlclN1cmZhY2UpCisgICAgaWYgKHJlbmRlclBhc3MgIT0gcm9vdFJl
bmRlclBhc3MpCiAjZW5kaWYKICAgICAgICAgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CiB9CiAKLXZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1cmZhY2UqIGRl
ZmF1bHRSZW5kZXJTdXJmYWNlKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJh
d2luZ0ZyYW1lKENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MpCiB7CiAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzIG9uY2UgZnJhbWVidWZmZXIgaXMgYXV0b21hdGljYWxseSByZWNyZWF0ZWQg
b24gZmlyc3QgdXNlCiAgICAgZW5zdXJlRnJhbWVidWZmZXIoKTsKIAotICAgIG1fZGVmYXVsdFJl
bmRlclN1cmZhY2UgPSBkZWZhdWx0UmVuZGVyU3VyZmFjZTsKLSAgICBBU1NFUlQobV9kZWZhdWx0
UmVuZGVyU3VyZmFjZSk7CisgICAgbV9kZWZhdWx0UmVuZGVyUGFzcyA9IHJvb3RSZW5kZXJQYXNz
OworICAgIEFTU0VSVChtX2RlZmF1bHRSZW5kZXJQYXNzKTsKIAogICAgIHNpemVfdCBjb250ZW50
c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRNZW1v
cnlVc2VCeXRlcygpOwogICAgIHNpemVfdCBtYXhMaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpoaWdo
TGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CiAgICAgc2l6ZV90IG5ld0xpbWl0ID0gKG1heExp
bWl0ID4gY29udGVudHNNZW1vcnlVc2VCeXRlcykgPyBtYXhMaW1pdCAtIGNvbnRlbnRzTWVtb3J5
VXNlQnl0ZXMgOiAwOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRNYXhN
ZW1vcnlMaW1pdEJ5dGVzKG5ld0xpbWl0KTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0
TWF4TWVtb3J5TGltaXRCeXRlcyhuZXdMaW1pdCk7CiAKICAgICBpZiAodmlld3BvcnRTaXplKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC00NTUsMjIgKzQ1NCwyMSBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZG9Ob09wKCkKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKIHsKLSAg
ICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJQYXNzLT50YXJnZXRTdXJm
YWNlKCk7Ci0gICAgaWYgKCF1c2VSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpKQorICAgIGlm
ICghdXNlUmVuZGVyUGFzcyhyZW5kZXJQYXNzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2xl
YXJSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UsIHJl
bmRlclBhc3MtPnN1cmZhY2VEYW1hZ2VSZWN0KCkpOworICAgIGNsZWFyUmVuZGVyUGFzcyhyZW5k
ZXJQYXNzLCBtX2RlZmF1bHRSZW5kZXJQYXNzLCByZW5kZXJQYXNzLT5zdXJmYWNlRGFtYWdlUmVj
dCgpKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0ID0gcmVuZGVyUGFzcy0+cXVh
ZExpc3QoKTsKICAgICBmb3IgKENDUXVhZExpc3Q6OmNvbnN0QmFja1RvRnJvbnRJdGVyYXRvciBp
dCA9IHF1YWRMaXN0LmJhY2tUb0Zyb250QmVnaW4oKTsgaXQgIT0gcXVhZExpc3QuYmFja1RvRnJv
bnRFbmQoKTsgKytpdCkKICAgICAgICAgZHJhd1F1YWQoaXQtPmdldCgpLCByZW5kZXJQYXNzLT5z
dXJmYWNlRGFtYWdlUmVjdCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURh
bWFnZVJlY3QpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NE
cmF3UXVhZCogcXVhZCwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7
CiAgICAgSW50UmVjdCBzY2lzc29yUmVjdDsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdQ
YXJ0aWFsU3dhcCkgewotICAgICAgICBGbG9hdFJlY3QgY2xpcEFuZERhbWFnZVJlY3QgPSBzdXJm
YWNlRGFtYWdlUmVjdDsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBBbmREYW1hZ2VSZWN0ID0gZnJh
bWVidWZmZXJEYW1hZ2VSZWN0OwogICAgICAgICBpZiAoIXF1YWQtPmNsaXBSZWN0KCkuaXNFbXB0
eSgpKQogICAgICAgICAgICAgY2xpcEFuZERhbWFnZVJlY3QuaW50ZXJzZWN0KHF1YWQtPmNsaXBS
ZWN0KCkpOwogICAgICAgICBzY2lzc29yUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoY2xpcEFuZERh
bWFnZVJlY3QpOwpAQCAtNTAyLDggKzUwMCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25zdCBGbG9hdFJlY3QmIHN1CiAg
ICAgY2FzZSBDQ0RyYXdRdWFkOjpJT1N1cmZhY2VDb250ZW50OgogICAgICAgICBkcmF3SU9TdXJm
YWNlUXVhZChxdWFkLT50b0lPU3VyZmFjZURyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENDRHJhd1F1YWQ6OlJlbmRlclN1cmZhY2U6Ci0gICAgICAgIGRyYXdSZW5kZXJTdXJm
YWNlUXVhZChxdWFkLT50b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpKTsKKyAgICBjYXNlIENDRHJh
d1F1YWQ6OlJlbmRlclBhc3M6CisgICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChxdWFkLT50b1Jl
bmRlclBhc3NEcmF3UXVhZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDQ0RyYXdRdWFk
OjpTb2xpZENvbG9yOgogICAgICAgICBkcmF3U29saWRDb2xvclF1YWQocXVhZC0+dG9Tb2xpZENv
bG9yRHJhd1F1YWQoKSk7CkBAIC01ODcsNyArNTg1LDcgQEAgc3RhdGljIGlubGluZSBTa0JpdG1h
cCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25z
dAogICAgIHJldHVybiBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0ZXJzLCBzb3Vy
Y2VUZXh0dXJlLT50ZXh0dXJlSWQoKSwgc291cmNlVGV4dHVyZS0+c2l6ZSgpLCBmaWx0ZXJDb250
ZXh0LmdldCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3Jv
dW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogcXVhZCwgY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtKQordm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclBh
c3NEcmF3UXVhZCogcXVhZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRz
RGV2aWNlVHJhbnNmb3JtKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGRyYXdzIGEgYmFja2dyb3Vu
ZCBmaWx0ZXIsIHdoaWNoIGFwcGxpZXMgYSBmaWx0ZXIgdG8gYW55IHBpeGVscyBiZWhpbmQgdGhl
IHF1YWQgYW5kIHNlZW4gdGhyb3VnaCBpdHMgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgYWxnb3Jp
dGhtIHdvcmtzIGFzIGZvbGxvd3M6CkBAIC02MDMsMTMgKzYwMSwxMyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkKgogICAgIC8vCiAgICAgLy8gUGl4ZWwgY29waWVzIGluIHRoaXMgYWxnb3JpdGht
IG9jY3VyIGF0IHN0ZXBzIDIsIDMsIDQsIGFuZCA1LgogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBk
cmF3aW5nU3VyZmFjZSA9IHF1YWQtPmxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsKKyAgICBDQ1Jl
bmRlclN1cmZhY2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRT
dXJmYWNlKCk7CiAgICAgaWYgKHF1YWQtPmJhY2tncm91bmRGaWx0ZXJzKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ugb25seSBhbGxvdyBiYWNrZ3JvdW5k
IGZpbHRlcnMgb24gdGhlIHJvb3QgcmVuZGVyIHN1cmZhY2UgYmVjYXVzZSBvdGhlciBzdXJmYWNl
cyBtYXkgY29udGFpbgogICAgIC8vIHRyYW5zbHVjZW50IHBpeGVscywgYW5kIHRoZSBjb250ZW50
cyBiZWhpbmQgdGhvc2UgdHJhbnNsdWNlbnQgcGl4ZWxzIHdvdWxkbid0IGhhdmUgdGhlIGZpbHRl
ciBhcHBsaWVkLgotICAgIGlmICghaXNDdXJyZW50UmVuZGVyU3VyZmFjZShtX2RlZmF1bHRSZW5k
ZXJTdXJmYWNlKSkKKyAgICBpZiAoIWlzQ3VycmVudFJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVy
UGFzcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBEbyBhIHNpbmdsZSByZWFk
YmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgcmVwbGljYSBhbmQgY2FjaGUgdGhlIGZpbHRl
cmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1cmVzIGFyZSBub3QgcmV1c2VkKS4KQEAgLTYy
MCw5ICs2MTgsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRG
aWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAgIGRldmljZVJlY3QubW92
ZSgtbGVmdCwgLXRvcCk7CiAgICAgZGV2aWNlUmVjdC5leHBhbmQobGVmdCArIHJpZ2h0LCB0b3Ag
KyBib3R0b20pOwogCi0gICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZS0+Y29udGVudFJlY3QoKSk7CisgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50
UmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkpOwogCi0gICAgT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOworICAgIE93blB0cjxNYW5h
Z2VkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3VuZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3Jl
YXRlKG1faW1wbFRleHR1cmVNYW5hZ2VyLmdldCgpKTsKICAgICBpZiAoIWdldEZyYW1lYnVmZmVy
VGV4dHVyZShkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSwgZGV2aWNlUmVjdCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNjM2LDI4ICs2MzQsMjggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZCoKICAgICBpZiAoIWRyYXdpbmdTdXJmYWNlLT5wcmVwYXJlQmFja2dyb3VuZFRleHR1cmUodGhp
cykpCiAgICAgICAgIHJldHVybjsKIAotICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0UmVuZGVy
U3VyZmFjZSA9IG1fY3VycmVudFJlbmRlclN1cmZhY2U7CisgICAgY29uc3QgQ0NSZW5kZXJQYXNz
KiB0YXJnZXRSZW5kZXJQYXNzID0gbV9jdXJyZW50UmVuZGVyUGFzczsKICAgICBpZiAodXNlTWFu
YWdlZFRleHR1cmUoZHJhd2luZ1N1cmZhY2UtPmJhY2tncm91bmRUZXh0dXJlKCksIHF1YWQtPnF1
YWRSZWN0KCkpKSB7CiAgICAgICAgIC8vIENvcHkgdGhlIHJlYWRiYWNrIHBpeGVscyBmcm9tIGRl
dmljZSB0byB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlIGZvciB0aGUgc3VyZmFjZS4KLSAgICAgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtOwotICAgICAg
ICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWQtPnF1YWRSZWN0KCkud2lk
dGgoKSAvIDIuMCwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgICAgIGRl
dmljZVRvU3VyZmFjZVRyYW5zZm9ybS5zY2FsZTNkKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSwg
cXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSwgMSk7Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRy
YW5zZm9ybS5tdWx0aXBseShjb250ZW50c0RldmljZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwotICAg
ICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3Qud2lkdGgo
KSAvIDIuMCwgZGV2aWNlUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgICAgIGRldmljZVRvU3Vy
ZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpKTsK
KyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5z
Zm9ybTsKKyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUocXVh
ZC0+cXVhZFJlY3QoKS53aWR0aCgpIC8gMi4wLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpIC8g
Mi4wKTsKKyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS5zY2FsZTNkKHF1YWQt
PnF1YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSwgMSk7CisgICAg
ICAgIGRldmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0ubXVsdGlwbHkoY29udGVudHNEZXZpY2VU
cmFuc2Zvcm0uaW52ZXJzZSgpKTsKKyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9y
bS50cmFuc2xhdGUoZGV2aWNlUmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VSZWN0LmhlaWdodCgp
IC8gMi4wKTsKKyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUo
ZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpKTsKIAotICAgICAgICBjb3B5VGV4dHVyZVRv
RnJhbWVidWZmZXIoZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0
LnNpemUoKSwgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgY29weVRleHR1cmVU
b0ZyYW1lYnVmZmVyKGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVj
dC5zaXplKCksIGRldmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0pOwogCi0gICAgICAgIHVzZVJl
bmRlclN1cmZhY2UodGFyZ2V0UmVuZGVyU3VyZmFjZSk7CisgICAgICAgIHVzZVJlbmRlclBhc3Mo
dGFyZ2V0UmVuZGVyUGFzcyk7CiAgICAgfQogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBx
dWFkKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25z
dCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKIHsKICAgICAvLyBUaGUgcmVwbGljYSBpcyBh
bHdheXMgZHJhd24gZmlyc3QsIHNvIGZyZWUgYWZ0ZXIgZHJhd2luZyB0aGUgY29udGVudHMuCiAg
ICAgYm9vbCBzaG91bGRSZWxlYXNlVGV4dHVyZXMgPSAhcXVhZC0+aXNSZXBsaWNhKCk7CiAKLSAg
ICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVy
U3VyZmFjZSgpOworICAgIENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5y
ZW5kZXJQYXNzKCktPnRhcmdldFN1cmZhY2UoKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IHJlbmRlclRyYW5zZm9ybSA9IHF1YWQtPmxheWVyVHJhbnNmb3JtKCk7CiAgICAgLy8gQXBw
bHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRl
bmRlZCBzaXplLgpAQCAtNzE1LDcgKzcxMyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAg
ICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uID0gLTE7CiAgICAgaW50IHNoYWRlckFscGhhTG9j
YXRpb24gPSAtMTsKICAgICBpZiAodXNlQUEgJiYgdXNlTWFzaykgewotICAgICAgICBjb25zdCBS
ZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbUFBKCk7CisgICAgICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKiBwcm9ncmFt
ID0gcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEoKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNh
bXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTcyNSw3ICs3MjMsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkKgogICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRl
eFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24g
PSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKTsKICAgICB9IGVsc2Ug
aWYgKCF1c2VBQSAmJiB1c2VNYXNrKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VNYXNr
UHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOworICAgICAgICBj
b25zdCBSZW5kZXJQYXNzTWFza1Byb2dyYW0qIHByb2dyYW0gPSByZW5kZXJQYXNzTWFza1Byb2dy
YW0oKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZv
cm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAK
QEAgLTczMyw3ICs3MzEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRl
clN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAgICAgICBzaGFk
ZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9u
KCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmFscGhhTG9jYXRpb24oKTsKICAgICB9IGVsc2UgaWYgKHVzZUFBICYmICF1c2VNYXNrKSB7
Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJT
dXJmYWNlUHJvZ3JhbUFBKCk7CisgICAgICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtQUEqIHBy
b2dyYW0gPSByZW5kZXJQYXNzUHJvZ3JhbUFBKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5z
YW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCkBAIC03NDIsNyArNzQwLDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZCoKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0
ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9u
ID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZVByb2dyYW0qIHByb2dyYW0gPSByZW5kZXJT
dXJmYWNlUHJvZ3JhbSgpOworICAgICAgICBjb25zdCBSZW5kZXJQYXNzUHJvZ3JhbSogcHJvZ3Jh
bSA9IHJlbmRlclBhc3NQcm9ncmFtKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwogCkBAIC0xMDc2LDggKzEwNzQsNyBAQCBib29sIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Y29weUZyYW1lVG9UZXh0dXJlcyhjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1
YWQpCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKGNvbnN0
IENDVmlkZW9EcmF3UXVhZCogcXVhZCwgY29uc3Qgdm9pZCogcGxhbmUsIGludCBpbmRleCkKIHsK
ICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0dXJlJiB0ZXh0dXJlID0gcXVhZC0+dGV4dHVyZXMo
KVtpbmRleF07Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yID0gcmVuZGVyU3VyZmFj
ZVRleHR1cmVBbGxvY2F0b3IoKTsKLSAgICB0ZXh0dXJlLm1fdGV4dHVyZS0+YmluZFRleHR1cmUo
Y29udGV4dCgpLCBhbGxvY2F0b3IpOworICAgIHRleHR1cmUubV90ZXh0dXJlLT5iaW5kVGV4dHVy
ZShjb250ZXh0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogICAgIEdDM0RlbnVt
IGZvcm1hdCA9IHRleHR1cmUubV90ZXh0dXJlLT5mb3JtYXQoKTsKICAgICBJbnRTaXplIGRpbWVu
c2lvbnMgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpOwogCkBAIC0xMjEyLDEyICsxMjA5LDEy
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3BsYXkoTWFuYWdl
ZFRleHR1cmUqIGh1ZFRleHR1cmUsIGNvbnN0CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250
ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwotICAgIHVzZVJl
bmRlclN1cmZhY2UobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSk7CisgICAgdXNlUmVuZGVyUGFzcyht
X2RlZmF1bHRSZW5kZXJQYXNzKTsKIAogICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSog
cHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwogICAgIEFTU0VSVChwcm9ncmFtICYm
IHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBodWRUZXh0
dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRleHQuZ2V0KCksIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yKCkpOworICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKG1fY29udGV4dC5nZXQoKSwg
bV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxv
Y2F0aW9uKCksIDApKTsKIApAQCAtMTIzNCwxNCArMTIzMSwxNCBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQp
KTsKIAotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0
dXJlcygpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygp
OwogCiAgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2NvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7CiAgICAgc2l6ZV90IHJlY2xhaW1M
aW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7
CiAgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4gY29udGVudHNNZW1v
cnlVc2VCeXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwOwot
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1p
dEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdl
ci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7Ci0gICAgbV9yZW5kZXJTdXJm
YWNlVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0UHJl
ZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CisgICAgbV9pbXBsVGV4dHVy
ZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQpOworICAgIG1faW1w
bFRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9pbXBsVGV4dHVyZUFsbG9j
YXRvci5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4
KGZsb2F0KiBmbGF0dGVuZWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtKQpAQCAt
MTMwMSw3ICsxMjk4LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJl
ZFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXcKIAogdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBj
b25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3
TWF0cml4KQogewotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiBwcm9ncmFtID0gcmVu
ZGVyU3VyZmFjZVByb2dyYW0oKTsKKyAgICBjb25zdCBSZW5kZXJQYXNzUHJvZ3JhbSogcHJvZ3Jh
bSA9IHJlbmRlclBhc3NQcm9ncmFtKCk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgdGV4dHVyZUlkKSk7CkBAIC0xNDQyLDQ5ICsxNDM5LDQ3IEBAIGJvb2wgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUsIGNvbnN0CiAgICAgaWYgKCF0ZXh0dXJlLT5yZXNlcnZlKGRldmljZVJlY3Quc2l6ZSgpLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGV4
dHVyZS0+YmluZFRleHR1cmUobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJl
QWxsb2NhdG9yLmdldCgpKTsKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRleHQuZ2V0
KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRo
KCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVudFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJT
dXJmYWNlKiByZW5kZXJTdXJmYWNlKQorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3Vy
cmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogewotICAgIC8v
IElmIHJlbmRlclN1cmZhY2UgaXMgMCwgd2UgY2FuJ3QgdGVsbCBpZiB3ZSBhcmUgYWxyZWFkeSB1
c2luZyBpdCwgc2luY2UgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSBpcwotICAgIC8vIGluaXRpYWxp
emVkIHRvIDAuCi0gICAgcmV0dXJuIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gcmVuZGVyU3Vy
ZmFjZSAmJiAhbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CisgICAgcmV0dXJuIG1fY3VycmVudFJl
bmRlclBhc3MgPT0gcmVuZGVyUGFzcyAmJiAhbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CiB9CiAK
LWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3Vy
ZmFjZSogcmVuZGVyU3VyZmFjZSkKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5k
ZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKIHsKLSAgICBtX2N1cnJlbnRS
ZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKKyAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0g
cmVuZGVyUGFzczsKICAgICBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSA9IDA7CiAKLSAgICBpZiAo
cmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKSB7CisgICAgaWYgKHJlbmRl
clBhc3MgPT0gbV9kZWZhdWx0UmVuZGVyUGFzcykgewogICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IDApKTsKLSAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5jb250ZW50
UmVjdCgpLCB0cnVlKTsKKyAgICAgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChyZW5kZXJQYXNz
LT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmICghcmVuZGVyU3VyZmFjZS0+cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0
aGlzKSkKKyAgICBpZiAoIXJlbmRlclBhc3MtPnRhcmdldFN1cmZhY2UoKS0+cHJlcGFyZUNvbnRl
bnRzVGV4dHVyZSh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGJp
bmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShyZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKSwg
cmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZShyZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCktPmNvbnRlbnRzVGV4dHVyZSgp
LCByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiB9CiAKIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQogewotICAgIG1fY3VycmVudFJlbmRlclN1
cmZhY2UgPSAwOworICAgIG1fY3VycmVudFJlbmRlclBhc3MgPSAwOwogICAgIG1fY3VycmVudE1h
bmFnZWRUZXh0dXJlID0gdGV4dHVyZTsKIAogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1Rl
eHR1cmUodGV4dHVyZSwgdmlld3BvcnRSZWN0KTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgZnJhbWVidWZmZXJSZWN0KQogewogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZz
Y3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKLSAgICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSwgbV9p
bXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAg
ICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVU
RSkgewpAQCAtMTQ5Myw3ICsxNDg4LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJp
bmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY28KICAgICB9
CiAjZW5kaWYKIAotICAgIHNldERyYXdWaWV3cG9ydFJlY3Qodmlld3BvcnRSZWN0LCBmYWxzZSk7
CisgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChmcmFtZWJ1ZmZlclJlY3QsIGZhbHNlKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUwMiwyMSArMTQ5NywyMSBAQCBib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjbwogLy8gc2Npc3NvclJlY3QgaGFzIGl0cyBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0
IGNvcm5lciBvZiB0aGUgY3VycmVudCB2aXNpYmxlIHJlY3QuCiB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKIHsK
LSAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gKG1fY3VycmVudFJlbmRlclN1cmZhY2UgPyBtX2N1
cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpIDogbV9kZWZhdWx0UmVuZGVyU3VyZmFj
ZS0+Y29udGVudFJlY3QoKSk7CisgICAgSW50UmVjdCBmcmFtZWJ1ZmZlck91dHB1dFJlY3QgPSAo
bV9jdXJyZW50UmVuZGVyUGFzcyA/IG1fY3VycmVudFJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0
cHV0UmVjdCgpIDogbV9kZWZhdWx0UmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkp
OwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OlNDSVNTT1JfVEVTVCkpOwogCiAgICAgLy8gVGhlIHNjaXNzb3IgY29vcmRpbmF0ZXMgbXVz
dCBiZSBzdXBwbGllZCBpbiB2aWV3cG9ydCBzcGFjZSBzbyB3ZSBuZWVkIHRvIG9mZnNldAotICAg
IC8vIGJ5IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRo
ZSBjdXJyZW50IHJlbmRlciBzdXJmYWNlLgotICAgIGludCBzY2lzc29yWCA9IHNjaXNzb3JSZWN0
LngoKSAtIGNvbnRlbnRSZWN0LngoKTsKKyAgICAvLyBieSB0aGUgcmVsYXRpdmUgcG9zaXRpb24g
b2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCByZW5kZXIgcGFzcy4KKyAgICBp
bnQgc2Npc3NvclggPSBzY2lzc29yUmVjdC54KCkgLSBmcmFtZWJ1ZmZlck91dHB1dFJlY3QueCgp
OwogICAgIC8vIFdoZW4gcmVuZGVyaW5nIHRvIHRoZSBkZWZhdWx0IHJlbmRlciBzdXJmYWNlIHdl
J3JlIHJlbmRlcmluZyB1cHNpZGUgZG93biBzbyB0aGUgdG9wCiAgICAgLy8gb2YgdGhlIEdMIHNj
aXNzb3IgaXMgdGhlIGJvdHRvbSBvZiBvdXIgbGF5ZXIuCiAgICAgLy8gQnV0LCBpZiByZW5kZXJp
bmcgdG8gb2Zmc2NyZWVuIHRleHR1cmUsIHdlIHJldmVyc2Ugb3VyIHNlbnNlIG9mICd1cHNpZGUg
ZG93bicuCiAgICAgaW50IHNjaXNzb3JZOwotICAgIGlmIChpc0N1cnJlbnRSZW5kZXJTdXJmYWNl
KG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQotICAgICAgICBzY2lzc29yWSA9IG1fY3VycmVudFJl
bmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkgLSAoc2Npc3NvclJlY3QubWF4WSgp
IC0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS55KCkpOworICAgIGlmIChp
c0N1cnJlbnRSZW5kZXJQYXNzKG1fZGVmYXVsdFJlbmRlclBhc3MpKQorICAgICAgICBzY2lzc29y
WSA9IGZyYW1lYnVmZmVyT3V0cHV0UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkg
LSBmcmFtZWJ1ZmZlck91dHB1dFJlY3QueSgpKTsKICAgICBlbHNlCi0gICAgICAgIHNjaXNzb3JZ
ID0gc2Npc3NvclJlY3QueSgpIC0gY29udGVudFJlY3QueSgpOworICAgICAgICBzY2lzc29yWSA9
IHNjaXNzb3JSZWN0LnkoKSAtIGZyYW1lYnVmZmVyT3V0cHV0UmVjdC55KCk7CiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5zY2lzc29yKHNjaXNzb3JYLCBzY2lzc29yWSwgc2Npc3NvclJl
Y3Qud2lkdGgoKSwgc2Npc3NvclJlY3QuaGVpZ2h0KCkpKTsKIH0KIApAQCAtMTUyOCw3ICsxNTIz
LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06Om1ha2VDb250ZXh0Q3VycmVudCgpCiAv
LyBTZXRzIHRoZSBjb29yZGluYXRlIHJhbmdlIG9mIGNvbnRlbnQgdGhhdCBlbmRzIGJlaW5nIGRy
YXduIG9udG8gdGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZS4KIC8vIFRoZSB0YXJnZXQgcmVuZGVy
IHN1cmZhY2UgaXMgYXNzdW1lZCB0byBoYXZlIGFuIG9yaWdpbiBhdCAwLCAwIGFuZCB0aGUgd2lk
dGggYW5kIGhlaWdodCBvZgogLy8gb2YgdGhlIGRyYXdSZWN0Lgotdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJv
b2wgZmxpcFkpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVy
UmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSkKIHsKICAgICBpZiAoZmxp
cFkpCiAgICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0Lngo
KSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC5tYXhZKCksIGRyYXdSZWN0LnkoKSk7CkBAIC0x
NTUwLDI3ICsxNTQ1LDI3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXpl
U2hhcmVkT2JqZWN0cygpCiAgICAgLy8gV2Ugd2lsbCBhbHdheXMgbmVlZCB0aGVzZSBwcm9ncmFt
cyB0byByZW5kZXIsIHNvIGNyZWF0ZSB0aGUgcHJvZ3JhbXMgZWFnZXJseSBzbyB0aGF0IHRoZSBz
aGFkZXIgY29tcGlsYXRpb24gY2FuCiAgICAgLy8gc3RhcnQgd2hpbGUgd2UgZG8gb3RoZXIgd29y
ay4gT3RoZXIgcHJvZ3JhbXMgYXJlIGNyZWF0ZWQgbGF6aWx5IG9uIGZpcnN0IGFjY2Vzcy4KICAg
ICBtX3NoYXJlZEdlb21ldHJ5ID0gYWRvcHRQdHIobmV3IEdlb21ldHJ5QmluZGluZyhtX2NvbnRl
eHQuZ2V0KCkpKTsKLSAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJl
bmRlclN1cmZhY2VQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fcmVuZGVyUGFzc1By
b2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW0obV9jb250ZXh0LmdldCgpKSk7
CiAgICAgbV90aWxlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbShtX2NvbnRleHQu
Z2V0KCkpKTsKICAgICBtX3RpbGVQcm9ncmFtT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9n
cmFtT3BhcXVlKG1fY29udGV4dC5nZXQoKSkpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5mbHVzaCgpKTsKIAotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CisgICAgbV9pbXBsVGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdo
TGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2
aWV3cG9ydFNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVD
b3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwogICAgIGlmIChtX3RleHR1cmVVcGxvYWRlclNldHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIp
CiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpj
cmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIG1fdGV4dHVyZVVwbG9h
ZGVyID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpOwogICAgIG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9j
b250ZXh0LmdldCgpKTsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0gVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBtX2lt
cGxUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9j
b250ZXh0LmdldCgpKTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VI
aW50KQotICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJl
VXNhZ2VIaW50KFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50
KTsKKyAgICAgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VGV4dHVyZVVzYWdlSGludChU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OkZyYW1lYnVmZmVyQXR0YWNobWVudCk7CiAgICAgaWYg
KG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24pIHsKICAgICAgICAg
bV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUp
OwotICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJl
U3RvcmFnZUV4dCh0cnVlKTsKKyAgICAgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNl
VGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NjA5LDQ3ICsxNjA0LDQ3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6SGVhZHNVcERp
c3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzCiAgICAgcmV0dXJuIG1f
aGVhZHNVcERpc3BsYXlQcm9ncmFtLmdldCgpOwogfQogCi1jb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlJlbmRlclN1cmZhY2VQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clN1cmZhY2VQcm9ncmFtKCkKK2NvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFz
c1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW0oKQogewot
ICAgIEFTU0VSVChtX3JlbmRlclN1cmZhY2VQcm9ncmFtKTsKLSAgICBpZiAoIW1fcmVuZGVyU3Vy
ZmFjZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQuZ2V0KCkpOworICAgIEFTU0VSVChtX3JlbmRlclBhc3NQcm9ncmFtKTsKKyAgICBpZiAoIW1f
cmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW06OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS5nZXQo
KTsKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbS5nZXQoKTsKIH0KIAotY29uc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKQorY29uc3QgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NQcm9ncmFtQUEoKQogewotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKQot
ICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyU3Vy
ZmFjZVByb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFj
ZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhp
cywgMCk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQuZ2V0KCkpOworICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbUFBKQorICAgICAgICBt
X3JlbmRlclBhc3NQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW1BQSht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlh
bGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpy
ZW5kZXJQYXNzUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fcmVu
ZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KLSAg
ICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLmdldCgpOworICAgIHJldHVybiBtX3Jl
bmRlclBhc3NQcm9ncmFtQUEuZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6UmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clN1cmZhY2VNYXNrUHJvZ3JhbSgpCitjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRl
clBhc3NNYXNrUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1By
b2dyYW0oKQogewotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0pCi0gICAgICAg
IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VN
YXNrUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQuZ2V0KCkpOworICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0pCisgICAg
ICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNr
UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwor
ICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0
KCkpOwogICAgIH0KLSAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uZ2V0KCk7
CisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLmdldCgpOwogfQogCi1jb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCkKK2NvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEoKQogewotICAgIGlmICghbV9yZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1B
QSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0
KCkpKTsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9y
ZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwor
ICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSkKKyAgICAgICAgbV9yZW5kZXJQYXNz
TWFza1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQShtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmluaXRp
YWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzc01hc2tQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAg
bV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwog
ICAgIH0KLSAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS5nZXQoKTsKKyAg
ICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS5nZXQoKTsKIH0KIAogY29uc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlUHJvZ3JhbSgpCkBAIC0xNzkyLDE0ICsxNzg3LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgaWYgKG1fdGlsZUNoZWNrZXJib2Fy
ZFByb2dyYW0pCiAgICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFudXAobV9j
b250ZXh0LmdldCgpKTsKIAotICAgIGlmIChtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSkKLSAg
ICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKLSAgICBpZiAobV9yZW5kZXJTdXJmYWNlUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJTdXJm
YWNlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwotICAgIGlmIChtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFB
LT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZVByb2dy
YW1BQSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4
dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtKQorICAgICAgICBtX3Jl
bmRlclBhc3NNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmICht
X3JlbmRlclBhc3NQcm9ncmFtKQorICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5jbGVhbnVw
KG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCisg
ICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKKyAgICBpZiAobV9yZW5kZXJQYXNzUHJvZ3JhbUFBKQorICAgICAgICBtX3JlbmRlclBhc3NQ
cm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3RleHR1cmVQ
cm9ncmFtKQogICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQo
KSk7CkBAIC0xODI1LDcgKzE4MjAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fdGV4dHVyZUNvcGllci5jbGVhcigpOwogICAgIG1f
dGV4dHVyZVVwbG9hZGVyLmNsZWFyKCk7CiAKLSAgICByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1
cmVzKCk7CisgICAgcmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwogfQogCiBib29sIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6aXNDb250ZXh0TG9zdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCmluZGV4IDBmOTY1YThiNGZhZDUzY2VhMWVmZDA5ODNlZTk1YmY5Nzc2NzIzYTYu
LmFjNTJjMmIzNWQ2ODhmMWEwMjlmN2VhYThkM2M1NWFjYjczNjc4YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIENDRGVidWdCb3Jk
ZXJEcmF3UXVhZDsKIGNsYXNzIENDRHJhd1F1YWQ7CiBjbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFk
OwogY2xhc3MgQ0NSZW5kZXJQYXNzOwotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7Citj
bGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwog
Y2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTkyLDcg
KzkyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydENoYW5nZWQoKTsKIAotICAgIHZv
aWQgYmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFj
ZSk7CisgICAgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5k
ZXJQYXNzKTsKICAgICB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopOwog
ICAgIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKQEAgLTExNywxMCArMTE3LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3Qg
SW50UmVjdCYpOwogICAgIGJvb2wgZ2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCk7CiAKLSAgICBUZXh0dXJlTWFuYWdlciogcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICBUZXh0dXJlTWFuYWdlciogaW1wbFRleHR1cmVN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAg
ICBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJl
Q29waWVyLmdldCgpOyB9CiAgICAgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBj
b25zdCB7IHJldHVybiBtX3RleHR1cmVVcGxvYWRlci5nZXQoKTsgfQotICAgIFRleHR1cmVBbGxv
Y2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQorICAgIFRleHR1cmVBbGxvY2F0
b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsVGV4dHVyZUFs
bG9jYXRvci5nZXQoKTsgfQogICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLmdldCgp
OyB9CiAKICAgICB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpOwpAQCAtMTUx
LDExICsxNTEsMTEgQEAgcHJpdmF0ZToKICAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJu
IHZpZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KICAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJl
dHVybiB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsgfQogCi0gICAgdm9pZCBkcmF3UXVhZChjb25z
dCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAg
dm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0JiByZW5kZXJQ
YXNzRGV2aWNlRGFtYWdlUmVjdCk7CiAgICAgdm9pZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25z
dCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFk
KGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0JhY2tncm91bmRG
aWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtKTsKLSAgICB2b2lkIGRyYXdSZW5k
ZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCopOworICAgIHZvaWQg
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiwgY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtKTsKKyAgICB2
b2lkIGRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCopOwogICAg
IHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7CiAg
ICAgdm9pZCBkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqKTsKICAgICB2
b2lkIGRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqKTsKQEAgLTE3
MCwxOCArMTcwLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UkdCQShjb25zdCBDQ1ZpZGVv
RHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdZVVYoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAK
LSAgICB2b2lkIHNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkp
OworICAgIHZvaWQgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBm
bGlwWSk7CiAKLSAgICAvLyBUaGUgY3VycmVudCBkcmF3aW5nIHRhcmdldCBpcyBlaXRoZXIgYSBS
ZW5kZXJTdXJmYWNlIG9yIE1hbmFnZWRUZXh0dXJlLiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvIHN3
aXRjaCB0byBhIG5ldyBkcmF3aW5nIHRhcmdldC4KLSAgICBib29sIHVzZVJlbmRlclN1cmZhY2Uo
Q0NSZW5kZXJTdXJmYWNlKik7CisgICAgLy8gVGhlIGN1cnJlbnQgZHJhd2luZyB0YXJnZXQgaXMg
ZWl0aGVyIGEgUmVuZGVyUGFzcyBvciBNYW5hZ2VkVGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9u
cyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0YXJnZXQuCisgICAgYm9vbCB1c2VSZW5kZXJQ
YXNzKGNvbnN0IENDUmVuZGVyUGFzcyopOwogICAgIGJvb2wgdXNlTWFuYWdlZFRleHR1cmUoTWFu
YWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOwotICAgIGJvb2wgaXND
dXJyZW50UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqKTsKKyAgICBib29sIGlzQ3VycmVu
dFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKICAgICBib29sIGJpbmRGcmFtZWJ1
ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVj
dCk7CiAKLSAgICB2b2lkIGNsZWFyUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqLCBDQ1Jl
bmRlclN1cmZhY2UqIHJvb3RSZW5kZXJTdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VE
YW1hZ2VSZWN0KTsKKyAgICB2b2lkIGNsZWFyUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3Mq
LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzLCBjb25zdCBGbG9hdFJlY3QmIGZy
YW1lYnVmZmVyRGFtYWdlUmVjdCk7CiAKLSAgICB2b2lkIHJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4
dHVyZXMoKTsKKyAgICB2b2lkIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsKIAogICAgIGJv
b2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0cml4Owog
ICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7CiAKLSAg
ICBDQ1JlbmRlclN1cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZhY2U7CisgICAgY29uc3QgQ0NS
ZW5kZXJQYXNzKiBtX2N1cnJlbnRSZW5kZXJQYXNzOwogICAgIE1hbmFnZWRUZXh0dXJlKiBtX2N1
cnJlbnRNYW5hZ2VkVGV4dHVyZTsKICAgICB1bnNpZ25lZCBtX29mZnNjcmVlbkZyYW1lYnVmZmVy
SWQ7CiAKQEAgLTIxNiwxMyArMjE2LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBQcm9ncmFt
QmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkPiBU
aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbTsKIAogICAgIC8vIFJlbmRlciBzdXJmYWNlIHNoYWRlcnMu
Ci0gICAgLy8gQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXJzKCkgbmVlZHMgdG8gc2VlIHRoZXNl
IHByb2dyYW1zIGN1cnJlbnRseS4KLSAgICAvLyBGSVhNRTogRHJhdyB3aXRoIGEgcXVhZCB0eXBl
IGZvciByZW5kZXIgc3VyZmFjZXMgYW5kIGdldCByaWQgb2YgdGhpcyBmcmllbmRseW5lc3MuCi0g
ICAgZnJpZW5kIGNsYXNzIENDUmVuZGVyU3VyZmFjZTsKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFJlbmRl
clN1cmZhY2VQcm9ncmFtOwotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s+IFJlbmRlclN1cmZhY2VNYXNr
UHJvZ3JhbTsKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE+IFJlbmRlclN1cmZhY2VQcm9ncmFtQUE7Ci0gICAg
dHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYU1hc2tBQT4gUmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE7CisgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhPiBSZW5kZXJQYXNzUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZl
cnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrPiBSZW5kZXJQ
YXNzTWFza1Byb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJR
dWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBPiBSZW5kZXJQYXNzUHJvZ3JhbUFBOwor
ICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFNYXNrQUE+IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBOwogCiAgICAgLy8g
VGV4dHVyZSBzaGFkZXJzLgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gVGV4dHVyZVByb2dy
YW07CkBAIC0yNDgsMTAgKzI0NSwxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFRpbGVQcm9ncmFt
U3dpenpsZUFBKiB0aWxlUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgIGNvbnN0IFRpbGVDaGVja2Vy
Ym9hcmRQcm9ncmFtKiB0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSgpOwogCi0gICAgY29uc3QgUmVu
ZGVyU3VyZmFjZVByb2dyYW0qIHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7Ci0gICAgY29uc3QgUmVu
ZGVyU3VyZmFjZVByb2dyYW1BQSogcmVuZGVyU3VyZmFjZVByb2dyYW1BQSgpOwotICAgIGNvbnN0
IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSogcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0g
ICAgY29uc3QgUmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEqIHJlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbUFBKCk7CisgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW0qIHJlbmRlclBhc3NQcm9ncmFt
KCk7CisgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW1BQSogcmVuZGVyUGFzc1Byb2dyYW1BQSgp
OworICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3JhbSogcmVuZGVyUGFzc01hc2tQcm9ncmFt
KCk7CisgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIHJlbmRlclBhc3NNYXNrUHJv
Z3JhbUFBKCk7CiAKICAgICBjb25zdCBUZXh0dXJlUHJvZ3JhbSogdGV4dHVyZVByb2dyYW0oKTsK
ICAgICBjb25zdCBUZXh0dXJlUHJvZ3JhbUZsaXAqIHRleHR1cmVQcm9ncmFtRmxpcCgpOwpAQCAt
MjcyLDEwICsyNjksMTAgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8VGlsZVByb2dyYW1Td2l6emxl
QUE+IG1fdGlsZVByb2dyYW1Td2l6emxlQUE7CiAgICAgT3duUHRyPFRpbGVDaGVja2VyYm9hcmRQ
cm9ncmFtPiBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtOwogCi0gICAgT3duUHRyPFJlbmRlclN1
cmZhY2VQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtOwotICAgIE93blB0cjxSZW5kZXJT
dXJmYWNlUHJvZ3JhbUFBPiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUE7Ci0gICAgT3duUHRyPFJl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbT4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW07Ci0gICAg
T3duUHRyPFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbUFBOworICAgIE93blB0cjxSZW5kZXJQYXNzUHJvZ3JhbT4gbV9yZW5kZXJQYXNzUHJvZ3Jh
bTsKKyAgICBPd25QdHI8UmVuZGVyUGFzc1Byb2dyYW1BQT4gbV9yZW5kZXJQYXNzUHJvZ3JhbUFB
OworICAgIE93blB0cjxSZW5kZXJQYXNzTWFza1Byb2dyYW0+IG1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtOworICAgIE93blB0cjxSZW5kZXJQYXNzTWFza1Byb2dyYW1BQT4gbV9yZW5kZXJQYXNzTWFz
a1Byb2dyYW1BQTsKIAogICAgIE93blB0cjxUZXh0dXJlUHJvZ3JhbT4gbV90ZXh0dXJlUHJvZ3Jh
bTsKICAgICBPd25QdHI8VGV4dHVyZVByb2dyYW1GbGlwPiBtX3RleHR1cmVQcm9ncmFtRmxpcDsK
QEAgLTI4NywxNSArMjg0LDE1IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFNvbGlkQ29sb3JQcm9n
cmFtPiBtX3NvbGlkQ29sb3JQcm9ncmFtOwogICAgIE93blB0cjxIZWFkc1VwRGlzcGxheVByb2dy
YW0+IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtOwogCi0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcjsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IG1faW1wbFRleHR1cmVNYW5hZ2VyOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKICAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiBtX3Rl
eHR1cmVVcGxvYWRlcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKLSAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yOworICAgIE93blB0cjxUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3I+IG1faW1wbFRleHR1cmVBbGxvY2F0b3I7CiAKICAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKIAotICAgIENDUmVuZGVyU3VyZmFjZSogbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZTsKKyAgICBjb25zdCBDQ1JlbmRlclBhc3MqIG1fZGVmYXVsdFJl
bmRlclBhc3M7CiAKICAgICBGbG9hdFF1YWQgbV9zaGFyZWRHZW9tZXRyeVF1YWQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHAKaW5kZXggMjgxMmQ2NTJmZjYzYTc5Yjg5MmM1ZTNkNmViYzYwZmY4NThj
NGM0Yi4uMmNiMGMyMDY3Y2I0NTk1YjRjOGQ0YTgzMTdkZGNiZTRiMWFlMjcyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3
UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCkBAIC04NCwxMCArODQsMTAgQEAg
Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9JT1N1cmZhY2VEcmF3UXVh
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1
YWQqPih0aGlzKTsKIH0KIAotY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIENDRHJhd1F1
YWQ6OnRvUmVuZGVyU3VyZmFjZURyYXdRdWFkKCkgY29uc3QKK2NvbnN0IENDUmVuZGVyUGFzc0Ry
YXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKG1fbWF0ZXJpYWwgPT0gUmVuZGVyU3VyZmFjZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKj4odGhpcyk7CisgICAgQVNTRVJUKG1f
bWF0ZXJpYWwgPT0gUmVuZGVyUGFzcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEND
UmVuZGVyUGFzc0RyYXdRdWFkKj4odGhpcyk7CiB9CiAKIGNvbnN0IENDU29saWRDb2xvckRyYXdR
dWFkKiBDQ0RyYXdRdWFkOjp0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKaW5kZXggMzgxY2JhZWFjZjNmMjUyMTc0ZDU3ZmRkMzNmMjA5YjE1OGExZDU5Mi4uYTZi
ZWY5YzRiMDE3NDNiZjA3ODYyZGVmN2U3YmQzOThmOGFhODY2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
aApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkOwogY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOwogY2xhc3MgQ0NJT1N1
cmZhY2VEcmF3UXVhZDsKLWNsYXNzIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkOworY2xhc3MgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ7CiBjbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKIGNsYXNzIEND
VGV4dHVyZURyYXdRdWFkOwogY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgQ2hlY2tlcmJvYXJkLAogICAgICAgICBEZWJ1Z0JvcmRlciwKICAg
ICAgICAgSU9TdXJmYWNlQ29udGVudCwKLSAgICAgICAgUmVuZGVyU3VyZmFjZSwKKyAgICAgICAg
UmVuZGVyUGFzcywKICAgICAgICAgVGV4dHVyZUNvbnRlbnQsCiAgICAgICAgIFNvbGlkQ29sb3Is
CiAgICAgICAgIFRpbGVkQ29udGVudCwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIGNv
bnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSBjb25z
dDsKICAgICBjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHRvRGVidWdCb3JkZXJEcmF3UXVh
ZCgpIGNvbnN0OwogICAgIGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIHRvSU9TdXJmYWNlRHJh
d1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogdG9SZW5k
ZXJTdXJmYWNlRHJhd1F1YWQoKSBjb25zdDsKKyAgICBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCogdG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1NvbGlkQ29sb3JE
cmF3UXVhZCogdG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1RleHR1
cmVEcmF3UXVhZCogdG9UZXh0dXJlRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1RpbGVE
cmF3UXVhZCogdG9UaWxlRHJhd1F1YWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5jcHAKaW5kZXggN2Q0OWY3OThkMWFjN2Q0OGJmNzc0MzQ3YmJiYzk3ZmJhMDhmM2ExNi4u
ZGMwZDkzNDkzMTBmMDVlMjI1MWZhODIzZDVmMGRmZTA5YWI1OGFlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNw
bGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciA9IGxheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyKCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJl
bmRlcmVyLT5jb250ZXh0KCk7CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAgIG1faHVk
VGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3Vy
ZmFjZVRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKIAogICAg
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdz
KCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4u
LgpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVy
VHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICB7CiAgICAgICAgIFBsYXRmb3Jt
Q2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKIAotICAgICAgICBtX2h1ZFRleHR1
cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQsIGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBib29s
IHVwbG9hZGVkVmlhTWFwID0gZmFsc2U7CiAgICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jb250
ZXh0U3VwcG9ydHNNYXBTdWIoKSkgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0q
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CmluZGV4IDBhNDlmOGU3ZGE1OTA2MmFjYmRhNDZhOGM1OTQ1NDlmOTQ2ODI1MWUuLmJjZGFlMTg4
ZDI2ODgzOTg1YzAxNjM1Y2EzZGFjMDM1NDc1YjMwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
QEAgLTMyOCw5ICszMjcsMTAgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVS
ZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKIAogICAgICAgICBv
Y2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwogCi0gICAgICAgIGlmIChpdC5yZXByZXNl
bnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKQotICAgICAgICAgICAgcGFzcy0+YXBwZW5k
UXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAg
ICAgIGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJl
Y3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250cmlidXRpbmdS
ZW5kZXJTdXJmYWNlKCkpIHsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5n
UmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29u
dHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICB9IGVsc2Ug
aWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCkp
OwogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25U
cmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICB9CkBAIC00MjQsMTMgKzQyNCwxNyBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBm
cmFtZSkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVy
cyIsIHRoaXMsIDApOwogICAgIEFTU0VSVChjYW5EcmF3KCkpOworICAgIEFTU0VSVCghZnJhbWUu
cmVuZGVyUGFzc2VzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBGSVhNRTogdXNlIHRoZSBmcmFtZSBi
ZWdpbiB0aW1lIGZyb20gdGhlIG92ZXJhbGwgY29tcG9zaXRvciBzY2hlZHVsZXIuCiAgICAgLy8g
VGhpcyB2YWx1ZSBpcyBjdXJyZW50bHkgaW5hY2Nlc3NpYmxlIGJlY2F1c2UgaXQgaXMgdXAgaW4g
Q2hyb21pdW0ncwogICAgIC8vIFJlbmRlcldpZGdldC4KIAorICAgIC8vIFRoZSByb290IFJlbmRl
clBhc3MgaXMgdGhlIGxhc3Qgb25lIHRvIGJlIGRyYXduLgorICAgIENDUmVuZGVyUGFzcyogcm9v
dFJlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXMubGFzdCgpLmdldCgpOworCiAgICAgbV9m
cHNDb3VudGVyLT5tYXJrQmVnaW5uaW5nT2ZGcmFtZShjdXJyZW50VGltZSgpKTsKLSAgICBtX2xh
eWVyUmVuZGVyZXItPmJlZ2luRHJhd2luZ0ZyYW1lKG1fcm9vdExheWVySW1wbC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICBtX2xheWVyUmVuZGVyZXItPmJlZ2luRHJhd2luZ0ZyYW1lKHJvb3RSZW5k
ZXJQYXNzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2Vz
LnNpemUoKTsgKytpKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdSZW5kZXJQYXNzKGZy
YW1lLnJlbmRlclBhc3Nlc1tpXS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRl
eCA2NmVlZjM5ZmNhNzgwZGVjZGY2NDczYWZhYjRkODBhMDNmYzhjN2ViLi4wODQyOTk2YWI4ODVl
MjZlOWY4MmZlMTc0MGQ0ZDE5NGY1MDFjZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUg
ImNjL0NDT3ZlcmRyYXdNZXRyaWNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCi0j
aW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IGZkODk5OTBjNzE5ODE2MDY3NmE3NmY1YmVkMjE5NmZm
N2I5NmVjY2UuLmEzMWI2NGZkNjVkY2ZkNzhmYjI0MDUyY2YxMmE2NWRhOGZjYTJjMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNDQsNiArNDQsNyBAQCBQYXNzT3duUHRyPENDUmVu
ZGVyUGFzcz4gQ0NSZW5kZXJQYXNzOjpjcmVhdGUoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJm
YWNlKQogCiBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRhcmdl
dFN1cmZhY2UpCiAgICAgOiBtX3RhcmdldFN1cmZhY2UodGFyZ2V0U3VyZmFjZSkKKyAgICAsIG1f
ZnJhbWVidWZmZXJPdXRwdXRSZWN0KHRhcmdldFN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpCiB7CiAg
ICAgQVNTRVJUKG1fdGFyZ2V0U3VyZmFjZSk7CiB9CkBAIC01OCw3ICs1OSw3IEBAIHZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wCiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRR
dWFkU3RhdGUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRz
Rm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFj
a2VySW1wbCogb2NjbHVzaW9uVHJhY2tlcikKK3ZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFk
c0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDUmVuZGVy
UGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2Nj
bHVzaW9uVHJhY2tlcikKIHsKICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZhY2UgbGF5ZXJzIHNo
b3VsZCBiZSBhIENDTGF5ZXJJbXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAgLy8gbm90IGJlIGhh
bmRsZWQgc3BlY2lhbGx5IGhlcmUuCkBAIC02OCw3ICs2OSw3IEBAIHZvaWQgQ0NSZW5kZXJQYXNz
OjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIEND
T2NjbHVzCiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IHN1cmZhY2UtPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgIGJvb2wgaXNSZXBsaWNhID0g
ZmFsc2U7Ci0gICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0
YXRlLmdldCgpLCBpc1JlcGxpY2EsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpOworICAgIHN1cmZhY2Ut
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNh
LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBzdXJmYWNlRGFtYWdlUmVjdCgpKTsKICAgICBtX3No
YXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogCiAg
ICAgaWYgKCFzdXJmYWNlLT5oYXNSZXBsaWNhKCkpCkBAIC03Nyw3ICs3OCw3IEBAIHZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCog
bGF5ZXIsIENDT2NjbHVzCiAgICAgLy8gQWRkIHJlcGxpY2EgYWZ0ZXIgdGhlIHN1cmZhY2Ugc28g
dGhhdCBpdCBhcHBlYXJzIGJlbG93IHRoZSBzdXJmYWNlLgogICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gcmVwbGljYVNoYXJlZFF1YWRTdGF0ZSA9IHN1cmZhY2UtPmNyZWF0ZVJlcGxpY2FT
aGFyZWRRdWFkU3RhdGUoKTsKICAgICBpc1JlcGxpY2EgPSB0cnVlOwotICAgIHN1cmZhY2UtPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVw
bGljYSwgc3VyZmFjZURhbWFnZVJlY3QoKSk7CisgICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgcmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBjb250cmli
dXRpbmdSZW5kZXJQYXNzLCBzdXJmYWNlRGFtYWdlUmVjdCgpKTsKICAgICBtX3NoYXJlZFF1YWRT
dGF0ZUxpc3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuaAppbmRleCA0NTJhODYxMGY1YTlkYmMwMjE0YThjZGRiZmY2ZjAy
NTRmZWNkYTI2Li5hYWZiODFjYTVjNjUwNGU2NzA1OTUxZGJlY2QwZWYwM2E4NjNiMjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuaApAQCAtNTYsMTEgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShDQ1JlbmRlclN1cmZhY2UqKTsKIAog
ICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJh
Y2tlckltcGwqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwotICAgIHZvaWQgYXBwZW5kUXVhZHNG
b3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBs
Kik7CisgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1w
bCosIGNvbnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCopOwogICAgIHZvaWQgYXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXll
ckltcGwqIHJvb3RMYXllciwgY29uc3QgQ29sb3ImIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYpOwogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYgcXVh
ZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAgICAgQ0NSZW5kZXJTdXJmYWNl
KiB0YXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRTdXJmYWNlOyB9CisgICAg
Ly8gVGhpcyBkZW5vdGVzIHRoZSBib3VuZHMgaW4gcGh5c2ljYWwgcGl4ZWxzIG9mIHRoZSBvdXRw
dXQgZ2VuZXJhdGVkIGJ5IHRoaXMgUmVuZGVyUGFzcy4KKyAgICBjb25zdCBJbnRSZWN0JiBmcmFt
ZWJ1ZmZlck91dHB1dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyT3V0cHV0UmVj
dDsgfQogCiAgICAgdm9pZCBzZXRTdXJmYWNlRGFtYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHN1
cmZhY2VEYW1hZ2VSZWN0KSB7IG1fc3VyZmFjZURhbWFnZVJlY3QgPSBzdXJmYWNlRGFtYWdlUmVj
dDsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3N1cmZhY2VEYW1hZ2VSZWN0OyB9CkBAIC03MCw2ICs3Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBDQ1JlbmRlclN1cmZhY2UqIG1fdGFyZ2V0U3VyZmFjZTsKICAgICBDQ1F1YWRMaXN0IG1f
cXVhZExpc3Q7CisgICAgSW50UmVjdCBtX2ZyYW1lYnVmZmVyT3V0cHV0UmVjdDsKICAgICBWZWN0
b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IG1fc2hhcmVkUXVhZFN0YXRlTGlzdDsKICAg
ICBGbG9hdFJlY3QgbV9zdXJmYWNlRGFtYWdlUmVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIyYjg5NWM5MmM5YmMyYzA3ZGM4ZTkz
NTBmYTJhNDMwY2ZlNmQ1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRy
PENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRS
ZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgc3Vy
ZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFj
a2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0
LCByZW5kZXJQYXNzLCBzdXJmYWNlRGFtYWdlUmVjdCwgaXNSZXBsaWNhLCBmaWx0ZXJzLCBiYWNr
Z3JvdW5kRmlsdGVycywgbWFza1RleHR1cmVJZCkpOworfQorCitDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVu
ZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxp
Y2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFz
a1RleHR1cmVJZCkKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFk
OjpSZW5kZXJQYXNzLCBxdWFkUmVjdCkKKyAgICAsIG1fcmVuZGVyUGFzcyhyZW5kZXJQYXNzKQor
ICAgICwgbV9zdXJmYWNlRGFtYWdlUmVjdChzdXJmYWNlRGFtYWdlUmVjdCkKKyAgICAsIG1faXNS
ZXBsaWNhKGlzUmVwbGljYSkKKyAgICAsIG1fZmlsdGVycyhmaWx0ZXJzKQorICAgICwgbV9iYWNr
Z3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycykKKyAgICAsIG1fbWFza1RleHR1cmVJZCht
YXNrVGV4dHVyZUlkKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgxZWFiZmYwMDQzZGQxZTJk
NWE4MjIxNDg5OGE2ZWEzYWNlNzYwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAorI2Rl
ZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCisKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUmVuZGVyUGFz
czsKKworY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwg
Y29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJ
ZCk7CisKKyAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlclBhc3M7IH0KKyAgICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNSZXBsaWNhOyB9CisgICAgdW5zaWduZWQgbWFza1RleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFza1RleHR1cmVJZDsgfQorCisgICAgLy8gVGhlIHN1cmZhY2UgZGFtYWdlIHJlY3QgZm9y
IHRoZSB0YXJnZXQgc3VyZmFjZSB0aGlzIHF1YWQgZHJhd3MgaW50by4KKyAgICAvLyBGSVhNRTog
VGhpcyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHJlbmRlciBzdXJmYWNlcyBnZXQgdGhlaXIgb3duIGxh
eWVyIHR5cGUuCisgICAgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3VyZmFjZURhbWFnZVJlY3Q7IH0KKworICAgIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQor
ICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisKK3ByaXZhdGU6CisgICAg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdl
UmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7CisKKyAgICBjb25zdCBDQ1JlbmRlclBhc3Mq
IG1fcmVuZGVyUGFzczsKKyAgICBGbG9hdFJlY3QgbV9zdXJmYWNlRGFtYWdlUmVjdDsKKyAgICBi
b29sIG1faXNSZXBsaWNhOworICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRl
cnM7CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7
CisgICAgdW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDk0M2M1M2ZiZjA4MjdlMTI2YTdiNjJlZTE4
ZDg2YmYzZDI4ZjU3OGMuLmQ4ZWI5Mjg3M2Y4YzU3ZmMwODQyMjU0Y2JjNTUzNGIxYTY0MzAyOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
bXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
IgogI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCkBAIC04NCw3ICs4NCw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6
OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogCiBib29sIENDUmVuZGVyU3VyZmFjZTo6cHJl
cGFyZUNvbnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIp
CiB7Ci0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CisgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1
cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCk7CiAKICAgICBp
ZiAoIW1fY29udGVudHNUZXh0dXJlKQogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZSA9IE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOwpAQCAtMTEyLDcgKzExMiw3IEBAIGJv
b2wgQ0NSZW5kZXJTdXJmYWNlOjpoYXNWYWxpZENvbnRlbnRzVGV4dHVyZSgpIGNvbnN0CiAKIGJv
b2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewotICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJl
TWFuYWdlciA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpOwor
ICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXItPmltcGxU
ZXh0dXJlTWFuYWdlcigpOwogCiAgICAgaWYgKCFtX2JhY2tncm91bmRUZXh0dXJlKQogICAgICAg
ICBtX2JhY2tncm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFu
YWdlcik7CkBAIC0yNjAsNyArMjYwLDcgQEAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
Q0NSZW5kZXJTdXJmYWNlOjpjcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKCkgY28KICAgICBy
ZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShyZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCks
IHJlcGxpY2FEcmF3VHJhbnNmb3JtKCksIGNvbnRlbnRSZWN0KCksIGNsaXBSZWN0KCksIGRyYXdP
cGFjaXR5KCksIGlzT3BhcXVlKTsKIH0KIAotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVj
dCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRM
aXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sIGZvclJlcGxpY2Es
IGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNl
RGFtYWdlUmVjdCkKIHsKICAgICBBU1NFUlQoIWZvclJlcGxpY2EgfHwgaGFzUmVwbGljYSgpKTsK
IApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAKICAgICBpbnQg
bWFza1RleHR1cmVJZCA9IG1hc2tMYXllciA/IG1hc2tMYXllci0+Y29udGVudHNUZXh0dXJlSWQo
KSA6IDA7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmRTdXJmYWNlKENDUmVuZGVyU3VyZmFjZURyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBtX293bmluZ0xheWVy
LCBzdXJmYWNlRGFtYWdlUmVjdCwgZm9yUmVwbGljYSwgZmlsdGVycygpLCBiYWNrZ3JvdW5kRmls
dGVycygpLCBtYXNrVGV4dHVyZUlkKSk7CisgICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwg
cmVuZGVyUGFzcywgc3VyZmFjZURhbWFnZVJlY3QsIGZvclJlcGxpY2EsIGZpbHRlcnMoKSwgYmFj
a2dyb3VuZEZpbHRlcnMoKSwgbWFza1RleHR1cmVJZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5oCmluZGV4IDg1NWZjY2U3ZTQzNTNiOGRkZWQ1MWRlZTBlZWQwYzQwMDM4MmEx
NmUuLjczZTgxYTQ1NzY4NmYzNDFkZDg2Yzc1NjZjYjMwNzM5ZGJjNDMyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOworY2xhc3MgQ0NS
ZW5kZXJQYXNzOwogY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKQEAgLTEzOSw3ICsxNDAsNyBAQCBwdWJsaWM6
CiAgICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlUmVwbGljYVNoYXJlZFF1
YWRTdGF0ZSgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgc3VyZmFjZURhbWFn
ZVJlY3QgcGFyYW1ldGVyIHdoZW4gdGhlIHZhbHVlIGlzIHJlbW92ZWQgZnJvbSBDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZC4KLSAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIENDU2hh
cmVkUXVhZFN0YXRlKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VE
YW1hZ2VSZWN0KTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBG
bG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKIAogcHJpdmF0ZToKICAgICBDQ0xheWVySW1w
bCogbV9vd25pbmdMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdR
dWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwMGMwZTBmYTM2NTYyMWEz
NjYzYmMyOTY2ZjIzN2MzYjc1YWI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPEND
UmVuZGVyU3VyZmFjZURyYXdRdWFkPiBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFn
ZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZp
bHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXll
ciwgc3VyZmFjZURhbWFnZVJlY3QsIGlzUmVwbGljYSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRl
cnMsIG1hc2tUZXh0dXJlSWQpKTsKLX0KLQotQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OkNDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpCi0gICAg
OiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyU3VyZmFjZSwg
cXVhZFJlY3QpCi0gICAgLCBtX2xheWVyKGxheWVyKQotICAgICwgbV9zdXJmYWNlRGFtYWdlUmVj
dChzdXJmYWNlRGFtYWdlUmVjdCkKLSAgICAsIG1faXNSZXBsaWNhKGlzUmVwbGljYSkKLSAgICAs
IG1fZmlsdGVycyhmaWx0ZXJzKQotICAgICwgbV9iYWNrZ3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5k
RmlsdGVycykKLSAgICAsIG1fbWFza1RleHR1cmVJZChtYXNrVGV4dHVyZUlkKQotewotICAgIEFT
U0VSVChtX2xheWVyKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURy
YXdRdWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDEyODFmYTRmNjlkZTJj
ZDZkMjkxZmYxYTYxNmI2OTY3Yjk0YjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkX2gKLSNkZWZpbmUgQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWRfaAotCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0xheWVySW1wbDsKLQot
Y2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQpOwotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyU3VyZmFjZURyYXdRdWFkPiBjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqLCBjb25z
dCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKTsK
LQotICAgIENDTGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KLSAg
ICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBsaWNhOyB9Ci0gICAgdW5z
aWduZWQgbWFza1RleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1RleHR1cmVJZDsgfQot
Ci0gICAgLy8gVGhlIHN1cmZhY2UgZGFtYWdlIHJlY3QgZm9yIHRoZSB0YXJnZXQgc3VyZmFjZSB0
aGlzIHF1YWQgZHJhd3MgaW50by4KLSAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZCBv
bmNlIHJlbmRlciBzdXJmYWNlcyBnZXQgdGhlaXIgb3duIGxheWVyIHR5cGUuCi0gICAgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZURh
bWFnZVJlY3Q7IH0KLQotICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQotICAgIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tncm91bmRGaWx0ZXJzOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwq
LCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVy
ZUlkKTsKLQotICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOwotICAgIEZsb2F0UmVjdCBtX3N1cmZh
Y2VEYW1hZ2VSZWN0OwotICAgIGJvb2wgbV9pc1JlcGxpY2E7Ci0gICAgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKLSAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMg
bV9iYWNrZ3JvdW5kRmlsdGVyczsKLSAgICB1bnNpZ25lZCBtX21hc2tUZXh0dXJlSWQ7Ci19Owot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmlu
ZGV4IDI0M2FkMjMxZTdmNDZmYzg5ZWIwNDA1ZDhkMGJmNTM2ODMxZWM2MTQuLjg5MDBjMjQ3Y2Yy
NzA4OGZhN2FkNmRhYzQ0NjViMmNiMzIwNWQ0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9s
bGJhckxheWVySW1wbC5jcHAKQEAgLTU4LDExICs1OCwxMSBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5
ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV90ZXh0dXJlKQotICAgICAgICBtX3RleHR1cmUg
PSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlcigpKTsKKyAgICAgICAgbV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0
ZShsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKSk7CiAKICAgICAvLyBUaGUgY29u
dGV4dCBjb3VsZCBoYXZlIGJlZW4gbG9zdCBzaW5jZSB0aGUgbGFzdCBmcmFtZSBhbmQgdGhlIG9s
ZCB0ZXh0dXJlCiAgICAgLy8gbWFuYWdlciBtYXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgotICAgIG1f
dGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRl
eHR1cmVNYW5hZ2VyKCkpOworICAgIG1fdGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIobGF5ZXJS
ZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogCiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6
ZSA9IGNvbnRlbnRCb3VuZHMoKTsKICAgICBpZiAoIW1fdGV4dHVyZS0+cmVzZXJ2ZSh0ZXh0dXJl
U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEND
U2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2Nr
ZXIoJmNhbnZhcyk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJS
ZW5kZXJlci0+Y29udGV4dCgpOwotICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAg
ICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPmltcGxU
ZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBTa2lhIHVzZXMgQkdSQSBh
Y3R1YWxseSwgd2UgY29ycmVjdCB0aGF0IHdpdGggdGhlIHN3aXp6bGUgcGl4ZWwgc2hhZGVyLgog
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgY2FudmFzLnNpemUoKS53aWR0
aCgpLCBjYW52YXMuc2l6ZSgpLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGxvY2tlci5waXhlbHMoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBmNTg1ZDY4MDQwZmFhZWVmMzBkMmE0
YjMzZDc2YWUwMTAxZDk1MmRkLi40MjcwZTU2NjBhMTA2MDRiYTg2ZjkzZmE3Y2NhMTM1Y2EyMmQ3
YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMjU2LDE0ICsyNTYs
MTQgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpyZXNlcnZlVGV4dHVyZXMoY29uc3QgV2ViS2l0
OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwgR0MzRGUKICAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVy
ZVNpemUuaXNaZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4VGV4dHVy
ZVNpemUgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIW1fdGV4dHVyZXNbcGxhbmVd
Lm1fdGV4dHVyZSkgewotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlID0g
TWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVy
ZU1hbmFnZXIoKSk7CisgICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUgPSBN
YW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigp
KTsKICAgICAgICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1f
dmlzaWJsZVNpemUgPSBJbnRTaXplKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAv
LyBUaGUgcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyIG1heSBoYXZlIGJlZW4gZGVzdHJveWVk
IGFuZCByZWNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgZnJhbWUsIHNvIHBhc3MgdGhlIG5ldyBvbmUu
CisgICAgICAgICAgICAvLyBUaGUgaW1wbFRleHR1cmVNYW5hZ2VyIG1heSBoYXZlIGJlZW4gZGVz
dHJveWVkIGFuZCByZWNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgZnJhbWUsIHNvIHBhc3MgdGhlIG5l
dyBvbmUuCiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIFRleHR1cmVNYW5h
Z2VyIGlzIHN0aWxsIGFyb3VuZC4KLSAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4
dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1
cmVNYW5hZ2VyKCkpOworICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5z
ZXRUZXh0dXJlTWFuYWdlcihsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+c2l6ZSgp
ICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpCiAgICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5t
X3Zpc2libGVTaXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCA0ZWQzNTk4NmNjMWU4OTU5MmIyY2FlYzIyMTQxNmIyZmVlZDQ5ZmM3
Li4yMTViYWJiYTdjMmJkM2E2ZTY5OWFkM2FhODE5ZTQ2MTgzMzgwMzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fcm9vdExheWVy
KENDTGF5ZXJJbXBsOjpjcmVhdGUoMSkpCiAgICAgewogICAgICAgICBtX3Jvb3RMYXllci0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBtX3Jvb3RSZW5kZXJQYXNzID0gQ0NSZW5kZXJQ
YXNzOjpjcmVhdGUobV9yb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgfQogCiAgICAg
Ly8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1ldGhvZHMuCkBAIC04MSwxMiArODIsMTMg
QEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMgYWRkZWQgZm9yIHRlc3QuCiAgICAgaW50IHNldEZ1
bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0RnVsbFJvb3RMYXll
ckRhbWFnZUNvdW50OyB9CiAKLSAgICBDQ0xheWVySW1wbCogcm9vdExheWVyKCkgeyByZXR1cm4g
bV9yb290TGF5ZXIuZ2V0KCk7IH0KKyAgICBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKCkg
eyByZXR1cm4gbV9yb290UmVuZGVyUGFzcy5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGludCBt
X3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudDsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgbV9pbXBsVGhyZWFkOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXI7Cisg
ICAgT3duUHRyPENDUmVuZGVyUGFzcz4gbV9yb290UmVuZGVyUGFzczsKIH07CiAKIGNsYXNzIEZh
a2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsK
QEAgLTE5NCw3ICsxOTYsNyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRGlz
Y2FyZGVkQmFja2J1ZmZlcklzUmVjcmVhdHJlZEZvclNjb3BlRHVyYXRpbwogICAgIEVYUEVDVF9U
UlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAg
ICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQo
KSk7CiAKLSAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5iZWdpbkRyYXdpbmdGcmFtZShtX21v
Y2tDbGllbnQucm9vdExheWVyKCktPnJlbmRlclN1cmZhY2UoKSk7CisgICAgbV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uYmVnaW5EcmF3aW5nRnJhbWUobV9tb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNz
KCkpOwogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVm
ZmVyRGlzY2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZlcnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145392</attachid>
            <date>2012-06-01 15:42:49 -0700</date>
            <delta_ts>2012-06-01 19:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88132-20120601184248.patch</filename>
            <type>text/plain</type>
            <size>81016</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5NzZlM2ExNWFhNjFj
MWRmOTk0ZTgyMGJlZDYxZDBlODhmM2RkZS4uN2IxZjI2NjcxNDM0ODg5YzEzNTA3MmQ5ZjRmYjZj
MmRjOWJjODUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wNi0wMSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1h
a2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQYXNzZXMgaW5zdGVhZCBvZiBSZW5k
ZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGlzIHBhcnRseSByZW5hbWluZywgcGFydGx5IG1vdmluZyBkYXRhIGludG8g
Q0NSZW5kZXJQYXNzCisgICAgICAgIGFuZCBDQ1JlbmRlclBhc3NEcmF3UXVhZC4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtIHNob3VsZCBhY2NlcHQgYXMgaW5wdXQKKyAgICAgICAgYSBzZXQgb2YgUmVu
ZGVyUGFzc2VzIGFuZCB0aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBkcmF3aW5nLiBJdAor
ICAgICAgICBzaG91bGQgaGF2ZSBubyBub3Rpb24gb2YgUmVuZGVyU3VyZmFjZXMgYXQgYWxsLgor
CisgICAgICAgIEZpcnN0LCB3aGF0IGlzbid0IGRvbmU6IFJlbmRlclN1cmZhY2VzIHN0aWxsIGhv
bGQgdGhlIHRleHR1cmVzCisgICAgICAgIHdoZXJlIFJlbmRlclBhc3NlcyBhcmUgZHJhd24gdG8v
ZnJvbSwgc28gdGhhdCB0aGVzZSB0ZXh0dXJlcyBjYW4KKyAgICAgICAgcGVyc2lzdCBhY3Jvc3Mg
ZnJhbWVzLiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgT3Ro
ZXJ3aXNlLCB0aGlzIGNvbXBsZXRlbHkgcmVtb3ZlcyB0aGUgY29uY2VwdCBvZiBSZW5kZXJTdXJm
YWNlIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJDaHJvbWl1bSBhbmQgdGhlIENDRHJhd1F1YWQs
IHJlcGxhY2luZyBpdCB3aXRoIFJlbmRlclBhc3MuCisgICAgICAgIFRoZSAicmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyIiBpcyByZW5hbWVkIHRvIHRoZSAiaW1wbFRleHR1cmVNYW5hZ2VyIgor
ICAgICAgICBhbmQgbGlrZS13aXNlIGZvciB0aGUgVGV4dHVyZUFsbG9jYXRvciwgYXMgdGhlc2Ug
YXJlIG5vdCB1c2VkCisgICAgICAgIGV4Y2x1c2l2ZWx5IGZvciByZW5kZXIgc3VyZmFjZXMgKHBh
c3NlcyksIGFuZCBhIHRleHR1cmUgbWFuYWdlciBmb3IKKyAgICAgICAgcmVuZGVyIHBhc3NlcyB0
aGF0IGRvZXMgbm90IHJlcXVpcmUgYSBSZW5kZXJTdXJmYWNlKiB3aWxsIGJlIHRoZSBmb2N1cwor
ICAgICAgICBvZiBmdXR1cmUgY2hhbmdlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyUGFzc1RleHR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVn
aW5EcmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZm
ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXND
dXJyZW50UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNz
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzTWFza1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW1wbFRleHR1cmVNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW1wbFRleHR1cmVBbGxvY2F0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NEcmF3UXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmZy
YW1lYnVmZmVyT3V0cHV0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NE
cmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFk
OjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFk
LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzc0RyYXdRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpyZW5kZXJQYXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjppc1JlcGxpY2EpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hc2tUZXh0dXJlSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnN1cmZhY2VEYW1hZ2VSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpmaWx0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVCYWNrZ3JvdW5k
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1
cmVzKToKKwogMjAxMi0wNi0wMSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBTb2Z0d2FyZSBjb21wb3NpdG9yIGluaXRpYWxpemF0aW9u
IGFuZCBiYXNlIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYzI5YjBmYTQx
MzEyZjY0Zjc0ZjRkNzE4Yzg1ODYwZmNiMmVmMTM4Yi4uY2ZiZDI4NWYxZGJlZTRiYmM4YTkwM2Ex
OTBlY2I4ZDI0YTE2ODg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0wNi0wMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIE1ha2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQ
YXNzZXMgaW5zdGVhZCBvZiBSZW5kZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qu
Y3BwOgorICAgICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudDo6RmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bUNsaWVudCk6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtQ2xpZW50Ojpyb290UmVuZGVyUGFzcyk6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50KToKKyAgICAgICAgKFRFU1RfRik6CisKIDIwMTItMDYtMDEgIEFsZXhhbmRy
ZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU29mdHdh
cmUgY29tcG9zaXRvciBpbml0aWFsaXphdGlvbiBhbmQgYmFzZSBjbGFzc2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggOTk0OWY1OTE1YTVkZmUzODcyMmQwMjI2NjhlMDIzODE3NTBiNDk2OS4uYzJmODg3
MzgzNGEzNWRlMjRlMDQzZTNjOTBjMDI1MDA1OGE1NjYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzczMiwxMCArMzczMiwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUXVhZEN1bGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0
ZXJzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlRmlsdGVycy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKaW5kZXggNGQ5MGNlNTY4OTQyNzVmY2I4ZTMwYzI4OGQ1MmRmYWM4MDZiNDdhZC4u
MzExNThhMTRjN2YwZDJlZGFhZjU1MzBkZWVjMTcyYjk4NTMyYjcyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiU2tCaXRtYXAu
aCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCkBAIC02Myw3ICs2Miw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5o
IgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJTdXJmYWNlRmlsdGVycy5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKQEAgLTIzMCwxMiArMjI5LDEy
IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVy
ZXJDbGllbnQqIGNsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24g
dGV4dHVyZVVwbG9hZGVyU2V0dGluZykKICAgICA6IENDUmVuZGVyZXIoY2xpZW50KQotICAgICwg
bV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQorICAgICwgbV9jdXJyZW50UmVuZGVyUGFzcygwKQog
ICAgICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVi
dWZmZXJJZCgwKQogICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAt
MC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UoMCkKKyAgICAsIG1fZGVmYXVsdFJlbmRlclBhc3MoMCkKICAgICAs
IG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2lzRnJhbWVidWZmZXJEaXNjYXJk
ZWQoZmFsc2UpCiAgICAgLCBtX3RleHR1cmVVcGxvYWRlclNldHRpbmcodGV4dHVyZVVwbG9hZGVy
U2V0dGluZykKQEAgLTM2MSw3ICszNjAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IGNoYXIqCiB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAg
aWYgKCF2aXNpYmxlKQotICAgICAgICByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7Cisg
ICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsKIAogICAgIC8vIFRPRE86IFJlcGxh
Y2Ugc2V0VmlzaWJpbGl0eUNIUk9NSVVNIHdpdGggYW4gZXh0ZW5zaW9uIHRvIGV4cGxpY2l0bHkg
bWFuYWdlIGZyb250L2JhY2tidWZmZXJzCiAgICAgLy8gY3JidWcuY29tLzExNjA0OQpAQCAtMzcx
LDIyICszNzAsMjIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogICAgIH0KIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVh
c2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKQogewotICAgIGlmIChtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlcikKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmV2aWN0
QW5kRGVsZXRlQWxsVGV4dHVyZXMobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQo
KSk7CisgICAgaWYgKG1faW1wbFRleHR1cmVNYW5hZ2VyKQorICAgICAgICBtX2ltcGxUZXh0dXJl
TWFuYWdlci0+ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhtX2ltcGxUZXh0dXJlQWxsb2NhdG9y
LmdldCgpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdl
ZCgpCiB7CiAgICAgbV9pc1ZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKLSAgICAvLyBSZXNldCB0
aGUgY3VycmVudCByZW5kZXIgc3VyZmFjZSB0byBmb3JjZSBhbiB1cGRhdGUgb2YgdGhlIHZpZXdw
b3J0IGFuZAotICAgIC8vIHByb2plY3Rpb24gbWF0cml4IG5leHQgdGltZSB1c2VSZW5kZXJTdXJm
YWNlIGlzIGNhbGxlZC4KLSAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICAvLyBS
ZXNldCB0aGUgY3VycmVudCBSZW5kZXJQYXNzIHRvIGZvcmNlIGFuIHVwZGF0ZSBvZiB0aGUgdmll
d3BvcnQgYW5kCisgICAgLy8gcHJvamVjdGlvbiBtYXRyaXggbmV4dCB0aW1lIHVzZVJlbmRlclBh
c3MgaXMgY2FsbGVkLgorICAgIG1fY3VycmVudFJlbmRlclBhc3MgPSAwOwogfQogCi12b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSog
cmVuZGVyU3VyZmFjZSwgQ0NSZW5kZXJTdXJmYWNlKiByb290UmVuZGVyU3VyZmFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjbGVhclJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zdCBD
Q1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzLCBjb25zdCBGbG9hdFJlY3QmIGZyYW1lYnVmZmVy
RGFtYWdlUmVjdCkKIHsKICAgICAvLyBOb24tcm9vdCBsYXllcnMgc2hvdWxkIGNsZWFyIHRoZWly
IGVudGlyZSBjb250ZW50cyB0byB0cmFuc3BhcmVudC4gT24gREVCVUcgYnVpbGRzLCB0aGUgcm9v
dCBsYXllcgogICAgIC8vIGlzIGNsZWFyZWQgdG8gYmx1ZSB0byBlYXNpbHkgc2VlIHJlZ2lvbnMg
dGhhdCB3ZXJlIG5vdCBkcmF3biBvbiB0aGUgc2NyZWVuLiBJZiB3ZQpAQCAtMzk0LDM2ICszOTMs
MzYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFyUmVuZGVyU3VyZmFjZShDQ1Jl
bmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UsIEMKICAgICAvLyBjbGVhciB0aGUgZGFtYWdlZCBy
ZWdpb24sIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGNsZWFyIHVuLWNoYW5nZWQgcG9y
dGlvbnMKICAgICAvLyBvZiB0aGUgc2NyZWVuLgogCi0gICAgaWYgKHJlbmRlclN1cmZhY2UgIT0g
cm9vdFJlbmRlclN1cmZhY2UpCisgICAgaWYgKHJlbmRlclBhc3MgIT0gcm9vdFJlbmRlclBhc3Mp
CiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAw
KSk7CiAgICAgZWxzZQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNsZWFyQ29s
b3IoMCwgMCwgMSwgMSkpOwogCiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3
YXApCi0gICAgICAgIHNldFNjaXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50UmVjdChzdXJmYWNlRGFt
YWdlUmVjdCkpOworICAgICAgICBzZXRTY2lzc29yVG9SZWN0KGVuY2xvc2luZ0ludFJlY3QoZnJh
bWVidWZmZXJEYW1hZ2VSZWN0KSk7CiAgICAgZWxzZQogICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogCiAj
aWYgZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKHJlbmRlclN1cmZhY2UgIT0gcm9vdFJlbmRlclN1
cmZhY2UpCisgICAgaWYgKHJlbmRlclBhc3MgIT0gcm9vdFJlbmRlclBhc3MpCiAjZW5kaWYKICAg
ICAgICAgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJ
VCk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6U0NJU1NPUl9URVNUKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpi
ZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1cmZhY2UqIGRlZmF1bHRSZW5kZXJTdXJmYWNlKQor
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVu
ZGVyUGFzcyogcm9vdFJlbmRlclBhc3MpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9u
Y2UgZnJhbWVidWZmZXIgaXMgYXV0b21hdGljYWxseSByZWNyZWF0ZWQgb24gZmlyc3QgdXNlCiAg
ICAgZW5zdXJlRnJhbWVidWZmZXIoKTsKIAotICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgPSBk
ZWZhdWx0UmVuZGVyU3VyZmFjZTsKLSAgICBBU1NFUlQobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSk7
CisgICAgbV9kZWZhdWx0UmVuZGVyUGFzcyA9IHJvb3RSZW5kZXJQYXNzOworICAgIEFTU0VSVCht
X2RlZmF1bHRSZW5kZXJQYXNzKTsKIAogICAgIHNpemVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVz
ID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOwog
ICAgIHNpemVfdCBtYXhMaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUoKSk7CiAgICAgc2l6ZV90IG5ld0xpbWl0ID0gKG1heExpbWl0ID4gY29udGVudHNN
ZW1vcnlVc2VCeXRlcykgPyBtYXhMaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwOwot
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVz
KG5ld0xpbWl0KTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRC
eXRlcyhuZXdMaW1pdCk7CiAKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CkBAIC00NTYsMjIgKzQ1NSwyMSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZG9Ob09wKCkKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQ
YXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKIHsKLSAgICBDQ1JlbmRlclN1cmZh
Y2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCk7Ci0gICAgaWYg
KCF1c2VSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpKQorICAgIGlmICghdXNlUmVuZGVyUGFz
cyhyZW5kZXJQYXNzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2xlYXJSZW5kZXJTdXJmYWNl
KHJlbmRlclN1cmZhY2UsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UsIHJlbmRlclBhc3MtPnN1cmZh
Y2VEYW1hZ2VSZWN0KCkpOworICAgIGNsZWFyUmVuZGVyUGFzcyhyZW5kZXJQYXNzLCBtX2RlZmF1
bHRSZW5kZXJQYXNzLCByZW5kZXJQYXNzLT5zdXJmYWNlRGFtYWdlUmVjdCgpKTsKIAogICAgIGNv
bnN0IENDUXVhZExpc3QmIHF1YWRMaXN0ID0gcmVuZGVyUGFzcy0+cXVhZExpc3QoKTsKICAgICBm
b3IgKENDUXVhZExpc3Q6OmNvbnN0QmFja1RvRnJvbnRJdGVyYXRvciBpdCA9IHF1YWRMaXN0LmJh
Y2tUb0Zyb250QmVnaW4oKTsgaXQgIT0gcXVhZExpc3QuYmFja1RvRnJvbnRFbmQoKTsgKytpdCkK
ICAgICAgICAgZHJhd1F1YWQoaXQtPmdldCgpLCByZW5kZXJQYXNzLT5zdXJmYWNlRGFtYWdlUmVj
dCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IEND
RHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCwg
Y29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7CiAgICAgSW50UmVjdCBz
Y2lzc29yUmVjdDsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkgewot
ICAgICAgICBGbG9hdFJlY3QgY2xpcEFuZERhbWFnZVJlY3QgPSBzdXJmYWNlRGFtYWdlUmVjdDsK
KyAgICAgICAgRmxvYXRSZWN0IGNsaXBBbmREYW1hZ2VSZWN0ID0gZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0OwogICAgICAgICBpZiAoIXF1YWQtPmNsaXBSZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgY2xpcEFuZERhbWFnZVJlY3QuaW50ZXJzZWN0KHF1YWQtPmNsaXBSZWN0KCkpOwogICAgICAg
ICBzY2lzc29yUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoY2xpcEFuZERhbWFnZVJlY3QpOwpAQCAt
NTAzLDggKzUwMSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25z
dCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25zdCBGbG9hdFJlY3QmIHN1CiAgICAgY2FzZSBDQ0RyYXdR
dWFkOjpJT1N1cmZhY2VDb250ZW50OgogICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChxdWFkLT50
b0lPU3VyZmFjZURyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1
YWQ6OlJlbmRlclN1cmZhY2U6Ci0gICAgICAgIGRyYXdSZW5kZXJTdXJmYWNlUXVhZChxdWFkLT50
b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpKTsKKyAgICBjYXNlIENDRHJhd1F1YWQ6OlJlbmRlclBh
c3M6CisgICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChxdWFkLT50b1JlbmRlclBhc3NEcmF3UXVh
ZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yOgog
ICAgICAgICBkcmF3U29saWRDb2xvclF1YWQocXVhZC0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSk7
CkBAIC01ODgsNyArNTg2LDcgQEAgc3RhdGljIGlubGluZSBTa0JpdG1hcCBhcHBseUZpbHRlcnMo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogICAgIHJldHVybiBD
Q1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0ZXJzLCBzb3VyY2VUZXh0dXJlLT50ZXh0
dXJlSWQoKSwgc291cmNlVGV4dHVyZS0+c2l6ZSgpLCBmaWx0ZXJDb250ZXh0LmdldCgpKTsKIH0K
IAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25z
dCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogcXVhZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVh
ZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3Jt
KQogewogICAgIC8vIFRoaXMgbWV0aG9kIGRyYXdzIGEgYmFja2dyb3VuZCBmaWx0ZXIsIHdoaWNo
IGFwcGxpZXMgYSBmaWx0ZXIgdG8gYW55IHBpeGVscyBiZWhpbmQgdGhlIHF1YWQgYW5kIHNlZW4g
dGhyb3VnaCBpdHMgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgYWxnb3JpdGhtIHdvcmtzIGFzIGZv
bGxvd3M6CkBAIC02MDQsMTMgKzYwMiwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAg
IC8vCiAgICAgLy8gUGl4ZWwgY29waWVzIGluIHRoaXMgYWxnb3JpdGhtIG9jY3VyIGF0IHN0ZXBz
IDIsIDMsIDQsIGFuZCA1LgogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSA9
IHF1YWQtPmxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRy
YXdpbmdTdXJmYWNlID0gcXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRTdXJmYWNlKCk7CiAgICAg
aWYgKHF1YWQtPmJhY2tncm91bmRGaWx0ZXJzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBGSVhNRTogV2Ugb25seSBhbGxvdyBiYWNrZ3JvdW5kIGZpbHRlcnMgb24gdGhl
IHJvb3QgcmVuZGVyIHN1cmZhY2UgYmVjYXVzZSBvdGhlciBzdXJmYWNlcyBtYXkgY29udGFpbgog
ICAgIC8vIHRyYW5zbHVjZW50IHBpeGVscywgYW5kIHRoZSBjb250ZW50cyBiZWhpbmQgdGhvc2Ug
dHJhbnNsdWNlbnQgcGl4ZWxzIHdvdWxkbid0IGhhdmUgdGhlIGZpbHRlciBhcHBsaWVkLgotICAg
IGlmICghaXNDdXJyZW50UmVuZGVyU3VyZmFjZShtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKSkKKyAg
ICBpZiAoIWlzQ3VycmVudFJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVyUGFzcykpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBEbyBhIHNpbmdsZSByZWFkYmFjayBmb3IgYm90aCB0
aGUgc3VyZmFjZSBhbmQgcmVwbGljYSBhbmQgY2FjaGUgdGhlIGZpbHRlcmVkIHJlc3VsdHMgKG9u
Y2UgZmlsdGVyIHRleHR1cmVzIGFyZSBub3QgcmV1c2VkKS4KQEAgLTYyMSw5ICs2MTksOSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEND
UmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAgIGRldmljZVJlY3QubW92ZSgtbGVmdCwgLXRvcCk7
CiAgICAgZGV2aWNlUmVjdC5leHBhbmQobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pOwogCi0g
ICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJl
Y3QoKSk7CisgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyUGFzcy0+ZnJh
bWVidWZmZXJPdXRwdXRSZWN0KCkpOwogCi0gICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBkZXZp
Y2VCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobV9yZW5kZXJTdXJm
YWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOworICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gZGV2
aWNlQmFja2dyb3VuZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1faW1wbFRleHR1
cmVNYW5hZ2VyLmdldCgpKTsKICAgICBpZiAoIWdldEZyYW1lYnVmZmVyVGV4dHVyZShkZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSwgZGV2aWNlUmVjdCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjM3LDI4ICs2MzUsMjggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNr
Z3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoKICAgICBpZiAoIWRy
YXdpbmdTdXJmYWNlLT5wcmVwYXJlQmFja2dyb3VuZFRleHR1cmUodGhpcykpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IG1fY3Vy
cmVudFJlbmRlclN1cmZhY2U7CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiB0YXJnZXRSZW5kZXJQ
YXNzID0gbV9jdXJyZW50UmVuZGVyUGFzczsKICAgICBpZiAodXNlTWFuYWdlZFRleHR1cmUoZHJh
d2luZ1N1cmZhY2UtPmJhY2tncm91bmRUZXh0dXJlKCksIHF1YWQtPnF1YWRSZWN0KCkpKSB7CiAg
ICAgICAgIC8vIENvcHkgdGhlIHJlYWRiYWNrIHBpeGVscyBmcm9tIGRldmljZSB0byB0aGUgYmFj
a2dyb3VuZCB0ZXh0dXJlIGZvciB0aGUgc3VyZmFjZS4KLSAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtOwotICAgICAgICBkZXZpY2VUb1N1cmZh
Y2VUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSAvIDIuMCwgcXVh
ZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRy
YW5zZm9ybS5zY2FsZTNkKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+cXVhZFJlY3Qo
KS5oZWlnaHQoKSwgMSk7Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS5tdWx0aXBs
eShjb250ZW50c0RldmljZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwotICAgICAgICBkZXZpY2VUb1N1
cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3Qud2lkdGgoKSAvIDIuMCwgZGV2aWNl
UmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50
cmFuc2xhdGUoZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpKTsKKyAgICAgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybTsKKyAgICAgICAg
ZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUocXVhZC0+cXVhZFJlY3QoKS53
aWR0aCgpIC8gMi4wLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpIC8gMi4wKTsKKyAgICAgICAg
ZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS5zY2FsZTNkKHF1YWQtPnF1YWRSZWN0KCkud2lk
dGgoKSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSwgMSk7CisgICAgICAgIGRldmljZVRvRnJh
bWVidWZmZXJUcmFuc2Zvcm0ubXVsdGlwbHkoY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaW52ZXJz
ZSgpKTsKKyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUoZGV2
aWNlUmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VSZWN0LmhlaWdodCgpIC8gMi4wKTsKKyAgICAg
ICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC54KCks
IGRldmljZVJlY3QueSgpKTsKIAotICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZmls
dGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LnNpemUoKSwgZGV2aWNl
VG9TdXJmYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZp
bHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVjdC5zaXplKCksIGRldmlj
ZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0pOwogCi0gICAgICAgIHVzZVJlbmRlclN1cmZhY2UodGFy
Z2V0UmVuZGVyU3VyZmFjZSk7CisgICAgICAgIHVzZVJlbmRlclBhc3ModGFyZ2V0UmVuZGVyUGFz
cyk7CiAgICAgfQogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1
cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQordm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NE
cmF3UXVhZCogcXVhZCkKIHsKICAgICAvLyBUaGUgcmVwbGljYSBpcyBhbHdheXMgZHJhd24gZmly
c3QsIHNvIGZyZWUgYWZ0ZXIgZHJhd2luZyB0aGUgY29udGVudHMuCiAgICAgYm9vbCBzaG91bGRS
ZWxlYXNlVGV4dHVyZXMgPSAhcXVhZC0+aXNSZXBsaWNhKCk7CiAKLSAgICBDQ1JlbmRlclN1cmZh
Y2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAg
IENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5yZW5kZXJQYXNzKCktPnRh
cmdldFN1cmZhY2UoKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRyYW5z
Zm9ybSA9IHF1YWQtPmxheWVyVHJhbnNmb3JtKCk7CiAgICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZh
Y3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgpAQCAt
NzE2LDcgKzcxNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3Vy
ZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgaW50IHNoYWRlck1h
dHJpeExvY2F0aW9uID0gLTE7CiAgICAgaW50IHNoYWRlckFscGhhTG9jYXRpb24gPSAtMTsKICAg
ICBpZiAodXNlQUEgJiYgdXNlTWFzaykgewotICAgICAgICBjb25zdCBSZW5kZXJTdXJmYWNlTWFz
a1Byb2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7CisgICAg
ICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKiBwcm9ncmFtID0gcmVuZGVyUGFzc01h
c2tQcm9ncmFtQUEoKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigp
LCAwKSk7CiAKQEAgLTcyNiw3ICs3MjQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAg
ICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKTsKICAgICB9IGVsc2UgaWYgKCF1c2VBQSAmJiB1
c2VNYXNrKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSogcHJvZ3Jh
bSA9IHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOworICAgICAgICBjb25zdCBSZW5kZXJQYXNz
TWFza1Byb2dyYW0qIHByb2dyYW0gPSByZW5kZXJQYXNzTWFza1Byb2dyYW0oKTsKICAgICAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkp
OwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTczNCw3ICs3MzIs
NyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNv
bnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlv
biA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CiAgICAgICAgIHNo
YWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRp
b24oKTsKICAgICB9IGVsc2UgaWYgKHVzZUFBICYmICF1c2VNYXNrKSB7Ci0gICAgICAgIGNvbnN0
IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJTdXJmYWNlUHJvZ3JhbUFB
KCk7CisgICAgICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQ
YXNzUHJvZ3JhbUFBKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJv
Z3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24o
KSwgMCkpOwogCkBAIC03NDMsNyArNzQxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoKICAg
ICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRy
aXhMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29u
c3QgUmVuZGVyU3VyZmFjZVByb2dyYW0qIHByb2dyYW0gPSByZW5kZXJTdXJmYWNlUHJvZ3JhbSgp
OworICAgICAgICBjb25zdCBSZW5kZXJQYXNzUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQ
cm9ncmFtKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShw
cm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51
bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkp
OwogCkBAIC0xMDc3LDkgKzEwNzUsOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29w
eUZyYW1lVG9UZXh0dXJlcyhjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQpCiB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKGNvbnN0IENDVmlkZW9EcmF3UXVh
ZCogcXVhZCwgY29uc3Qgdm9pZCogcGxhbmUsIGludCBpbmRleCkKIHsKICAgICBDQ1ZpZGVvTGF5
ZXJJbXBsOjpUZXh0dXJlJiB0ZXh0dXJlID0gcXVhZC0+dGV4dHVyZXMoKVtpbmRleF07Ci0gICAg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yID0gcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0
b3IoKTsKICAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOwotICAgIHRleHR1cmUubV90ZXh0dXJlLT5i
aW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIGFsbG9jYXRvcik7CisgICAgdGV4dHVyZS5tX3Rl
eHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgbV9pbXBsVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKSk7CiAgICAgR0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1h
dCgpOwogICAgIEludFNpemUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7
CiAKQEAgLTEyMTQsMTMgKzEyMTEsMTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSogaHVkVGV4dHVyZSwgY29uc3QKICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQp
KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRl
eHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOwogICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJ
U1NPUl9URVNUKSk7Ci0gICAgdXNlUmVuZGVyU3VyZmFjZShtX2RlZmF1bHRSZW5kZXJTdXJmYWNl
KTsKKyAgICB1c2VSZW5kZXJQYXNzKG1fZGVmYXVsdFJlbmRlclBhc3MpOwogCiAgICAgY29uc3Qg
SGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFtID0gaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7
CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCkpOwogICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgaHVkVGV4dHVyZS0+Ymlu
ZFRleHR1cmUoY2NDb250ZXh0LmdldCgpLCByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigp
KTsKKyAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIG1faW1wbFRl
eHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNl
UHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigp
LCAwKSk7CiAKQEAgLTEyMzcsMTQgKzEyMzQsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmZpbmlzaERyYXdpbmdGcmFtZSgpCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5k
aXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKLSAg
ICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsK
KyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAogICAg
IHNpemVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0
b3ItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOwogICAgIHNpemVfdCByZWNsYWltTGltaXQgPSBU
ZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOwogICAgIHNp
emVfdCBwcmVmZXJyZWRMaW1pdCA9IHJlY2xhaW1MaW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNlQnl0
ZXMgPyByZWNsYWltTGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMDsKLSAgICBtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhw
cmVmZXJyZWRMaW1pdCk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnJlZHVj
ZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQpOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvci5nZXQoKSk7CisgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXQpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2Vy
LT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0KTsKKyAgICBtX2ltcGxUZXh0dXJl
TWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0
KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dG9HTE1hdHJpeChmbG9hdCog
ZmxhdHRlbmVkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKQEAgLTEzMDQsNyAr
MTMwMSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkK
IHsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclN1cmZh
Y2VQcm9ncmFtKCk7CisgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW0qIHByb2dyYW0gPSByZW5k
ZXJQYXNzUHJvZ3JhbSgpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRl
eHR1cmVJZCkpOwpAQCAtMTQ0Niw1MCArMTQ0Myw0OCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOwotICAg
IHRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY2NDb250ZXh0
LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwLCB0ZXh0dXJlLT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53
aWR0aCgpLCBkZXZpY2VSZWN0LmhlaWdodCgpLCAwKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJTdXJmYWNlKENDUmVu
ZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpp
c0N1cnJlbnRSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKIHsKLSAg
ICAvLyBJZiByZW5kZXJTdXJmYWNlIGlzIDAsIHdlIGNhbid0IHRlbGwgaWYgd2UgYXJlIGFscmVh
ZHkgdXNpbmcgaXQsIHNpbmNlIG1fY3VycmVudFJlbmRlclN1cmZhY2UgaXMKLSAgICAvLyBpbml0
aWFsaXplZCB0byAwLgotICAgIHJldHVybiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJlbmRl
clN1cmZhY2UgJiYgIW1fY3VycmVudE1hbmFnZWRUZXh0dXJlOworICAgIHJldHVybiBtX2N1cnJl
bnRSZW5kZXJQYXNzID09IHJlbmRlclBhc3MgJiYgIW1fY3VycmVudE1hbmFnZWRUZXh0dXJlOwog
fQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRl
clN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNl
UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCiB7Ci0gICAgbV9jdXJy
ZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgbV9jdXJyZW50UmVuZGVyUGFz
cyA9IHJlbmRlclBhc3M7CiAgICAgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUgPSAwOwogCi0gICAg
aWYgKHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSkgeworICAgIGlmIChy
ZW5kZXJQYXNzID09IG1fZGVmYXVsdFJlbmRlclBhc3MpIHsKICAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCAwKSk7Ci0gICAgICAgIHNldERyYXdWaWV3cG9ydFJlY3QocmVuZGVyU3VyZmFjZS0+Y29u
dGVudFJlY3QoKSwgdHJ1ZSk7CisgICAgICAgIHNldERyYXdGcmFtZWJ1ZmZlclJlY3QocmVuZGVy
UGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCksIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoIXJlbmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1
cmUodGhpcykpCisgICAgaWYgKCFyZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCktPnByZXBhcmVD
b250ZW50c1RleHR1cmUodGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUocmVuZGVyU3VyZmFjZS0+Y29udGVudHNUZXh0dXJl
KCksIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOworICAgIHJldHVybiBiaW5kRnJhbWVi
dWZmZXJUb1RleHR1cmUocmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpLT5jb250ZW50c1RleHR1
cmUoKSwgcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkpOwogfQogCiBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKIHsKLSAgICBtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlID0gMDsKKyAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gMDsKICAgICBtX2N1cnJl
bnRNYW5hZ2VkVGV4dHVyZSA9IHRleHR1cmU7CiAKICAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKHRleHR1cmUsIHZpZXdwb3J0UmVjdCk7CiB9CiAKLWJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIGZyYW1lYnVmZmVyUmVjdCkKIHsKICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKLSAg
ICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChjY0NvbnRleHQuZ2V0KCksIG1fcmVuZGVy
U3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKGNjQ29udGV4dC5nZXQoKSwgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7
CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTQ5OCw3ICsxNDkzLDcgQEAg
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgY28KICAgICB9CiAjZW5kaWYKIAotICAgIHNldERyYXdWaWV3
cG9ydFJlY3Qodmlld3BvcnRSZWN0LCBmYWxzZSk7CisgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVj
dChmcmFtZWJ1ZmZlclJlY3QsIGZhbHNlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUw
NywyMSArMTUwMiwyMSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVm
ZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjbwogLy8gc2Npc3NvclJlY3Qg
aGFzIGl0cyBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCB2aXNp
YmxlIHJlY3QuCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0U2Npc3NvclRvUmVjdChj
b25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKIHsKLSAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0g
KG1fY3VycmVudFJlbmRlclN1cmZhY2UgPyBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50
UmVjdCgpIDogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CisgICAgSW50
UmVjdCBmcmFtZWJ1ZmZlck91dHB1dFJlY3QgPSAobV9jdXJyZW50UmVuZGVyUGFzcyA/IG1fY3Vy
cmVudFJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpIDogbV9kZWZhdWx0UmVuZGVy
UGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogCiAgICAg
Ly8gVGhlIHNjaXNzb3IgY29vcmRpbmF0ZXMgbXVzdCBiZSBzdXBwbGllZCBpbiB2aWV3cG9ydCBz
cGFjZSBzbyB3ZSBuZWVkIHRvIG9mZnNldAotICAgIC8vIGJ5IHRoZSByZWxhdGl2ZSBwb3NpdGlv
biBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHJlbmRlciBzdXJmYWNlLgot
ICAgIGludCBzY2lzc29yWCA9IHNjaXNzb3JSZWN0LngoKSAtIGNvbnRlbnRSZWN0LngoKTsKKyAg
ICAvLyBieSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgY3VycmVudCByZW5kZXIgcGFzcy4KKyAgICBpbnQgc2Npc3NvclggPSBzY2lzc29yUmVjdC54
KCkgLSBmcmFtZWJ1ZmZlck91dHB1dFJlY3QueCgpOwogICAgIC8vIFdoZW4gcmVuZGVyaW5nIHRv
IHRoZSBkZWZhdWx0IHJlbmRlciBzdXJmYWNlIHdlJ3JlIHJlbmRlcmluZyB1cHNpZGUgZG93biBz
byB0aGUgdG9wCiAgICAgLy8gb2YgdGhlIEdMIHNjaXNzb3IgaXMgdGhlIGJvdHRvbSBvZiBvdXIg
bGF5ZXIuCiAgICAgLy8gQnV0LCBpZiByZW5kZXJpbmcgdG8gb2Zmc2NyZWVuIHRleHR1cmUsIHdl
IHJldmVyc2Ugb3VyIHNlbnNlIG9mICd1cHNpZGUgZG93bicuCiAgICAgaW50IHNjaXNzb3JZOwot
ICAgIGlmIChpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQot
ICAgICAgICBzY2lzc29yWSA9IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCku
aGVpZ2h0KCkgLSAoc2Npc3NvclJlY3QubWF4WSgpIC0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+
Y29udGVudFJlY3QoKS55KCkpOworICAgIGlmIChpc0N1cnJlbnRSZW5kZXJQYXNzKG1fZGVmYXVs
dFJlbmRlclBhc3MpKQorICAgICAgICBzY2lzc29yWSA9IGZyYW1lYnVmZmVyT3V0cHV0UmVjdC5o
ZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkgLSBmcmFtZWJ1ZmZlck91dHB1dFJlY3QueSgp
KTsKICAgICBlbHNlCi0gICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgpIC0gY29udGVu
dFJlY3QueSgpOworICAgICAgICBzY2lzc29yWSA9IHNjaXNzb3JSZWN0LnkoKSAtIGZyYW1lYnVm
ZmVyT3V0cHV0UmVjdC55KCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5zY2lzc29y
KHNjaXNzb3JYLCBzY2lzc29yWSwgc2Npc3NvclJlY3Qud2lkdGgoKSwgc2Npc3NvclJlY3QuaGVp
Z2h0KCkpKTsKIH0KIApAQCAtMTUzMyw3ICsxNTI4LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hy
b21pdW06Om1ha2VDb250ZXh0Q3VycmVudCgpCiAvLyBTZXRzIHRoZSBjb29yZGluYXRlIHJhbmdl
IG9mIGNvbnRlbnQgdGhhdCBlbmRzIGJlaW5nIGRyYXduIG9udG8gdGhlIHRhcmdldCByZW5kZXIg
c3VyZmFjZS4KIC8vIFRoZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UgaXMgYXNzdW1lZCB0byBoYXZl
IGFuIG9yaWdpbiBhdCAwLCAwIGFuZCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZgogLy8gb2YgdGhl
IGRyYXdSZWN0Lgotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJl
Y3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wgZmxpcFkpCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVj
dCwgYm9vbCBmbGlwWSkKIHsKICAgICBpZiAoZmxpcFkpCiAgICAgICAgIG1fcHJvamVjdGlvbk1h
dHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0LngoKSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVj
dC5tYXhZKCksIGRyYXdSZWN0LnkoKSk7CkBAIC0xNTU1LDI3ICsxNTUwLDI3IEBAIGJvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgLy8gV2Ug
d2lsbCBhbHdheXMgbmVlZCB0aGVzZSBwcm9ncmFtcyB0byByZW5kZXIsIHNvIGNyZWF0ZSB0aGUg
cHJvZ3JhbXMgZWFnZXJseSBzbyB0aGF0IHRoZSBzaGFkZXIgY29tcGlsYXRpb24gY2FuCiAgICAg
Ly8gc3RhcnQgd2hpbGUgd2UgZG8gb3RoZXIgd29yay4gT3RoZXIgcHJvZ3JhbXMgYXJlIGNyZWF0
ZWQgbGF6aWx5IG9uIGZpcnN0IGFjY2Vzcy4KICAgICBtX3NoYXJlZEdlb21ldHJ5ID0gYWRvcHRQ
dHIobmV3IEdlb21ldHJ5QmluZGluZyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX3JlbmRlclN1
cmZhY2VQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSkpOworICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVy
UGFzc1Byb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgbV90aWxlUHJvZ3JhbSA9IGFkb3B0
UHRyKG5ldyBUaWxlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBtX3RpbGVQcm9ncmFt
T3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtT3BhcXVlKG1fY29udGV4dC5nZXQoKSkp
OwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVzaCgpKTsKIAotICAgIG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJl
TWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5t
YXhUZXh0dXJlU2l6ZSk7CisgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1h
eFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX3RleHR1cmVVcGxvYWRl
clNldHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIpCiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVy
ID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXI6OmNyZWF0ZSgpOwogICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKLSAgICBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVh
dGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9j
YXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQotICAgICAgICBtX3JlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKKyAgICAgICAgbV9pbXBsVGV4dHVyZUFs
bG9jYXRvci0+c2V0VGV4dHVyZVVzYWdlSGludChUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OkZy
YW1lYnVmZmVyQXR0YWNobWVudCk7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVy
ZVN0b3JhZ2VFeHRlbnNpb24pIHsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3It
PnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwotICAgICAgICBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJlU3RvcmFnZUV4dCh0cnVlKTsKKyAgICAgICAg
bV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjE0LDQ3ICsxNjA5LDQ3IEBAIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6SGVhZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmhlYWRzCiAgICAgcmV0dXJuIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmdldCgp
OwogfQogCi1jb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclN1cmZhY2VQcm9ncmFt
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtKCkKK2NvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6cmVuZGVyUGFzc1Byb2dyYW0oKQogewotICAgIEFTU0VSVChtX3JlbmRlclN1cmZhY2VQ
cm9ncmFtKTsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemVkKCkp
IHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3Vy
ZmFjZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9yZW5kZXJTdXJm
YWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIEFTU0VSVChtX3Jl
bmRlclBhc3NQcm9ncmFtKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxp
emVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVu
ZGVyUGFzc1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQ
YXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1
cm4gbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS5nZXQoKTsKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNz
UHJvZ3JhbS5nZXQoKTsKIH0KIAotY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJT
dXJmYWNlUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9n
cmFtQUEoKQorY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbUFB
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtQUEoKQogewotICAgIGlm
ICghbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9n
cmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZVByb2dyYW1BQShtX2NvbnRleHQuZ2V0
KCkpKTsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkg
ewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJm
YWNlUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyU3Vy
ZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmICghbV9y
ZW5kZXJQYXNzUHJvZ3JhbUFBKQorICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtQUEgPSBhZG9w
dFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAo
IW1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBOjppbml0aWFs
aXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6
ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBLmdldCgpOworICAgIHJldHVybiBtX3JlbmRlclBhc3NQcm9ncmFtQUEuZ2V0KCk7CiB9
CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFt
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpCitjb25z
dCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW0oKQogewotICAgIGlmICghbV9yZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0pCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkp
KTsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7
Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmICgh
bV9yZW5kZXJQYXNzTWFza1Byb2dyYW0pCisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsK
KyAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJv
Z3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gbV9y
ZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01h
c2tQcm9ncmFtLmdldCgpOwogfQogCi1jb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRl
clN1cmZhY2VNYXNrUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbUFBKCkKK2NvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFz
c01hc2tQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9n
cmFtQUEoKQogewotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSkKLSAgICAg
ICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJm
YWNlTWFza1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBpZiAoIW1fcmVuZGVyU3Vy
ZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE6OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS0+
aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1By
b2dyYW1BQSkKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5l
dyBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1f
cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUE6Omlu
aXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+
aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gbV9yZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW1BQS5nZXQoKTsKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1By
b2dyYW1BQS5nZXQoKTsKIH0KIAogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJv
Z3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbSgpCkBAIC0xNzk3LDE0ICsx
NzkyLDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0
cygpCiAgICAgaWYgKG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0pCiAgICAgICAgIG1fdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKIAotICAgIGlmICht
X3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1By
b2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKLSAgICBpZiAobV9yZW5kZXJTdXJmYWNl
UHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRl
eHQuZ2V0KCkpOwotICAgIGlmIChtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKQotICAgICAg
ICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7
Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJTdXJm
YWNlUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVy
UGFzc01hc2tQcm9ncmFtKQorICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+Y2xlYW51
cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3JlbmRlclBhc3NQcm9ncmFtKQorICAgICAg
ICBtX3JlbmRlclBhc3NQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYg
KG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9yZW5kZXJQYXNzUHJv
Z3JhbUFBKQorICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0
LmdldCgpKTsKIAogICAgIGlmIChtX3RleHR1cmVQcm9ncmFtKQogICAgICAgICBtX3RleHR1cmVQ
cm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CkBAIC0xODMwLDcgKzE4MjUsNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1f
dGV4dHVyZUNvcGllci5jbGVhcigpOwogICAgIG1fdGV4dHVyZVVwbG9hZGVyLmNsZWFyKCk7CiAK
LSAgICByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CisgICAgcmVsZWFzZVJlbmRlclBh
c3NUZXh0dXJlcygpOwogfQogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb250ZXh0
TG9zdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDJlZmJkYjI2MGJj
Mzc1ZmE2M2UzYzA4NDliMzhiNjZhNWQ5Yjk2NmMuLjcwYmIwZTA3YmY4YzI3ZDExYTgwMDEyODRl
MGU5MDg4NmJhNTJhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC00
Niw3ICs0Niw3IEBAIGNsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQ7CiBjbGFzcyBDQ0RyYXdRdWFkOwogY2xhc3MgQ0NJT1N1cmZhY2VEcmF3
UXVhZDsKLWNsYXNzIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkOworY2xhc3MgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ7CiBjbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKIGNsYXNzIENDVGV4dHVyZURy
YXdRdWFkOwogY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdp
bmdGcmFtZShDQ1JlbmRlclN1cmZhY2UqIGRlZmF1bHRSZW5kZXJTdXJmYWNlKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiBk
ZWZhdWx0UmVuZGVyUGFzcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQ
YXNzKGNvbnN0IENDUmVuZGVyUGFzcyopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsKIApAQCAtOTIsMTQgKzkyLDEzIEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IEdlb21ldHJ5QmluZGluZyogc2hhcmVkR2VvbWV0cnkoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJlZEdlb21ldHJ5LmdldCgpOyB9CiAKLQogICAgIHZpcnR1YWwgdm9pZCBnZXRG
cmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsK
ICAgICBib29sIGdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIGRldmljZVJlY3QpOwogCi0gICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogcmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2Vy
KiBpbXBsVGV4dHVyZU1hbmFnZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltcGxUZXh0
dXJlTWFuYWdlci5nZXQoKTsgfQogICAgIHZpcnR1YWwgVGV4dHVyZUNvcGllciogdGV4dHVyZUNv
cGllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsgfQog
ICAgIHZpcnR1YWwgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3RleHR1cmVVcGxvYWRlci5nZXQoKTsgfQotICAgIHZpcnR1YWwgVGV4
dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9Cisg
ICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBpbXBsVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KICAgICB2
aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJ
REU7CkBAIC0xMjUsMTEgKzEyNCwxMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7CiAKLSAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBG
bG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IEND
RHJhd1F1YWQqLCBjb25zdCBGbG9hdFJlY3QmIHJlbmRlclBhc3NEZXZpY2VEYW1hZ2VSZWN0KTsK
ICAgICB2b2lkIGRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQqKTsKICAgICB2b2lkIGRyYXdEZWJ1Z0JvcmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkKik7Ci0gICAgdm9pZCBkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
ZXZpY2VUcmFuc2Zvcm0pOwotICAgIHZvaWQgZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IEND
UmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pOworICAgIHZvaWQgZHJhd1JlbmRlclBhc3NRdWFk
KGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3U29saWRDb2xvclF1
YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdUZXh0dXJlUXVh
ZChjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd0lPU3VyZmFjZVF1YWQo
Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCopOwpAQCAtMTQ0LDE4ICsxNDMsMTggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRyYXdSR0JBKGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwogICAgIHZvaWQg
ZHJhd1lVVihjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqKTsKIAotICAgIHZvaWQgc2V0RHJhd1ZpZXdw
b3J0UmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBmbGlwWSk7CisgICAgdm9pZCBzZXREcmF3RnJh
bWVidWZmZXJSZWN0KGNvbnN0IEludFJlY3QmLCBib29sIGZsaXBZKTsKIAotICAgIC8vIFRoZSBj
dXJyZW50IGRyYXdpbmcgdGFyZ2V0IGlzIGVpdGhlciBhIFJlbmRlclN1cmZhY2Ugb3IgTWFuYWdl
ZFRleHR1cmUuIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gc3dpdGNoIHRvIGEgbmV3IGRyYXdpbmcg
dGFyZ2V0LgotICAgIGJvb2wgdXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqKTsKKyAg
ICAvLyBUaGUgY3VycmVudCBkcmF3aW5nIHRhcmdldCBpcyBlaXRoZXIgYSBSZW5kZXJQYXNzIG9y
IE1hbmFnZWRUZXh0dXJlLiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvIHN3aXRjaCB0byBhIG5ldyBk
cmF3aW5nIHRhcmdldC4KKyAgICBib29sIHVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
Kik7CiAgICAgYm9vbCB1c2VNYW5hZ2VkVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHZpZXdwb3J0UmVjdCk7Ci0gICAgYm9vbCBpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKEND
UmVuZGVyU3VyZmFjZSopOworICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyUGFzcyhjb25zdCBDQ1Jl
bmRlclBhc3MqKTsKIAogICAgIGJvb2wgYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKIAotICAgIHZvaWQgY2xlYXJS
ZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSosIENDUmVuZGVyU3VyZmFjZSogcm9vdFJlbmRl
clN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOworICAgIHZvaWQg
Y2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IENDUmVuZGVyUGFzcyog
cm9vdFJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsK
IAotICAgIHZvaWQgcmVsZWFzZVJlbmRlclN1cmZhY2VUZXh0dXJlcygpOworICAgIHZvaWQgcmVs
ZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKIApAQCAtMTY3LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1cnJl
bnRSZW5kZXJTdXJmYWNlOworICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9jdXJyZW50UmVuZGVy
UGFzczsKICAgICBNYW5hZ2VkVGV4dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CiAgICAg
dW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwogCkBAIC0xODYsMTMgKzE4NSwxMCBA
QCBwcml2YXRlOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4
LCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZD4gVGlsZUNoZWNrZXJib2FyZFByb2dyYW07CiAK
ICAgICAvLyBSZW5kZXIgc3VyZmFjZSBzaGFkZXJzLgotICAgIC8vIENDUmVuZGVyU3VyZmFjZTo6
ZHJhd0xheWVycygpIG5lZWRzIHRvIHNlZSB0aGVzZSBwcm9ncmFtcyBjdXJyZW50bHkuCi0gICAg
Ly8gRklYTUU6IERyYXcgd2l0aCBhIHF1YWQgdHlwZSBmb3IgcmVuZGVyIHN1cmZhY2VzIGFuZCBn
ZXQgcmlkIG9mIHRoaXMgZnJpZW5kbHluZXNzLgotICAgIGZyaWVuZCBjbGFzcyBDQ1JlbmRlclN1
cmZhY2U7Ci0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBSZW5kZXJTdXJmYWNlUHJvZ3JhbTsKLSAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4QWxwaGFNYXNrPiBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW07Ci0gICAgdHlwZWRlZiBQcm9n
cmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFB
PiBSZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOwotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IFJlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hh
ZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUmVuZGVyUGFzc1Byb2dyYW07
CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFzaz4gUmVuZGVyUGFzc01hc2tQcm9ncmFtOworICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFBQT4gUmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBPiBSZW5k
ZXJQYXNzTWFza1Byb2dyYW1BQTsKIAogICAgIC8vIFRleHR1cmUgc2hhZGVycy4KICAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGE+IFRleHR1cmVQcm9ncmFtOwpAQCAtMjE4LDEwICsyMTQsMTAgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBUaWxlUHJvZ3JhbVN3aXp6bGVBQSogdGlsZVByb2dyYW1Td2l6
emxlQUEoKTsKICAgICBjb25zdCBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogdGlsZUNoZWNrZXJi
b2FyZFByb2dyYW0oKTsKIAotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiByZW5kZXJT
dXJmYWNlUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEqIHJlbmRl
clN1cmZhY2VQcm9ncmFtQUEoKTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0q
IHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VNYXNr
UHJvZ3JhbUFBKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOworICAgIGNvbnN0IFJlbmRl
clBhc3NQcm9ncmFtKiByZW5kZXJQYXNzUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRlclBhc3NQ
cm9ncmFtQUEqIHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBSZW5kZXJQYXNzTWFz
a1Byb2dyYW0qIHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRlclBhc3NN
YXNrUHJvZ3JhbUFBKiByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogCiAgICAgY29uc3QgVGV4
dHVyZVByb2dyYW0qIHRleHR1cmVQcm9ncmFtKCk7CiAgICAgY29uc3QgVGV4dHVyZVByb2dyYW1G
bGlwKiB0ZXh0dXJlUHJvZ3JhbUZsaXAoKTsKQEAgLTI0MiwxMCArMjM4LDEwIEBAIHByaXZhdGU6
CiAgICAgT3duUHRyPFRpbGVQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVQcm9ncmFtU3dpenpsZUFB
OwogICAgIE93blB0cjxUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbT4gbV90aWxlQ2hlY2tlcmJvYXJk
UHJvZ3JhbTsKIAotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlUHJvZ3JhbT4gbV9yZW5kZXJTdXJm
YWNlUHJvZ3JhbTsKLSAgICBPd25QdHI8UmVuZGVyU3VyZmFjZVByb2dyYW1BQT4gbV9yZW5kZXJT
dXJmYWNlUHJvZ3JhbUFBOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0+IG1f
cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlTWFza1By
b2dyYW1BQT4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQTsKKyAgICBPd25QdHI8UmVuZGVy
UGFzc1Byb2dyYW0+IG1fcmVuZGVyUGFzc1Byb2dyYW07CisgICAgT3duUHRyPFJlbmRlclBhc3NQ
cm9ncmFtQUE+IG1fcmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICBPd25QdHI8UmVuZGVyUGFzc01h
c2tQcm9ncmFtPiBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVuZGVyUGFz
c01hc2tQcm9ncmFtQUE+IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUE7CiAKICAgICBPd25QdHI8
VGV4dHVyZVByb2dyYW0+IG1fdGV4dHVyZVByb2dyYW07CiAgICAgT3duUHRyPFRleHR1cmVQcm9n
cmFtRmxpcD4gbV90ZXh0dXJlUHJvZ3JhbUZsaXA7CkBAIC0yNTcsMTUgKzI1MywxNSBAQCBwcml2
YXRlOgogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENvbG9yUHJvZ3JhbTsK
ICAgICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3Jh
bTsKIAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1h
bmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2ltcGxUZXh0dXJlTWFuYWdlcjsK
ICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3BpZXI7CiAg
ICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7CiAgICAgT3duUHRy
PFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3I7Ci0g
ICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZUFsbG9jYXRvcjsKKyAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2ltcGxU
ZXh0dXJlQWxsb2NhdG9yOwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRl
eHQ7CiAKLSAgICBDQ1JlbmRlclN1cmZhY2UqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2U7CisgICAg
Y29uc3QgQ0NSZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCiAgICAgYm9vbCBtX2lz
Vmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RyYXdRdWFkLmNwcAppbmRleCAyODEyZDY1MmZmNjNhNzliODkyYzVlM2Q2ZWJjNjBmZjg1
OGM0YzRiLi4yY2IwYzIwNjdjYjQ1OTViNGM4ZDRhODMxN2RkY2JlNGIxYWUyNzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RyYXdRdWFkLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNjL0NDRGVidWdC
b3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURy
YXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKQEAgLTg0LDEwICs4NCwxMCBA
QCBjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFjZURyYXdR
dWFkKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NJT1N1cmZhY2VEcmF3
UXVhZCo+KHRoaXMpOwogfQogCi1jb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogQ0NEcmF3
UXVhZDo6dG9SZW5kZXJTdXJmYWNlRHJhd1F1YWQoKSBjb25zdAorY29uc3QgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvUmVuZGVyUGFzc0RyYXdRdWFkKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV9tYXRlcmlhbCA9PSBSZW5kZXJTdXJmYWNlKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqPih0aGlzKTsKKyAgICBBU1NFUlQo
bV9tYXRlcmlhbCA9PSBSZW5kZXJQYXNzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQqPih0aGlzKTsKIH0KIAogY29uc3QgQ0NTb2xpZENvbG9yRHJh
d1F1YWQqIENDRHJhd1F1YWQ6OnRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuaAppbmRleCAzODFjYmFlYWNmM2YyNTIxNzRkNTdmZGQzM2YyMDliMTU4YTFkNTkyLi5h
NmJlZjljNGIwMTc0M2JmMDc4NjJkZWY3ZTdiZDM5OGY4YWE4NjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFzcyBDQ0lP
U3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7CitjbGFzcyBD
Q1JlbmRlclBhc3NEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwogY2xhc3Mg
Q0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTY3LDcgKzY3LDcg
QEAgcHVibGljOgogICAgICAgICBDaGVja2VyYm9hcmQsCiAgICAgICAgIERlYnVnQm9yZGVyLAog
ICAgICAgICBJT1N1cmZhY2VDb250ZW50LAotICAgICAgICBSZW5kZXJTdXJmYWNlLAorICAgICAg
ICBSZW5kZXJQYXNzLAogICAgICAgICBUZXh0dXJlQ29udGVudCwKICAgICAgICAgU29saWRDb2xv
ciwKICAgICAgICAgVGlsZWRDb250ZW50LApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9DaGVja2VyYm9hcmREcmF3UXVhZCgpIGNv
bnN0OwogICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogdG9EZWJ1Z0JvcmRlckRyYXdR
dWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogdG9JT1N1cmZhY2VE
cmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiB0b1Jl
bmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdR
dWFkKiB0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29saWRDb2xv
ckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDVGV4
dHVyZURyYXdRdWFkKiB0b1RleHR1cmVEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDVGls
ZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcAppbmRleCBlMTRkNTNiMDY0ZWI0MjNiZDFiNDcwMTk2MTE2MzM5ODhhNWE2MDUx
Li4zNDg1YTQ4YTRhYTQxNjhlZTBkMDQxYmU3ZDEwM2FiYmVjYTI1OTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIENDSGVhZHNVcERp
c3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAgIG1faHVk
VGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3Vy
ZmFjZVRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKIAogICAg
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdz
KCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4u
LgpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVy
VHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICB7CiAgICAgICAgIFBsYXRmb3Jt
Q2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKIAotICAgICAgICBtX2h1ZFRleHR1
cmUtPmJpbmRUZXh0dXJlKGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIGxheWVyUmVuZGVy
ZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX2h1ZFRleHR1
cmUtPmJpbmRUZXh0dXJlKGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIGxheWVyUmVuZGVy
ZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBib29sIHVwbG9hZGVkVmlhTWFw
ID0gZmFsc2U7CiAgICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2lu
Z01hcFN1YikgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMg
PSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDdkODNk
MjA3ZGM2OTU0MTUyOWMxMTk4YWFkMzE5ZWVjM2JhODc4MjUuLjMxY2ZjNDgwNzQwZThhMjE4Nzg2
Njk0ZjIwY2U1YTNhMzY4ZGIyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NQ
YWdlU2NhbGVBbmltYXRpb24uaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9D
Q1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTMyNyw5ICsz
MjYsMTAgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMo
Q0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKIAogICAgICAgICBvY2NsdXNpb25UcmFj
a2VyLmVudGVyTGF5ZXIoaXQpOwogCi0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzQ29udHJpYnV0
aW5nUmVuZGVyU3VyZmFjZSgpKQotICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5k
ZXJTdXJmYWNlTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgICAgIGVsc2UgaWYg
KGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNl
KCkpIHsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9
IHN1cmZhY2VQYXNzTWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgICAgIHBh
c3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29udHJpYnV0aW5nUmVu
ZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJl
c2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCksIGNvbnRleHQoKSk7
CiAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRy
YWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgICAgIH0KQEAgLTQyMywxMyArNDIzLDE3IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZy
YW1lKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJz
IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGNhbkRyYXcoKSk7CisgICAgQVNTRVJUKCFmcmFtZS5y
ZW5kZXJQYXNzZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEZJWE1FOiB1c2UgdGhlIGZyYW1lIGJl
Z2luIHRpbWUgZnJvbSB0aGUgb3ZlcmFsbCBjb21wb3NpdG9yIHNjaGVkdWxlci4KICAgICAvLyBU
aGlzIHZhbHVlIGlzIGN1cnJlbnRseSBpbmFjY2Vzc2libGUgYmVjYXVzZSBpdCBpcyB1cCBpbiBD
aHJvbWl1bSdzCiAgICAgLy8gUmVuZGVyV2lkZ2V0LgogCisgICAgLy8gVGhlIHJvb3QgUmVuZGVy
UGFzcyBpcyB0aGUgbGFzdCBvbmUgdG8gYmUgZHJhd24uCisgICAgQ0NSZW5kZXJQYXNzKiByb290
UmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlcy5sYXN0KCkuZ2V0KCk7CisKICAgICBtX2Zw
c0NvdW50ZXItPm1hcmtCZWdpbm5pbmdPZkZyYW1lKGN1cnJlbnRUaW1lKCkpOwotICAgIG1fbGF5
ZXJSZW5kZXJlci0+YmVnaW5EcmF3aW5nRnJhbWUobV9yb290TGF5ZXJJbXBsLT5yZW5kZXJTdXJm
YWNlKCkpOworICAgIG1fbGF5ZXJSZW5kZXJlci0+YmVnaW5EcmF3aW5nRnJhbWUocm9vdFJlbmRl
clBhc3MpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd1JlbmRlclBhc3MoZnJh
bWUucmVuZGVyUGFzc2VzW2ldLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4
IDY2ZWVmMzlmY2E3ODBkZWNkZjY0NzNhZmFiNGQ4MGEwM2ZjOGM3ZWIuLjA4NDI5OTZhYjg4NWUy
NmU5ZjgyZmUxNzQwZDRkMTk0ZjUwMWNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NPdmVyZHJhd01ldHJpY3MuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKLSNp
bmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggZmQ4OTk5MGM3MTk4MTYwNjc2YTc2ZjViZWQyMTk2ZmY3
Yjk2ZWNjZS4uYTMxYjY0ZmQ2NWRjZmQ3OGZiMjQwNTJjZjEyYTY1ZGE4ZmNhMmMwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NPd25QdHI8Q0NSZW5k
ZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZh
Y2UpCiAKIENDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0
U3VyZmFjZSkKICAgICA6IG1fdGFyZ2V0U3VyZmFjZSh0YXJnZXRTdXJmYWNlKQorICAgICwgbV9m
cmFtZWJ1ZmZlck91dHB1dFJlY3QodGFyZ2V0U3VyZmFjZS0+Y29udGVudFJlY3QoKSkKIHsKICAg
ICBBU1NFUlQobV90YXJnZXRTdXJmYWNlKTsKIH0KQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBDQ1Jl
bmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1
c2lvblRyYWNrZXJJbXAKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1
YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCi12b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNr
ZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyKQordm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRz
Rm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NSZW5kZXJQ
YXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2Ns
dXNpb25UcmFja2VyKQogewogICAgIC8vIEZJWE1FOiByZW5kZXIgc3VyZmFjZSBsYXllcnMgc2hv
dWxkIGJlIGEgQ0NMYXllckltcGwtZGVyaXZlZCBjbGFzcyBhbmQKICAgICAvLyBub3QgYmUgaGFu
ZGxlZCBzcGVjaWFsbHkgaGVyZS4KQEAgLTY4LDcgKzY5LDcgQEAgdm9pZCBDQ1JlbmRlclBhc3M6
OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NP
Y2NsdXMKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0g
c3VyZmFjZS0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgYm9vbCBpc1JlcGxpY2EgPSBm
YWxzZTsKLSAgICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIGlzUmVwbGljYSwgc3VyZmFjZURhbWFnZVJlY3QoKSk7CisgICAgc3VyZmFjZS0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2Es
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpOwogICAgIG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiAKICAg
ICBpZiAoIXN1cmZhY2UtPmhhc1JlcGxpY2EoKSkKQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBDQ1Jl
bmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBs
YXllciwgQ0NPY2NsdXMKICAgICAvLyBBZGQgcmVwbGljYSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0
aGF0IGl0IGFwcGVhcnMgYmVsb3cgdGhlIHN1cmZhY2UuCiAgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByZXBsaWNhU2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRlUmVwbGljYVNo
YXJlZFF1YWRTdGF0ZSgpOwogICAgIGlzUmVwbGljYSA9IHRydWU7Ci0gICAgc3VyZmFjZS0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgcmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBs
aWNhLCBzdXJmYWNlRGFtYWdlUmVjdCgpKTsKKyAgICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCByZXBsaWNhU2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2EsIGNvbnRyaWJ1
dGluZ1JlbmRlclBhc3MsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpOwogICAgIG1fc2hhcmVkUXVhZFN0
YXRlTGlzdC5hcHBlbmQocmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDQ1MmE4NjEwZjVhOWRiYzAyMTRhOGNkZGJmZjZmMDI1
NGZlY2RhMjYuLmFhZmI4MWNhNWM2NTA0ZTY3MDU5NTFkYmVjZDBlZjAzYTg2M2IyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5oCkBAIC01NiwxMSArNTYsMTMgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVuZGVyU3VyZmFjZSopOwogCiAg
ICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFj
a2VySW1wbCosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgdm9pZCBhcHBlbmRRdWFkc0Zv
clJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwq
KTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBs
KiwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKik7CiAgICAgdm9pZCBhcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVy
SW1wbCogcm9vdExheWVyLCBjb25zdCBDb2xvciYgc2NyZWVuQmFja2dyb3VuZENvbG9yLCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFk
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KICAgICBDQ1JlbmRlclN1cmZhY2Uq
IHRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2U7IH0KKyAgICAv
LyBUaGlzIGRlbm90ZXMgdGhlIGJvdW5kcyBpbiBwaHlzaWNhbCBwaXhlbHMgb2YgdGhlIG91dHB1
dCBnZW5lcmF0ZWQgYnkgdGhpcyBSZW5kZXJQYXNzLgorICAgIGNvbnN0IEludFJlY3QmIGZyYW1l
YnVmZmVyT3V0cHV0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVidWZmZXJPdXRwdXRSZWN0
OyB9CiAKICAgICB2b2lkIHNldFN1cmZhY2VEYW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc3Vy
ZmFjZURhbWFnZVJlY3QpIHsgbV9zdXJmYWNlRGFtYWdlUmVjdCA9IHN1cmZhY2VEYW1hZ2VSZWN0
OyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3VyZmFjZURhbWFnZVJlY3Q7IH0KQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIENDUmVuZGVyU3VyZmFjZSogbV90YXJnZXRTdXJmYWNlOwogICAgIENDUXVhZExpc3QgbV9x
dWFkTGlzdDsKKyAgICBJbnRSZWN0IG1fZnJhbWVidWZmZXJPdXRwdXRSZWN0OwogICAgIFZlY3Rv
cjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAg
IEZsb2F0UmVjdCBtX3N1cmZhY2VEYW1hZ2VSZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjJiODk1YzkyYzliYzJjMDdkYzhlOTM1
MGZhMmE0MzBjZmU2ZDUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8
Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0JiBzdXJm
YWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNr
Z3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IHJlbmRlclBhc3MsIHN1cmZhY2VEYW1hZ2VSZWN0LCBpc1JlcGxpY2EsIGZpbHRlcnMsIGJhY2tn
cm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkKSk7Cit9CisKK0NDUmVuZGVyUGFzc0RyYXdRdWFk
OjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5k
ZXJQYXNzLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGlj
YSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNr
VGV4dHVyZUlkKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6
OlJlbmRlclBhc3MsIHF1YWRSZWN0KQorICAgICwgbV9yZW5kZXJQYXNzKHJlbmRlclBhc3MpCisg
ICAgLCBtX3N1cmZhY2VEYW1hZ2VSZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KQorICAgICwgbV9pc1Jl
cGxpY2EoaXNSZXBsaWNhKQorICAgICwgbV9maWx0ZXJzKGZpbHRlcnMpCisgICAgLCBtX2JhY2tn
cm91bmRGaWx0ZXJzKGJhY2tncm91bmRGaWx0ZXJzKQorICAgICwgbV9tYXNrVGV4dHVyZUlkKG1h
c2tUZXh0dXJlSWQpCit7CisgICAgQVNTRVJUKG1fbGF5ZXIpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODFlYWJmZjAwNDNkZDFlMmQ1
YTgyMjE0ODk4YTZlYTNhY2U3NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCisjZGVm
aW5lIENDUmVuZGVyUGFzc0RyYXdRdWFkX2gKKworI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NSZW5kZXJQYXNz
OworCitjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBj
b25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29uc3Qg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZp
bHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlk
KTsKKworICAgIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyUGFzczsgfQorICAgIGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9p
c1JlcGxpY2E7IH0KKyAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrVGV4dHVyZUlkOyB9CisKKyAgICAvLyBUaGUgc3VyZmFjZSBkYW1hZ2UgcmVjdCBmb3Ig
dGhlIHRhcmdldCBzdXJmYWNlIHRoaXMgcXVhZCBkcmF3cyBpbnRvLgorICAgIC8vIEZJWE1FOiBU
aGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgcmVuZGVyIHN1cmZhY2VzIGdldCB0aGVpciBvd24gbGF5
ZXIgdHlwZS4KKyAgICBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJmYWNlRGFtYWdlUmVjdDsgfQorCisgICAgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9Cisg
ICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKworcHJpdmF0ZToKKyAgICBD
Q1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VS
ZWN0LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0
ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKTsKKworICAgIGNvbnN0IENDUmVuZGVyUGFzcyog
bV9yZW5kZXJQYXNzOworICAgIEZsb2F0UmVjdCBtX3N1cmZhY2VEYW1hZ2VSZWN0OworICAgIGJv
b2wgbV9pc1JlcGxpY2E7CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVy
czsKKyAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsK
KyAgICB1bnNpZ25lZCBtX21hc2tUZXh0dXJlSWQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggOTQzYzUzZmJmMDgyN2UxMjZhN2I2MmVlMThk
ODZiZjNkMjhmNTc4Yy4uZDhlYjkyODczZjhjNTdmYzA4NDIyNTRjYmM1NTM0YjFhNjQzMDI4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5j
bHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTg0LDcgKzg0LDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6
ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiAKIGJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVw
YXJlQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
IHsKLSAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVy
ZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlm
ICghbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlID0gTWFuYWdl
ZFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlcik7CkBAIC0xMTIsNyArMTEyLDcgQEAgYm9v
bCBDQ1JlbmRlclN1cmZhY2U6Omhhc1ZhbGlkQ29udGVudHNUZXh0dXJlKCkgY29uc3QKIAogYm9v
bCBDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7Ci0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7Cisg
ICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+aW1wbFRl
eHR1cmVNYW5hZ2VyKCk7CiAKICAgICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUpCiAgICAgICAg
IG1fYmFja2dyb3VuZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5h
Z2VyKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBD
Q1JlbmRlclN1cmZhY2U6OmNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUoKSBjbwogICAgIHJl
dHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSwg
cmVwbGljYURyYXdUcmFuc2Zvcm0oKSwgY29udGVudFJlY3QoKSwgY2xpcFJlY3QoKSwgZHJhd09w
YWNpdHkoKSwgaXNPcGFxdWUpOwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0
KQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExp
c3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wgZm9yUmVwbGljYSwg
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VE
YW1hZ2VSZWN0KQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBoYXNSZXBsaWNhKCkpOwog
CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKIAogICAgIGludCBt
YXNrVGV4dHVyZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250ZW50c1RleHR1cmVJZCgp
IDogMDsKIAotICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIG1fb3duaW5nTGF5ZXIs
IHN1cmZhY2VEYW1hZ2VSZWN0LCBmb3JSZXBsaWNhLCBmaWx0ZXJzKCksIGJhY2tncm91bmRGaWx0
ZXJzKCksIG1hc2tUZXh0dXJlSWQpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmRTdXJmYWNlKENDUmVu
ZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBy
ZW5kZXJQYXNzLCBzdXJmYWNlRGFtYWdlUmVjdCwgZm9yUmVwbGljYSwgZmlsdGVycygpLCBiYWNr
Z3JvdW5kRmlsdGVycygpLCBtYXNrVGV4dHVyZUlkKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmgKaW5kZXggODU1ZmNjZTdlNDM1M2I4ZGRlZDUxZGVlMGVlZDBjNDAwMzgyYTE2
ZS4uNzNlODFhNDU3Njg2ZjM0MWRkODZjNzU2NmNiMzA3MzlkYmM0MzJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CiBjbGFzcyBDQ1F1YWRDdWxsZXI7CitjbGFzcyBDQ1Jl
bmRlclBhc3M7CiBjbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwpAQCAtMTM5LDcgKzE0MCw3IEBAIHB1YmxpYzoK
ICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVSZXBsaWNhU2hhcmVkUXVh
ZFN0YXRlKCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBzdXJmYWNlRGFtYWdl
UmVjdCBwYXJhbWV0ZXIgd2hlbiB0aGUgdmFsdWUgaXMgcmVtb3ZlZCBmcm9tIENDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkLgotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURh
bWFnZVJlY3QpOworICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwogCiBwcml2YXRlOgogICAgIENDTGF5ZXJJbXBs
KiBtX293bmluZ0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjAwYzBlMGZhMzY1NjIxYTM2
NjNiYzI5NjZmMjM3YzNiNzVhYjVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQ+IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdl
UmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGxheWVy
LCBzdXJmYWNlRGFtYWdlUmVjdCwgaXNSZXBsaWNhLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVy
cywgbWFza1RleHR1cmVJZCkpOwotfQotCi1DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Q0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgRmxv
YXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKLSAgICA6
IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpSZW5kZXJTdXJmYWNlLCBx
dWFkUmVjdCkKLSAgICAsIG1fbGF5ZXIobGF5ZXIpCi0gICAgLCBtX3N1cmZhY2VEYW1hZ2VSZWN0
KHN1cmZhY2VEYW1hZ2VSZWN0KQotICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNhKQotICAgICwg
bV9maWx0ZXJzKGZpbHRlcnMpCi0gICAgLCBtX2JhY2tncm91bmRGaWx0ZXJzKGJhY2tncm91bmRG
aWx0ZXJzKQotICAgICwgbV9tYXNrVGV4dHVyZUlkKG1hc2tUZXh0dXJlSWQpCi17Ci0gICAgQVNT
RVJUKG1fbGF5ZXIpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJh
d1F1YWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEwMTI4MWZhNGY2OWRlMmNk
NmQyOTFmZjFhNjE2YjY5NjdiOTRiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWRfaAotI2RlZmluZSBDQ1Jl
bmRlclN1cmZhY2VEcmF3UXVhZF9oCi0KLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5j
bHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDTGF5ZXJJbXBsOwotCi1j
bGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCk7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCosIGNvbnN0
IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOwot
Ci0gICAgQ0NMYXllckltcGwqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQotICAg
IGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0KLSAgICB1bnNp
Z25lZCBtYXNrVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrVGV4dHVyZUlkOyB9Ci0K
LSAgICAvLyBUaGUgc3VyZmFjZSBkYW1hZ2UgcmVjdCBmb3IgdGhlIHRhcmdldCBzdXJmYWNlIHRo
aXMgcXVhZCBkcmF3cyBpbnRvLgotICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1vdmVkIG9u
Y2UgcmVuZGVyIHN1cmZhY2VzIGdldCB0aGVpciBvd24gbGF5ZXIgdHlwZS4KLSAgICBjb25zdCBG
bG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlRGFt
YWdlUmVjdDsgfQotCi0gICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZEZpbHRlcnM7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCos
IGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJl
SWQpOwotCi0gICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Ci0gICAgRmxvYXRSZWN0IG1fc3VyZmFj
ZURhbWFnZVJlY3Q7Ci0gICAgYm9vbCBtX2lzUmVwbGljYTsKLSAgICBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMgbV9maWx0ZXJzOwotICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBt
X2JhY2tncm91bmRGaWx0ZXJzOwotICAgIHVuc2lnbmVkIG1fbWFza1RleHR1cmVJZDsKLX07Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggM2E0NTUxNTQyYTYxODYzZGJjN2Jh
ZjQ0NmE3ZGRiNTk0ZDkzYWQ4ZS4uMTE1YjFhNGJhOWRiNDQxYThiMDQ5NDkxOGFjNjgzZjZjNzhm
MGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQogICAgIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2luZG93TWF0cml4OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoQ0NS
ZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFjZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5kZXJQYXNz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFz
cyopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgPSAwOwogCkBA
IC04MywxMCArODMsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVm
ZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpID0gMDsKIAotICAgIHZpcnR1
YWwgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiBpbXBsVGV4dHVyZU1hbmFnZXIoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVy
ZUFsbG9jYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGlt
cGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9j
YXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFy
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCA2YjUxYzgxNjliZWZiMDJkNzVlNDA3
NDAwMzQ4MmE3MTIyYzliM2NlLi5kMTk0ODRjZmJhODQ4OWMyMTUzMGZhM2NkY2UyMjAyM2NiNDQy
ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC01OCwx
MSArNTgsMTEgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJl
ciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3RleHR1cmUpCi0gICAgICAgIG1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpj
cmVhdGUobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOworICAg
ICAgICBtX3RleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmlt
cGxUZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIC8vIFRoZSBjb250ZXh0IGNvdWxkIGhhdmUgYmVl
biBsb3N0IHNpbmNlIHRoZSBsYXN0IGZyYW1lIGFuZCB0aGUgb2xkIHRleHR1cmUKICAgICAvLyBt
YW5hZ2VyIG1heSBubyBsb25nZXIgYmUgdmFsaWQuCi0gICAgbV90ZXh0dXJlLT5zZXRUZXh0dXJl
TWFuYWdlcihsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7Cisg
ICAgbV90ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcihsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVy
ZU1hbmFnZXIoKSk7CiAKICAgICBJbnRTaXplIHRleHR1cmVTaXplID0gY29udGVudEJvdW5kcygp
OwogICAgIGlmICghbV90ZXh0dXJlLT5yZXNlcnZlKHRleHR1cmVTaXplLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6
OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0CiAK
ICAgICB7CiAgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFz
KTsKLSAgICAgICAgbV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBsYXllclJlbmRlcmVy
LT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV90ZXh0dXJlLT5i
aW5kVGV4dHVyZShjb250ZXh0LCBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZUFsbG9jYXRvcigp
KTsKIAogICAgICAgICAvLyBGSVhNRTogU2tpYSB1c2VzIEJHUkEgYWN0dWFsbHksIHdlIGNvcnJl
Y3QgdGhhdCB3aXRoIHRoZSBzd2l6emxlIHBpeGVsIHNoYWRlci4KICAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBlMmJjNjMyNzJjODkzODZhNTI1Nzg2MzA3OTRlYWIz
Y2I0YzcwMDc3Li5iYWM5YmU0YzA5YWMwYTkxM2RlZGU3ODQwZmYzMDQwZDMyNGMyOThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMjU2LDE0ICsyNTYsMTQgQEAgYm9v
bCBDQ1ZpZGVvTGF5ZXJJbXBsOjpyZXNlcnZlVGV4dHVyZXMoY29uc3QgV2ViS2l0OjpXZWJWaWRl
b0ZyYW1lJiBmcmFtZSwgR0MzRGUKICAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUuaXNa
ZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUgfHwg
cmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIW1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVy
ZSkgewotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlID0gTWFuYWdlZFRl
eHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIo
KSk7CisgICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUgPSBNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKICAgICAg
ICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNp
emUgPSBJbnRTaXplKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGUgcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyIG1heSBoYXZlIGJlZW4gZGVzdHJveWVkIGFuZCByZWNy
ZWF0ZWQgc2luY2UgdGhlIGxhc3QgZnJhbWUsIHNvIHBhc3MgdGhlIG5ldyBvbmUuCisgICAgICAg
ICAgICAvLyBUaGUgaW1wbFRleHR1cmVNYW5hZ2VyIG1heSBoYXZlIGJlZW4gZGVzdHJveWVkIGFu
ZCByZWNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgZnJhbWUsIHNvIHBhc3MgdGhlIG5ldyBvbmUuCiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIFRleHR1cmVNYW5hZ2VyIGlzIHN0
aWxsIGFyb3VuZC4KLSAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+c2V0
VGV4dHVyZU1hbmFnZXIobGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2Vy
KCkpOworICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5zZXRUZXh0dXJl
TWFuYWdlcihsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+c2l6ZSgpICE9IHJlcXVp
cmVkVGV4dHVyZVNpemUpCiAgICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3Zpc2libGVT
aXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCAzMTQ4MmVkOTk3MTgwNmVmZmQwYWE4OGU4N2Y5YzU5ZjAzOWQxMDgyLi5lODZmZDBi
ZTEwOTJmZjZiYmUwZWVmOTY1ZjBmNGU3YTBjMDYxOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAK
QEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fcm9vdExheWVyKENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMSkpCiAgICAgewogICAgICAgICBtX3Jvb3RMYXllci0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOworICAgICAgICBtX3Jvb3RSZW5kZXJQYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVh
dGUobV9yb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgfQogCiAgICAgLy8gQ0NSZW5k
ZXJlckNsaWVudCBtZXRob2RzLgpAQCAtODEsMTIgKzgyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBN
ZXRob2RzIGFkZGVkIGZvciB0ZXN0LgogICAgIGludCBzZXRGdWxsUm9vdExheWVyRGFtYWdlQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudDsgfQogCi0g
ICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9
CisgICAgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcygpIHsgcmV0dXJuIG1fcm9vdFJlbmRl
clBhc3MuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBpbnQgbV9zZXRGdWxsUm9vdExheWVyRGFt
YWdlQ291bnQ7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1faW1wbFRocmVhZDsKICAg
ICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVyOworICAgIE93blB0cjxDQ1JlbmRlclBh
c3M+IG1fcm9vdFJlbmRlclBhc3M7CiB9OwogCiBjbGFzcyBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CkBAIC0xOTQsNyArMTk2LDcgQEAg
VEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1Jl
Y3JlYXRyZWRGb3JTY29wZUR1cmF0aW8KICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJD
aHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVYUEVDVF9FUSgxLCBtX21v
Y2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogCi0gICAgbV9sYXllclJl
bmRlcmVyQ2hyb21pdW0uYmVnaW5EcmF3aW5nRnJhbWUobV9tb2NrQ2xpZW50LnJvb3RMYXllcigp
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmJlZ2luRHJh
d2luZ0ZyYW1lKG1fbW9ja0NsaWVudC5yb290UmVuZGVyUGFzcygpKTsKICAgICBFWFBFQ1RfRkFM
U0UobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAog
ICAgIHN3YXBCdWZmZXJzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145423</attachid>
            <date>2012-06-01 19:50:55 -0700</date>
            <delta_ts>2012-06-02 09:05:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88132-20120601225054.patch</filename>
            <type>text/plain</type>
            <size>79177</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBlMmQ4ODhkYjNlMzYy
ODFlNjc1NTEzMzkwODJiMmZkOWExN2MxMy4uNjEwYmEzYzAxOTJiMTljNmRiYWY4MzM4OWE5NGYy
OTczOWJhODg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wNi0wMSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1h
a2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQYXNzZXMgaW5zdGVhZCBvZiBSZW5k
ZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGlzIHBhcnRseSByZW5hbWluZywgcGFydGx5IG1vdmluZyBkYXRhIGludG8g
Q0NSZW5kZXJQYXNzCisgICAgICAgIGFuZCBDQ1JlbmRlclBhc3NEcmF3UXVhZC4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtIHNob3VsZCBhY2NlcHQgYXMgaW5wdXQKKyAgICAgICAgYSBzZXQgb2YgUmVu
ZGVyUGFzc2VzIGFuZCB0aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBkcmF3aW5nLiBJdAor
ICAgICAgICBzaG91bGQgaGF2ZSBubyBub3Rpb24gb2YgUmVuZGVyU3VyZmFjZXMgYXQgYWxsLgor
CisgICAgICAgIEZpcnN0LCB3aGF0IGlzbid0IGRvbmU6IFJlbmRlclN1cmZhY2VzIHN0aWxsIGhv
bGQgdGhlIHRleHR1cmVzCisgICAgICAgIHdoZXJlIFJlbmRlclBhc3NlcyBhcmUgZHJhd24gdG8v
ZnJvbSwgc28gdGhhdCB0aGVzZSB0ZXh0dXJlcyBjYW4KKyAgICAgICAgcGVyc2lzdCBhY3Jvc3Mg
ZnJhbWVzLiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgT3Ro
ZXJ3aXNlLCB0aGlzIGNvbXBsZXRlbHkgcmVtb3ZlcyB0aGUgY29uY2VwdCBvZiBSZW5kZXJTdXJm
YWNlIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJDaHJvbWl1bSBhbmQgdGhlIENDRHJhd1F1YWQs
IHJlcGxhY2luZyBpdCB3aXRoIFJlbmRlclBhc3MuCisgICAgICAgIFRoZSAicmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyIiBpcyByZW5hbWVkIHRvIHRoZSAiaW1wbFRleHR1cmVNYW5hZ2VyIgor
ICAgICAgICBhbmQgbGlrZS13aXNlIGZvciB0aGUgVGV4dHVyZUFsbG9jYXRvciwgYXMgdGhlc2Ug
YXJlIG5vdCB1c2VkCisgICAgICAgIGV4Y2x1c2l2ZWx5IGZvciByZW5kZXIgc3VyZmFjZXMgKHBh
c3NlcyksIGFuZCBhIHRleHR1cmUgbWFuYWdlciBmb3IKKyAgICAgICAgcmVuZGVyIHBhc3NlcyB0
aGF0IGRvZXMgbm90IHJlcXVpcmUgYSBSZW5kZXJTdXJmYWNlKiB3aWxsIGJlIHRoZSBmb2N1cwor
ICAgICAgICBvZiBmdXR1cmUgY2hhbmdlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyUGFzc1RleHR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVn
aW5EcmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZm
ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXND
dXJyZW50UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNz
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzTWFza1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW1wbFRleHR1cmVNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW1wbFRleHR1cmVBbGxvY2F0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NEcmF3UXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmZy
YW1lYnVmZmVyT3V0cHV0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NE
cmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFk
OjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFk
LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzc0RyYXdRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpyZW5kZXJQYXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjppc1JlcGxpY2EpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hc2tUZXh0dXJlSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnN1cmZhY2VEYW1hZ2VSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpmaWx0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVCYWNrZ3JvdW5k
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2ZVRleHR1
cmVzKToKKwogMjAxMi0wNi0wMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5yZXZpZXdlZCBjb21waWxlIGZpeCBmb3IgcjExOTI4
MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyNTQ2N2NhNWY2ZWZhOTNiMWI2MTgyYzNm
MGNlZGU1NTg3MDQ1ZTMzLi5hMWQ5YmJlNzMzZWUxODliMjlkOTcwOWNlYTlkZTA1YmQ1YzgyOGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA2LTAx
ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gTWFrZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gdXNlIFJlbmRlclBhc3NlcyBpbnN0ZWFkIG9m
IFJlbmRlclN1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODEzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChG
YWtlTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50OjpGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVt
Q2xpZW50KToKKyAgICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQ6OnJvb3RS
ZW5kZXJQYXNzKToKKyAgICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQpOgor
ICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wNi0wMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5yZXZpZXdlZCBjb21waWxlIGZp
eCBmb3IgcjExOTI4MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDk5NDlmNTkxNWE1ZGZlMzg3MjJkMDIy
NjY4ZTAyMzgxNzUwYjQ5NjkuLmMyZjg4NzM4MzRhMzVkZTI0ZTA0M2UzYzkwYzAyNTAwNThhNTY2
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3MzIsMTAgKzM3MzIsMTAgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgnLAotICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGFjYWNjMzUzYmEzZmU3MzMy
OGExMjNmYmY4MmVjZWEwYzkxOWY5OTAuLmI1MTM2MTMwMTRlMjViYmJkMTg3ZGVhMzNiOTc3ZjZl
ZDUxYWQxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDUs
NyArNDUsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Db2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKLSNpbmNsdWRlICJS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgpA
QCAtNjMsNyArNjIsNyBAQAogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJj
Yy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKICNpbmNsdWRl
ICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdR
dWFkLmgiCkBAIC0yMzAsMTEgKzIyOSwxMSBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVy
UmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5n
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgw
KQorICAgICwgbV9jdXJyZW50UmVuZGVyUGFzcygwKQogICAgICwgbV9jdXJyZW50TWFuYWdlZFRl
eHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCi0gICAgLCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKDApCisgICAgLCBtX2Rl
ZmF1bHRSZW5kZXJQYXNzKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3Qo
LTAuNWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFs
c2UpCiAgICAgLCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCkBAIC0zNjAsNyArMzU5
LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlYnVnR0xDYWxsKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBjb25zdCBjaGFyKgogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIGlmICghdmlzaWJsZSkKLSAgICAgICAg
cmVsZWFzZVJlbmRlclN1cmZhY2VUZXh0dXJlcygpOworICAgICAgICByZWxlYXNlUmVuZGVyUGFz
c1RleHR1cmVzKCk7CiAKICAgICAvLyBUT0RPOiBSZXBsYWNlIHNldFZpc2liaWxpdHlDSFJPTUlV
TSB3aXRoIGFuIGV4dGVuc2lvbiB0byBleHBsaWNpdGx5IG1hbmFnZSBmcm9udC9iYWNrYnVmZmVy
cwogICAgIC8vIGNyYnVnLmNvbS8xMTYwNDkKQEAgLTM3MCwyMiArMzY5LDIyIEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICB9CiB9CiAK
LXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVz
KCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyUGFzc1RleHR1cmVz
KCkKIHsKLSAgICBpZiAobV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5ldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIGlmIChtX2ltcGxUZXh0
dXJlTWFuYWdlcikKKyAgICAgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRl
QWxsVGV4dHVyZXMobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWV3cG9ydENoYW5nZWQoKQogewogICAgIG1faXNWaWV3cG9y
dENoYW5nZWQgPSB0cnVlOwogCi0gICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgcmVuZGVyIHN1cmZh
Y2UgdG8gZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSB2aWV3cG9ydCBhbmQKLSAgICAvLyBwcm9qZWN0
aW9uIG1hdHJpeCBuZXh0IHRpbWUgdXNlUmVuZGVyU3VyZmFjZSBpcyBjYWxsZWQuCi0gICAgbV9j
dXJyZW50UmVuZGVyU3VyZmFjZSA9IDA7CisgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgUmVuZGVy
UGFzcyB0byBmb3JjZSBhbiB1cGRhdGUgb2YgdGhlIHZpZXdwb3J0IGFuZAorICAgIC8vIHByb2pl
Y3Rpb24gbWF0cml4IG5leHQgdGltZSB1c2VSZW5kZXJQYXNzIGlzIGNhbGxlZC4KKyAgICBtX2N1
cnJlbnRSZW5kZXJQYXNzID0gMDsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNs
ZWFyUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UsIENDUmVuZGVy
U3VyZmFjZSogcm9vdFJlbmRlclN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFn
ZVJlY3QpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJQYXNzKGNvbnN0
IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVy
UGFzcywgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7CiAgICAgLy8g
Tm9uLXJvb3QgbGF5ZXJzIHNob3VsZCBjbGVhciB0aGVpciBlbnRpcmUgY29udGVudHMgdG8gdHJh
bnNwYXJlbnQuIE9uIERFQlVHIGJ1aWxkcywgdGhlIHJvb3QgbGF5ZXIKICAgICAvLyBpcyBjbGVh
cmVkIHRvIGJsdWUgdG8gZWFzaWx5IHNlZSByZWdpb25zIHRoYXQgd2VyZSBub3QgZHJhd24gb24g
dGhlIHNjcmVlbi4gSWYgd2UKQEAgLTM5MywzNiArMzkyLDM2IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjbGVhclJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJm
YWNlLCBDCiAgICAgLy8gY2xlYXIgdGhlIGRhbWFnZWQgcmVnaW9uLCBzbyB0aGF0IHdlIGRvbid0
IGFjY2lkZW50YWxseSBjbGVhciB1bi1jaGFuZ2VkIHBvcnRpb25zCiAgICAgLy8gb2YgdGhlIHNj
cmVlbi4KIAotICAgIGlmIChyZW5kZXJTdXJmYWNlICE9IHJvb3RSZW5kZXJTdXJmYWNlKQorICAg
IGlmIChyZW5kZXJQYXNzICE9IHJvb3RSZW5kZXJQYXNzKQogICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCkpOwogICAgIGVsc2UKICAgICAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDEsIDEpKTsKIAogICAg
IGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKQotICAgICAgICBzZXRTY2lzc29y
VG9SZWN0KGVuY2xvc2luZ0ludFJlY3Qoc3VyZmFjZURhbWFnZVJlY3QpKTsKKyAgICAgICAgc2V0
U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkpOwog
ICAgIGVsc2UKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIAogI2lmIGRlZmluZWQoTkRFQlVHKQotICAg
IGlmIChyZW5kZXJTdXJmYWNlICE9IHJvb3RSZW5kZXJTdXJmYWNlKQorICAgIGlmIChyZW5kZXJQ
YXNzICE9IHJvb3RSZW5kZXJQYXNzKQogI2VuZGlmCiAgICAgICAgIG1fY29udGV4dC0+Y2xlYXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwog
fQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5k
ZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFjZSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNz
KQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9t
YXRpY2FsbHkgcmVjcmVhdGVkIG9uIGZpcnN0IHVzZQogICAgIGVuc3VyZUZyYW1lYnVmZmVyKCk7
CiAKLSAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlID0gZGVmYXVsdFJlbmRlclN1cmZhY2U7Ci0g
ICAgQVNTRVJUKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpOworICAgIG1fZGVmYXVsdFJlbmRlclBh
c3MgPSByb290UmVuZGVyUGFzczsKKyAgICBBU1NFUlQobV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAK
ICAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxs
b2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKICAgICBzaXplX3QgbWF4TGltaXQgPSBU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOwogICAgIHNpemVf
dCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMpID8gbWF4TGlt
aXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMDsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhuZXdMaW1pdCk7CisgICAgbV9pbXBs
VGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobmV3TGltaXQpOwogCiAgICAg
aWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU1LDIy
ICs0NTQsMjEgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRvTm9PcCgpCiAKIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3Mq
IHJlbmRlclBhc3MpCiB7Ci0gICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gcmVu
ZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpOwotICAgIGlmICghdXNlUmVuZGVyU3VyZmFjZShyZW5k
ZXJTdXJmYWNlKSkKKyAgICBpZiAoIXVzZVJlbmRlclBhc3MocmVuZGVyUGFzcykpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNsZWFyUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlLCBtX2RlZmF1
bHRSZW5kZXJTdXJmYWNlLCByZW5kZXJQYXNzLT5zdXJmYWNlRGFtYWdlUmVjdCgpKTsKKyAgICBj
bGVhclJlbmRlclBhc3MocmVuZGVyUGFzcywgbV9kZWZhdWx0UmVuZGVyUGFzcywgcmVuZGVyUGFz
cy0+c3VyZmFjZURhbWFnZVJlY3QoKSk7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlz
dCA9IHJlbmRlclBhc3MtPnF1YWRMaXN0KCk7CiAgICAgZm9yIChDQ1F1YWRMaXN0Ojpjb25zdEJh
Y2tUb0Zyb250SXRlcmF0b3IgaXQgPSBxdWFkTGlzdC5iYWNrVG9Gcm9udEJlZ2luKCk7IGl0ICE9
IHF1YWRMaXN0LmJhY2tUb0Zyb250RW5kKCk7ICsraXQpCiAgICAgICAgIGRyYXdRdWFkKGl0LT5n
ZXQoKSwgcmVuZGVyUGFzcy0+c3VyZmFjZURhbWFnZVJlY3QoKSk7CiB9CiAKLXZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25zdCBG
bG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVi
dWZmZXJEYW1hZ2VSZWN0KQogewogICAgIEludFJlY3Qgc2Npc3NvclJlY3Q7CiAgICAgaWYgKG1f
Y2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3YXApIHsKLSAgICAgICAgRmxvYXRSZWN0IGNsaXBB
bmREYW1hZ2VSZWN0ID0gc3VyZmFjZURhbWFnZVJlY3Q7CisgICAgICAgIEZsb2F0UmVjdCBjbGlw
QW5kRGFtYWdlUmVjdCA9IGZyYW1lYnVmZmVyRGFtYWdlUmVjdDsKICAgICAgICAgaWYgKCFxdWFk
LT5jbGlwUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNsaXBBbmREYW1hZ2VSZWN0Lmlu
dGVyc2VjdChxdWFkLT5jbGlwUmVjdCgpKTsKICAgICAgICAgc2Npc3NvclJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KGNsaXBBbmREYW1hZ2VSZWN0KTsKQEAgLTUwMiw4ICs1MDAsOCBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCwgY29u
c3QgRmxvYXRSZWN0JiBzdQogICAgIGNhc2UgQ0NEcmF3UXVhZDo6SU9TdXJmYWNlQ29udGVudDoK
ICAgICAgICAgZHJhd0lPU3VyZmFjZVF1YWQocXVhZC0+dG9JT1N1cmZhY2VEcmF3UXVhZCgpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpSZW5kZXJTdXJmYWNlOgotICAg
ICAgICBkcmF3UmVuZGVyU3VyZmFjZVF1YWQocXVhZC0+dG9SZW5kZXJTdXJmYWNlRHJhd1F1YWQo
KSk7CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzOgorICAgICAgICBkcmF3UmVuZGVy
UGFzc1F1YWQocXVhZC0+dG9SZW5kZXJQYXNzRHJhd1F1YWQoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ0NEcmF3UXVhZDo6U29saWRDb2xvcjoKICAgICAgICAgZHJhd1NvbGlkQ29sb3JR
dWFkKHF1YWQtPnRvU29saWRDb2xvckRyYXdRdWFkKCkpOwpAQCAtNTg3LDcgKzU4NSw3IEBAIHN0
YXRpYyBpbmxpbmUgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlciwgY29uc3QKICAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6
YXBwbHkoZmlsdGVycywgc291cmNlVGV4dHVyZS0+dGV4dHVyZUlkKCksIHNvdXJjZVRleHR1cmUt
PnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqIHF1YWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50c0RldmljZVRy
YW5zZm9ybSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRl
cnMoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBjb250ZW50c0RldmljZVRyYW5zZm9ybSkKIHsKICAgICAvLyBUaGlzIG1ldGhv
ZCBkcmF3cyBhIGJhY2tncm91bmQgZmlsdGVyLCB3aGljaCBhcHBsaWVzIGEgZmlsdGVyIHRvIGFu
eSBwaXhlbHMgYmVoaW5kIHRoZSBxdWFkIGFuZCBzZWVuIHRocm91Z2ggaXRzIGJhY2tncm91bmQu
CiAgICAgLy8gVGhlIGFsZ29yaXRobSB3b3JrcyBhcyBmb2xsb3dzOgpAQCAtNjAzLDEzICs2MDEs
MTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhj
b25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoKICAgICAvLwogICAgIC8vIFBpeGVsIGNvcGll
cyBpbiB0aGlzIGFsZ29yaXRobSBvY2N1ciBhdCBzdGVwcyAyLCAzLCA0LCBhbmQgNS4KIAotICAg
IENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5sYXllcigpLT5yZW5kZXJT
dXJmYWNlKCk7CisgICAgQ0NSZW5kZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSA9IHF1YWQtPnJl
bmRlclBhc3MoKS0+dGFyZ2V0U3VyZmFjZSgpOwogICAgIGlmIChxdWFkLT5iYWNrZ3JvdW5kRmls
dGVycygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIG9u
bHkgYWxsb3cgYmFja2dyb3VuZCBmaWx0ZXJzIG9uIHRoZSByb290IHJlbmRlciBzdXJmYWNlIGJl
Y2F1c2Ugb3RoZXIgc3VyZmFjZXMgbWF5IGNvbnRhaW4KICAgICAvLyB0cmFuc2x1Y2VudCBwaXhl
bHMsIGFuZCB0aGUgY29udGVudHMgYmVoaW5kIHRob3NlIHRyYW5zbHVjZW50IHBpeGVscyB3b3Vs
ZG4ndCBoYXZlIHRoZSBmaWx0ZXIgYXBwbGllZC4KLSAgICBpZiAoIWlzQ3VycmVudFJlbmRlclN1
cmZhY2UobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSkpCisgICAgaWYgKCFpc0N1cnJlbnRSZW5kZXJQ
YXNzKG1fZGVmYXVsdFJlbmRlclBhc3MpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhN
RTogRG8gYSBzaW5nbGUgcmVhZGJhY2sgZm9yIGJvdGggdGhlIHN1cmZhY2UgYW5kIHJlcGxpY2Eg
YW5kIGNhY2hlIHRoZSBmaWx0ZXJlZCByZXN1bHRzIChvbmNlIGZpbHRlciB0ZXh0dXJlcyBhcmUg
bm90IHJldXNlZCkuCkBAIC02MjAsOSArNjE4LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoK
ICAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10b3ApOwogICAgIGRldmljZVJlY3QuZXhwYW5k
KGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKIAotICAgIGRldmljZVJlY3QuaW50ZXJzZWN0
KG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOworICAgIGRldmljZVJlY3Qu
aW50ZXJzZWN0KG1fY3VycmVudFJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsK
IAotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3VuZFRleHR1cmUgPSBN
YW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgp
KTsKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0g
TWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX2ltcGxUZXh0dXJlTWFuYWdlci5nZXQoKSk7CiAgICAg
aWYgKCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dyb3VuZFRleHR1cmUuZ2V0KCks
IGRldmljZVJlY3QpKQogICAgICAgICByZXR1cm47CiAKQEAgLTYzNiwyOCArNjM0LDI4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgaWYgKCFkcmF3aW5nU3VyZmFjZS0+cHJlcGFyZUJh
Y2tncm91bmRUZXh0dXJlKHRoaXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDQ1JlbmRlclN1
cmZhY2UqIHRhcmdldFJlbmRlclN1cmZhY2UgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOworICAg
IGNvbnN0IENDUmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IG1fY3VycmVudFJlbmRlclBh
c3M7CiAgICAgaWYgKHVzZU1hbmFnZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5k
VGV4dHVyZSgpLCBxdWFkLT5xdWFkUmVjdCgpKSkgewogICAgICAgICAvLyBDb3B5IHRoZSByZWFk
YmFjayBwaXhlbHMgZnJvbSBkZXZpY2UgdG8gdGhlIGJhY2tncm91bmQgdGV4dHVyZSBmb3IgdGhl
IHN1cmZhY2UuCi0gICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZVRvU3VyZmFj
ZVRyYW5zZm9ybTsKLSAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShx
dWFkLT5xdWFkUmVjdCgpLndpZHRoKCkgLyAyLjAsIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCkg
LyAyLjApOwotICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0uc2NhbGUzZChxdWFkLT5x
dWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCksIDEpOwotICAgICAg
ICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0ubXVsdGlwbHkoY29udGVudHNEZXZpY2VUcmFuc2Zv
cm0uaW52ZXJzZSgpKTsKLSAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0
ZShkZXZpY2VSZWN0LndpZHRoKCkgLyAyLjAsIGRldmljZVJlY3QuaGVpZ2h0KCkgLyAyLjApOwot
ICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3QueCgp
LCBkZXZpY2VSZWN0LnkoKSk7CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmlj
ZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm07CisgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSAvIDIuMCwgcXVhZC0+cXVh
ZFJlY3QoKS5oZWlnaHQoKSAvIDIuMCk7CisgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJUcmFu
c2Zvcm0uc2NhbGUzZChxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCku
aGVpZ2h0KCksIDEpOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLm11bHRp
cGx5KGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKSk7CisgICAgICAgIGRldmljZVRv
RnJhbWVidWZmZXJUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3Qud2lkdGgoKSAvIDIuMCwg
ZGV2aWNlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CisgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJU
cmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSk7CiAKLSAg
ICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRl
eHR1cmVJZCwgZGV2aWNlUmVjdC5zaXplKCksIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybSk7Cisg
ICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmaWx0ZXJlZERldmljZUJhY2tncm91bmRU
ZXh0dXJlSWQsIGRldmljZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3Jt
KTsKIAotICAgICAgICB1c2VSZW5kZXJTdXJmYWNlKHRhcmdldFJlbmRlclN1cmZhY2UpOworICAg
ICAgICB1c2VSZW5kZXJQYXNzKHRhcmdldFJlbmRlclBhc3MpOwogICAgIH0KIH0KIAotdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiB7CiAgICAg
Ly8gVGhlIHJlcGxpY2EgaXMgYWx3YXlzIGRyYXduIGZpcnN0LCBzbyBmcmVlIGFmdGVyIGRyYXdp
bmcgdGhlIGNvbnRlbnRzLgogICAgIGJvb2wgc2hvdWxkUmVsZWFzZVRleHR1cmVzID0gIXF1YWQt
PmlzUmVwbGljYSgpOwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSA9IHF1
YWQtPmxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdp
bmdTdXJmYWNlID0gcXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRTdXJmYWNlKCk7CiAKICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW5kZXJUcmFuc2Zvcm0gPSBxdWFkLT5sYXllclRyYW5z
Zm9ybSgpOwogICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8gc2l6ZSB0aGUgcXVhZCBm
cm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KQEAgLTcxNSw3ICs3MTMsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVy
U3VyZmFjZURyYXdRdWFkKgogICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IC0xOwogICAg
IGludCBzaGFkZXJBbHBoYUxvY2F0aW9uID0gLTE7CiAgICAgaWYgKHVzZUFBICYmIHVzZU1hc2sp
IHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSBy
ZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOworICAgICAgICBjb25zdCBSZW5kZXJQYXNzTWFz
a1Byb2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKCk7CiAgICAgICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkp
KTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCkBAIC03MjUsNyArNzIz
LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChj
b25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRp
b24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBz
aGFkZXJBbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0
aW9uKCk7CiAgICAgfSBlbHNlIGlmICghdXNlQUEgJiYgdXNlTWFzaykgewotICAgICAgICBjb25z
dCBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0qIHByb2dyYW0gPSByZW5kZXJTdXJmYWNlTWFza1By
b2dyYW0oKTsKKyAgICAgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtKiBwcm9ncmFtID0g
cmVuZGVyUGFzc01hc2tQcm9ncmFtKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwogCkBAIC03MzMsNyArNzMxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3
UXVhZCoKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gcHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CiAgICAgfSBlbHNlIGlmICh1
c2VBQSAmJiAhdXNlTWFzaykgewotICAgICAgICBjb25zdCBSZW5kZXJTdXJmYWNlUHJvZ3JhbUFB
KiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZVByb2dyYW1BQSgpOworICAgICAgICBjb25zdCBSZW5k
ZXJQYXNzUHJvZ3JhbUFBKiBwcm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW1BQSgpOwogICAgICAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgp
KSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtNzQyLDcgKzc0
MCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQo
Y29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0
aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAg
c2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2Nh
dGlvbigpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFt
KiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKKyAgICAgICAgY29uc3QgUmVuZGVy
UGFzc1Byb2dyYW0qIHByb2dyYW0gPSByZW5kZXJQYXNzUHJvZ3JhbSgpOwogICAgICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAg
ICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTA3Niw4ICsxMDc0LDcg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlGcmFtZVRvVGV4dHVyZXMoY29uc3Qg
Q0NWaWRlb0RyYXdRdWFkKiBxdWFkKQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlQ
bGFuZVRvVGV4dHVyZShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQsIGNvbnN0IHZvaWQqIHBs
YW5lLCBpbnQgaW5kZXgpCiB7CiAgICAgQ0NWaWRlb0xheWVySW1wbDo6VGV4dHVyZSYgdGV4dHVy
ZSA9IHF1YWQtPnRleHR1cmVzKClbaW5kZXhdOwotICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciA9IHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCk7Ci0gICAgdGV4dHVyZS5tX3Rl
eHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQoKSwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlLm1f
dGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdl
dCgpKTsKICAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7
CiAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKIApA
QCAtMTIxMiwxMiArMTIwOSwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hl
YWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiBodWRUZXh0dXJlLCBjb25zdAogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwog
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNE
OjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09S
X1RFU1QpKTsKLSAgICB1c2VSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpOwor
ICAgIHVzZVJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAKICAgICBjb25zdCBIZWFk
c1VwRGlzcGxheVByb2dyYW0qIHByb2dyYW0gPSBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAg
ICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkUwKSk7Ci0gICAgaHVkVGV4dHVyZS0+YmluZFRleHR1cmUobV9jb250ZXh0LmdldCgpLCByZW5k
ZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVy
ZShtX2NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsK
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTEyMzQsMTQgKzEyMzEsMTQg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSgpCiAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lT
U09SX1RFU1QpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdl
ci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+dW5w
cm90ZWN0QWxsVGV4dHVyZXMoKTsKIAogICAgIHNpemVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVz
ID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOwog
ICAgIHNpemVfdCByZWNsYWltTGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0
ZXModmlld3BvcnRTaXplKCkpOwogICAgIHNpemVfdCBwcmVmZXJyZWRMaW1pdCA9IHJlY2xhaW1M
aW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPyByZWNsYWltTGltaXQgLSBjb250ZW50c01l
bW9yeVVzZUJ5dGVzIDogMDsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7Ci0gICAgbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQp
OwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVy
ZXMobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgbV9pbXBsVGV4
dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXQp
OworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJl
ZExpbWl0KTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVz
KG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dG9HTE1hdHJpeChmbG9hdCogZmxhdHRlbmVkLCBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbSkKQEAgLTEzMDEsNyArMTI5OCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
cmF3CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZm
ZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkKIHsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlUHJv
Z3JhbSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAgY29uc3QgUmVuZGVy
UGFzc1Byb2dyYW0qIHByb2dyYW0gPSByZW5kZXJQYXNzUHJvZ3JhbSgpOwogCiAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwpAQCAtMTQ0Miw0OSArMTQzOSw0
NyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdAogICAgIGlmICghdGV4dHVyZS0+cmVzZXJ2ZShk
ZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKG1fY29udGV4dC5nZXQoKSwgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgdGV4dHVyZS0+YmluZFRl
eHR1cmUobV9jb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCB0ZXh0dXJlLT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0Lnko
KSwgZGV2aWNlUmVjdC53aWR0aCgpLCBkZXZpY2VSZWN0LmhlaWdodCgpLCAwKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5k
ZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK2Jvb2wgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVu
ZGVyUGFzcykKIHsKLSAgICAvLyBJZiByZW5kZXJTdXJmYWNlIGlzIDAsIHdlIGNhbid0IHRlbGwg
aWYgd2UgYXJlIGFscmVhZHkgdXNpbmcgaXQsIHNpbmNlIG1fY3VycmVudFJlbmRlclN1cmZhY2Ug
aXMKLSAgICAvLyBpbml0aWFsaXplZCB0byAwLgotICAgIHJldHVybiBtX2N1cnJlbnRSZW5kZXJT
dXJmYWNlID09IHJlbmRlclN1cmZhY2UgJiYgIW1fY3VycmVudE1hbmFnZWRUZXh0dXJlOworICAg
IHJldHVybiBtX2N1cnJlbnRSZW5kZXJQYXNzID09IHJlbmRlclBhc3MgJiYgIW1fY3VycmVudE1h
bmFnZWRUZXh0dXJlOwogfQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVy
U3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCitib29sIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3Mp
CiB7Ci0gICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgbV9j
dXJyZW50UmVuZGVyUGFzcyA9IHJlbmRlclBhc3M7CiAgICAgbV9jdXJyZW50TWFuYWdlZFRleHR1
cmUgPSAwOwogCi0gICAgaWYgKHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFj
ZSkgeworICAgIGlmIChyZW5kZXJQYXNzID09IG1fZGVmYXVsdFJlbmRlclBhc3MpIHsKICAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7Ci0gICAgICAgIHNldERyYXdWaWV3cG9ydFJlY3QocmVu
ZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSwgdHJ1ZSk7CisgICAgICAgIHNldERyYXdGcmFtZWJ1
ZmZlclJlY3QocmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCksIHRydWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIXJlbmRlclN1cmZhY2UtPnByZXBh
cmVDb250ZW50c1RleHR1cmUodGhpcykpCisgICAgaWYgKCFyZW5kZXJQYXNzLT50YXJnZXRTdXJm
YWNlKCktPnByZXBhcmVDb250ZW50c1RleHR1cmUodGhpcykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUocmVuZGVyU3VyZmFjZS0+
Y29udGVudHNUZXh0dXJlKCksIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOworICAgIHJl
dHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUocmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgp
LT5jb250ZW50c1RleHR1cmUoKSwgcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkp
OwogfQogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlTWFuYWdlZFRleHR1cmUoTWFu
YWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKIHsKLSAg
ICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0g
MDsKICAgICBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSA9IHRleHR1cmU7CiAKICAgICByZXR1cm4g
YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHRleHR1cmUsIHZpZXdwb3J0UmVjdCk7CiB9CiAKLWJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdl
ZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKK2Jvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIGZyYW1lYnVmZmVyUmVjdCkKIHsKICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCi0gICAgdGV4dHVyZS0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRCht
X2NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogCiAjaWYgIWRl
ZmluZWQgKCBOREVCVUcgKQogICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKQEAgLTE0OTMsNyArMTQ4OCw3IEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUsIGNvCiAgICAgfQogI2VuZGlmCiAKLSAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHZp
ZXdwb3J0UmVjdCwgZmFsc2UpOworICAgIHNldERyYXdGcmFtZWJ1ZmZlclJlY3QoZnJhbWVidWZm
ZXJSZWN0LCBmYWxzZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1MDIsMjEgKzE0OTcs
MjEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVy
ZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY28KIC8vIHNjaXNzb3JSZWN0IGhhcyBpdHMgb3Jp
Z2luIGF0IHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJlbnQgdmlzaWJsZSByZWN0Lgog
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVj
dCYgc2Npc3NvclJlY3QpCiB7Ci0gICAgSW50UmVjdCBjb250ZW50UmVjdCA9IChtX2N1cnJlbnRS
ZW5kZXJTdXJmYWNlID8gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSA6IG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOworICAgIEludFJlY3QgZnJhbWVi
dWZmZXJPdXRwdXRSZWN0ID0gKG1fY3VycmVudFJlbmRlclBhc3MgPyBtX2N1cnJlbnRSZW5kZXJQ
YXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSA6IG1fZGVmYXVsdFJlbmRlclBhc3MtPmZyYW1l
YnVmZmVyT3V0cHV0UmVjdCgpKTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5h
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIAogICAgIC8vIFRoZSBzY2lz
c29yIGNvb3JkaW5hdGVzIG11c3QgYmUgc3VwcGxpZWQgaW4gdmlld3BvcnQgc3BhY2Ugc28gd2Ug
bmVlZCB0byBvZmZzZXQKLSAgICAvLyBieSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHRv
cCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCByZW5kZXIgc3VyZmFjZS4KLSAgICBpbnQgc2Np
c3NvclggPSBzY2lzc29yUmVjdC54KCkgLSBjb250ZW50UmVjdC54KCk7CisgICAgLy8gYnkgdGhl
IHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJlbnQg
cmVuZGVyIHBhc3MuCisgICAgaW50IHNjaXNzb3JYID0gc2Npc3NvclJlY3QueCgpIC0gZnJhbWVi
dWZmZXJPdXRwdXRSZWN0LngoKTsKICAgICAvLyBXaGVuIHJlbmRlcmluZyB0byB0aGUgZGVmYXVs
dCByZW5kZXIgc3VyZmFjZSB3ZSdyZSByZW5kZXJpbmcgdXBzaWRlIGRvd24gc28gdGhlIHRvcAog
ICAgIC8vIG9mIHRoZSBHTCBzY2lzc29yIGlzIHRoZSBib3R0b20gb2Ygb3VyIGxheWVyLgogICAg
IC8vIEJ1dCwgaWYgcmVuZGVyaW5nIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLCB3ZSByZXZlcnNlIG91
ciBzZW5zZSBvZiAndXBzaWRlIGRvd24nLgogICAgIGludCBzY2lzc29yWTsKLSAgICBpZiAoaXND
dXJyZW50UmVuZGVyU3VyZmFjZShtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKSkKLSAgICAgICAgc2Np
c3NvclkgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgpIC0g
KHNjaXNzb3JSZWN0Lm1heFkoKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkueSgpKTsKKyAgICBpZiAoaXNDdXJyZW50UmVuZGVyUGFzcyhtX2RlZmF1bHRSZW5kZXJQYXNz
KSkKKyAgICAgICAgc2Npc3NvclkgPSBmcmFtZWJ1ZmZlck91dHB1dFJlY3QuaGVpZ2h0KCkgLSAo
c2Npc3NvclJlY3QubWF4WSgpIC0gZnJhbWVidWZmZXJPdXRwdXRSZWN0LnkoKSk7CiAgICAgZWxz
ZQotICAgICAgICBzY2lzc29yWSA9IHNjaXNzb3JSZWN0LnkoKSAtIGNvbnRlbnRSZWN0LnkoKTsK
KyAgICAgICAgc2Npc3NvclkgPSBzY2lzc29yUmVjdC55KCkgLSBmcmFtZWJ1ZmZlck91dHB1dFJl
Y3QueSgpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+c2Npc3NvcihzY2lzc29yWCwg
c2Npc3NvclksIHNjaXNzb3JSZWN0LndpZHRoKCksIHNjaXNzb3JSZWN0LmhlaWdodCgpKSk7CiB9
CiAKQEAgLTE1MjgsNyArMTUyMyw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjptYWtl
Q29udGV4dEN1cnJlbnQoKQogLy8gU2V0cyB0aGUgY29vcmRpbmF0ZSByYW5nZSBvZiBjb250ZW50
IHRoYXQgZW5kcyBiZWluZyBkcmF3biBvbnRvIHRoZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UuCiAv
LyBUaGUgdGFyZ2V0IHJlbmRlciBzdXJmYWNlIGlzIGFzc3VtZWQgdG8gaGF2ZSBhbiBvcmlnaW4g
YXQgMCwgMCBhbmQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YKIC8vIG9mIHRoZSBkcmF3UmVjdC4K
LXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3Vmlld3BvcnRSZWN0KGNvbnN0IElu
dFJlY3QmIGRyYXdSZWN0LCBib29sIGZsaXBZKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldERyYXdGcmFtZWJ1ZmZlclJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wgZmxp
cFkpCiB7CiAgICAgaWYgKGZsaXBZKQogICAgICAgICBtX3Byb2plY3Rpb25NYXRyaXggPSBvcnRo
b01hdHJpeChkcmF3UmVjdC54KCksIGRyYXdSZWN0Lm1heFgoKSwgZHJhd1JlY3QubWF4WSgpLCBk
cmF3UmVjdC55KCkpOwpAQCAtMTU1MCwyNyArMTU0NSwyNyBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgIC8vIFdlIHdpbGwgYWx3YXlz
IG5lZWQgdGhlc2UgcHJvZ3JhbXMgdG8gcmVuZGVyLCBzbyBjcmVhdGUgdGhlIHByb2dyYW1zIGVh
Z2VybHkgc28gdGhhdCB0aGUgc2hhZGVyIGNvbXBpbGF0aW9uIGNhbgogICAgIC8vIHN0YXJ0IHdo
aWxlIHdlIGRvIG90aGVyIHdvcmsuIE90aGVyIHByb2dyYW1zIGFyZSBjcmVhdGVkIGxhemlseSBv
biBmaXJzdCBhY2Nlc3MuCiAgICAgbV9zaGFyZWRHZW9tZXRyeSA9IGFkb3B0UHRyKG5ldyBHZW9t
ZXRyeUJpbmRpbmcobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3Jh
bSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsK
KyAgICBtX3JlbmRlclBhc3NQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1fdGlsZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGls
ZVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgbV90aWxlUHJvZ3JhbU9wYXF1ZSA9IGFk
b3B0UHRyKG5ldyBUaWxlUHJvZ3JhbU9wYXF1ZShtX2NvbnRleHQuZ2V0KCkpKTsKIAogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7CiAKLSAgICBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6Omhp
Z2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1M
aW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNp
emUpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6
cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6
ZSk7CiAgICAgbV90ZXh0dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVh
dGUobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nID09
IFRocm90dGxlZFVwbG9hZGVyKQogICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVh
dGUoKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4
dC5nZXQoKSk7CisgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVz
LnVzaW5nVGV4dHVyZVVzYWdlSGludCkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvci0+c2V0VGV4dHVyZVVzYWdlSGludChUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OkZy
YW1lYnVmZmVyQXR0YWNobWVudCk7CisgICAgICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3ItPnNl
dFRleHR1cmVVc2FnZUhpbnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVTdG9yYWdlRXh0
ZW5zaW9uKSB7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0
dXJlU3RvcmFnZUV4dCh0cnVlKTsKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9j
YXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7CisgICAgICAgIG1faW1wbFRleHR1
cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwpAQCAtMTYwOSw0NyArMTYwNCw0NyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OkhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpo
ZWFkcwogICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQoKTsKIH0KIAotY29u
c3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJTdXJmYWNlUHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbSgpCitjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NQcm9ncmFtKCkKIHsKLSAgICBBU1NFUlQobV9yZW5kZXJTdXJmYWNlUHJvZ3JhbSk7Ci0g
ICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAg
IFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFt
Ojppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJQYXNzUHJv
Z3JhbSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Cisg
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9n
cmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fcmVuZGVy
U3VyZmFjZVByb2dyYW0uZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dyYW0uZ2V0
KCk7CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyU3VyZmFjZVByb2dy
YW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCkKK2Nv
bnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW1BQSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBKCkKIHsKLSAgICBpZiAoIW1fcmVuZGVy
U3VyZmFjZVByb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBID0gYWRv
cHRQdHIobmV3IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7Ci0gICAg
aWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAg
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1B
QTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFzc1By
b2dyYW1BQSkKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJl
bmRlclBhc3NQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3JlbmRlclBh
c3NQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0
LmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5nZXQo
KTsKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLmdldCgpOwogfQogCi1jb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKQorY29uc3QgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKCkKIHsKLSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSA9IGFkb3B0UHRy
KG5ldyBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0obV9jb250ZXh0LmdldCgpKSk7Ci0gICAgaWYg
KCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBU
UkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1By
b2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFz
c01hc2tQcm9ncmFtKQorICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSA9IGFkb3B0UHRy
KG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFt
X3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW06OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRp
YWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtLmdldCgpOworICAgIHJldHVybiBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS5n
ZXQoKTsKIH0KIAotY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJTdXJmYWNlTWFz
a1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW1BQSgpCitjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJvZ3Jh
bUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKCkKIHsK
LSAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZU1hc2tQcm9n
cmFtQUEobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhp
cywgMCk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemUo
bV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCisg
ICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFz
c01hc2tQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NN
YXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBOjppbml0aWFsaXplIiwg
dGhpcywgMCk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmluaXRpYWxpemUo
bV9jb250ZXh0LmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZU1hc2tQ
cm9ncmFtQUEuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEuZ2V0
KCk7CiB9CiAKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW0qIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW0oKQpAQCAtMTc5MiwxNCArMTc4NywxNCBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIGlm
IChtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtKQogICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQ
cm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICBpZiAobV9yZW5kZXJTdXJm
YWNlTWFza1Byb2dyYW0pCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZVByb2dyYW0pCi0g
ICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsK
LSAgICBpZiAobV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwotICAgIGlmICht
X3JlbmRlclN1cmZhY2VQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1B
QS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3JlbmRlclBhc3NNYXNrUHJv
Z3JhbSkKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
LmdldCgpKTsKKyAgICBpZiAobV9yZW5kZXJQYXNzUHJvZ3JhbSkKKyAgICAgICAgbV9yZW5kZXJQ
YXNzUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3JlbmRlclBh
c3NNYXNrUHJvZ3JhbUFBKQorICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLT5jbGVh
bnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVyUGFzc1Byb2dyYW1BQSkKKyAg
ICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAK
ICAgICBpZiAobV90ZXh0dXJlUHJvZ3JhbSkKICAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+Y2xl
YW51cChtX2NvbnRleHQuZ2V0KCkpOwpAQCAtMTgyNSw3ICsxODIwLDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBtX3RleHR1cmVDb3Bp
ZXIuY2xlYXIoKTsKICAgICBtX3RleHR1cmVVcGxvYWRlci5jbGVhcigpOwogCi0gICAgcmVsZWFz
ZVJlbmRlclN1cmZhY2VUZXh0dXJlcygpOworICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMo
KTsKIH0KIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ29udGV4dExvc3QoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAwZjk2NWE4YjRmYWQ1M2NlYTFlZmQw
OTgzZWU5NWJmOTc3NjcyM2E2Li5kZDNhNzgyOGVhYTBlNTQ3YTkwYmM0ZmQwZWY1ZTljZDExNjBj
MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBA
QCBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFzcyBDQ0RyYXdRdWFkOwogY2xhc3Mg
Q0NJT1N1cmZhY2VEcmF3UXVhZDsKIGNsYXNzIENDUmVuZGVyUGFzczsKLWNsYXNzIENDUmVuZGVy
U3VyZmFjZURyYXdRdWFkOworY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ7CiBjbGFzcyBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZDsKIGNsYXNzIENDVGV4dHVyZURyYXdRdWFkOwogY2xhc3MgQ0NUaWxl
RHJhd1F1YWQ7CkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlld3BvcnRD
aGFuZ2VkKCk7CiAKLSAgICB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSog
ZGVmYXVsdFJlbmRlclN1cmZhY2UpOworICAgIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3Qg
Q0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcyk7CiAgICAgdm9pZCBkcmF3UmVuZGVyUGFzcyhj
b25zdCBDQ1JlbmRlclBhc3MqKTsKICAgICB2b2lkIGZpbmlzaERyYXdpbmdGcmFtZSgpOwogCkBA
IC0xMTcsMTAgKzExNywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVs
cyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIGdldEZyYW1lYnVmZmVy
VGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIGRldmljZVJlY3QpOwogCi0g
ICAgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgpOyB9CisgICAgVGV4dHVy
ZU1hbmFnZXIqIGltcGxUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW1wbFRleHR1
cmVNYW5hZ2VyLmdldCgpOyB9CiAgICAgVGV4dHVyZUNvcGllciogdGV4dHVyZUNvcGllcigpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsgfQogICAgIFRleHR1cmVVcGxvYWRl
ciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlVXBsb2FkZXIuZ2V0
KCk7IH0KLSAgICBUZXh0dXJlQWxsb2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7
IH0KKyAgICBUZXh0dXJlQWxsb2NhdG9yKiBpbXBsVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KICAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNv
bnN0IEludFJlY3QmKTsKQEAgLTE1MSwxMSArMTUxLDExIEBAIHByaXZhdGU6CiAgICAgaW50IHZp
ZXdwb3J0V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0aCgpOyB9CiAgICAgaW50
IHZpZXdwb3J0SGVpZ2h0KCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7IH0KIAot
ICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNvbnN0IEZsb2F0UmVjdCYgc3Vy
ZmFjZURhbWFnZVJlY3QpOworICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNv
bnN0IEZsb2F0UmVjdCYgcmVuZGVyUGFzc0RldmljZURhbWFnZVJlY3QpOwogICAgIHZvaWQgZHJh
d0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwogICAgIHZv
aWQgZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKLSAg
ICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZCosIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9y
bSk7Ci0gICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNl
RHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRl
clBhc3NEcmF3UXVhZCosIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRl
dmljZVRyYW5zZm9ybSk7CisgICAgdm9pZCBkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4
dHVyZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3SU9TdXJmYWNlUXVhZChjb25zdCBDQ0lPU3Vy
ZmFjZURyYXdRdWFkKik7CkBAIC0xNzAsMTggKzE3MCwxOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZHJhd1JHQkEoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3WVVWKGNvbnN0
IENDVmlkZW9EcmF3UXVhZCopOwogCi0gICAgdm9pZCBzZXREcmF3Vmlld3BvcnRSZWN0KGNvbnN0
IEludFJlY3QmLCBib29sIGZsaXBZKTsKKyAgICB2b2lkIHNldERyYXdGcmFtZWJ1ZmZlclJlY3Qo
Y29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOwogCi0gICAgLy8gVGhlIGN1cnJlbnQgZHJhd2lu
ZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBNYW5hZ2VkVGV4dHVyZS4gVXNl
IHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0YXJnZXQuCi0gICAg
Ym9vbCB1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOworICAgIC8vIFRoZSBjdXJy
ZW50IGRyYXdpbmcgdGFyZ2V0IGlzIGVpdGhlciBhIFJlbmRlclBhc3Mgb3IgTWFuYWdlZFRleHR1
cmUuIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gc3dpdGNoIHRvIGEgbmV3IGRyYXdpbmcgdGFyZ2V0
LgorICAgIGJvb2wgdXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqKTsKICAgICBib29s
IHVzZU1hbmFnZWRUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3Bv
cnRSZWN0KTsKLSAgICBib29sIGlzQ3VycmVudFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNl
Kik7CisgICAgYm9vbCBpc0N1cnJlbnRSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopOwog
CiAgICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOwogCi0gICAgdm9pZCBjbGVhclJlbmRlclN1cmZhY2Uo
Q0NSZW5kZXJTdXJmYWNlKiwgQ0NSZW5kZXJTdXJmYWNlKiByb290UmVuZGVyU3VyZmFjZSwgY29u
c3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgdm9pZCBjbGVhclJlbmRlclBh
c3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFz
cywgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpOwogCi0gICAgdm9pZCBy
ZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CisgICAgdm9pZCByZWxlYXNlUmVuZGVyUGFz
c1RleHR1cmVzKCk7CiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0xOTgs
NyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fcHJvamVjdGlvbk1hdHJpeDsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fd2luZG93TWF0cml4OwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1cnJlbnRSZW5kZXJT
dXJmYWNlOworICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9jdXJyZW50UmVuZGVyUGFzczsKICAg
ICBNYW5hZ2VkVGV4dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CiAgICAgdW5zaWduZWQg
bV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwogCkBAIC0yMTYsMTMgKzIxNiwxMCBAQCBwcml2YXRl
OgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVu
dFNoYWRlckNoZWNrZXJib2FyZD4gVGlsZUNoZWNrZXJib2FyZFByb2dyYW07CiAKICAgICAvLyBS
ZW5kZXIgc3VyZmFjZSBzaGFkZXJzLgotICAgIC8vIENDUmVuZGVyU3VyZmFjZTo6ZHJhd0xheWVy
cygpIG5lZWRzIHRvIHNlZSB0aGVzZSBwcm9ncmFtcyBjdXJyZW50bHkuCi0gICAgLy8gRklYTUU6
IERyYXcgd2l0aCBhIHF1YWQgdHlwZSBmb3IgcmVuZGVyIHN1cmZhY2VzIGFuZCBnZXQgcmlkIG9m
IHRoaXMgZnJpZW5kbHluZXNzLgotICAgIGZyaWVuZCBjbGFzcyBDQ1JlbmRlclN1cmZhY2U7Ci0g
ICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEFscGhhPiBSZW5kZXJTdXJmYWNlUHJvZ3JhbTsKLSAgICB0eXBlZGVmIFByb2dy
YW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFN
YXNrPiBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW07Ci0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGlu
ZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBPiBSZW5kZXJT
dXJmYWNlUHJvZ3JhbUFBOwotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IFJlbmRlclN1cmZhY2VNYXNr
UHJvZ3JhbUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4
LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUmVuZGVyUGFzc1Byb2dyYW07CisgICAgdHlw
ZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdC
QVRleEFscGhhTWFzaz4gUmVuZGVyUGFzc01hc2tQcm9ncmFtOworICAgIHR5cGVkZWYgUHJvZ3Jh
bUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQT4g
UmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBPiBSZW5kZXJQYXNzTWFz
a1Byb2dyYW1BQTsKIAogICAgIC8vIFRleHR1cmUgc2hhZGVycy4KICAgICB0eXBlZGVmIFByb2dy
YW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4QWxwaGE+IFRleHR1cmVQcm9ncmFtOwpAQCAtMjQ4LDEwICsyNDUsMTAgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBUaWxlUHJvZ3JhbVN3aXp6bGVBQSogdGlsZVByb2dyYW1Td2l6emxlQUEoKTsK
ICAgICBjb25zdCBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogdGlsZUNoZWNrZXJib2FyZFByb2dy
YW0oKTsKIAotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiByZW5kZXJTdXJmYWNlUHJv
Z3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEqIHJlbmRlclN1cmZhY2VQ
cm9ncmFtQUEoKTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0qIHJlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFB
KiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOworICAgIGNvbnN0IFJlbmRlclBhc3NQcm9n
cmFtKiByZW5kZXJQYXNzUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtQUEq
IHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBSZW5kZXJQYXNzTWFza1Byb2dyYW0q
IHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3Jh
bUFBKiByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogCiAgICAgY29uc3QgVGV4dHVyZVByb2dy
YW0qIHRleHR1cmVQcm9ncmFtKCk7CiAgICAgY29uc3QgVGV4dHVyZVByb2dyYW1GbGlwKiB0ZXh0
dXJlUHJvZ3JhbUZsaXAoKTsKQEAgLTI3MiwxMCArMjY5LDEwIEBAIHByaXZhdGU6CiAgICAgT3du
UHRyPFRpbGVQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVQcm9ncmFtU3dpenpsZUFBOwogICAgIE93
blB0cjxUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbT4gbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbTsK
IAotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlUHJvZ3JhbT4gbV9yZW5kZXJTdXJmYWNlUHJvZ3Jh
bTsKLSAgICBPd25QdHI8UmVuZGVyU3VyZmFjZVByb2dyYW1BQT4gbV9yZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0+IG1fcmVuZGVyU3Vy
ZmFjZU1hc2tQcm9ncmFtOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQT4g
bV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQTsKKyAgICBPd25QdHI8UmVuZGVyUGFzc1Byb2dy
YW0+IG1fcmVuZGVyUGFzc1Byb2dyYW07CisgICAgT3duUHRyPFJlbmRlclBhc3NQcm9ncmFtQUE+
IG1fcmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICBPd25QdHI8UmVuZGVyUGFzc01hc2tQcm9ncmFt
PiBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVuZGVyUGFzc01hc2tQcm9n
cmFtQUE+IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUE7CiAKICAgICBPd25QdHI8VGV4dHVyZVBy
b2dyYW0+IG1fdGV4dHVyZVByb2dyYW07CiAgICAgT3duUHRyPFRleHR1cmVQcm9ncmFtRmxpcD4g
bV90ZXh0dXJlUHJvZ3JhbUZsaXA7CkBAIC0yODcsMTUgKzI4NCwxNSBAQCBwcml2YXRlOgogICAg
IE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENvbG9yUHJvZ3JhbTsKICAgICBPd25Q
dHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKIAotICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXI7Cisg
ICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2ltcGxUZXh0dXJlTWFuYWdlcjsKICAgICBPd25Q
dHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3BpZXI7CiAgICAgT3duUHRy
PFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7CiAgICAgT3duUHRyPFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3I7Ci0gICAgT3duUHRy
PFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
cjsKKyAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2ltcGxUZXh0dXJlQWxs
b2NhdG9yOwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAKLSAg
ICBDQ1JlbmRlclN1cmZhY2UqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2U7CisgICAgY29uc3QgQ0NS
ZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCiAgICAgRmxvYXRRdWFkIG1fc2hhcmVk
R2VvbWV0cnlRdWFkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDI4MTJkNjUyZmY2M2E3
OWI4OTJjNWUzZDZlYmM2MGZmODU4YzRjNGIuLjJjYjBjMjA2N2NiNDU5NWI0YzhkNGE4MzE3ZGRj
YmU0YjFhZTI3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1
cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5o
IgpAQCAtODQsMTAgKzg0LDEwIEBAIGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIENDRHJhd1F1
YWQ6OnRvSU9TdXJmYWNlRHJhd1F1YWQoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKj4odGhpcyk7CiB9CiAKLWNvbnN0IENDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0
Citjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJh
d1F1YWQoKSBjb25zdAogewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclN1cmZhY2Up
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCo+
KHRoaXMpOworICAgIEFTU0VSVChtX21hdGVyaWFsID09IFJlbmRlclBhc3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHRoaXMpOwogfQogCiBj
b25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9yRHJhd1F1
YWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDM4MWNiYWVhY2YzZjI1MjE3NGQ1N2Zk
ZDMzZjIwOWIxNThhMWQ1OTIuLmE2YmVmOWM0YjAxNzQzYmYwNzg2MmRlZjdlN2JkMzk4ZjhhYTg2
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKIGNsYXNzIENDRGVidWdCb3JkZXJE
cmF3UXVhZDsKIGNsYXNzIENDSU9TdXJmYWNlRHJhd1F1YWQ7Ci1jbGFzcyBDQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZDsKK2NsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENv
bG9yRHJhd1F1YWQ7CiBjbGFzcyBDQ1RleHR1cmVEcmF3UXVhZDsKIGNsYXNzIENDVGlsZURyYXdR
dWFkOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIENoZWNrZXJib2FyZCwKICAg
ICAgICAgRGVidWdCb3JkZXIsCiAgICAgICAgIElPU3VyZmFjZUNvbnRlbnQsCi0gICAgICAgIFJl
bmRlclN1cmZhY2UsCisgICAgICAgIFJlbmRlclBhc3MsCiAgICAgICAgIFRleHR1cmVDb250ZW50
LAogICAgICAgICBTb2xpZENvbG9yLAogICAgICAgICBUaWxlZENvbnRlbnQsCkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiB0b0NoZWNr
ZXJib2FyZERyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFk
KiB0b0RlYnVnQm9yZGVyRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ0lPU3VyZmFjZURy
YXdRdWFkKiB0b0lPU3VyZmFjZURyYXdRdWFkKCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqIHRvUmVuZGVyU3VyZmFjZURyYXdRdWFkKCkgY29uc3Q7CisgICAgY29u
c3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHRvUmVuZGVyUGFzc0RyYXdRdWFkKCkgY29uc3Q7CiAg
ICAgY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHRvU29saWRDb2xvckRyYXdRdWFkKCkgY29u
c3Q7CiAgICAgY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHRvVGV4dHVyZURyYXdRdWFkKCkgY29u
c3Q7CiAgICAgY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHRvVGlsZURyYXdRdWFkKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDdkNDlmNzk4ZDFhYzdkNDhiZjc3
NDM0N2JiYmM5N2ZiYTA4ZjNhMTYuLmRjMGQ5MzQ5MzEwZjA1ZTIyNTFmYTgyM2Q1ZjBkZmUwOWFi
NThhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXll
clRyZWVIb3N0SW1wbCkKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIg
PSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwogICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIGlmICghbV9odWRU
ZXh0dXJlKQotICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxh
eWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICAgICAgbV9o
dWRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5pbXBsVGV4
dHVyZU1hbmFnZXIoKSk7CiAKICAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVy
VHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpOwogICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVy
ZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIENDSGVhZHNV
cERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAg
ICAgewogICAgICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7
CiAKLSAgICAgICAgbV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBsYXllclJlbmRl
cmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9odWRUZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZUFsbG9j
YXRvcigpKTsKICAgICAgICAgYm9vbCB1cGxvYWRlZFZpYU1hcCA9IGZhbHNlOwogICAgICAgICBp
ZiAobGF5ZXJSZW5kZXJlci0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpIHsKICAgICAgICAgICAg
IEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9u
czNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAwYTQ5ZjhlN2RhNTkwNjJhY2JkYTQ2YThjNTk0
NTQ5Zjk0NjgyNTFlLi5iY2RhZTE4OGQyNjg4Mzk4NWMwMTYzNWNhM2RhYzAzNTQ3NWIzMGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDIsNyArNDIsNiBA
QAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCi0j
aW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zMjgsOSArMzI3LDEwIEBAIGJvb2wgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3Nl
cywgQ0NMYXllCiAKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxheWVyKGl0KTsKIAot
ICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkKLSAg
ICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgJm9j
Y2x1c2lvblRyYWNrZXIpOwotICAgICAgICBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkg
JiYgIWl0LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChpdC5y
ZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKSB7CisgICAgICAgICAgICBDQ1Jl
bmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MgPSBzdXJmYWNlUGFzc01hcC5nZXQoaXQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRl
clN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFj
a2VyKTsKKyAgICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0LT52
aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpdC0+d2lsbERyYXco
bV9sYXllclJlbmRlcmVyLmdldCgpKTsKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9y
TGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAg
fQpAQCAtNDI0LDEzICs0MjQsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5
ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoY2FuRHJhdygp
KTsKKyAgICBBU1NFUlQoIWZyYW1lLnJlbmRlclBhc3Nlcy5pc0VtcHR5KCkpOwogCiAgICAgLy8g
RklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGltZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0
b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFsdWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJs
ZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVtJ3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCiAK
KyAgICAvLyBUaGUgcm9vdCBSZW5kZXJQYXNzIGlzIHRoZSBsYXN0IG9uZSB0byBiZSBkcmF3bi4K
KyAgICBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFzc2VzLmxh
c3QoKS5nZXQoKTsKKwogICAgIG1fZnBzQ291bnRlci0+bWFya0JlZ2lubmluZ09mRnJhbWUoY3Vy
cmVudFRpbWUoKSk7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZShtX3Jv
b3RMYXllckltcGwtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgbV9sYXllclJlbmRlcmVyLT5iZWdp
bkRyYXdpbmdGcmFtZShyb290UmVuZGVyUGFzcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXllclJlbmRl
cmVyLT5kcmF3UmVuZGVyUGFzcyhmcmFtZS5yZW5kZXJQYXNzZXNbaV0uZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNjZlZWYzOWZjYTc4MGRlY2RmNjQ3M2FmYWI0ZDgwYTAz
ZmM4YzdlYi4uMDg0Mjk5NmFiODg1ZTI2ZTlmODJmZTE3NDBkNGQxOTRmNTAxY2QzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiY2MvQ0NM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3TWV0cmljcy5oIgogI2luY2x1ZGUg
ImNjL0NDUmVuZGVyUGFzcy5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFk
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAppbmRleCBmZDg5OTkwYzcx
OTgxNjA2NzZhNzZmNWJlZDIxOTZmZjdiOTZlY2NlLi5hMzFiNjRmZDY1ZGNmZDc4ZmIyNDA1MmNm
MTJhNjVkYThmY2EyYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKQEAgLTQ0LDYgKzQ0
LDcgQEAgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IENDUmVuZGVyUGFzczo6Y3JlYXRlKENDUmVu
ZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSkKIAogQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3Mo
Q0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKQogICAgIDogbV90YXJnZXRTdXJmYWNlKHRh
cmdldFN1cmZhY2UpCisgICAgLCBtX2ZyYW1lYnVmZmVyT3V0cHV0UmVjdCh0YXJnZXRTdXJmYWNl
LT5jb250ZW50UmVjdCgpKQogewogICAgIEFTU0VSVChtX3RhcmdldFN1cmZhY2UpOwogfQpAQCAt
NTgsNyArNTksNyBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xh
eWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcAogICAgIG1fc2hhcmVkUXVhZFN0
YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCog
bGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIpCit2b2lkIEND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwq
IGxheWVyLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2Nj
bHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIpCiB7CiAgICAgLy8gRklYTUU6IHJl
bmRlciBzdXJmYWNlIGxheWVycyBzaG91bGQgYmUgYSBDQ0xheWVySW1wbC1kZXJpdmVkIGNsYXNz
IGFuZAogICAgIC8vIG5vdCBiZSBoYW5kbGVkIHNwZWNpYWxseSBoZXJlLgpAQCAtNjgsNyArNjks
NyBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIo
Q0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1cwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNlLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
ICAgICBib29sIGlzUmVwbGljYSA9IGZhbHNlOwotICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBzdXJmYWNlRGFtYWdl
UmVjdCgpKTsKKyAgICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgc3VyZmFjZURh
bWFnZVJlY3QoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFk
U3RhdGUucmVsZWFzZSgpKTsKIAogICAgIGlmICghc3VyZmFjZS0+aGFzUmVwbGljYSgpKQpAQCAt
NzcsNyArNzgsNyBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJm
YWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1cwogICAgIC8vIEFkZCByZXBsaWNh
IGFmdGVyIHRoZSBzdXJmYWNlIHNvIHRoYXQgaXQgYXBwZWFycyBiZWxvdyB0aGUgc3VyZmFjZS4K
ICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUgPSBz
dXJmYWNlLT5jcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgaXNSZXBsaWNhID0g
dHJ1ZTsKLSAgICBzdXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCByZXBsaWNhU2hhcmVk
UXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2EsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpOworICAgIHN1
cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgc3VyZmFjZURhbWFnZVJlY3Qo
KSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChyZXBsaWNhU2hhcmVkUXVhZFN0
YXRlLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNDUyYTg2MTBm
NWE5ZGJjMDIxNGE4Y2RkYmZmNmYwMjU0ZmVjZGEyNi4uYWFmYjgxY2E1YzY1MDRlNjcwNTk1MWRi
ZWNkMGVmMDNhODYzYjIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTU2LDExICs1Niwx
MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUo
Q0NSZW5kZXJTdXJmYWNlKik7CiAKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXll
ckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKTsK
LSAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwg
Q0NPY2NsdXNpb25UcmFja2VySW1wbCopOworICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJT
dXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGlu
Z1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqKTsKICAgICB2b2lkIGFwcGVuZFF1
YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3Jl
ZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmKTsKIAogICAg
IGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsg
fQogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0U3VyZmFjZTsgfQorICAgIC8vIFRoaXMgZGVub3RlcyB0aGUgYm91bmRzIGluIHBoeXNp
Y2FsIHBpeGVscyBvZiB0aGUgb3V0cHV0IGdlbmVyYXRlZCBieSB0aGlzIFJlbmRlclBhc3MuCisg
ICAgY29uc3QgSW50UmVjdCYgZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZWJ1ZmZlck91dHB1dFJlY3Q7IH0KIAogICAgIHZvaWQgc2V0U3VyZmFjZURhbWFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkgeyBtX3N1cmZhY2VEYW1hZ2VS
ZWN0ID0gc3VyZmFjZURhbWFnZVJlY3Q7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VE
YW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlRGFtYWdlUmVjdDsgfQpAQCAtNzAs
NiArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX3RhcmdldFN1cmZh
Y2U7CiAgICAgQ0NRdWFkTGlzdCBtX3F1YWRMaXN0OworICAgIEludFJlY3QgbV9mcmFtZWJ1ZmZl
ck91dHB1dFJlY3Q7CiAgICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBtX3No
YXJlZFF1YWRTdGF0ZUxpc3Q7CiAgICAgRmxvYXRSZWN0IG1fc3VyZmFjZURhbWFnZVJlY3Q7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUy
MmI4OTVjOTJjOWJjMmMwN2RjOGU5MzUwZmEyYTQzMGNmZTZkNTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNz
LCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVy
ZUlkKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzcywgc3VyZmFjZURhbWFnZVJlY3QsIGlz
UmVwbGljYSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQpKTsKK30K
KworQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURh
bWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3Vu
ZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpCisgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCisgICAgLCBtX3Jl
bmRlclBhc3MocmVuZGVyUGFzcykKKyAgICAsIG1fc3VyZmFjZURhbWFnZVJlY3Qoc3VyZmFjZURh
bWFnZVJlY3QpCisgICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCisgICAgLCBtX2ZpbHRlcnMo
ZmlsdGVycykKKyAgICAsIG1fYmFja2dyb3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMpCisg
ICAgLCBtX21hc2tUZXh0dXJlSWQobWFza1RleHR1cmVJZCkKK3sKKyAgICBBU1NFUlQobV9sYXll
cik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg4MWVhYmZmMDA0M2RkMWUyZDVhODIyMTQ4OThhNmVhM2FjZTc2MDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVu
ZGVyUGFzc0RyYXdRdWFkX2gKKyNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAorCisjaW5j
bHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDQ1JlbmRlclBhc3M7CisKK2NsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDog
cHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFz
c0RyYXdRdWFkKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NE
cmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3Qs
IGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMs
IHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOworCisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5k
ZXJQYXNzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzOyB9CisgICAgYm9vbCBpc1JlcGxp
Y2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQorICAgIHVuc2lnbmVkIG1hc2tUZXh0
dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXh0dXJlSWQ7IH0KKworICAgIC8vIFRoZSBz
dXJmYWNlIGRhbWFnZSByZWN0IGZvciB0aGUgdGFyZ2V0IHN1cmZhY2UgdGhpcyBxdWFkIGRyYXdz
IGludG8uCisgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSByZW5kZXIgc3Vy
ZmFjZXMgZ2V0IHRoZWlyIG93biBsYXllciB0eXBlLgorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3Vy
ZmFjZURhbWFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VEYW1hZ2VSZWN0OyB9CisK
KyAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlcnM7IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVy
czsgfQorCitwcml2YXRlOgorICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOworCisg
ICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX3JlbmRlclBhc3M7CisgICAgRmxvYXRSZWN0IG1fc3Vy
ZmFjZURhbWFnZVJlY3Q7CisgICAgYm9vbCBtX2lzUmVwbGljYTsKKyAgICBXZWJLaXQ6OldlYkZp
bHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyBtX2JhY2tncm91bmRGaWx0ZXJzOworICAgIHVuc2lnbmVkIG1fbWFza1RleHR1cmVJZDsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA5NDNj
NTNmYmYwODI3ZTEyNmE3YjYyZWUxOGQ4NmJmM2QyOGY1NzhjLi5kOGViOTI4NzNmOGM1N2ZjMDg0
MjI1NGNiYzU1MzRiMWE2NDMwMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5o
IgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtODQsNyArODQsNyBAQCBGbG9h
dFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKIAogYm9v
bCBDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKQogewotICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFu
YWdlciA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpOworICAg
IFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXItPmltcGxUZXh0
dXJlTWFuYWdlcigpOwogCiAgICAgaWYgKCFtX2NvbnRlbnRzVGV4dHVyZSkKICAgICAgICAgbV9j
b250ZW50c1RleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsK
QEAgLTExMiw3ICsxMTIsNyBAQCBib29sIENDUmVuZGVyU3VyZmFjZTo6aGFzVmFsaWRDb250ZW50
c1RleHR1cmUoKSBjb25zdAogCiBib29sIENDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91
bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIHsKLSAgICBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJm
YWNlVGV4dHVyZU1hbmFnZXIoKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIg
PSBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlmICghbV9iYWNr
Z3JvdW5kVGV4dHVyZSkKICAgICAgICAgbV9iYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIFBhc3NPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDUmVuZGVyU3VyZmFjZTo6Y3JlYXRlUmVwbGljYVNoYXJl
ZFF1YWRTdGF0ZSgpIGNvCiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocmVw
bGljYU9yaWdpblRyYW5zZm9ybSgpLCByZXBsaWNhRHJhd1RyYW5zZm9ybSgpLCBjb250ZW50UmVj
dCgpLCBjbGlwUmVjdCgpLCBkcmF3T3BhY2l0eSgpLCBpc09wYXF1ZSk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEZsb2F0
UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNv
bnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpCiB7CiAgICAgQVNTRVJUKCFmb3JSZXBs
aWNhIHx8IGhhc1JlcGxpY2EoKSk7CiAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIENDUmVuZGVy
U3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYQogCiAgICAgaW50IG1hc2tUZXh0dXJlSWQgPSBtYXNrTGF5ZXIgPyBtYXNrTGF5
ZXItPmNvbnRlbnRzVGV4dHVyZUlkKCkgOiAwOwogCi0gICAgcXVhZExpc3QuYXBwZW5kU3VyZmFj
ZShDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVu
dFJlY3QoKSwgbV9vd25pbmdMYXllciwgc3VyZmFjZURhbWFnZVJlY3QsIGZvclJlcGxpY2EsIGZp
bHRlcnMoKSwgYmFja2dyb3VuZEZpbHRlcnMoKSwgbWFza1RleHR1cmVJZCkpOworICAgIHF1YWRM
aXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3MsIHN1cmZhY2VEYW1hZ2VSZWN0LCBmb3JS
ZXBsaWNhLCBmaWx0ZXJzKCksIGJhY2tncm91bmRGaWx0ZXJzKCksIG1hc2tUZXh0dXJlSWQpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA4NTVmY2NlN2U0MzUzYjhk
ZGVkNTFkZWUwZWVkMGM0MDAzODJhMTZlLi43M2U4MWE0NTc2ODZmMzQxZGQ4NmM3NTY2Y2IzMDcz
OWRiYzQzMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtNDEsNiArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRGFtYWdlVHJhY2tlcjsKIGNsYXNzIEND
UXVhZEN1bGxlcjsKK2NsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNzIENDU2hhcmVkUXVhZFN0YXRl
OwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CkBAIC0x
MzksNyArMTQwLDcgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhlIHN1cmZhY2VEYW1hZ2VSZWN0IHBhcmFtZXRlciB3aGVuIHRoZSB2YWx1ZSBpcyBy
ZW1vdmVkIGZyb20gQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuCi0gICAgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgY29u
c3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3Qg
Q0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAKIHBy
aXZhdGU6CiAgICAgQ0NMYXllckltcGwqIG1fb3duaW5nTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRmMDBjMGUwZmEzNjU2MjFhMzY2M2JjMjk2NmYyMzdjM2I3NWFiNWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUGFzc093blB0cjxDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZD4gQ0NSZW5kZXJTdXJm
YWNlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBG
bG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIsIHN1cmZhY2VEYW1hZ2VSZWN0LCBpc1JlcGxpY2EsIGZp
bHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkKSk7Ci19Ci0KLUNDUmVuZGVy
U3VyZmFjZURyYXdRdWFkOjpDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXll
ckltcGwqIGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25l
ZCBtYXNrVGV4dHVyZUlkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQ6OlJlbmRlclN1cmZhY2UsIHF1YWRSZWN0KQotICAgICwgbV9sYXllcihsYXllcikKLSAg
ICAsIG1fc3VyZmFjZURhbWFnZVJlY3Qoc3VyZmFjZURhbWFnZVJlY3QpCi0gICAgLCBtX2lzUmVw
bGljYShpc1JlcGxpY2EpCi0gICAgLCBtX2ZpbHRlcnMoZmlsdGVycykKLSAgICAsIG1fYmFja2dy
b3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMpCi0gICAgLCBtX21hc2tUZXh0dXJlSWQobWFz
a1RleHR1cmVJZCkKLXsKLSAgICBBU1NFUlQobV9sYXllcik7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYTAxMjgxZmE0ZjY5ZGUyY2Q2ZDI5MWZmMWE2MTZiNjk2N2I5NGI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZF9oCi0jZGVmaW5lIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkX2gKLQotI2luY2x1ZGUg
ImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ0NMYXllckltcGw7Ci0KLWNsYXNzIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkIDogcHVi
bGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9v
bCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywg
Y29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5z
aWduZWQgbWFza1RleHR1cmVJZCk7Ci0KLSAgICBDQ0xheWVySW1wbCogbGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX2xheWVyOyB9Ci0gICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBt
X2lzUmVwbGljYTsgfQotICAgIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQoKSBjb25zdCB7IHJldHVy
biBtX21hc2tUZXh0dXJlSWQ7IH0KLQotICAgIC8vIFRoZSBzdXJmYWNlIGRhbWFnZSByZWN0IGZv
ciB0aGUgdGFyZ2V0IHN1cmZhY2UgdGhpcyBxdWFkIGRyYXdzIGludG8uCi0gICAgLy8gRklYTUU6
IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSByZW5kZXIgc3VyZmFjZXMgZ2V0IHRoZWlyIG93biBs
YXllciB0eXBlLgotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3N1cmZhY2VEYW1hZ2VSZWN0OyB9Ci0KLSAgICBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0K
LSAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQotCi1wcml2YXRlOgotICAg
IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVj
dCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVy
cywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7Ci0KLSAgICBDQ0xheWVySW1wbCogbV9sYXllcjsK
LSAgICBGbG9hdFJlY3QgbV9zdXJmYWNlRGFtYWdlUmVjdDsKLSAgICBib29sIG1faXNSZXBsaWNh
OwotICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7Ci0gICAgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7Ci0gICAgdW5zaWduZWQg
bV9tYXNrVGV4dHVyZUlkOwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCAyNDNhZDIzMWU3ZjQ2ZmM4OWViMDQwNWQ4ZDBiZjUz
NjgzMWVjNjE0Li44OTAwYzI0N2NmMjcwODhmYTdhZDZkYWM0NDY1YjJjYjMyMDVkNGE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC01OCwxMSArNTgsMTEg
QEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fdGV4dHVy
ZSkKLSAgICAgICAgbV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRl
cmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAgIG1fdGV4dHVyZSA9
IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2Vy
KCkpOwogCiAgICAgLy8gVGhlIGNvbnRleHQgY291bGQgaGF2ZSBiZWVuIGxvc3Qgc2luY2UgdGhl
IGxhc3QgZnJhbWUgYW5kIHRoZSBvbGQgdGV4dHVyZQogICAgIC8vIG1hbmFnZXIgbWF5IG5vIGxv
bmdlciBiZSB2YWxpZC4KLSAgICBtX3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKGxheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICBtX3RleHR1cmUtPnNl
dFRleHR1cmVNYW5hZ2VyKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKIAog
ICAgIEludFNpemUgdGV4dHVyZVNpemUgPSBjb250ZW50Qm91bmRzKCk7CiAgICAgaWYgKCFtX3Rl
eHR1cmUtPnJlc2VydmUodGV4dHVyZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIHsKICAgICAgICAgUGxhdGZvcm1D
YW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwogICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKLSAgICAgICAgbV90ZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4
dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0
LCBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZUFsbG9jYXRvcigpKTsKIAogICAgICAgICAvLyBG
SVhNRTogU2tpYSB1c2VzIEJHUkEgYWN0dWFsbHksIHdlIGNvcnJlY3QgdGhhdCB3aXRoIHRoZSBz
d2l6emxlIHBpeGVsIHNoYWRlci4KICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleElt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIG1fdGV4dHVyZS0+Zm9ybWF0
KCksIGNhbnZhcy5zaXplKCkud2lkdGgoKSwgY2FudmFzLnNpemUoKS5oZWlnaHQoKSwgMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBs
b2NrZXIucGl4ZWxzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXgg
ZjU4NWQ2ODA0MGZhYWVlZjMwZDJhNGIzM2Q3NmFlMDEwMWQ5NTJkZC4uNDI3MGU1NjYwYTEwNjA0
YmE4NmY5M2ZhN2NjYTEzNWNhMjJkN2JhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5jcHAKQEAgLTI1NiwxNCArMjU2LDE0IEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6cmVzZXJ2
ZVRleHR1cmVzKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUsIEdDM0RlCiAgICAg
ICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplLmlzWmVybygpIHx8IHJlcXVpcmVkVGV4dHVyZVNp
emUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplIHx8IHJlcXVpcmVkVGV4dHVyZVNpemUuaGVpZ2h0
KCkgPiBtYXhUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKCFtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUpIHsKLSAgICAgICAgICAgIG1fdGV4dHVy
ZXNbcGxhbmVdLm1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJl
ci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICAgICAgbV90ZXh0dXJl
c1twbGFuZV0ubV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVy
LT5pbXBsVGV4dHVyZU1hbmFnZXIoKSk7CiAgICAgICAgICAgICBpZiAoIW1fdGV4dHVyZXNbcGxh
bmVdLm1fdGV4dHVyZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBtX3RleHR1cmVzW3BsYW5lXS5tX3Zpc2libGVTaXplID0gSW50U2l6ZSgpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgLy8gVGhlIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciBt
YXkgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbmQgcmVjcmVhdGVkIHNpbmNlIHRoZSBsYXN0IGZyYW1l
LCBzbyBwYXNzIHRoZSBuZXcgb25lLgorICAgICAgICAgICAgLy8gVGhlIGltcGxUZXh0dXJlTWFu
YWdlciBtYXkgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbmQgcmVjcmVhdGVkIHNpbmNlIHRoZSBsYXN0
IGZyYW1lLCBzbyBwYXNzIHRoZSBuZXcgb25lLgogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5v
LW9wIGlmIHRoZSBUZXh0dXJlTWFuYWdlciBpcyBzdGlsbCBhcm91bmQuCi0gICAgICAgICAgICBt
X3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKGxheWVyUmVuZGVy
ZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICAgICAgICAgIG1fdGV4dHVy
ZXNbcGxhbmVdLm1fdGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIobGF5ZXJSZW5kZXJlci0+aW1w
bFRleHR1cmVNYW5hZ2VyKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3RleHR1cmVzW3Bs
YW5lXS5tX3RleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFRleHR1cmVTaXplKQogICAgICAgICAg
ICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShm
cmFtZSwgcGxhbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggNGVkMzU5ODZjYzFlODk1OTJi
MmNhZWMyMjE0MTZiMmZlZWQ0OWZjNy4uMjE1YmFiYmE3YzJiZDNhNmU2OTlhZDNhYTgxOWU0NjE4
MzM4MDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX3Jvb3RMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKQogICAgIHsKICAg
ICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgbV9yb290
UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOwogICAgIH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBtZXRo
b2RzLgpAQCAtODEsMTIgKzgyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIGFkZGVkIGZv
ciB0ZXN0LgogICAgIGludCBzZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudDsgfQogCi0gICAgQ0NMYXllckltcGwq
IHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CisgICAgQ0NSZW5kZXJQ
YXNzKiByb290UmVuZGVyUGFzcygpIHsgcmV0dXJuIG1fcm9vdFJlbmRlclBhc3MuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKICAgICBpbnQgbV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQ7CiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1faW1wbFRocmVhZDsKICAgICBPd25QdHI8Q0NMYXll
ckltcGw+IG1fcm9vdExheWVyOworICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IG1fcm9vdFJlbmRl
clBhc3M7CiB9OwogCiBjbGFzcyBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSB7CkBAIC0xOTQsNyArMTk2LDcgQEAgVEVTVF9GKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRyZWRGb3JTY29w
ZUR1cmF0aW8KICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1l
YnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVs
bFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogCi0gICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0u
YmVnaW5EcmF3aW5nRnJhbWUobV9tb2NrQ2xpZW50LnJvb3RMYXllcigpLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmJlZ2luRHJhd2luZ0ZyYW1lKG1fbW9j
a0NsaWVudC5yb290UmVuZGVyUGFzcygpKTsKICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAogICAgIHN3YXBCdWZmZXJz
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145445</attachid>
            <date>2012-06-02 09:06:03 -0700</date>
            <delta_ts>2012-06-04 10:29:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88132-20120602120602.patch</filename>
            <type>text/plain</type>
            <size>80895</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU3YTExZTEwODVjYTg0
MTAwZTJhMTMwMDI5MTVkOGU3MTczZGJkNi4uZGYwYzUwYmY4YjQzOTA3ZWRmNjRkZDY4NTFkM2Q5
ODEzMjQ0MjdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wNi0wMSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1h
a2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQYXNzZXMgaW5zdGVhZCBvZiBSZW5k
ZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGlzIHBhcnRseSByZW5hbWluZywgcGFydGx5IG1vdmluZyBkYXRhIGludG8g
Q0NSZW5kZXJQYXNzCisgICAgICAgIGFuZCBDQ1JlbmRlclBhc3NEcmF3UXVhZC4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtIHNob3VsZCBhY2NlcHQgYXMgaW5wdXQKKyAgICAgICAgYSBzZXQgb2YgUmVu
ZGVyUGFzc2VzIGFuZCB0aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBkcmF3aW5nLiBJdAor
ICAgICAgICBzaG91bGQgaGF2ZSBubyBub3Rpb24gb2YgUmVuZGVyU3VyZmFjZXMgYXQgYWxsLgor
CisgICAgICAgIEZpcnN0LCB3aGF0IGlzbid0IGRvbmU6IFJlbmRlclN1cmZhY2VzIHN0aWxsIGhv
bGQgdGhlIHRleHR1cmVzCisgICAgICAgIHdoZXJlIFJlbmRlclBhc3NlcyBhcmUgZHJhd24gdG8v
ZnJvbSwgc28gdGhhdCB0aGVzZSB0ZXh0dXJlcyBjYW4KKyAgICAgICAgcGVyc2lzdCBhY3Jvc3Mg
ZnJhbWVzLiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgT3Ro
ZXJ3aXNlLCB0aGlzIGNvbXBsZXRlbHkgcmVtb3ZlcyB0aGUgY29uY2VwdCBvZiBSZW5kZXJTdXJm
YWNlIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJDaHJvbWl1bSBhbmQgdGhlIENDRHJhd1F1YWQs
IHJlcGxhY2luZyBpdCB3aXRoIFJlbmRlclBhc3MuCisgICAgICAgIFRoZSAicmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyIiBpcyByZW5hbWVkIHRvIHRoZSAiaW1wbFRleHR1cmVNYW5hZ2VyIgor
ICAgICAgICBhbmQgbGlrZS13aXNlIGZvciB0aGUgVGV4dHVyZUFsbG9jYXRvciwgYXMgdGhlc2Ug
YXJlIG5vdCB1c2VkCisgICAgICAgIGV4Y2x1c2l2ZWx5IGZvciByZW5kZXIgc3VyZmFjZXMgKHBh
c3NlcyksIGFuZCBhIHRleHR1cmUgbWFuYWdlciBmb3IKKyAgICAgICAgcmVuZGVyIHBhc3NlcyB0
aGF0IGRvZXMgbm90IHJlcXVpcmUgYSBSZW5kZXJTdXJmYWNlKiB3aWxsIGJlIHRoZSBmb2N1cwor
ICAgICAgICBvZiBmdXR1cmUgY2hhbmdlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyUGFzc1RleHR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVn
aW5EcmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y29weVBsYW5lVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZm
ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXND
dXJyZW50UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNz
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzTWFza1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnRvUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NI
ZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQ
YXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChDQ1JlbmRl
clBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpmcmFtZWJ1ZmZlck91dHB1
dFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzc0RyYXdRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNwcC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNz
RHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6cmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6aXNSZXBsaWNhKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzc0RyYXdRdWFkOjptYXNrVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzc0RyYXdRdWFkOjpzdXJmYWNlRGFtYWdlUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6ZmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZDo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250ZW50c1RleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NSZW5kZXJl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6Ondp
bGxEcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OnJlc2Vy
dmVUZXh0dXJlcyk6CisKIDIwMTItMDYtMDIgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRml4IGFuZCBlbmFibGUgV2ViR0wgZm9yIFdlYktpdDIgb24gUXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDMzNTZiY2QyNGZhNjgxZjQwYzY3ODI5YmZhNzk2
ZDU0OGRjY2ZjNGEuLjUxNjc1N2Q3NTA1ODdkZWMzNWI1ZDA3M2U1OWE2Zjc1MDk0ZDUxNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMDEgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
YWtlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB1c2UgUmVuZGVyUGFzc2VzIGluc3RlYWQgb2YgUmVu
ZGVyU3VyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKEZha2VD
Q1JlbmRlcmVyQ2xpZW50OjpGYWtlQ0NSZW5kZXJlckNsaWVudCk6CisgICAgICAgIChGYWtlQ0NS
ZW5kZXJlckNsaWVudDo6cm9vdFJlbmRlclBhc3MpOgorICAgICAgICAoRmFrZUNDUmVuZGVyZXJD
bGllbnQpOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wNi0wMSAgQWxleGFuZHJlIEVsaWFz
ICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBTb2Z0d2FyZSBjb21w
b3NpdG9yIGluaXRpYWxpemF0aW9uIGFuZCBiYXNlIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA4N2I3YjdlOWMzNjNlMGViYzM4MmQxMmM5ZGQ2ZTY2OTU3NmI1OWUxLi5hY2NlNDNhZmNmMzZk
MzYwZmUwZjcxMmViM2NiMTU0ZmVhNjhjMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNzMwLDEw
ICszNzMwLDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2VGaWx0ZXJzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAppbmRleCA0ZDkwY2U1Njg5NDI3NWZjYjhlMzBjMjg4ZDUyZGZhYzgwNmI0N2FkLi4zMTE1OGEx
NGM3ZjBkMmVkYWFmNTUzMGRlZWMxNzJiOTg1MzJiNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRTa2lhLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKQEAgLTYzLDcgKzYyLDcgQEAKICNpbmNsdWRlICJjYy9D
Q01hdGhVdGlsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDUmVu
ZGVyUGFzcy5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCisjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1
cmZhY2VGaWx0ZXJzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgpAQCAtMjMwLDEyICsyMjksMTIgQEAgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVu
dCogY2xpZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJl
VXBsb2FkZXJTZXR0aW5nKQogICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCi0gICAgLCBtX2N1cnJl
bnRSZW5kZXJTdXJmYWNlKDApCisgICAgLCBtX2N1cnJlbnRSZW5kZXJQYXNzKDApCiAgICAgLCBt
X2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSgwKQogICAgICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklk
KDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAuNWYsIC0wLjVmLCAx
LjBmLCAxLjBmKSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9kZWZhdWx0UmVu
ZGVyU3VyZmFjZSgwKQorICAgICwgbV9kZWZhdWx0UmVuZGVyUGFzcygwKQogICAgICwgbV9pc1Zp
ZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZChmYWxz
ZSkKICAgICAsIG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZyh0ZXh0dXJlVXBsb2FkZXJTZXR0aW5n
KQpAQCAtMzYxLDcgKzM2MCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWJ1Z0dM
Q2FsbChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgY2hhcioKIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBpZiAoIXZp
c2libGUpCi0gICAgICAgIHJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsKKyAgICAgICAg
cmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwogCiAgICAgLy8gVE9ETzogUmVwbGFjZSBzZXRW
aXNpYmlsaXR5Q0hST01JVU0gd2l0aCBhbiBleHRlbnNpb24gdG8gZXhwbGljaXRseSBtYW5hZ2Ug
ZnJvbnQvYmFja2J1ZmZlcnMKICAgICAvLyBjcmJ1Zy5jb20vMTE2MDQ5CkBAIC0zNzEsMjIgKzM3
MCwyMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0VmlzaWJsZShib29sIHZpc2li
bGUpCiAgICAgfQogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVJlbmRl
clN1cmZhY2VUZXh0dXJlcygpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVJl
bmRlclBhc3NUZXh0dXJlcygpCiB7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5h
Z2VyKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmREZWxl
dGVBbGxUZXh0dXJlcyhtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAg
ICBpZiAobV9pbXBsVGV4dHVyZU1hbmFnZXIpCisgICAgICAgIG1faW1wbFRleHR1cmVNYW5hZ2Vy
LT5ldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRDaGFuZ2VkKCkKIHsK
ICAgICBtX2lzVmlld3BvcnRDaGFuZ2VkID0gdHJ1ZTsKIAotICAgIC8vIFJlc2V0IHRoZSBjdXJy
ZW50IHJlbmRlciBzdXJmYWNlIHRvIGZvcmNlIGFuIHVwZGF0ZSBvZiB0aGUgdmlld3BvcnQgYW5k
Ci0gICAgLy8gcHJvamVjdGlvbiBtYXRyaXggbmV4dCB0aW1lIHVzZVJlbmRlclN1cmZhY2UgaXMg
Y2FsbGVkLgotICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSAwOworICAgIC8vIFJlc2V0IHRo
ZSBjdXJyZW50IFJlbmRlclBhc3MgdG8gZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSB2aWV3cG9ydCBh
bmQKKyAgICAvLyBwcm9qZWN0aW9uIG1hdHJpeCBuZXh0IHRpbWUgdXNlUmVuZGVyUGFzcyBpcyBj
YWxsZWQuCisgICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IDA7CiB9CiAKLXZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjbGVhclJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlLCBDQ1JlbmRlclN1cmZhY2UqIHJvb3RSZW5kZXJTdXJmYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIHN1cmZhY2VEYW1hZ2VSZWN0KQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFy
UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KQogewogICAgIC8vIE5vbi1yb290IGxheWVycyBzaG91bGQgY2xlYXIgdGhlaXIgZW50aXJl
IGNvbnRlbnRzIHRvIHRyYW5zcGFyZW50LiBPbiBERUJVRyBidWlsZHMsIHRoZSByb290IGxheWVy
CiAgICAgLy8gaXMgY2xlYXJlZCB0byBibHVlIHRvIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdl
cmUgbm90IGRyYXduIG9uIHRoZSBzY3JlZW4uIElmIHdlCkBAIC0zOTQsMzYgKzM5MywzNiBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3Vy
ZmFjZSogcmVuZGVyU3VyZmFjZSwgQwogICAgIC8vIGNsZWFyIHRoZSBkYW1hZ2VkIHJlZ2lvbiwg
c28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2xlYXIgdW4tY2hhbmdlZCBwb3J0aW9ucwog
ICAgIC8vIG9mIHRoZSBzY3JlZW4uCiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSAhPSByb290UmVu
ZGVyU3VyZmFjZSkKKyAgICBpZiAocmVuZGVyUGFzcyAhPSByb290UmVuZGVyUGFzcykKICAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDApKTsKICAg
ICBlbHNlCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAw
LCAxLCAxKSk7CiAKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkKLSAg
ICAgICAgc2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KHN1cmZhY2VEYW1hZ2VSZWN0
KSk7CisgICAgICAgIHNldFNjaXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50UmVjdChmcmFtZWJ1ZmZl
ckRhbWFnZVJlY3QpKTsKICAgICBlbHNlCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CiAKICNpZiBkZWZp
bmVkKE5ERUJVRykKLSAgICBpZiAocmVuZGVyU3VyZmFjZSAhPSByb290UmVuZGVyU3VyZmFjZSkK
KyAgICBpZiAocmVuZGVyUGFzcyAhPSByb290UmVuZGVyUGFzcykKICNlbmRpZgogICAgICAgICBt
X2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKIAog
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpT
Q0lTU09SX1RFU1QpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJh
d2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmZhY2UpCit2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
KiByb290UmVuZGVyUGFzcykKIHsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBmcmFt
ZWJ1ZmZlciBpcyBhdXRvbWF0aWNhbGx5IHJlY3JlYXRlZCBvbiBmaXJzdCB1c2UKICAgICBlbnN1
cmVGcmFtZWJ1ZmZlcigpOwogCi0gICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSA9IGRlZmF1bHRS
ZW5kZXJTdXJmYWNlOwotICAgIEFTU0VSVChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKTsKKyAgICBt
X2RlZmF1bHRSZW5kZXJQYXNzID0gcm9vdFJlbmRlclBhc3M7CisgICAgQVNTRVJUKG1fZGVmYXVs
dFJlbmRlclBhc3MpOwogCiAgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7CiAgICAgc2l6
ZV90IG1heExpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6
ZSgpKTsKICAgICBzaXplX3QgbmV3TGltaXQgPSAobWF4TGltaXQgPiBjb250ZW50c01lbW9yeVVz
ZUJ5dGVzKSA/IG1heExpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDA7Ci0gICAgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobmV3TGlt
aXQpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG5l
d0xpbWl0KTsKIAogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ1NiwyMiArNDU1LDIxIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
b05vT3AoKQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3MoY29u
c3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogewotICAgIENDUmVuZGVyU3VyZmFjZSogcmVu
ZGVyU3VyZmFjZSA9IHJlbmRlclBhc3MtPnRhcmdldFN1cmZhY2UoKTsKLSAgICBpZiAoIXVzZVJl
bmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZSkpCisgICAgaWYgKCF1c2VSZW5kZXJQYXNzKHJlbmRl
clBhc3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjbGVhclJlbmRlclN1cmZhY2UocmVuZGVy
U3VyZmFjZSwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSwgcmVuZGVyUGFzcy0+c3VyZmFjZURhbWFn
ZVJlY3QoKSk7CisgICAgY2xlYXJSZW5kZXJQYXNzKHJlbmRlclBhc3MsIG1fZGVmYXVsdFJlbmRl
clBhc3MsIHJlbmRlclBhc3MtPnN1cmZhY2VEYW1hZ2VSZWN0KCkpOwogCiAgICAgY29uc3QgQ0NR
dWFkTGlzdCYgcXVhZExpc3QgPSByZW5kZXJQYXNzLT5xdWFkTGlzdCgpOwogICAgIGZvciAoQ0NR
dWFkTGlzdDo6Y29uc3RCYWNrVG9Gcm9udEl0ZXJhdG9yIGl0ID0gcXVhZExpc3QuYmFja1RvRnJv
bnRCZWdpbigpOyBpdCAhPSBxdWFkTGlzdC5iYWNrVG9Gcm9udEVuZCgpOyArK2l0KQogICAgICAg
ICBkcmF3UXVhZChpdC0+Z2V0KCksIHJlbmRlclBhc3MtPnN1cmZhY2VEYW1hZ2VSZWN0KCkpOwog
fQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVh
ZCogcXVhZCwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkKK3ZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25zdCBG
bG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkKIHsKICAgICBJbnRSZWN0IHNjaXNzb3JS
ZWN0OwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBjbGlwQW5kRGFtYWdlUmVjdCA9IHN1cmZhY2VEYW1hZ2VSZWN0OworICAgICAg
ICBGbG9hdFJlY3QgY2xpcEFuZERhbWFnZVJlY3QgPSBmcmFtZWJ1ZmZlckRhbWFnZVJlY3Q7CiAg
ICAgICAgIGlmICghcXVhZC0+Y2xpcFJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGlw
QW5kRGFtYWdlUmVjdC5pbnRlcnNlY3QocXVhZC0+Y2xpcFJlY3QoKSk7CiAgICAgICAgIHNjaXNz
b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChjbGlwQW5kRGFtYWdlUmVjdCk7CkBAIC01MDMsOCAr
NTAxLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJh
d1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3UKICAgICBjYXNlIENDRHJhd1F1YWQ6OklP
U3VyZmFjZUNvbnRlbnQ6CiAgICAgICAgIGRyYXdJT1N1cmZhY2VRdWFkKHF1YWQtPnRvSU9TdXJm
YWNlRHJhd1F1YWQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVu
ZGVyU3VyZmFjZToKLSAgICAgICAgZHJhd1JlbmRlclN1cmZhY2VRdWFkKHF1YWQtPnRvUmVuZGVy
U3VyZmFjZURyYXdRdWFkKCkpOworICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKKyAg
ICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKHF1YWQtPnRvUmVuZGVyUGFzc0RyYXdRdWFkKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3I6CiAgICAgICAg
IGRyYXdTb2xpZENvbG9yUXVhZChxdWFkLT50b1NvbGlkQ29sb3JEcmF3UXVhZCgpKTsKQEAgLTU4
OCw3ICs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIFNrQml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0CiAgICAgcmV0dXJuIENDUmVuZGVy
U3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgp
LCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOwogfQogCi12b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Y29udGVudHNEZXZpY2VUcmFuc2Zvcm0pCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkLCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudHNEZXZpY2VUcmFuc2Zvcm0pCiB7CiAg
ICAgLy8gVGhpcyBtZXRob2QgZHJhd3MgYSBiYWNrZ3JvdW5kIGZpbHRlciwgd2hpY2ggYXBwbGll
cyBhIGZpbHRlciB0byBhbnkgcGl4ZWxzIGJlaGluZCB0aGUgcXVhZCBhbmQgc2VlbiB0aHJvdWdo
IGl0cyBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSBhbGdvcml0aG0gd29ya3MgYXMgZm9sbG93czoK
QEAgLTYwNCwxMyArNjAyLDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFj
a2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgLy8KICAg
ICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdvcml0aG0gb2NjdXIgYXQgc3RlcHMgMiwgMywg
NCwgYW5kIDUuCiAKLSAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+
bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAgIENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1
cmZhY2UgPSBxdWFkLT5yZW5kZXJQYXNzKCktPnRhcmdldFN1cmZhY2UoKTsKICAgICBpZiAocXVh
ZC0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tncm91bmQgZmlsdGVycyBvbiB0aGUgcm9vdCBy
ZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCiAgICAgLy8g
dHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFuc2x1
Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCi0gICAgaWYgKCFp
c0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQorICAgIGlmICgh
aXNDdXJyZW50UmVuZGVyUGFzcyhtX2RlZmF1bHRSZW5kZXJQYXNzKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gRklYTUU6IERvIGEgc2luZ2xlIHJlYWRiYWNrIGZvciBib3RoIHRoZSBzdXJm
YWNlIGFuZCByZXBsaWNhIGFuZCBjYWNoZSB0aGUgZmlsdGVyZWQgcmVzdWx0cyAob25jZSBmaWx0
ZXIgdGV4dHVyZXMgYXJlIG5vdCByZXVzZWQpLgpAQCAtNjIxLDkgKzYxOSw5IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqCiAgICAgZGV2aWNlUmVjdC5tb3ZlKC1sZWZ0LCAtdG9wKTsKICAgICBk
ZXZpY2VSZWN0LmV4cGFuZChsZWZ0ICsgcmlnaHQsIHRvcCArIGJvdHRvbSk7CiAKLSAgICBkZXZp
Y2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsK
KyAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZl
ck91dHB1dFJlY3QoKSk7CiAKLSAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tn
cm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlci5nZXQoKSk7CisgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBkZXZpY2VCYWNr
Z3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpOwogICAgIGlmICghZ2V0RnJhbWVidWZmZXJUZXh0dXJlKGRldmljZUJhY2tncm91
bmRUZXh0dXJlLmdldCgpLCBkZXZpY2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02Mzcs
MjggKzYzNSwyOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRG
aWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAgIGlmICghZHJhd2luZ1N1
cmZhY2UtPnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZSh0aGlzKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRSZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVu
ZGVyU3VyZmFjZTsKKyAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHRhcmdldFJlbmRlclBhc3MgPSBt
X2N1cnJlbnRSZW5kZXJQYXNzOwogICAgIGlmICh1c2VNYW5hZ2VkVGV4dHVyZShkcmF3aW5nU3Vy
ZmFjZS0+YmFja2dyb3VuZFRleHR1cmUoKSwgcXVhZC0+cXVhZFJlY3QoKSkpIHsKICAgICAgICAg
Ly8gQ29weSB0aGUgcmVhZGJhY2sgcGl4ZWxzIGZyb20gZGV2aWNlIHRvIHRoZSBiYWNrZ3JvdW5k
IHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlLgotICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5z
Zm9ybS50cmFuc2xhdGUocXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpIC8gMi4wLCBxdWFkLT5xdWFk
UmVjdCgpLmhlaWdodCgpIC8gMi4wKTsKLSAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3Jt
LnNjYWxlM2QocXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdo
dCgpLCAxKTsKLSAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLm11bHRpcGx5KGNvbnRl
bnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRy
YW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VSZWN0Lmhl
aWdodCgpIC8gMi4wKTsKLSAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0
ZShkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCkpOworICAgICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtOworICAgICAgICBkZXZpY2VU
b0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5zbGF0ZShxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCkg
LyAyLjAsIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCkgLyAyLjApOworICAgICAgICBkZXZpY2VU
b0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnNjYWxlM2QocXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBx
dWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCAxKTsKKyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZl
clRyYW5zZm9ybS5tdWx0aXBseShjb250ZW50c0RldmljZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwor
ICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0
LndpZHRoKCkgLyAyLjAsIGRldmljZVJlY3QuaGVpZ2h0KCkgLyAyLjApOworICAgICAgICBkZXZp
Y2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0LngoKSwgZGV2aWNl
UmVjdC55KCkpOwogCi0gICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmaWx0ZXJlZERl
dmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGRldmljZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb1N1cmZh
Y2VUcmFuc2Zvcm0pOworICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZmlsdGVyZWRE
ZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LnNpemUoKSwgZGV2aWNlVG9GcmFt
ZWJ1ZmZlclRyYW5zZm9ybSk7CiAKLSAgICAgICAgdXNlUmVuZGVyU3VyZmFjZSh0YXJnZXRSZW5k
ZXJTdXJmYWNlKTsKKyAgICAgICAgdXNlUmVuZGVyUGFzcyh0YXJnZXRSZW5kZXJQYXNzKTsKICAg
ICB9CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1
YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFk
KiBxdWFkKQogewogICAgIC8vIFRoZSByZXBsaWNhIGlzIGFsd2F5cyBkcmF3biBmaXJzdCwgc28g
ZnJlZSBhZnRlciBkcmF3aW5nIHRoZSBjb250ZW50cy4KICAgICBib29sIHNob3VsZFJlbGVhc2VU
ZXh0dXJlcyA9ICFxdWFkLT5pc1JlcGxpY2EoKTsKIAotICAgIENDUmVuZGVyU3VyZmFjZSogZHJh
d2luZ1N1cmZhY2UgPSBxdWFkLT5sYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7CisgICAgQ0NSZW5k
ZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSA9IHF1YWQtPnJlbmRlclBhc3MoKS0+dGFyZ2V0U3Vy
ZmFjZSgpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyVHJhbnNmb3JtID0g
cXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKTsKICAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRv
IHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUuCkBAIC03MTYsNyAr
NzE0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVh
ZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoKICAgICBpbnQgc2hhZGVyTWF0cml4TG9j
YXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IC0xOwogICAgIGlmICh1
c2VBQSAmJiB1c2VNYXNrKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3Jh
bUFBKiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEoKTsKKyAgICAgICAgY29u
c3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQYXNzTWFza1Byb2dy
YW1BQSgpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJv
Z3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
IApAQCAtNzI2LDcgKzcyNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVu
ZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgICAgIHNo
YWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRp
b24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgIH0gZWxzZSBpZiAoIXVzZUFBICYmIHVzZU1hc2sp
IHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKiBwcm9ncmFtID0gcmVu
ZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7CisgICAgICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJv
Z3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOwogICAgICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAg
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtNzM0LDcgKzczMiw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJv
Z3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxw
aGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwog
ICAgIH0gZWxzZSBpZiAodXNlQUEgJiYgIXVzZU1hc2spIHsKLSAgICAgICAgY29uc3QgUmVuZGVy
U3VyZmFjZVByb2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKKyAg
ICAgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQcm9n
cmFtQUEoKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHBy
b2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVu
aWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7
CiAKQEAgLTc0Myw3ICs3NDEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jl
bmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKgogICAgICAgICBz
aGFkZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0
aW9uKCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmFscGhhTG9jYXRpb24oKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBSZW5k
ZXJTdXJmYWNlUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAg
ICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW0o
KTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0t
PnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0x
aShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAg
LTEwNzcsOSArMTA3NSw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5RnJhbWVU
b1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVhZCogcXVhZCkKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjb3B5UGxhbmVUb1RleHR1cmUoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFk
LCBjb25zdCB2b2lkKiBwbGFuZSwgaW50IGluZGV4KQogewogICAgIENDVmlkZW9MYXllckltcGw6
OlRleHR1cmUmIHRleHR1cmUgPSBxdWFkLT50ZXh0dXJlcygpW2luZGV4XTsKLSAgICBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpOwog
ICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0
dXJlKGNjQ29udGV4dC5nZXQoKSwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlLm1fdGV4dHVyZS0+
YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgp
KTsKICAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7CiAg
ICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKIApAQCAt
MTIxNCwxMyArMTIxMSwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRz
VXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiBodWRUZXh0dXJlLCBjb25zdAogICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpP
TkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RF
U1QpKTsKLSAgICB1c2VSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpOworICAg
IHVzZVJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAKICAgICBjb25zdCBIZWFkc1Vw
RGlzcGxheVByb2dyYW0qIHByb2dyYW0gPSBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBB
U1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUw
KSk7CiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKLSAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVy
ZShjY0NvbnRleHQuZ2V0KCksIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAg
IGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgbV9pbXBsVGV4dHVyZUFs
bG9jYXRvci5nZXQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFt
KHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
IApAQCAtMTIzNywxNCArMTIzNCwxNCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Zmlu
aXNoRHJhd2luZ0ZyYW1lKCkKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUo
R3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKIAotICAgIG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1f
aW1wbFRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogCiAgICAgc2l6ZV90
IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3Vy
cmVudE1lbW9yeVVzZUJ5dGVzKCk7CiAgICAgc2l6ZV90IHJlY2xhaW1MaW1pdCA9IFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CiAgICAgc2l6ZV90IHBy
ZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4gY29udGVudHNNZW1vcnlVc2VCeXRlcyA/IHJl
Y2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwOwotICAgIG1fcmVuZGVyU3Vy
ZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJl
ZExpbWl0KTsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5
VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFn
ZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9y
LmdldCgpKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CisgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnJlZHVj
ZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2Vy
LT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiB9
CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KGZsb2F0KiBmbGF0dGVu
ZWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtKQpAQCAtMTMwNCw3ICsxMzAxLDcg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXcKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KQogewotICAg
IGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZVByb2dy
YW0oKTsKKyAgICBjb25zdCBSZW5kZXJQYXNzUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQ
cm9ncmFtKCk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlk
KSk7CkBAIC0xNDQ2LDUwICsxNDQzLDQ4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpn
ZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250
ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVy
ZS0+YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yLmdldCgpKTsKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCks
IG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRl
eHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCks
IGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVudFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJm
YWNlKiByZW5kZXJTdXJmYWNlKQorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVu
dFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogewotICAgIC8vIElm
IHJlbmRlclN1cmZhY2UgaXMgMCwgd2UgY2FuJ3QgdGVsbCBpZiB3ZSBhcmUgYWxyZWFkeSB1c2lu
ZyBpdCwgc2luY2UgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSBpcwotICAgIC8vIGluaXRpYWxpemVk
IHRvIDAuCi0gICAgcmV0dXJuIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFj
ZSAmJiAhbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CisgICAgcmV0dXJuIG1fY3VycmVudFJlbmRl
clBhc3MgPT0gcmVuZGVyUGFzcyAmJiAhbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CiB9CiAKLWJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFj
ZSogcmVuZGVyU3VyZmFjZSkKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQ
YXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKIHsKLSAgICBtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKKyAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gcmVu
ZGVyUGFzczsKICAgICBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSA9IDA7CiAKLSAgICBpZiAocmVu
ZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKSB7CisgICAgaWYgKHJlbmRlclBh
c3MgPT0gbV9kZWZhdWx0UmVuZGVyUGFzcykgewogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDAp
KTsKLSAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVj
dCgpLCB0cnVlKTsKKyAgICAgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChyZW5kZXJQYXNzLT5m
cmFtZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIGlmICghcmVuZGVyU3VyZmFjZS0+cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0aGlz
KSkKKyAgICBpZiAoIXJlbmRlclBhc3MtPnRhcmdldFN1cmZhY2UoKS0+cHJlcGFyZUNvbnRlbnRz
VGV4dHVyZSh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGJpbmRG
cmFtZWJ1ZmZlclRvVGV4dHVyZShyZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKSwgcmVu
ZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRv
VGV4dHVyZShyZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCktPmNvbnRlbnRzVGV4dHVyZSgpLCBy
ZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQogewotICAgIG1fY3VycmVudFJlbmRlclN1cmZh
Y2UgPSAwOworICAgIG1fY3VycmVudFJlbmRlclBhc3MgPSAwOwogICAgIG1fY3VycmVudE1hbmFn
ZWRUZXh0dXJlID0gdGV4dHVyZTsKIAogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1
cmUodGV4dHVyZSwgdmlld3BvcnRSZWN0KTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJp
bmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYgZnJhbWVidWZmZXJSZWN0KQogewogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkKSk7CiAKICAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29u
dGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtX2NvbnRleHQpOwotICAgIHRleHR1
cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNl
VGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIAogI2lm
ICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xNDk4LDcgKzE0OTMsNyBAQCBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0
dXJlKiB0ZXh0dXJlLCBjbwogICAgIH0KICNlbmRpZgogCi0gICAgc2V0RHJhd1ZpZXdwb3J0UmVj
dCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKKyAgICBzZXREcmF3RnJhbWVidWZmZXJSZWN0KGZyYW1l
YnVmZmVyUmVjdCwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNTA3LDIxICsx
NTAyLDIxIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1Rl
eHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvCiAvLyBzY2lzc29yUmVjdCBoYXMgaXRz
IG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHZpc2libGUgcmVj
dC4KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KGNvbnN0IElu
dFJlY3QmIHNjaXNzb3JSZWN0KQogewotICAgIEludFJlY3QgY29udGVudFJlY3QgPSAobV9jdXJy
ZW50UmVuZGVyU3VyZmFjZSA/IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkg
OiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsKKyAgICBJbnRSZWN0IGZy
YW1lYnVmZmVyT3V0cHV0UmVjdCA9IChtX2N1cnJlbnRSZW5kZXJQYXNzID8gbV9jdXJyZW50UmVu
ZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkgOiBtX2RlZmF1bHRSZW5kZXJQYXNzLT5m
cmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CiAKICAgICAvLyBUaGUg
c2Npc3NvciBjb29yZGluYXRlcyBtdXN0IGJlIHN1cHBsaWVkIGluIHZpZXdwb3J0IHNwYWNlIHNv
IHdlIG5lZWQgdG8gb2Zmc2V0Ci0gICAgLy8gYnkgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRo
ZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJlbnQgcmVuZGVyIHN1cmZhY2UuCi0gICAgaW50
IHNjaXNzb3JYID0gc2Npc3NvclJlY3QueCgpIC0gY29udGVudFJlY3QueCgpOworICAgIC8vIGJ5
IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJy
ZW50IHJlbmRlciBwYXNzLgorICAgIGludCBzY2lzc29yWCA9IHNjaXNzb3JSZWN0LngoKSAtIGZy
YW1lYnVmZmVyT3V0cHV0UmVjdC54KCk7CiAgICAgLy8gV2hlbiByZW5kZXJpbmcgdG8gdGhlIGRl
ZmF1bHQgcmVuZGVyIHN1cmZhY2Ugd2UncmUgcmVuZGVyaW5nIHVwc2lkZSBkb3duIHNvIHRoZSB0
b3AKICAgICAvLyBvZiB0aGUgR0wgc2Npc3NvciBpcyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4K
ICAgICAvLyBCdXQsIGlmIHJlbmRlcmluZyB0byBvZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJz
ZSBvdXIgc2Vuc2Ugb2YgJ3Vwc2lkZSBkb3duJy4KICAgICBpbnQgc2Npc3Nvclk7Ci0gICAgaWYg
KGlzQ3VycmVudFJlbmRlclN1cmZhY2UobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSkpCi0gICAgICAg
IHNjaXNzb3JZID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQo
KSAtIChzY2lzc29yUmVjdC5tYXhZKCkgLSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50
UmVjdCgpLnkoKSk7CisgICAgaWYgKGlzQ3VycmVudFJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVy
UGFzcykpCisgICAgICAgIHNjaXNzb3JZID0gZnJhbWVidWZmZXJPdXRwdXRSZWN0LmhlaWdodCgp
IC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIGZyYW1lYnVmZmVyT3V0cHV0UmVjdC55KCkpOwogICAg
IGVsc2UKLSAgICAgICAgc2Npc3NvclkgPSBzY2lzc29yUmVjdC55KCkgLSBjb250ZW50UmVjdC55
KCk7CisgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgpIC0gZnJhbWVidWZmZXJPdXRw
dXRSZWN0LnkoKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnNjaXNzb3Ioc2Npc3Nv
clgsIHNjaXNzb3JZLCBzY2lzc29yUmVjdC53aWR0aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkp
OwogfQogCkBAIC0xNTMzLDcgKzE1MjgsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
bWFrZUNvbnRleHRDdXJyZW50KCkKIC8vIFNldHMgdGhlIGNvb3JkaW5hdGUgcmFuZ2Ugb2YgY29u
dGVudCB0aGF0IGVuZHMgYmVpbmcgZHJhd24gb250byB0aGUgdGFyZ2V0IHJlbmRlciBzdXJmYWNl
LgogLy8gVGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZSBpcyBhc3N1bWVkIHRvIGhhdmUgYW4gb3Jp
Z2luIGF0IDAsIDAgYW5kIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mCiAvLyBvZiB0aGUgZHJhd1Jl
Y3QuCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdChjb25z
dCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KGNvbnN0IEludFJlY3QmIGRyYXdSZWN0LCBib29s
IGZsaXBZKQogewogICAgIGlmIChmbGlwWSkKICAgICAgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0g
b3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0Lm1heFko
KSwgZHJhd1JlY3QueSgpKTsKQEAgLTE1NTUsMjcgKzE1NTAsMjcgQEAgYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAgICAvLyBXZSB3aWxsIGFs
d2F5cyBuZWVkIHRoZXNlIHByb2dyYW1zIHRvIHJlbmRlciwgc28gY3JlYXRlIHRoZSBwcm9ncmFt
cyBlYWdlcmx5IHNvIHRoYXQgdGhlIHNoYWRlciBjb21waWxhdGlvbiBjYW4KICAgICAvLyBzdGFy
dCB3aGlsZSB3ZSBkbyBvdGhlciB3b3JrLiBPdGhlciBwcm9ncmFtcyBhcmUgY3JlYXRlZCBsYXpp
bHkgb24gZmlyc3QgYWNjZXNzLgogICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcg
R2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fcmVuZGVyU3VyZmFjZVBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZVByb2dyYW0obV9jb250ZXh0LmdldCgp
KSk7CisgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJv
Z3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBtX3RpbGVQcm9ncmFtID0gYWRvcHRQdHIobmV3
IFRpbGVQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1fdGlsZVByb2dyYW1PcGFxdWUg
PSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1PcGFxdWUobV9jb250ZXh0LmdldCgpKSk7CiAKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZsdXNoKCkpOwogCi0gICAgbV9yZW5kZXJTdXJm
YWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2Vy
OjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNs
YWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1
cmVTaXplKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFn
ZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVy
ZVNpemUpOwogICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6
Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGV4dHVyZVVwbG9hZGVyU2V0dGlu
ZyA9PSBUaHJvdHRsZWRVcGxvYWRlcikKICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIGVsc2UK
ICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
Y3JlYXRlKCk7CiAgICAgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwotICAgIG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2Nv
bnRleHQuZ2V0KCkpOworICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2NhcGFiaWxp
dGllcy51c2luZ1RleHR1cmVVc2FnZUhpbnQpCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVBbGxvY2F0b3ItPnNldFRleHR1cmVVc2FnZUhpbnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpOworICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9y
LT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZm
ZXJBdHRhY2htZW50KTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFn
ZUV4dGVuc2lvbikgewogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNl
VGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVB
bGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOworICAgICAgICBtX2ltcGxU
ZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJlU3RvcmFnZUV4dCh0cnVlKTsKICAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2MTQsNDcgKzE2MDksNDcgQEAgY29uc3QgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpIZWFkc1VwRGlzcGxheVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aGVhZHMKICAgICByZXR1cm4gbV9oZWFkc1VwRGlzcGxheVByb2dyYW0uZ2V0KCk7CiB9CiAK
LWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyU3VyZmFjZVByb2dyYW0qIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW0oKQorY29uc3QgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpy
ZW5kZXJQYXNzUHJvZ3JhbSgpCiB7Ci0gICAgQVNTRVJUKG1fcmVuZGVyU3VyZmFjZVByb2dyYW0p
OwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAg
ICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJv
Z3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgQVNTRVJUKG1fcmVuZGVyUGFz
c1Byb2dyYW0pOworICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkg
eworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNz
UHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3JlbmRlclBhc3NQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOworICAgIHJldHVybiBtX3JlbmRlclBhc3NQcm9ncmFt
LmdldCgpOwogfQogCi1jb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclN1cmZhY2VQ
cm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQSgp
Citjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtQUEqIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW1BQSgpCiB7Ci0gICAgaWYgKCFtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSA9
IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwot
ICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAg
ICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9n
cmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFtX3JlbmRlclBh
c3NQcm9ncmFtQUEpCisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5l
dyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9yZW5k
ZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29u
dGV4dC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEu
Z2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS5nZXQoKTsKIH0KIAotY29u
c3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0qIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCkKK2NvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpCiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0gPSBhZG9w
dFB0cihuZXcgUmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwotICAg
IGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAg
ICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQ
cm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbSkKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0gPSBhZG9w
dFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlm
ICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5p
bml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbS5nZXQoKTsKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dy
YW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQ
cm9ncmFtQUEoKQorY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1By
b2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgp
CiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKQotICAgICAgICBtX3Jl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VNYXNr
UHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFz
a1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIs
IHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLT5pbml0aWFs
aXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFB
KQorICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6
ZSIsIHRoaXMsIDApOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFs
aXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VN
YXNrUHJvZ3JhbUFBLmdldCgpOworICAgIHJldHVybiBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFB
LmdldCgpOwogfQogCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtKiBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtKCkKQEAgLTE3OTcsMTQgKzE3OTIsMTQg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAg
ICBpZiAobV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSkKICAgICAgICAgbV90aWxlQ2hlY2tlcmJv
YXJkUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogCi0gICAgaWYgKG1fcmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+
Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwotICAgIGlmIChtX3JlbmRlclN1cmZhY2VQcm9ncmFt
KQotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQo
KSk7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVu
ZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKLSAgICBp
ZiAobV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9n
cmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9yZW5kZXJQYXNzTWFz
a1Byb2dyYW0pCisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5jbGVhbnVwKG1fY29u
dGV4dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVyUGFzc1Byb2dyYW0pCisgICAgICAgIG1fcmVu
ZGVyUGFzc1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9yZW5k
ZXJQYXNzTWFza1Byb2dyYW1BQSkKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+
Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3JlbmRlclBhc3NQcm9ncmFtQUEp
CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkp
OwogCiAgICAgaWYgKG1fdGV4dHVyZVByb2dyYW0pCiAgICAgICAgIG1fdGV4dHVyZVByb2dyYW0t
PmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKQEAgLTE4MzAsNyArMTgyNSw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgbV90ZXh0dXJl
Q29waWVyLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlVXBsb2FkZXIuY2xlYXIoKTsKIAotICAgIHJl
bGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsKKyAgICByZWxlYXNlUmVuZGVyUGFzc1RleHR1
cmVzKCk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0NvbnRleHRMb3N0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMmVmYmRiMjYwYmMzNzVmYTYz
ZTNjMDg0OWIzOGI2NmE1ZDliOTY2Yy4uNzBiYjBlMDdiZjhjMjdkMTFhODAwMTI4NGUwZTkwODg2
YmE1MmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKIGNsYXNzIENDRGVidWdCb3JkZXJE
cmF3UXVhZDsKIGNsYXNzIENDRHJhd1F1YWQ7CiBjbGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwot
Y2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7CitjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVh
ZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7
CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZEdlb21ldHJ5UXVhZDsgfQogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1l
KENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmZhY2UpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRS
ZW5kZXJQYXNzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlbmRlclBhc3MoY29u
c3QgQ0NSZW5kZXJQYXNzKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaERyYXdp
bmdGcmFtZSgpIE9WRVJSSURFOwogCkBAIC05MiwxNCArOTIsMTMgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgR2VvbWV0cnlCaW5kaW5nKiBzaGFyZWRHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkR2VvbWV0cnkuZ2V0KCk7IH0KIAotCiAgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVm
ZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIGJv
b2wgZ2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
ZGV2aWNlUmVjdCk7CiAKLSAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlci5nZXQoKTsgfQorICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIGltcGxU
ZXh0dXJlTWFuYWdlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1wbFRleHR1cmVNYW5h
Z2VyLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9CiAgICAgdmly
dHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fdGV4dHVyZVVwbG9hZGVyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBUZXh0dXJlQWxs
b2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KKyAgICB2aXJ0
dWFsIFRleHR1cmVBbGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogICAgIHZpcnR1YWwg
VGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKQEAg
LTEyNSwxMSArMTI0LDExIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
dG9HTE1hdHJpeChmbG9hdCosIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
KTsKIAotICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNvbnN0IEZsb2F0UmVj
dCYgc3VyZmFjZURhbWFnZVJlY3QpOworICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVh
ZCosIGNvbnN0IEZsb2F0UmVjdCYgcmVuZGVyUGFzc0RldmljZURhbWFnZVJlY3QpOwogICAgIHZv
aWQgZHJhd0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwog
ICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQq
KTsKLSAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZCosIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRy
YW5zZm9ybSk7Ci0gICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCosIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRldmljZVRyYW5zZm9ybSk7CisgICAgdm9pZCBkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3Qg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25z
dCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1RleHR1cmVRdWFkKGNvbnN0
IENDVGV4dHVyZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3SU9TdXJmYWNlUXVhZChjb25zdCBD
Q0lPU3VyZmFjZURyYXdRdWFkKik7CkBAIC0xNDQsMTggKzE0MywxOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZHJhd1JHQkEoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3WVVW
KGNvbnN0IENDVmlkZW9EcmF3UXVhZCopOwogCi0gICAgdm9pZCBzZXREcmF3Vmlld3BvcnRSZWN0
KGNvbnN0IEludFJlY3QmLCBib29sIGZsaXBZKTsKKyAgICB2b2lkIHNldERyYXdGcmFtZWJ1ZmZl
clJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOwogCi0gICAgLy8gVGhlIGN1cnJlbnQg
ZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBNYW5hZ2VkVGV4dHVy
ZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0YXJnZXQu
Ci0gICAgYm9vbCB1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOworICAgIC8vIFRo
ZSBjdXJyZW50IGRyYXdpbmcgdGFyZ2V0IGlzIGVpdGhlciBhIFJlbmRlclBhc3Mgb3IgTWFuYWdl
ZFRleHR1cmUuIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gc3dpdGNoIHRvIGEgbmV3IGRyYXdpbmcg
dGFyZ2V0LgorICAgIGJvb2wgdXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqKTsKICAg
ICBib29sIHVzZU1hbmFnZWRUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
dmlld3BvcnRSZWN0KTsKLSAgICBib29sIGlzQ3VycmVudFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJT
dXJmYWNlKik7CisgICAgYm9vbCBpc0N1cnJlbnRSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFz
cyopOwogCiAgICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOwogCi0gICAgdm9pZCBjbGVhclJlbmRlclN1
cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiwgQ0NSZW5kZXJTdXJmYWNlKiByb290UmVuZGVyU3VyZmFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgdm9pZCBjbGVhclJl
bmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVu
ZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpOwogCi0gICAg
dm9pZCByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CisgICAgdm9pZCByZWxlYXNlUmVu
ZGVyUGFzc1RleHR1cmVzKCk7CiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBA
IC0xNjcsNyArMTY2LDcgQEAgcHJpdmF0ZToKIAogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMgbV9jYXBhYmlsaXRpZXM7CiAKLSAgICBDQ1JlbmRlclN1cmZhY2UqIG1fY3VycmVudFJlbmRl
clN1cmZhY2U7CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX2N1cnJlbnRSZW5kZXJQYXNzOwog
ICAgIE1hbmFnZWRUZXh0dXJlKiBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZTsKICAgICB1bnNpZ25l
ZCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQ7CiAKQEAgLTE4NiwxMyArMTg1LDEwIEBAIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdt
ZW50U2hhZGVyQ2hlY2tlcmJvYXJkPiBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbTsKIAogICAgIC8v
IFJlbmRlciBzdXJmYWNlIHNoYWRlcnMuCi0gICAgLy8gQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5
ZXJzKCkgbmVlZHMgdG8gc2VlIHRoZXNlIHByb2dyYW1zIGN1cnJlbnRseS4KLSAgICAvLyBGSVhN
RTogRHJhdyB3aXRoIGEgcXVhZCB0eXBlIGZvciByZW5kZXIgc3VyZmFjZXMgYW5kIGdldCByaWQg
b2YgdGhpcyBmcmllbmRseW5lc3MuCi0gICAgZnJpZW5kIGNsYXNzIENDUmVuZGVyU3VyZmFjZTsK
LSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGE+IFJlbmRlclN1cmZhY2VQcm9ncmFtOwotICAgIHR5cGVkZWYgUHJv
Z3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBo
YU1hc2s+IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTsKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE+IFJlbmRl
clN1cmZhY2VQcm9ncmFtQUE7Ci0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFk
ZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQT4gUmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtQUE7CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NU
ZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBSZW5kZXJQYXNzUHJvZ3JhbTsKKyAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFNYXNrPiBSZW5kZXJQYXNzTWFza1Byb2dyYW07CisgICAgdHlwZWRlZiBQcm9n
cmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFB
PiBSZW5kZXJQYXNzUHJvZ3JhbUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4
U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IFJlbmRlclBhc3NN
YXNrUHJvZ3JhbUFBOwogCiAgICAgLy8gVGV4dHVyZSBzaGFkZXJzLgogICAgIHR5cGVkZWYgUHJv
Z3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYT4gVGV4dHVyZVByb2dyYW07CkBAIC0yMTgsMTAgKzIxNCwxMCBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFRpbGVQcm9ncmFtU3dpenpsZUFBKiB0aWxlUHJvZ3JhbVN3aXp6bGVBQSgp
OwogICAgIGNvbnN0IFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKiB0aWxlQ2hlY2tlcmJvYXJkUHJv
Z3JhbSgpOwogCi0gICAgY29uc3QgUmVuZGVyU3VyZmFjZVByb2dyYW0qIHJlbmRlclN1cmZhY2VQ
cm9ncmFtKCk7Ci0gICAgY29uc3QgUmVuZGVyU3VyZmFjZVByb2dyYW1BQSogcmVuZGVyU3VyZmFj
ZVByb2dyYW1BQSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSogcmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0gICAgY29uc3QgUmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFt
QUEqIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7CisgICAgY29uc3QgUmVuZGVyUGFzc1By
b2dyYW0qIHJlbmRlclBhc3NQcm9ncmFtKCk7CisgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW1B
QSogcmVuZGVyUGFzc1Byb2dyYW1BQSgpOworICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3Jh
bSogcmVuZGVyUGFzc01hc2tQcm9ncmFtKCk7CisgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9n
cmFtQUEqIHJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKCk7CiAKICAgICBjb25zdCBUZXh0dXJlUHJv
Z3JhbSogdGV4dHVyZVByb2dyYW0oKTsKICAgICBjb25zdCBUZXh0dXJlUHJvZ3JhbUZsaXAqIHRl
eHR1cmVQcm9ncmFtRmxpcCgpOwpAQCAtMjQyLDEwICsyMzgsMTAgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8VGlsZVByb2dyYW1Td2l6emxlQUE+IG1fdGlsZVByb2dyYW1Td2l6emxlQUE7CiAgICAg
T3duUHRyPFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtPiBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFt
OwogCi0gICAgT3duUHRyPFJlbmRlclN1cmZhY2VQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VQcm9n
cmFtOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlUHJvZ3JhbUFBPiBtX3JlbmRlclN1cmZhY2VQ
cm9ncmFtQUE7Ci0gICAgT3duUHRyPFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbT4gbV9yZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW07Ci0gICAgT3duUHRyPFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFB
PiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBOworICAgIE93blB0cjxSZW5kZXJQYXNzUHJv
Z3JhbT4gbV9yZW5kZXJQYXNzUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVuZGVyUGFzc1Byb2dyYW1B
QT4gbV9yZW5kZXJQYXNzUHJvZ3JhbUFBOworICAgIE93blB0cjxSZW5kZXJQYXNzTWFza1Byb2dy
YW0+IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtOworICAgIE93blB0cjxSZW5kZXJQYXNzTWFza1By
b2dyYW1BQT4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQTsKIAogICAgIE93blB0cjxUZXh0dXJl
UHJvZ3JhbT4gbV90ZXh0dXJlUHJvZ3JhbTsKICAgICBPd25QdHI8VGV4dHVyZVByb2dyYW1GbGlw
PiBtX3RleHR1cmVQcm9ncmFtRmxpcDsKQEAgLTI1NywxNSArMjUzLDE1IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPFNvbGlkQ29sb3JQcm9ncmFtPiBtX3NvbGlkQ29sb3JQcm9ncmFtOwogICAgIE93
blB0cjxIZWFkc1VwRGlzcGxheVByb2dyYW0+IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtOwogCi0g
ICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcjsK
KyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1faW1wbFRleHR1cmVNYW5hZ2VyOwogICAgIE93
blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKICAgICBPd25Q
dHI8VGV4dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKICAgICBPd25QdHI8VHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKLSAgICBPd25Q
dHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yOworICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1faW1wbFRleHR1cmVB
bGxvY2F0b3I7CiAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKIAot
ICAgIENDUmVuZGVyU3VyZmFjZSogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZTsKKyAgICBjb25zdCBD
Q1JlbmRlclBhc3MqIG1fZGVmYXVsdFJlbmRlclBhc3M7CiAKICAgICBib29sIG1faXNWaWV3cG9y
dENoYW5nZWQ7CiAgICAgYm9vbCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuY3BwCmluZGV4IDI4MTJkNjUyZmY2M2E3OWI4OTJjNWUzZDZlYmM2MGZmODU4YzRjNGIu
LjJjYjBjMjA2N2NiNDU5NWI0YzhkNGE4MzE3ZGRjYmU0YjFhZTI3MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQu
aCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0ND
U29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgpAQCAtODQsMTAgKzg0LDEwIEBAIGNvbnN0
IENDSU9TdXJmYWNlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvSU9TdXJmYWNlRHJhd1F1YWQoKSBj
b25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKj4o
dGhpcyk7CiB9CiAKLWNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0
b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0Citjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCogQ0NEcmF3UXVhZDo6dG9SZW5kZXJQYXNzRHJhd1F1YWQoKSBjb25zdAogewotICAgIEFTU0VS
VChtX21hdGVyaWFsID09IFJlbmRlclN1cmZhY2UpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCo+KHRoaXMpOworICAgIEFTU0VSVChtX21hdGVy
aWFsID09IFJlbmRlclBhc3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1JlbmRl
clBhc3NEcmF3UXVhZCo+KHRoaXMpOwogfQogCiBjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCog
Q0NEcmF3UXVhZDo6dG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CmluZGV4IDM4MWNiYWVhY2YzZjI1MjE3NGQ1N2ZkZDMzZjIwOWIxNThhMWQ1OTIuLmE2YmVmOWM0
YjAxNzQzYmYwNzg2MmRlZjdlN2JkMzk4ZjhhYTg2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZDsKIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKIGNsYXNzIENDSU9TdXJmYWNl
RHJhd1F1YWQ7Ci1jbGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDsKK2NsYXNzIENDUmVuZGVy
UGFzc0RyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQ7CiBjbGFzcyBDQ1RleHR1
cmVEcmF3UXVhZDsKIGNsYXNzIENDVGlsZURyYXdRdWFkOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIENoZWNrZXJib2FyZCwKICAgICAgICAgRGVidWdCb3JkZXIsCiAgICAgICAg
IElPU3VyZmFjZUNvbnRlbnQsCi0gICAgICAgIFJlbmRlclN1cmZhY2UsCisgICAgICAgIFJlbmRl
clBhc3MsCiAgICAgICAgIFRleHR1cmVDb250ZW50LAogICAgICAgICBTb2xpZENvbG9yLAogICAg
ICAgICBUaWxlZENvbnRlbnQsCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBD
Q0NoZWNrZXJib2FyZERyYXdRdWFkKiB0b0NoZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3Q7CiAg
ICAgY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiB0b0RlYnVnQm9yZGVyRHJhd1F1YWQoKSBj
b25zdDsKICAgICBjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiB0b0lPU3VyZmFjZURyYXdRdWFk
KCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHRvUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkKCkgY29uc3Q7CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHRv
UmVuZGVyUGFzc0RyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1
YWQqIHRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NUZXh0dXJlRHJh
d1F1YWQqIHRvVGV4dHVyZURyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NUaWxlRHJhd1F1
YWQqIHRvVGlsZURyYXdRdWFkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXku
Y3BwCmluZGV4IGUxNGQ1M2IwNjRlYjQyM2JkMWI0NzAxOTYxMTYzMzk4OGE1YTYwNTEuLjM0ODVh
NDhhNGFhNDE2OGVlMGQwNDFiZTdkMTAzYWJiZWNhMjU5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6
ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoIW1faHVkVGV4dHVyZSkKLSAgICAgICAgbV9odWRUZXh0dXJl
ID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXIoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpj
cmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogCiAgICAgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKICAg
ICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCkBAIC0x
MDUsNyArMTA1LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9z
dEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6
OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwogCi0gICAgICAgIG1faHVkVGV4dHVyZS0+Ymlu
ZFRleHR1cmUobGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+cmVu
ZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZS0+Ymlu
ZFRleHR1cmUobGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+aW1w
bFRleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBmYWxz
ZTsKICAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3Vi
KSB7CiAgICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggN2Q4M2QyMDdkYzY5
NTQxNTI5YzExOThhYWQzMTllZWMzYmE4NzgyNS4uMzFjZmM0ODA3NDBlOGEyMTg3ODY2OTRmMjBj
ZTVhM2EzNjhkYjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
QEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbi5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFk
VGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMzI3LDkgKzMyNiwxMCBA
QCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRl
clBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIuZW50
ZXJMYXllcihpdCk7CiAKLSAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250cmlidXRpbmdSZW5k
ZXJTdXJmYWNlKCkpCi0gICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyKTsKLSAgICAgICAgZWxzZSBpZiAoaXQucmVw
cmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewor
ICAgICAgICAgICAgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzID0gc3VyZmFj
ZVBhc3NNYXAuZ2V0KGl0LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICAgICAgcGFzcy0+YXBw
ZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNz
LCAmb2NjbHVzaW9uVHJhY2tlcik7CisgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0
c2VsZigpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJSZW5kZXJlci5nZXQoKSwgY29udGV4dCgpKTsKICAgICAg
ICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwg
aGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgfQpAQCAtNDIzLDEzICs0MjMsMTcgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlz
LCAwKTsKICAgICBBU1NFUlQoY2FuRHJhdygpKTsKKyAgICBBU1NFUlQoIWZyYW1lLnJlbmRlclBh
c3Nlcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGlt
ZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFs
dWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVt
J3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCiAKKyAgICAvLyBUaGUgcm9vdCBSZW5kZXJQYXNzIGlz
IHRoZSBsYXN0IG9uZSB0byBiZSBkcmF3bi4KKyAgICBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQ
YXNzID0gZnJhbWUucmVuZGVyUGFzc2VzLmxhc3QoKS5nZXQoKTsKKwogICAgIG1fZnBzQ291bnRl
ci0+bWFya0JlZ2lubmluZ09mRnJhbWUoY3VycmVudFRpbWUoKSk7Ci0gICAgbV9sYXllclJlbmRl
cmVyLT5iZWdpbkRyYXdpbmdGcmFtZShtX3Jvb3RMYXllckltcGwtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgbV9sYXllclJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZShyb290UmVuZGVyUGFzcyk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCk7
ICsraSkKICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5kcmF3UmVuZGVyUGFzcyhmcmFtZS5yZW5k
ZXJQYXNzZXNbaV0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNjZlZWYz
OWZjYTc4MGRlY2RmNjQ3M2FmYWI0ZDgwYTAzZmM4YzdlYi4uMDg0Mjk5NmFiODg1ZTI2ZTlmODJm
ZTE3NDBkNGQxOTRmNTAxY2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ092
ZXJkcmF3TWV0cmljcy5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgotI2luY2x1ZGUg
ImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmNwcAppbmRleCBmZDg5OTkwYzcxOTgxNjA2NzZhNzZmNWJlZDIxOTZmZjdiOTZlY2Nl
Li5hMzFiNjRmZDY1ZGNmZDc4ZmIyNDA1MmNmMTJhNjVkYThmY2EyYzA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+
IENDUmVuZGVyUGFzczo6Y3JlYXRlKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSkKIAog
Q0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNl
KQogICAgIDogbV90YXJnZXRTdXJmYWNlKHRhcmdldFN1cmZhY2UpCisgICAgLCBtX2ZyYW1lYnVm
ZmVyT3V0cHV0UmVjdCh0YXJnZXRTdXJmYWNlLT5jb250ZW50UmVjdCgpKQogewogICAgIEFTU0VS
VChtX3RhcmdldFN1cmZhY2UpOwogfQpAQCAtNTgsNyArNTksNyBAQCB2b2lkIENDUmVuZGVyUGFz
czo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJh
Y2tlckltcAogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRl
LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRl
clN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwq
IG9jY2x1c2lvblRyYWNrZXIpCit2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5k
ZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNv
bnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRy
YWNrZXIpCiB7CiAgICAgLy8gRklYTUU6IHJlbmRlciBzdXJmYWNlIGxheWVycyBzaG91bGQgYmUg
YSBDQ0xheWVySW1wbC1kZXJpdmVkIGNsYXNzIGFuZAogICAgIC8vIG5vdCBiZSBoYW5kbGVkIHNw
ZWNpYWxseSBoZXJlLgpAQCAtNjgsNyArNjksNyBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5k
UXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1cwog
CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNl
LT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICBib29sIGlzUmVwbGljYSA9IGZhbHNlOwot
ICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSwgaXNSZXBsaWNhLCBzdXJmYWNlRGFtYWdlUmVjdCgpKTsKKyAgICBzdXJmYWNlLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJp
YnV0aW5nUmVuZGVyUGFzcywgc3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgbV9zaGFyZWRRdWFk
U3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIAogICAgIGlmICgh
c3VyZmFjZS0+aGFzUmVwbGljYSgpKQpAQCAtNzcsNyArNzgsNyBAQCB2b2lkIENDUmVuZGVyUGFz
czo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBD
Q09jY2x1cwogICAgIC8vIEFkZCByZXBsaWNhIGFmdGVyIHRoZSBzdXJmYWNlIHNvIHRoYXQgaXQg
YXBwZWFycyBiZWxvdyB0aGUgc3VyZmFjZS4KICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNlLT5jcmVhdGVSZXBsaWNhU2hhcmVkUXVh
ZFN0YXRlKCk7CiAgICAgaXNSZXBsaWNhID0gdHJ1ZTsKLSAgICBzdXJmYWNlLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCByZXBsaWNhU2hhcmVkUXVhZFN0YXRlLmdldCgpLCBpc1JlcGxpY2EsIHN1
cmZhY2VEYW1hZ2VSZWN0KCkpOworICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVu
ZGVyUGFzcywgc3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0
LmFwcGVuZChyZXBsaWNhU2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKaW5kZXggNDUyYTg2MTBmNWE5ZGJjMDIxNGE4Y2RkYmZmNmYwMjU0ZmVjZGEy
Ni4uYWFmYjgxY2E1YzY1MDRlNjcwNTk1MWRiZWNkMGVmMDNhODYzYjIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKQEAgLTU2LDExICs1NiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoQ0NSZW5kZXJTdXJmYWNlKik7CiAKICAgICB2b2lk
IGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBs
KiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKTsKLSAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVy
U3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOworICAg
IHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqLCBjb25z
dCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwqKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiBy
b290TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlckltcGwmKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsgfQogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0
U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0U3VyZmFjZTsgfQorICAgIC8vIFRoaXMg
ZGVub3RlcyB0aGUgYm91bmRzIGluIHBoeXNpY2FsIHBpeGVscyBvZiB0aGUgb3V0cHV0IGdlbmVy
YXRlZCBieSB0aGlzIFJlbmRlclBhc3MuCisgICAgY29uc3QgSW50UmVjdCYgZnJhbWVidWZmZXJP
dXRwdXRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3Q7IH0KIAog
ICAgIHZvaWQgc2V0U3VyZmFjZURhbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFt
YWdlUmVjdCkgeyBtX3N1cmZhY2VEYW1hZ2VSZWN0ID0gc3VyZmFjZURhbWFnZVJlY3Q7IH0KICAg
ICBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9z
dXJmYWNlRGFtYWdlUmVjdDsgfQpAQCAtNzAsNiArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgQ0NS
ZW5kZXJTdXJmYWNlKiBtX3RhcmdldFN1cmZhY2U7CiAgICAgQ0NRdWFkTGlzdCBtX3F1YWRMaXN0
OworICAgIEludFJlY3QgbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3Q7CiAgICAgVmVjdG9yPE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Q7CiAgICAgRmxvYXRS
ZWN0IG1fc3VyZmFjZURhbWFnZVJlY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
RHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMmI4OTVjOTJjOWJjMmMwN2RjOGU5MzUwZmEyYTQz
MGNmZTZkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ1JlbmRl
clBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29u
c3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1h
Z2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRG
aWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQoreworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVy
UGFzcywgc3VyZmFjZURhbWFnZVJlY3QsIGlzUmVwbGljYSwgZmlsdGVycywgYmFja2dyb3VuZEZp
bHRlcnMsIG1hc2tUZXh0dXJlSWQpKTsKK30KKworQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVu
ZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3Ms
IGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJl
SWQpCisgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVy
UGFzcywgcXVhZFJlY3QpCisgICAgLCBtX3JlbmRlclBhc3MocmVuZGVyUGFzcykKKyAgICAsIG1f
c3VyZmFjZURhbWFnZVJlY3Qoc3VyZmFjZURhbWFnZVJlY3QpCisgICAgLCBtX2lzUmVwbGljYShp
c1JlcGxpY2EpCisgICAgLCBtX2ZpbHRlcnMoZmlsdGVycykKKyAgICAsIG1fYmFja2dyb3VuZEZp
bHRlcnMoYmFja2dyb3VuZEZpbHRlcnMpCisgICAgLCBtX21hc2tUZXh0dXJlSWQobWFza1RleHR1
cmVJZCkKK3sKKyAgICBBU1NFUlQobV9sYXllcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MWVhYmZmMDA0M2RkMWUyZDVhODIyMTQ4
OThhNmVhM2FjZTc2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyUGFzc0RyYXdRdWFkX2gKKyNkZWZpbmUgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1JlbmRlclBhc3M7CisKK2Ns
YXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzc0RyYXdRdWFkKTsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOworCisg
ICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJQYXNzOyB9CisgICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGlj
YTsgfQorICAgIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tU
ZXh0dXJlSWQ7IH0KKworICAgIC8vIFRoZSBzdXJmYWNlIGRhbWFnZSByZWN0IGZvciB0aGUgdGFy
Z2V0IHN1cmZhY2UgdGhpcyBxdWFkIGRyYXdzIGludG8uCisgICAgLy8gRklYTUU6IFRoaXMgY2Fu
IGJlIHJlbW92ZWQgb25jZSByZW5kZXIgc3VyZmFjZXMgZ2V0IHRoZWlyIG93biBsYXllciB0eXBl
LgorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3N1cmZhY2VEYW1hZ2VSZWN0OyB9CisKKyAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KKyAgICBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCitwcml2YXRlOgorICAgIENDUmVuZGVy
UGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QsIGJv
b2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMs
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVu
c2lnbmVkIG1hc2tUZXh0dXJlSWQpOworCisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX3JlbmRl
clBhc3M7CisgICAgRmxvYXRSZWN0IG1fc3VyZmFjZURhbWFnZVJlY3Q7CisgICAgYm9vbCBtX2lz
UmVwbGljYTsKKyAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAg
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOworICAgIHVu
c2lnbmVkIG1fbWFza1RleHR1cmVJZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcAppbmRleCA5NDNjNTNmYmYwODI3ZTEyNmE3YjYyZWUxOGQ4NmJmM2Qy
OGY1NzhjLi5kOGViOTI4NzNmOGM1N2ZjMDg0MjI1NGNiYzU1MzRiMWE2NDMwMjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJj
Yy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNs
dWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApAQCAtODQsNyArODQsNyBAQCBGbG9hdFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJs
ZUNvbnRlbnRSZWN0KCkgY29uc3QKIAogYm9vbCBDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250
ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewotICAg
IFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1
cmZhY2VUZXh0dXJlTWFuYWdlcigpOworICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdl
ciA9IGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpOwogCiAgICAgaWYgKCFtX2Nv
bnRlbnRzVGV4dHVyZSkKICAgICAgICAgbV9jb250ZW50c1RleHR1cmUgPSBNYW5hZ2VkVGV4dHVy
ZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIENDUmVu
ZGVyU3VyZmFjZTo6aGFzVmFsaWRDb250ZW50c1RleHR1cmUoKSBjb25zdAogCiBib29sIENDUmVu
ZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlcikKIHsKLSAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIg
PSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKTsKKyAgICBUZXh0
dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1h
bmFnZXIoKTsKIAogICAgIGlmICghbV9iYWNrZ3JvdW5kVGV4dHVyZSkKICAgICAgICAgbV9iYWNr
Z3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOwpA
QCAtMjYwLDcgKzI2MCw3IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDUmVuZGVy
U3VyZmFjZTo6Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZSgpIGNvCiAgICAgcmV0dXJuIEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocmVwbGljYU9yaWdpblRyYW5zZm9ybSgpLCByZXBsaWNh
RHJhd1RyYW5zZm9ybSgpLCBjb250ZW50UmVjdCgpLCBjbGlwUmVjdCgpLCBkcmF3T3BhY2l0eSgp
LCBpc09wYXF1ZSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBi
b29sIGZvclJlcGxpY2EsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpCit2b2lk
IENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBD
Q1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJl
Y3QpCiB7CiAgICAgQVNTRVJUKCFmb3JSZXBsaWNhIHx8IGhhc1JlcGxpY2EoKSk7CiAKQEAgLTI5
MCw3ICsyOTAsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYQogCiAgICAgaW50IG1hc2tUZXh0
dXJlSWQgPSBtYXNrTGF5ZXIgPyBtYXNrTGF5ZXItPmNvbnRlbnRzVGV4dHVyZUlkKCkgOiAwOwog
Ci0gICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgbV9vd25pbmdMYXllciwgc3VyZmFj
ZURhbWFnZVJlY3QsIGZvclJlcGxpY2EsIGZpbHRlcnMoKSwgYmFja2dyb3VuZEZpbHRlcnMoKSwg
bWFza1RleHR1cmVJZCkpOworICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBh
c3MsIHN1cmZhY2VEYW1hZ2VSZWN0LCBmb3JSZXBsaWNhLCBmaWx0ZXJzKCksIGJhY2tncm91bmRG
aWx0ZXJzKCksIG1hc2tUZXh0dXJlSWQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaAppbmRleCA4NTVmY2NlN2U0MzUzYjhkZGVkNTFkZWUwZWVkMGM0MDAzODJhMTZlLi43M2U4
MWE0NTc2ODZmMzQxZGQ4NmM3NTY2Y2IzMDczOWRiYzQzMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENDRGFtYWdlVHJhY2tlcjsKIGNsYXNzIENDUXVhZEN1bGxlcjsKK2NsYXNzIENDUmVuZGVyUGFz
czsKIGNsYXNzIENDU2hhcmVkUXVhZFN0YXRlOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW07CkBAIC0xMzksNyArMTQwLDcgQEAgcHVibGljOgogICAgIFBh
c3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUo
KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHN1cmZhY2VEYW1hZ2VSZWN0IHBh
cmFtZXRlciB3aGVuIHRoZSB2YWx1ZSBpcyByZW1vdmVkIGZyb20gQ0NSZW5kZXJTdXJmYWNlRHJh
d1F1YWQuCi0gICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVj
dCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0
JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAKIHByaXZhdGU6CiAgICAgQ0NMYXllckltcGwqIG1fb3du
aW5nTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMDBjMGUwZmEzNjU2MjFhMzY2M2JjMjk2
NmYyMzdjM2I3NWFiNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURy
YXdRdWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZD4gQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
Q0NMYXllckltcGwqIGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBi
b29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
LCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1
bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIsIHN1cmZh
Y2VEYW1hZ2VSZWN0LCBpc1JlcGxpY2EsIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNr
VGV4dHVyZUlkKSk7Ci19Ci0KLUNDUmVuZGVyU3VyZmFjZURyYXdRdWFkOjpDQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBGbG9hdFJlY3Qm
IHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMm
IGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQotICAgIDogQ0NEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJlbmRlclN1cmZhY2UsIHF1YWRSZWN0
KQotICAgICwgbV9sYXllcihsYXllcikKLSAgICAsIG1fc3VyZmFjZURhbWFnZVJlY3Qoc3VyZmFj
ZURhbWFnZVJlY3QpCi0gICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCi0gICAgLCBtX2ZpbHRl
cnMoZmlsdGVycykKLSAgICAsIG1fYmFja2dyb3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMp
Ci0gICAgLCBtX21hc2tUZXh0dXJlSWQobWFza1RleHR1cmVJZCkKLXsKLSAgICBBU1NFUlQobV9s
YXllcik7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTAxMjgxZmE0ZjY5ZGUyY2Q2ZDI5MWZm
MWE2MTZiNjk2N2I5NGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZF9oCi0jZGVmaW5lIENDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkX2gKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NMYXllckltcGw7Ci0KLWNsYXNzIEND
UmVuZGVyU3VyZmFjZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKTsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgRmxvYXRS
ZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7Ci0KLSAgICBD
Q0xheWVySW1wbCogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9Ci0gICAgYm9vbCBp
c1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQotICAgIHVuc2lnbmVkIG1h
c2tUZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXh0dXJlSWQ7IH0KLQotICAgIC8v
IFRoZSBzdXJmYWNlIGRhbWFnZSByZWN0IGZvciB0aGUgdGFyZ2V0IHN1cmZhY2UgdGhpcyBxdWFk
IGRyYXdzIGludG8uCi0gICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSByZW5k
ZXIgc3VyZmFjZXMgZ2V0IHRoZWlyIG93biBsYXllciB0eXBlLgotICAgIGNvbnN0IEZsb2F0UmVj
dCYgc3VyZmFjZURhbWFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VEYW1hZ2VSZWN0
OyB9Ci0KLSAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBj
b25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KLSAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
RmlsdGVyczsgfQotCi1wcml2YXRlOgotICAgIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKiwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktp
dDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7Ci0K
LSAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKLSAgICBGbG9hdFJlY3QgbV9zdXJmYWNlRGFtYWdl
UmVjdDsKLSAgICBib29sIG1faXNSZXBsaWNhOwotICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyBtX2ZpbHRlcnM7Ci0gICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dy
b3VuZEZpbHRlcnM7Ci0gICAgdW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOwotfTsKLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCAzYTQ1NTE1NDJhNjE4NjNkYmM3YmFmNDQ2YTdk
ZGI1OTRkOTNhZDhlLi4xMTViMWE0YmE5ZGI0NDFhOGIwNDk0OTE4YWM2ODNmNmM3OGYwY2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4OyB9CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dN
YXRyaXg7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShDQ1JlbmRlclN1
cmZhY2UqIGRlZmF1bHRSZW5kZXJTdXJmYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2lu
RHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzcyogZGVmYXVsdFJlbmRlclBhc3MpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSA9IDA7CiAKQEAgLTgzLDEw
ICs4MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhl
bHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCBUZXh0
dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIGltcGxUZXh0dXJlTWFuYWdlcigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogaW1wbFRleHR1
cmVBbGxvY2F0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBj
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IDZiNTFjODE2OWJlZmIwMmQ3NWU0MDc0MDAzNDgy
YTcxMjJjOWIzY2UuLmQxOTQ4NGNmYmE4NDg5YzIxNTMwZmEzY2RjZTIyMDIzY2I0NDJmYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTU4LDExICs1OCwx
MSBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXll
clJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IW1fdGV4dHVyZSkKLSAgICAgICAgbV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShs
YXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAgIG1f
dGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1
cmVNYW5hZ2VyKCkpOwogCiAgICAgLy8gVGhlIGNvbnRleHQgY291bGQgaGF2ZSBiZWVuIGxvc3Qg
c2luY2UgdGhlIGxhc3QgZnJhbWUgYW5kIHRoZSBvbGQgdGV4dHVyZQogICAgIC8vIG1hbmFnZXIg
bWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KLSAgICBtX3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2Vy
KGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICBtX3Rl
eHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdl
cigpKTsKIAogICAgIEludFNpemUgdGV4dHVyZVNpemUgPSBjb250ZW50Qm91bmRzKCk7CiAgICAg
aWYgKCFtX3RleHR1cmUtPnJlc2VydmUodGV4dHVyZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERy
YXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQKIAogICAgIHsK
ICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwotICAg
ICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnJlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBTa2lhIHVzZXMgQkdSQSBhY3R1YWxseSwgd2UgY29ycmVjdCB0aGF0
IHdpdGggdGhlIHN3aXp6bGUgcGl4ZWwgc2hhZGVyLgogICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuY3BwCmluZGV4IGUyYmM2MzI3MmM4OTM4NmE1MjU3ODYzMDc5NGVhYjNjYjRjNzAw
NzcuLmJhYzliZTRjMDlhYzBhOTEzZGVkZTc4NDBmZjMwNDBkMzI0YzI5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCBib29sIENDVmlk
ZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUm
IGZyYW1lLCBHQzNEZQogICAgICAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZS5pc1plcm8oKSB8
fCByZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6ZSB8fCByZXF1aXJl
ZFRleHR1cmVTaXplLmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKSB7Ci0g
ICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6
Y3JlYXRlKGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAg
ICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpj
cmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogICAgICAgICAgICAg
aWYgKCFtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IElu
dFNpemUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoZSByZW5kZXJTdXJm
YWNlVGV4dHVyZU1hbmFnZXIgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIHJlY3JlYXRlZCBz
aW5jZSB0aGUgbGFzdCBmcmFtZSwgc28gcGFzcyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgIC8v
IFRoZSBpbXBsVGV4dHVyZU1hbmFnZXIgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIHJlY3Jl
YXRlZCBzaW5jZSB0aGUgbGFzdCBmcmFtZSwgc28gcGFzcyB0aGUgbmV3IG9uZS4KICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgYSBuby1vcCBpZiB0aGUgVGV4dHVyZU1hbmFnZXIgaXMgc3RpbGwgYXJv
dW5kLgotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5zZXRUZXh0dXJl
TWFuYWdlcihsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7Cisg
ICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2Vy
KGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAobV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRUZXh0
dXJlU2l6ZSkKICAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNpemUgPSBj
b21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IDMxNDgyZWQ5OTcxODA2ZWZmZDBhYTg4ZTg3ZjljNTlmMDM5ZDEwODIuLmU4NmZkMGJlMTA5MmZm
NmJiZTBlZWY5NjVmMGY0ZTdhMGMwNjE4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjgs
NiArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yb290TGF5ZXIoQ0NMYXllckltcGw6OmNy
ZWF0ZSgxKSkKICAgICB7CiAgICAgICAgIG1fcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7CisgICAgICAgIG1fcm9vdFJlbmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShtX3Jv
b3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICB9CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xp
ZW50IG1ldGhvZHMuCkBAIC04MSwxMiArODIsMTMgQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMg
YWRkZWQgZm9yIHRlc3QuCiAgICAgaW50IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50OyB9CiAKLSAgICBDQ0xh
eWVySW1wbCogcm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KKyAgICBD
Q1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKCkgeyByZXR1cm4gbV9yb290UmVuZGVyUGFzcy5n
ZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGludCBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3Vu
dDsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgbV9pbXBsVGhyZWFkOwogICAgIE93blB0
cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXI7CisgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gbV9y
b290UmVuZGVyUGFzczsKIH07CiAKIGNsYXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBw
dWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKQEAgLTE5NCw3ICsxOTYsNyBAQCBURVNUX0Yo
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZlcklzUmVjcmVhdHJl
ZEZvclNjb3BlRHVyYXRpbwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVt
LmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVu
dC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAKLSAgICBtX2xheWVyUmVuZGVyZXJD
aHJvbWl1bS5iZWdpbkRyYXdpbmdGcmFtZShtX21vY2tDbGllbnQucm9vdExheWVyKCktPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uYmVnaW5EcmF3aW5nRnJh
bWUobV9tb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNzKCkpOwogICAgIEVYUEVDVF9GQUxTRShtX2xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogCiAgICAgc3dh
cEJ1ZmZlcnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145603</attachid>
            <date>2012-06-04 10:29:49 -0700</date>
            <delta_ts>2012-06-04 10:50:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-88132-20120604132948.patch</filename>
            <type>text/plain</type>
            <size>81368</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkzMzI2MWJiMTJkZWFl
NmNiMmI2ZWMzOTUwM2YyNTI3MzA3YmE5MS4uMzVjNDIyZjRkZjA3MzZmYTM5NDdmOWM4Mzk1YmE2
Y2NkZDBhNjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wNi0wNCAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1h
a2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQYXNzZXMgaW5zdGVhZCBvZiBSZW5k
ZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBwYXJ0bHkgcmVuYW1pbmcsIHBhcnRseSBtb3ZpbmcgZGF0YSBpbnRv
IENDUmVuZGVyUGFzcworICAgICAgICBhbmQgQ0NSZW5kZXJQYXNzRHJhd1F1YWQuIExheWVyUmVu
ZGVyZXJDaHJvbWl1bSBzaG91bGQgYWNjZXB0IGFzIGlucHV0CisgICAgICAgIGEgc2V0IG9mIFJl
bmRlclBhc3NlcyBhbmQgdGhpcyBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZHJhd2luZy4gSXQK
KyAgICAgICAgc2hvdWxkIGhhdmUgbm8gbm90aW9uIG9mIFJlbmRlclN1cmZhY2VzIGF0IGFsbC4K
KworICAgICAgICBGaXJzdCwgd2hhdCBpc24ndCBkb25lOiBSZW5kZXJTdXJmYWNlcyBzdGlsbCBo
b2xkIHRoZSB0ZXh0dXJlcworICAgICAgICB3aGVyZSBSZW5kZXJQYXNzZXMgYXJlIGRyYXduIHRv
L2Zyb20sIHNvIHRoYXQgdGhlc2UgdGV4dHVyZXMgY2FuCisgICAgICAgIHBlcnNpc3QgYWNyb3Nz
IGZyYW1lcy4gVGhpcyB3aWxsIGJlIGFkZHJlc3NlZCBzZXBhcmF0ZWx5LgorCisgICAgICAgIE90
aGVyd2lzZSwgdGhpcyBjb21wbGV0ZWx5IHJlbW92ZXMgdGhlIGNvbmNlcHQgb2YgUmVuZGVyU3Vy
ZmFjZSBmcm9tCisgICAgICAgIExheWVyUmVuZGVyQ2hyb21pdW0gYW5kIHRoZSBDQ0RyYXdRdWFk
LCByZXBsYWNpbmcgaXQgd2l0aCBSZW5kZXJQYXNzLgorICAgICAgICBUaGUgInJlbmRlclN1cmZh
Y2VUZXh0dXJlTWFuYWdlciIgaXMgcmVuYW1lZCB0byB0aGUgImltcGxUZXh0dXJlTWFuYWdlciIK
KyAgICAgICAgYW5kIGxpa2Utd2lzZSBmb3IgdGhlIFRleHR1cmVBbGxvY2F0b3IsIGFzIHRoZXNl
IGFyZSBub3QgdXNlZAorICAgICAgICBleGNsdXNpdmVseSBmb3IgcmVuZGVyIHN1cmZhY2VzIChw
YXNzZXMpLCBhbmQgYSB0ZXh0dXJlIG1hbmFnZXIgZm9yCisgICAgICAgIHJlbmRlciBwYXNzZXMg
dGhhdCBkb2VzIG5vdCByZXF1aXJlIGEgUmVuZGVyU3VyZmFjZSogd2lsbCBiZSB0aGUgZm9jdXMK
KyAgICAgICAgb2YgZnV0dXJlIGNoYW5nZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVJlbmRlclBhc3NUZXh0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFy
UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJl
Z2luRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVm
ZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omlz
Q3VycmVudFJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1c2VSZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXNlTWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJQYXNzUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp0b1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDQ0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
SGVhZHNVcERpc3BsYXk6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
UGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoQ0NSZW5k
ZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6ZnJhbWVidWZmZXJPdXRw
dXRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NEcmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmlzUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWFza1RleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6ZmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250ZW50c1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NSZW5kZXJlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxE
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OnJlc2VydmVU
ZXh0dXJlcyk6CisKIDIwMTItMDYtMDQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTkzOTMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkYjVjZDk4MzZjODU3ZWMyYjg5MWYzYjc3NDJj
YzlkZmU1YmExMTcuLjdmNDc4OTAyM2ZjZmIxZGRmMGE1ODQ1NGJjYTUzMjNkODZlNDFmNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDYtMDQgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
YWtlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB1c2UgUmVuZGVyUGFzc2VzIGluc3RlYWQgb2YgUmVu
ZGVyU3VyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAg
ICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoRmFrZUNDUmVuZGVyZXJD
bGllbnQ6OkZha2VDQ1JlbmRlcmVyQ2xpZW50KToKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xp
ZW50Ojpyb290UmVuZGVyUGFzcyk6CisgICAgICAgIChGYWtlQ0NSZW5kZXJlckNsaWVudCk6Cisg
ICAgICAgIChURVNUX0YpOgorCiAyMDEyLTA2LTA0ICBaZWV2IExpZWJlciAgPHpsaWViZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYW51cCBzY2lzc29yIHJlY3QgY29t
cHV0YXRpb24vdXNlIHdpdGggZGFtYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDEzMWNkNDRmZmQy
YjJmYzZkMGVmMTdlYWFkZWM0MzY5ZDRkMTE2OS4uZGEzZDM4ZGJmNzdhYmJmYWIxMmIyOTI5Njk0
MWU0NzA4YWExOWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzcyOSwxMCArMzcyOSwxMCBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
RHJhd1F1YWQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggOTJlMDNh
M2Y3NjNmMjRiMWIwNWMyNDYyZWE2MTBhZDViMzNlOTM3MS4uOGRlNDQ5YzAzNGQwOGVkNTI3OTdm
Y2NkYzJhNWI1ZjUxNGRiMzY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgot
I2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYXJlZEdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJUZXh0dXJl
Q29waWVyLmgiCkBAIC02Myw3ICs2Miw3IEBACiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKLSNp
bmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5o
IgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCIKQEAgLTIzMCwxMiArMjI5LDEyIEBAIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGlu
ZykKICAgICA6IENDUmVuZGVyZXIoY2xpZW50KQotICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZSgwKQorICAgICwgbV9jdXJyZW50UmVuZGVyUGFzcygwKQogICAgICwgbV9jdXJyZW50TWFuYWdl
ZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9z
aGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkK
KyAgICAsIG1fZGVmYXVsdFJlbmRlclBhc3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQo
ZmFsc2UpCiAgICAgLCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCiAgICAgLCBtX3Rl
eHR1cmVVcGxvYWRlclNldHRpbmcodGV4dHVyZVVwbG9hZGVyU2V0dGluZykKQEAgLTM2MSw3ICsz
NjAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IGNoYXIqCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAgaWYgKCF2aXNpYmxlKQotICAgICAg
ICByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CisgICAgICAgIHJlbGVhc2VSZW5kZXJQ
YXNzVGV4dHVyZXMoKTsKIAogICAgIC8vIFRPRE86IFJlcGxhY2Ugc2V0VmlzaWJpbGl0eUNIUk9N
SVVNIHdpdGggYW4gZXh0ZW5zaW9uIHRvIGV4cGxpY2l0bHkgbWFuYWdlIGZyb250L2JhY2tidWZm
ZXJzCiAgICAgLy8gY3JidWcuY29tLzExNjA0OQpAQCAtMzcxLDIyICszNzAsMjIgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIH0K
IAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVy
ZXMoKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJQYXNzVGV4dHVy
ZXMoKQogewotICAgIGlmIChtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcikKLSAgICAgICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMo
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgaWYgKG1faW1wbFRl
eHR1cmVNYW5hZ2VyKQorICAgICAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmREZWxl
dGVBbGxUZXh0dXJlcyhtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIH0KIAogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdlZCgpCiB7CiAgICAgbV9pc1ZpZXdw
b3J0Q2hhbmdlZCA9IHRydWU7CiAKLSAgICAvLyBSZXNldCB0aGUgY3VycmVudCByZW5kZXIgc3Vy
ZmFjZSB0byBmb3JjZSBhbiB1cGRhdGUgb2YgdGhlIHZpZXdwb3J0IGFuZAotICAgIC8vIHByb2pl
Y3Rpb24gbWF0cml4IG5leHQgdGltZSB1c2VSZW5kZXJTdXJmYWNlIGlzIGNhbGxlZC4KLSAgICBt
X2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICAvLyBSZXNldCB0aGUgY3VycmVudCBSZW5k
ZXJQYXNzIHRvIGZvcmNlIGFuIHVwZGF0ZSBvZiB0aGUgdmlld3BvcnQgYW5kCisgICAgLy8gcHJv
amVjdGlvbiBtYXRyaXggbmV4dCB0aW1lIHVzZVJlbmRlclBhc3MgaXMgY2FsbGVkLgorICAgIG1f
Y3VycmVudFJlbmRlclBhc3MgPSAwOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSwgQ0NSZW5k
ZXJTdXJmYWNlKiByb290UmVuZGVyU3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFy
UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KQogewogICAgIC8vIE5vbi1yb290IGxheWVycyBzaG91bGQgY2xlYXIgdGhlaXIgZW50aXJl
IGNvbnRlbnRzIHRvIHRyYW5zcGFyZW50LiBPbiBERUJVRyBidWlsZHMsIHRoZSByb290IGxheWVy
CiAgICAgLy8gaXMgY2xlYXJlZCB0byBibHVlIHRvIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdl
cmUgbm90IGRyYXduIG9uIHRoZSBzY3JlZW4uIElmIHdlCkBAIC0zOTQsMzYgKzM5MywzNiBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3Vy
ZmFjZSogcmVuZGVyU3VyZmFjZSwgQwogICAgIC8vIGNsZWFyIHRoZSBkYW1hZ2VkIHJlZ2lvbiwg
c28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2xlYXIgdW4tY2hhbmdlZCBwb3J0aW9ucwog
ICAgIC8vIG9mIHRoZSBzY3JlZW4uCiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSAhPSByb290UmVu
ZGVyU3VyZmFjZSkKKyAgICBpZiAocmVuZGVyUGFzcyAhPSByb290UmVuZGVyUGFzcykKICAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDApKTsKICAg
ICBlbHNlCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAw
LCAxLCAxKSk7CiAKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkKLSAg
ICAgICAgc2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KHJvb3RTY2lzc29yUmVjdElu
Q3VycmVudFN1cmZhY2UpKTsKKyAgICAgICAgc2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRS
ZWN0KGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1Qp
KTsKIAogI2lmIGRlZmluZWQoTkRFQlVHKQotICAgIGlmIChyZW5kZXJTdXJmYWNlICE9IHJvb3RS
ZW5kZXJTdXJmYWNlKQorICAgIGlmIChyZW5kZXJQYXNzICE9IHJvb3RSZW5kZXJQYXNzKQogI2Vu
ZGlmCiAgICAgICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JV
RkZFUl9CSVQpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3Vy
ZmFjZSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25z
dCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVjcmVhdGVkIG9uIGZpcnN0
IHVzZQogICAgIGVuc3VyZUZyYW1lYnVmZmVyKCk7CiAKLSAgICBtX2RlZmF1bHRSZW5kZXJTdXJm
YWNlID0gZGVmYXVsdFJlbmRlclN1cmZhY2U7Ci0gICAgQVNTRVJUKG1fZGVmYXVsdFJlbmRlclN1
cmZhY2UpOworICAgIG1fZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKKyAgICBB
U1NFUlQobV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAKICAgICBzaXplX3QgY29udGVudHNNZW1vcnlV
c2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKTsKICAgICBzaXplX3QgbWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0
ZXModmlld3BvcnRTaXplKCkpOwogICAgIHNpemVfdCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMpID8gbWF4TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVz
IDogMDsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGlt
aXRCeXRlcyhuZXdMaW1pdCk7CisgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMobmV3TGltaXQpOwogCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU0LDEzICs0NTMsMTIgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRvTm9PcCgpCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVz
aCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzKGNv
bnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdS
ZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0
JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7Ci0gICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlID0gcmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpOwotICAgIGlmICghdXNlUmVuZGVy
U3VyZmFjZShyZW5kZXJTdXJmYWNlKSkKKyAgICBpZiAoIXVzZVJlbmRlclBhc3MocmVuZGVyUGFz
cykpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNsZWFyUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJm
YWNlLCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJm
YWNlKTsKKyAgICBjbGVhclJlbmRlclBhc3MocmVuZGVyUGFzcywgbV9kZWZhdWx0UmVuZGVyUGFz
cywgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRM
aXN0ID0gcmVuZGVyUGFzcy0+cXVhZExpc3QoKTsKICAgICBmb3IgKENDUXVhZExpc3Q6OmNvbnN0
QmFja1RvRnJvbnRJdGVyYXRvciBpdCA9IHF1YWRMaXN0LmJhY2tUb0Zyb250QmVnaW4oKTsgaXQg
IT0gcXVhZExpc3QuYmFja1RvRnJvbnRFbmQoKTsgKytpdCkKQEAgLTQ5NSw4ICs0OTMsOCBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCogcXVh
ZCkKICAgICBjYXNlIENDRHJhd1F1YWQ6OklPU3VyZmFjZUNvbnRlbnQ6CiAgICAgICAgIGRyYXdJ
T1N1cmZhY2VRdWFkKHF1YWQtPnRvSU9TdXJmYWNlRHJhd1F1YWQoKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyU3VyZmFjZToKLSAgICAgICAgZHJhd1JlbmRl
clN1cmZhY2VRdWFkKHF1YWQtPnRvUmVuZGVyU3VyZmFjZURyYXdRdWFkKCkpOworICAgIGNhc2Ug
Q0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKKyAgICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKHF1YWQt
PnRvUmVuZGVyUGFzc0RyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENDRHJh
d1F1YWQ6OlNvbGlkQ29sb3I6CiAgICAgICAgIGRyYXdTb2xpZENvbG9yUXVhZChxdWFkLT50b1Nv
bGlkQ29sb3JEcmF3UXVhZCgpKTsKQEAgLTU4MCw3ICs1NzgsNyBAQCBzdGF0aWMgaW5saW5lIFNr
Qml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIs
IGNvbnN0CiAgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMs
IHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRl
ckNvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0Jh
Y2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkLCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudHNEZXZpY2VUcmFuc2Zvcm0pCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiBxdWFkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29u
dGVudHNEZXZpY2VUcmFuc2Zvcm0pCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZHJhd3MgYSBiYWNr
Z3JvdW5kIGZpbHRlciwgd2hpY2ggYXBwbGllcyBhIGZpbHRlciB0byBhbnkgcGl4ZWxzIGJlaGlu
ZCB0aGUgcXVhZCBhbmQgc2VlbiB0aHJvdWdoIGl0cyBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSBh
bGdvcml0aG0gd29ya3MgYXMgZm9sbG93czoKQEAgLTU5NiwxMyArNTk0LDEzIEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqCiAgICAgLy8KICAgICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdv
cml0aG0gb2NjdXIgYXQgc3RlcHMgMiwgMywgNCwgYW5kIDUuCiAKLSAgICBDQ1JlbmRlclN1cmZh
Y2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAg
IENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5yZW5kZXJQYXNzKCktPnRh
cmdldFN1cmZhY2UoKTsKICAgICBpZiAocXVhZC0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tn
cm91bmQgZmlsdGVycyBvbiB0aGUgcm9vdCByZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1
cmZhY2VzIG1heSBjb250YWluCiAgICAgLy8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNv
bnRlbnRzIGJlaGluZCB0aG9zZSB0cmFuc2x1Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUg
ZmlsdGVyIGFwcGxpZWQuCi0gICAgaWYgKCFpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVs
dFJlbmRlclN1cmZhY2UpKQorICAgIGlmICghaXNDdXJyZW50UmVuZGVyUGFzcyhtX2RlZmF1bHRS
ZW5kZXJQYXNzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IERvIGEgc2luZ2xl
IHJlYWRiYWNrIGZvciBib3RoIHRoZSBzdXJmYWNlIGFuZCByZXBsaWNhIGFuZCBjYWNoZSB0aGUg
ZmlsdGVyZWQgcmVzdWx0cyAob25jZSBmaWx0ZXIgdGV4dHVyZXMgYXJlIG5vdCByZXVzZWQpLgpA
QCAtNjEzLDkgKzYxMSw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgZGV2aWNlUmVj
dC5tb3ZlKC1sZWZ0LCAtdG9wKTsKICAgICBkZXZpY2VSZWN0LmV4cGFuZChsZWZ0ICsgcmlnaHQs
IHRvcCArIGJvdHRvbSk7CiAKLSAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsKKyAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1
cnJlbnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiAKLSAgICBPd25QdHI8
TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6
OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKSk7CisgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJl
OjpjcmVhdGUobV9pbXBsVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwogICAgIGlmICghZ2V0RnJhbWVi
dWZmZXJUZXh0dXJlKGRldmljZUJhY2tncm91bmRUZXh0dXJlLmdldCgpLCBkZXZpY2VSZWN0KSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC02MjksMjggKzYyNywyOCBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkKgogICAgIGlmICghZHJhd2luZ1N1cmZhY2UtPnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVy
ZSh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRS
ZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBjb25zdCBDQ1JlbmRl
clBhc3MqIHRhcmdldFJlbmRlclBhc3MgPSBtX2N1cnJlbnRSZW5kZXJQYXNzOwogICAgIGlmICh1
c2VNYW5hZ2VkVGV4dHVyZShkcmF3aW5nU3VyZmFjZS0+YmFja2dyb3VuZFRleHR1cmUoKSwgcXVh
ZC0+cXVhZFJlY3QoKSkpIHsKICAgICAgICAgLy8gQ29weSB0aGUgcmVhZGJhY2sgcGl4ZWxzIGZy
b20gZGV2aWNlIHRvIHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlLgotICAg
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07Ci0g
ICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUocXVhZC0+cXVhZFJlY3Qo
KS53aWR0aCgpIC8gMi4wLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpIC8gMi4wKTsKLSAgICAg
ICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnNjYWxlM2QocXVhZC0+cXVhZFJlY3QoKS53aWR0
aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCAxKTsKLSAgICAgICAgZGV2aWNlVG9TdXJm
YWNlVHJhbnNmb3JtLm11bHRpcGx5KGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKSk7
Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC53
aWR0aCgpIC8gMi4wLCBkZXZpY2VSZWN0LmhlaWdodCgpIC8gMi4wKTsKLSAgICAgICAgZGV2aWNl
VG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55
KCkpOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb0ZyYW1lYnVmZmVy
VHJhbnNmb3JtOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5zbGF0
ZShxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCkgLyAyLjAsIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0
KCkgLyAyLjApOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnNjYWxlM2Qo
cXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCAxKTsK
KyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS5tdWx0aXBseShjb250ZW50c0Rl
dmljZVRyYW5zZm9ybS5pbnZlcnNlKCkpOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJh
bnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0LndpZHRoKCkgLyAyLjAsIGRldmljZVJlY3QuaGVp
Z2h0KCkgLyAyLjApOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5z
bGF0ZShkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCkpOwogCi0gICAgICAgIGNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcihmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGRldmlj
ZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0pOworICAgICAgICBjb3B5VGV4
dHVyZVRvRnJhbWVidWZmZXIoZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZp
Y2VSZWN0LnNpemUoKSwgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybSk7CiAKLSAgICAgICAg
dXNlUmVuZGVyU3VyZmFjZSh0YXJnZXRSZW5kZXJTdXJmYWNlKTsKKyAgICAgICAgdXNlUmVuZGVy
UGFzcyh0YXJnZXRSZW5kZXJQYXNzKTsKICAgICB9CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFk
KGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogewogICAgIC8vIFRoZSByZXBsaWNh
IGlzIGFsd2F5cyBkcmF3biBmaXJzdCwgc28gZnJlZSBhZnRlciBkcmF3aW5nIHRoZSBjb250ZW50
cy4KICAgICBib29sIHNob3VsZFJlbGVhc2VUZXh0dXJlcyA9ICFxdWFkLT5pc1JlcGxpY2EoKTsK
IAotICAgIENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5sYXllcigpLT5y
ZW5kZXJTdXJmYWNlKCk7CisgICAgQ0NSZW5kZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSA9IHF1
YWQtPnJlbmRlclBhc3MoKS0+dGFyZ2V0U3VyZmFjZSgpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggcmVuZGVyVHJhbnNmb3JtID0gcXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKTsKICAgICAv
LyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRz
IGludGVuZGVkIHNpemUuCkBAIC03MDUsNyArNzAzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZCoKICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyQWxw
aGFMb2NhdGlvbiA9IC0xOwogICAgIGlmICh1c2VBQSAmJiB1c2VNYXNrKSB7Ci0gICAgICAgIGNv
bnN0IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtQUEoKTsKKyAgICAgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIHBy
b2dyYW0gPSByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogICAgICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtNzE1LDcgKzcxMyw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqCiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2Nh
dGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgIH0g
ZWxzZSBpZiAoIXVzZUFBICYmIHVzZU1hc2spIHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7CisgICAg
ICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNr
UHJvZ3JhbSgpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0o
cHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDAp
KTsKIApAQCAtNzIzLDcgKzcyMSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgICAg
IHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9j
YXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgIH0gZWxzZSBpZiAodXNlQUEgJiYgIXVzZU1h
c2spIHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZVByb2dyYW1BQSogcHJvZ3JhbSA9IHJl
bmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKKyAgICAgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW1B
QSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKICAgICAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTczMiw3ICs3MzAsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVy
U3VyZmFjZURyYXdRdWFkKgogICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9j
YXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBSZW5kZXJTdXJmYWNlUHJvZ3JhbSogcHJvZ3JhbSA9IHJl
bmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAgICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtKiBw
cm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW0oKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNh
bXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTEwNjYsOSArMTA2NCw4IEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjb3B5RnJhbWVUb1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVh
ZCogcXVhZCkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5UGxhbmVUb1RleHR1cmUo
Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkLCBjb25zdCB2b2lkKiBwbGFuZSwgaW50IGluZGV4
KQogewogICAgIENDVmlkZW9MYXllckltcGw6OlRleHR1cmUmIHRleHR1cmUgPSBxdWFkLT50ZXh0
dXJlcygpW2luZGV4XTsKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSByZW5kZXJT
dXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpOwogICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAg
dGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgYWxsb2NhdG9y
KTsKKyAgICB0ZXh0dXJlLm1fdGV4dHVyZS0+YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBt
X2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0
dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7CiAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVy
ZS5tX3RleHR1cmUtPnNpemUoKTsKIApAQCAtMTIwMywxMyArMTIwMCwxMyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiBodWRU
ZXh0dXJlLCBjb25zdAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymxl
bmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlO
VVNfU1JDX0FMUEhBKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKLSAgICB1c2VSZW5kZXJTdXJmYWNlKG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UpOworICAgIHVzZVJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVy
UGFzcyk7CiAKICAgICBjb25zdCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIHByb2dyYW0gPSBoZWFk
c1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0
aWFsaXplZCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250
ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsK
LSAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHJlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29u
dGV4dC5nZXQoKSwgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTIyNiwxNCArMTIyMywxNCBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVT
VCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6QkxFTkQpKTsKIAotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnBy
b3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RB
bGxUZXh0dXJlcygpOwogCiAgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7CiAgICAgc2l6
ZV90IHJlY2xhaW1MaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUoKSk7CiAgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4g
Y29udGVudHNNZW1vcnlVc2VCeXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNl
Qnl0ZXMgOiAwOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJy
ZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKLSAgICBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7Ci0gICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFu
YWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CisgICAg
bV9pbXBsVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQp
OworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9pbXBs
VGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0b0dMTWF0cml4KGZsb2F0KiBmbGF0dGVuZWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtKQpAQCAtMTI5Myw3ICsxMjkwLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXcKIAog
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQg
dGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBkcmF3TWF0cml4KQogewotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiBw
cm9ncmFtID0gcmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKKyAgICBjb25zdCBSZW5kZXJQYXNzUHJv
Z3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQcm9ncmFtKCk7CiAKICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CkBAIC0xNDM1LDUwICsxNDMyLDQ4IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgp
LCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICB0ZXh0dXJlLT5i
aW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJl
Y3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVu
dFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQorYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
KiByZW5kZXJQYXNzKQogewotICAgIC8vIElmIHJlbmRlclN1cmZhY2UgaXMgMCwgd2UgY2FuJ3Qg
dGVsbCBpZiB3ZSBhcmUgYWxyZWFkeSB1c2luZyBpdCwgc2luY2UgbV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZSBpcwotICAgIC8vIGluaXRpYWxpemVkIHRvIDAuCi0gICAgcmV0dXJuIG1fY3VycmVudFJl
bmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFjZSAmJiAhbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7
CisgICAgcmV0dXJuIG1fY3VycmVudFJlbmRlclBhc3MgPT0gcmVuZGVyUGFzcyAmJiAhbV9jdXJy
ZW50TWFuYWdlZFRleHR1cmU7CiB9CiAKLWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VS
ZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK2Jvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVy
UGFzcykKIHsKLSAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKKyAg
ICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gcmVuZGVyUGFzczsKICAgICBtX2N1cnJlbnRNYW5hZ2Vk
VGV4dHVyZSA9IDA7CiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlKSB7CisgICAgaWYgKHJlbmRlclBhc3MgPT0gbV9kZWZhdWx0UmVuZGVyUGFzcykgewog
ICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKLSAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVj
dChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLCB0cnVlKTsKKyAgICAgICAgc2V0RHJhd0Zy
YW1lYnVmZmVyUmVjdChyZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghcmVuZGVyU3VyZmFjZS0+
cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0aGlzKSkKKyAgICBpZiAoIXJlbmRlclBhc3MtPnRhcmdl
dFN1cmZhY2UoKS0+cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0aGlzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShyZW5kZXJTdXJm
YWNlLT5jb250ZW50c1RleHR1cmUoKSwgcmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7Cisg
ICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShyZW5kZXJQYXNzLT50YXJnZXRTdXJm
YWNlKCktPmNvbnRlbnRzVGV4dHVyZSgpLCByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJl
Y3QoKSk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVy
ZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQog
ewotICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSAwOworICAgIG1fY3VycmVudFJlbmRlclBh
c3MgPSAwOwogICAgIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID0gdGV4dHVyZTsKIAogICAgIHJl
dHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUodGV4dHVyZSwgdmlld3BvcnRSZWN0KTsKIH0K
IAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQorYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZnJhbWVidWZmZXJSZWN0KQogewogICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKICAgICBSZWZQ
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGUzRChtX2NvbnRleHQpOwotICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29u
dGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAg
dGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0
dXJlQWxsb2NhdG9yLmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAo
bV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBA
IC0xNDg3LDcgKzE0ODIsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1l
YnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjbwogICAgIH0KICNlbmRp
ZgogCi0gICAgc2V0RHJhd1ZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKKyAgICBz
ZXREcmF3RnJhbWVidWZmZXJSZWN0KGZyYW1lYnVmZmVyUmVjdCwgZmFsc2UpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0xNDk2LDIxICsxNDkxLDIxIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUs
IGNvCiAvLyBzY2lzc29yUmVjdCBoYXMgaXRzIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQgY29ybmVy
IG9mIHRoZSBjdXJyZW50IHZpc2libGUgcmVjdC4KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQogewotICAgIElu
dFJlY3QgY29udGVudFJlY3QgPSAobV9jdXJyZW50UmVuZGVyU3VyZmFjZSA/IG1fY3VycmVudFJl
bmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkgOiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5jb250
ZW50UmVjdCgpKTsKKyAgICBJbnRSZWN0IGZyYW1lYnVmZmVyT3V0cHV0UmVjdCA9IChtX2N1cnJl
bnRSZW5kZXJQYXNzID8gbV9jdXJyZW50UmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0
KCkgOiBtX2RlZmF1bHRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiAKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJ
U1NPUl9URVNUKSk7CiAKICAgICAvLyBUaGUgc2Npc3NvciBjb29yZGluYXRlcyBtdXN0IGJlIHN1
cHBsaWVkIGluIHZpZXdwb3J0IHNwYWNlIHNvIHdlIG5lZWQgdG8gb2Zmc2V0Ci0gICAgLy8gYnkg
dGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJl
bnQgcmVuZGVyIHN1cmZhY2UuCi0gICAgaW50IHNjaXNzb3JYID0gc2Npc3NvclJlY3QueCgpIC0g
Y29udGVudFJlY3QueCgpOworICAgIC8vIGJ5IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUg
dG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHJlbmRlciBwYXNzLgorICAgIGludCBzY2lz
c29yWCA9IHNjaXNzb3JSZWN0LngoKSAtIGZyYW1lYnVmZmVyT3V0cHV0UmVjdC54KCk7CiAgICAg
Ly8gV2hlbiByZW5kZXJpbmcgdG8gdGhlIGRlZmF1bHQgcmVuZGVyIHN1cmZhY2Ugd2UncmUgcmVu
ZGVyaW5nIHVwc2lkZSBkb3duIHNvIHRoZSB0b3AKICAgICAvLyBvZiB0aGUgR0wgc2Npc3NvciBp
cyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4KICAgICAvLyBCdXQsIGlmIHJlbmRlcmluZyB0byBv
ZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJzZSBvdXIgc2Vuc2Ugb2YgJ3Vwc2lkZSBkb3duJy4K
ICAgICBpbnQgc2Npc3Nvclk7Ci0gICAgaWYgKGlzQ3VycmVudFJlbmRlclN1cmZhY2UobV9kZWZh
dWx0UmVuZGVyU3VyZmFjZSkpCi0gICAgICAgIHNjaXNzb3JZID0gbV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkgLSBtX2N1
cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLnkoKSk7CisgICAgaWYgKGlzQ3VycmVu
dFJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVyUGFzcykpCisgICAgICAgIHNjaXNzb3JZID0gZnJh
bWVidWZmZXJPdXRwdXRSZWN0LmhlaWdodCgpIC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIGZyYW1l
YnVmZmVyT3V0cHV0UmVjdC55KCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Npc3NvclkgPSBzY2lz
c29yUmVjdC55KCkgLSBjb250ZW50UmVjdC55KCk7CisgICAgICAgIHNjaXNzb3JZID0gc2Npc3Nv
clJlY3QueSgpIC0gZnJhbWVidWZmZXJPdXRwdXRSZWN0LnkoKTsKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPnNjaXNzb3Ioc2Npc3NvclgsIHNjaXNzb3JZLCBzY2lzc29yUmVjdC53aWR0
aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkpOwogfQogCkBAIC0xNTIyLDcgKzE1MTcsNyBAQCBi
b29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIC8vIFNldHMg
dGhlIGNvb3JkaW5hdGUgcmFuZ2Ugb2YgY29udGVudCB0aGF0IGVuZHMgYmVpbmcgZHJhd24gb250
byB0aGUgdGFyZ2V0IHJlbmRlciBzdXJmYWNlLgogLy8gVGhlIHRhcmdldCByZW5kZXIgc3VyZmFj
ZSBpcyBhc3N1bWVkIHRvIGhhdmUgYW4gb3JpZ2luIGF0IDAsIDAgYW5kIHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG9mCiAvLyBvZiB0aGUgZHJhd1JlY3QuCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlw
WSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KGNv
bnN0IEludFJlY3QmIGRyYXdSZWN0LCBib29sIGZsaXBZKQogewogICAgIGlmIChmbGlwWSkKICAg
ICAgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3
UmVjdC5tYXhYKCksIGRyYXdSZWN0Lm1heFkoKSwgZHJhd1JlY3QueSgpKTsKQEAgLTE1NDQsMjcg
KzE1MzksMjcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRP
YmplY3RzKCkKICAgICAvLyBXZSB3aWxsIGFsd2F5cyBuZWVkIHRoZXNlIHByb2dyYW1zIHRvIHJl
bmRlciwgc28gY3JlYXRlIHRoZSBwcm9ncmFtcyBlYWdlcmx5IHNvIHRoYXQgdGhlIHNoYWRlciBj
b21waWxhdGlvbiBjYW4KICAgICAvLyBzdGFydCB3aGlsZSB3ZSBkbyBvdGhlciB3b3JrLiBPdGhl
ciBwcm9ncmFtcyBhcmUgY3JlYXRlZCBsYXppbHkgb24gZmlyc3QgYWNjZXNzLgogICAgIG1fc2hh
cmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQo
KSkpOwotICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3Vy
ZmFjZVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbSA9
IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBt
X3RpbGVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkp
OwogICAgIG1fdGlsZVByb2dyYW1PcGFxdWUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1PcGFx
dWUobV9jb250ZXh0LmdldCgpKSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZs
dXNoKCkpOwogCi0gICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5
dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0
U2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4dHVyZUNvcGllciA9
IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAg
aWYgKG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZyA9PSBUaHJvdHRsZWRVcGxvYWRlcikKICAgICAg
ICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSht
X2NvbnRleHQuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBV
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7CiAgICAgbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1faW1wbFRleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVVc2FnZUhpbnQpCi0g
ICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3ItPnNldFRleHR1cmVVc2FnZUhp
bnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpOworICAg
ICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKICAgICBpZiAobV9jYXBh
YmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewogICAgICAgICBtX2NvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7Ci0gICAg
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdl
RXh0KHRydWUpOworICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJl
U3RvcmFnZUV4dCh0cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2MDMsNDcg
KzE1OTgsNDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpIZWFkc1VwRGlzcGxheVBy
b2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHMKICAgICByZXR1cm4gbV9oZWFkc1Vw
RGlzcGxheVByb2dyYW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
UmVuZGVyU3VyZmFjZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFj
ZVByb2dyYW0oKQorY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3Jh
bSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbSgpCiB7Ci0gICAgQVNT
RVJUKG1fcmVuZGVyU3VyZmFjZVByb2dyYW0pOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwot
ICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CisgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOworICAgIGlmICghbV9yZW5kZXJQ
YXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CiAgICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOworICAg
IHJldHVybiBtX3JlbmRlclBhc3NQcm9ncmFtLmdldCgpOwogfQogCi1jb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlJlbmRlclN1cmZhY2VQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQSgpCitjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlJlbmRlclBhc3NQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1By
b2dyYW1BQSgpCiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEpCi0gICAgICAg
IG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3Jh
bUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsK
LSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5n
ZXQoKSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NQcm9ncmFtQUEpCisgICAgICAgIG1fcmVuZGVy
UGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4
dC5nZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgp
KSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBh
c3NQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQYXNz
UHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVy
biBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyUGFz
c1Byb2dyYW1BQS5nZXQoKTsKIH0KIAotY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtKCkKK2NvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01h
c2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbSgp
CiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZU1hc2tQcm9n
cmFtKG1fY29udGV4dC5nZXQoKSkpOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7
Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSkKKyAgICAgICAgbV9y
ZW5kZXJQYXNzTWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAg
IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6UmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEoKQorY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpCiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VN
YXNrUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBID0gYWRv
cHRQdHIobmV3IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwot
ICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewot
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYg
KCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKQorICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJv
Z3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5n
ZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQo
KSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQot
ICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLmdldCgpOworICAgIHJldHVy
biBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLmdldCgpOwogfQogCiBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtKCkKQEAgLTE3ODYsMTQgKzE3ODEsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBpZiAobV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3Jh
bSkKICAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQu
Z2V0KCkpOwogCi0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKQotICAgICAgICBt
X3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGlmIChtX3JlbmRlclN1cmZhY2VQcm9ncmFtKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9n
cmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmNsZWFu
dXAobV9jb250ZXh0LmdldCgpKTsKLSAgICBpZiAobV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKQot
ICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKKyAgICBpZiAobV9yZW5kZXJQYXNzTWFza1Byb2dyYW0pCisgICAgICAgIG1fcmVuZGVyUGFz
c01hc2tQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVy
UGFzc1Byb2dyYW0pCisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKKyAgICBpZiAobV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSkKKyAgICAgICAg
bV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAg
IGlmIChtX3JlbmRlclBhc3NQcm9ncmFtQUEpCisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1B
QS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgaWYgKG1fdGV4dHVyZVByb2dyYW0p
CiAgICAgICAgIG1fdGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKQEAg
LTE4MTksNyArMTgxNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hh
cmVkT2JqZWN0cygpCiAgICAgbV90ZXh0dXJlQ29waWVyLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJl
VXBsb2FkZXIuY2xlYXIoKTsKIAotICAgIHJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsK
KyAgICByZWxlYXNlUmVuZGVyUGFzc1RleHR1cmVzKCk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjppc0NvbnRleHRMb3N0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggMjBlODExOTM2OWZlNTg3YzlmMTEyNzEyYzM1ZjNjMDAwMDkzMWIyOS4uZmE1MmI3
MzU3ZmNkY2RlMTllYzY0MDNmOGRiODlmZmRkM2E5YTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3
UXVhZDsKIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKIGNsYXNzIENDRHJhd1F1YWQ7CiBj
bGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7
CitjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFk
OwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTc1
LDggKzc1LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRy
eVF1YWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRl
clN1cmZhY2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25z
dCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3VycmVu
dFN1cmZhY2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShj
b25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5kZXJQYXNzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRS
ZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVh
ZHNVcERpc3BsYXkoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiBodWRTaXplKSBPVkVS
UklERTsKQEAgLTkyLDE0ICs5MiwxMyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBHZW9tZXRyeUJp
bmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5n
ZXQoKTsgfQogCi0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAq
cGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgYm9vbCBnZXRGcmFtZWJ1ZmZl
clRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KTsKIAot
ICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdl
dCgpOyB9CisgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogaW1wbFRleHR1cmVNYW5hZ2VyKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbXBsVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAg
ICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFRleHR1cmVVcGxv
YWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJl
VXBsb2FkZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1
cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQorICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9j
YXRvciogaW1wbFRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lt
cGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9y
KiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNj
aXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwpAQCAtMTI4LDggKzEyNyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKik7CiAgICAgdm9p
ZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7CiAg
ICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCop
OwotICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJh
bnNmb3JtKTsKLSAgICB2b2lkIGRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZCopOworICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEND
UmVuZGVyUGFzc0RyYXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZGV2aWNlVHJhbnNmb3JtKTsKKyAgICB2b2lkIGRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0
IENDU29saWRDb2xvckRyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3VGV4dHVyZVF1YWQoY29uc3Qg
Q0NUZXh0dXJlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IEND
SU9TdXJmYWNlRHJhd1F1YWQqKTsKQEAgLTE0NCwxOCArMTQzLDE4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdZVVYo
Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAKLSAgICB2b2lkIHNldERyYXdWaWV3cG9ydFJlY3Qo
Y29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOworICAgIHZvaWQgc2V0RHJhd0ZyYW1lYnVmZmVy
UmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBmbGlwWSk7CiAKLSAgICAvLyBUaGUgY3VycmVudCBk
cmF3aW5nIHRhcmdldCBpcyBlaXRoZXIgYSBSZW5kZXJTdXJmYWNlIG9yIE1hbmFnZWRUZXh0dXJl
LiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvIHN3aXRjaCB0byBhIG5ldyBkcmF3aW5nIHRhcmdldC4K
LSAgICBib29sIHVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKik7CisgICAgLy8gVGhl
IGN1cnJlbnQgZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyUGFzcyBvciBNYW5hZ2Vk
VGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0
YXJnZXQuCisgICAgYm9vbCB1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopOwogICAg
IGJvb2wgdXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2
aWV3cG9ydFJlY3QpOwotICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1
cmZhY2UqKTsKKyAgICBib29sIGlzQ3VycmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
Kik7CiAKICAgICBib29sIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCk7CiAKLSAgICB2b2lkIGNsZWFyUmVuZGVyU3Vy
ZmFjZShDQ1JlbmRlclN1cmZhY2UqLCBDQ1JlbmRlclN1cmZhY2UqIHJvb3RSZW5kZXJTdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UpOworICAg
IHZvaWQgY2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KTsKIAotICAgIHZvaWQgcmVsZWFzZVJlbmRlclN1cmZhY2VUZXh0dXJlcygpOworICAgIHZv
aWQgcmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKIApAQCAtMTY3LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBt
X2N1cnJlbnRSZW5kZXJTdXJmYWNlOworICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9jdXJyZW50
UmVuZGVyUGFzczsKICAgICBNYW5hZ2VkVGV4dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7
CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwogCkBAIC0xODYsMTMgKzE4
NSwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UG9zVGV4LCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZD4gVGlsZUNoZWNrZXJib2FyZFByb2dy
YW07CiAKICAgICAvLyBSZW5kZXIgc3VyZmFjZSBzaGFkZXJzLgotICAgIC8vIENDUmVuZGVyU3Vy
ZmFjZTo6ZHJhd0xheWVycygpIG5lZWRzIHRvIHNlZSB0aGVzZSBwcm9ncmFtcyBjdXJyZW50bHku
Ci0gICAgLy8gRklYTUU6IERyYXcgd2l0aCBhIHF1YWQgdHlwZSBmb3IgcmVuZGVyIHN1cmZhY2Vz
IGFuZCBnZXQgcmlkIG9mIHRoaXMgZnJpZW5kbHluZXNzLgotICAgIGZyaWVuZCBjbGFzcyBDQ1Jl
bmRlclN1cmZhY2U7Ci0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NU
ZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBSZW5kZXJTdXJmYWNlUHJvZ3JhbTsKLSAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFNYXNrPiBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW07Ci0gICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYUFBPiBSZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOwotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IFJl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUmVuZGVyUGFzc1By
b2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaz4gUmVuZGVyUGFzc01hc2tQcm9ncmFtOworICAg
IHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFBQT4gUmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICB0eXBlZGVmIFByb2dyYW1C
aW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FB
PiBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQTsKIAogICAgIC8vIFRleHR1cmUgc2hhZGVycy4KICAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFRleHR1cmVQcm9ncmFtOwpAQCAtMjE4LDEwICsyMTQs
MTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBUaWxlUHJvZ3JhbVN3aXp6bGVBQSogdGlsZVByb2dy
YW1Td2l6emxlQUEoKTsKICAgICBjb25zdCBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0oKTsKIAotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiBy
ZW5kZXJTdXJmYWNlUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEq
IHJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlTWFza1By
b2dyYW0qIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbUFBKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOworICAgIGNvbnN0
IFJlbmRlclBhc3NQcm9ncmFtKiByZW5kZXJQYXNzUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRl
clBhc3NQcm9ncmFtQUEqIHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBSZW5kZXJQ
YXNzTWFza1Byb2dyYW0qIHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBKiByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogCiAgICAgY29u
c3QgVGV4dHVyZVByb2dyYW0qIHRleHR1cmVQcm9ncmFtKCk7CiAgICAgY29uc3QgVGV4dHVyZVBy
b2dyYW1GbGlwKiB0ZXh0dXJlUHJvZ3JhbUZsaXAoKTsKQEAgLTI0MiwxMCArMjM4LDEwIEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPFRpbGVQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVQcm9ncmFtU3dp
enpsZUFBOwogICAgIE93blB0cjxUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbT4gbV90aWxlQ2hlY2tl
cmJvYXJkUHJvZ3JhbTsKIAotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlUHJvZ3JhbT4gbV9yZW5k
ZXJTdXJmYWNlUHJvZ3JhbTsKLSAgICBPd25QdHI8UmVuZGVyU3VyZmFjZVByb2dyYW1BQT4gbV9y
ZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW0+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQT4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQTsKKyAgICBPd25QdHI8
UmVuZGVyUGFzc1Byb2dyYW0+IG1fcmVuZGVyUGFzc1Byb2dyYW07CisgICAgT3duUHRyPFJlbmRl
clBhc3NQcm9ncmFtQUE+IG1fcmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICBPd25QdHI8UmVuZGVy
UGFzc01hc2tQcm9ncmFtPiBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVu
ZGVyUGFzc01hc2tQcm9ncmFtQUE+IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUE7CiAKICAgICBP
d25QdHI8VGV4dHVyZVByb2dyYW0+IG1fdGV4dHVyZVByb2dyYW07CiAgICAgT3duUHRyPFRleHR1
cmVQcm9ncmFtRmxpcD4gbV90ZXh0dXJlUHJvZ3JhbUZsaXA7CkBAIC0yNTcsMTUgKzI1MywxNSBA
QCBwcml2YXRlOgogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENvbG9yUHJv
Z3JhbTsKICAgICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5
UHJvZ3JhbTsKIAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2ltcGxUZXh0dXJlTWFu
YWdlcjsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3Bp
ZXI7CiAgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7CiAgICAg
T3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0
b3I7Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9yZW5kZXJTdXJmYWNl
VGV4dHVyZUFsbG9jYXRvcjsKKyAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBt
X2ltcGxUZXh0dXJlQWxsb2NhdG9yOwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBt
X2NvbnRleHQ7CiAKLSAgICBDQ1JlbmRlclN1cmZhY2UqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2U7
CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCiAgICAgYm9v
bCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCAyODEyZDY1MmZmNjNhNzliODkyYzVlM2Q2ZWJj
NjBmZjg1OGM0YzRiLi4yY2IwYzIwNjdjYjQ1OTViNGM4ZDRhODMxN2RkY2JlNGIxYWUyNzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNjL0ND
RGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVy
ZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKQEAgLTg0LDEwICs4
NCwxMCBAQCBjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFj
ZURyYXdRdWFkKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NJT1N1cmZh
Y2VEcmF3UXVhZCo+KHRoaXMpOwogfQogCi1jb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCog
Q0NEcmF3UXVhZDo6dG9SZW5kZXJTdXJmYWNlRHJhd1F1YWQoKSBjb25zdAorY29uc3QgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvUmVuZGVyUGFzc0RyYXdRdWFkKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBSZW5kZXJTdXJmYWNlKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqPih0aGlzKTsKKyAgICBB
U1NFUlQobV9tYXRlcmlhbCA9PSBSZW5kZXJQYXNzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqPih0aGlzKTsKIH0KIAogY29uc3QgQ0NTb2xpZENv
bG9yRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaAppbmRleCBmMmQ4OWYyNzk4NzIyNjYzMTdiN2U3NjhlNjBiMWUwZjU0NjI3
Yzc1Li42ODViOTI2MDA5MDRjMWJiNjk3MDBjYzc3NzdlYjNiNjBhZmVhMDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFz
cyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7Citj
bGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwog
Y2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgICAgICBDaGVja2VyYm9hcmQsCiAgICAgICAgIERlYnVnQm9y
ZGVyLAogICAgICAgICBJT1N1cmZhY2VDb250ZW50LAotICAgICAgICBSZW5kZXJTdXJmYWNlLAor
ICAgICAgICBSZW5kZXJQYXNzLAogICAgICAgICBUZXh0dXJlQ29udGVudCwKICAgICAgICAgU29s
aWRDb2xvciwKICAgICAgICAgVGlsZWRDb250ZW50LApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9DaGVja2VyYm9hcmREcmF3UXVh
ZCgpIGNvbnN0OwogICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogdG9EZWJ1Z0JvcmRl
ckRyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogdG9JT1N1
cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFk
KiB0b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDUmVuZGVyUGFz
c0RyYXdRdWFkKiB0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29s
aWRDb2xvckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0
IENDVGV4dHVyZURyYXdRdWFkKiB0b1RleHR1cmVEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0
IENDVGlsZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmNwcAppbmRleCBlMTRkNTNiMDY0ZWI0MjNiZDFiNDcwMTk2MTE2MzM5ODhh
NWE2MDUxLi4zNDg1YTQ4YTRhYTQxNjhlZTBkMDQxYmU3ZDEwM2FiYmVjYTI1OTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIENDSGVh
ZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAg
IG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+cmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5h
Z2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsK
IAogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNl
dHRpbmdzKCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVl
ZCB0by4uLgpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICB7CiAgICAgICAgIFBs
YXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKIAotICAgICAgICBtX2h1
ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX2h1
ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBib29sIHVwbG9hZGVk
VmlhTWFwID0gZmFsc2U7CiAgICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMo
KS51c2luZ01hcFN1YikgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDJjY2JmMjIzYTYxMjYzNWQ1NjA2YTE3Yjc1MzBlODc0YTM4ZjE2OWYuLmYwM2QxN2M3MDk2OTU5
MzAxYWFjYzNlODVlOGU4NGY0ZTNlMjcyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zMDMsOSAr
MzAyLDEwIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2Vz
KENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAKICAgICAgICAgb2NjbHVzaW9uVHJh
Y2tlci5lbnRlckxheWVyKGl0KTsKIAotICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1
dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQtPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3Qo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyKTsKLSAgICAgICAgZWxzZSBpZiAoaXQucmVw
cmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSAmJiAg
IWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoaXQucmVwcmVzZW50
c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQtPnJlbmRlclN1cmZhY2UoKS0+c2Np
c3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJp
YnV0aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCpp
dCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICB9
IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3Qo
KS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJSZW5kZXJlci5nZXQoKSwgY29udGV4dCgpKTsKICAgICAg
ICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwg
aGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgfQpAQCAtMzk5LDE5ICszOTksMjMgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlz
LCAwKTsKICAgICBBU1NFUlQoY2FuRHJhdygpKTsKKyAgICBBU1NFUlQoIWZyYW1lLnJlbmRlclBh
c3Nlcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGlt
ZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFs
dWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVt
J3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCiAKKyAgICAvLyBUaGUgcm9vdCBSZW5kZXJQYXNzIGlz
IHRoZSBsYXN0IG9uZSB0byBiZSBkcmF3bi4KKyAgICBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQ
YXNzID0gZnJhbWUucmVuZGVyUGFzc2VzLmxhc3QoKS5nZXQoKTsKKwogICAgIG1fZnBzQ291bnRl
ci0+bWFya0JlZ2lubmluZ09mRnJhbWUoY3VycmVudFRpbWUoKSk7Ci0gICAgbV9sYXllclJlbmRl
cmVyLT5iZWdpbkRyYXdpbmdGcmFtZShtX3Jvb3RMYXllckltcGwtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgbV9sYXllclJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZShyb290UmVuZGVyUGFzcyk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCk7
ICsraSkgewogICAgICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQ
YXNzZXNbaV0uZ2V0KCk7CiAKLSAgICAgICAgRmxvYXRSZWN0IHJvb3RTY2lzc29yUmVjdEluQ3Vy
cmVudFN1cmZhY2UgPSByZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCktPmNvbXB1dGVSb290U2Np
c3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKG1fcm9vdFNjaXNzb3JSZWN0KTsKLSAgICAgICAgbV9s
YXllclJlbmRlcmVyLT5kcmF3UmVuZGVyUGFzcyhyZW5kZXJQYXNzLCByb290U2Npc3NvclJlY3RJ
bkN1cnJlbnRTdXJmYWNlKTsKKyAgICAgICAgRmxvYXRSZWN0IGZyYW1lYnVmZmVyRGFtYWdlUmVj
dCA9IHJlbmRlclBhc3MtPnRhcmdldFN1cmZhY2UoKS0+Y29tcHV0ZVJvb3RTY2lzc29yUmVjdElu
Q3VycmVudFN1cmZhY2UobV9yb290U2Npc3NvclJlY3QpOworICAgICAgICBtX2xheWVyUmVuZGVy
ZXItPmRyYXdSZW5kZXJQYXNzKHJlbmRlclBhc3MsIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CiAg
ICAgfQogCiAgICAgaWYgKG1fZGVidWdSZWN0SGlzdG9yeS0+ZW5hYmxlZChzZXR0aW5ncygpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDY2ZWVmMzlmY2E3ODBkZWNkZjY0NzNhZmFi
NGQ4MGEwM2ZjOGM3ZWIuLjA4NDI5OTZhYjg4NWUyNmU5ZjgyZmUxNzQwZDRkMTk0ZjUwMWNkMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCIKICNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggNWQz
NDczNTkwMmNhOWJlNjEwYWMzZjM1ZjZhMTk5MDUzMzcxOWNhYS4uMGUzYWZjMDQ2OTJlMGJkYmI1
ZTRjYzZhYTE0NDA2ZDhhMWQ5YWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0
ZShDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UpCiAKIENDUmVuZGVyUGFzczo6Q0NSZW5k
ZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSkKICAgICA6IG1fdGFyZ2V0U3Vy
ZmFjZSh0YXJnZXRTdXJmYWNlKQorICAgICwgbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3QodGFyZ2V0
U3VyZmFjZS0+Y29udGVudFJlY3QoKSkKIHsKICAgICBBU1NFUlQobV90YXJnZXRTdXJmYWNlKTsK
IH0KQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5
ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXAKICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCi12
b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXll
ckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyKQor
dm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5
ZXJJbXBsKiBsYXllciwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNz
LCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyKQogewogICAgIC8vIEZJ
WE1FOiByZW5kZXIgc3VyZmFjZSBsYXllcnMgc2hvdWxkIGJlIGEgQ0NMYXllckltcGwtZGVyaXZl
ZCBjbGFzcyBhbmQKICAgICAvLyBub3QgYmUgaGFuZGxlZCBzcGVjaWFsbHkgaGVyZS4KQEAgLTY4
LDcgKzY5LDcgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFj
ZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXMKIAogICAgIE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRlU2hhcmVkUXVhZFN0
YXRlKCk7CiAgICAgYm9vbCBpc1JlcGxpY2EgPSBmYWxzZTsKLSAgICBzdXJmYWNlLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVwbGljYSk7CisgICAg
c3VyZmFjZS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBp
c1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MpOwogICAgIG1fc2hhcmVkUXVhZFN0YXRl
TGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiAKICAgICBpZiAoIXN1cmZh
Y2UtPmhhc1JlcGxpY2EoKSkKQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXMKICAgICAvLyBBZGQgcmVwbGljYSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0aGF0IGl0IGFwcGVh
cnMgYmVsb3cgdGhlIHN1cmZhY2UuCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByZXBs
aWNhU2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0
ZSgpOwogICAgIGlzUmVwbGljYSA9IHRydWU7Ci0gICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgcmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhKTsKKyAgICBz
dXJmYWNlLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCByZXBsaWNhU2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCBpc1JlcGxpY2EsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MpOwogICAgIG1fc2hhcmVkUXVh
ZFN0YXRlTGlzdC5hcHBlbmQocmVwbGljYVNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDAzNThlZWM5MThiOGYxMDgyZDJlYjQ1ZjBkODdi
ZDlhODk0NjMzNDIuLjY0OWRiYWNkY2RhOWZhMDA3ZGI3ZTBiMmQxYmUxZTMwOTVlMDlhNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC01NiwxNyArNTYsMjAgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVuZGVyU3VyZmFjZSopOwog
CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25U
cmFja2VySW1wbCosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgdm9pZCBhcHBlbmRRdWFk
c0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlcklt
cGwqKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJ
bXBsKiwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1
c2lvblRyYWNrZXJJbXBsKik7CiAgICAgdm9pZCBhcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xh
eWVySW1wbCogcm9vdExheWVyLCBjb25zdCBDb2xvciYgc2NyZWVuQmFja2dyb3VuZENvbG9yLCBj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBx
dWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KICAgICBDQ1JlbmRlclN1cmZh
Y2UqIHRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2U7IH0KKyAg
ICAvLyBUaGlzIGRlbm90ZXMgdGhlIGJvdW5kcyBpbiBwaHlzaWNhbCBwaXhlbHMgb2YgdGhlIG91
dHB1dCBnZW5lcmF0ZWQgYnkgdGhpcyBSZW5kZXJQYXNzLgorICAgIGNvbnN0IEludFJlY3QmIGZy
YW1lYnVmZmVyT3V0cHV0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVidWZmZXJPdXRwdXRS
ZWN0OyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NSZW5kZXJQYXNzKENDUmVuZGVyU3Vy
ZmFjZSopOwogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX3RhcmdldFN1cmZhY2U7CiAgICAgQ0NR
dWFkTGlzdCBtX3F1YWRMaXN0OworICAgIEludFJlY3QgbV9mcmFtZWJ1ZmZlck91dHB1dFJlY3Q7
CiAgICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBtX3NoYXJlZFF1YWRTdGF0
ZUxpc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDJkZjA3NjJlNGIwZDBlOGQwY2E4MzU5MDI1MzIwMWQwMWFmZTIyNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3Mq
IHJlbmRlclBhc3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dy
b3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpCit7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1JlbmRlclBhc3NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBy
ZW5kZXJQYXNzLCBpc1JlcGxpY2EsIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4
dHVyZUlkKSk7Cit9CisKK0NDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGlj
YSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNr
VGV4dHVyZUlkKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6
OlJlbmRlclBhc3MsIHF1YWRSZWN0KQorICAgICwgbV9yZW5kZXJQYXNzKHJlbmRlclBhc3MpCisg
ICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCisgICAgLCBtX2ZpbHRlcnMoZmlsdGVycykKKyAg
ICAsIG1fYmFja2dyb3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMpCisgICAgLCBtX21hc2tU
ZXh0dXJlSWQobWFza1RleHR1cmVJZCkKK3sKKyAgICBBU1NFUlQobV9sYXllcik7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYzZmMjYw
NzFhMzNjMDIzMDZhZWFkOWUwOGIwODczMzM0ZTMxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyUGFzc0RyYXdR
dWFkX2gKKyNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NE
cmF3UXVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBD
Q1JlbmRlclBhc3M7CisKK2NsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVibGljIENDRHJh
d1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzc0RyYXdRdWFkKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVu
ZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3Vu
ZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOworCisgICAgY29uc3QgQ0NSZW5kZXJQ
YXNzKiByZW5kZXJQYXNzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzOyB9CisgICAgYm9v
bCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQorICAgIHVuc2lnbmVk
IG1hc2tUZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXh0dXJlSWQ7IH0KKworICAg
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsdGVyczsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
YmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9
CisKK3ByaXZhdGU6CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxp
Y2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFz
a1RleHR1cmVJZCk7CisKKyAgICBjb25zdCBDQ1JlbmRlclBhc3MqIG1fcmVuZGVyUGFzczsKKyAg
ICBib29sIG1faXNSZXBsaWNhOworICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2Zp
bHRlcnM7CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRl
cnM7CisgICAgdW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IGQ2MmY1ZjlkYjM2YjE2NmE4NzJlODg5
NzA0ODU5OGI3NmQ4NGIwYTAuLmRkYWJkNTI4YzhmZDFkMGJjZDU2YjIwMzcwZGM1M2RkMDMwMjJl
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMzksNyArMzksNyBAQAog
I2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgog
I2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNs
dWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg4LDcg
Kzg4LDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVjdCgp
IGNvbnN0CiAKIGJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQ29udGVudHNUZXh0dXJlKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIHsKLSAgICBUZXh0dXJlTWFuYWdl
ciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1h
bmFnZXIoKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRl
cmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlmICghbV9jb250ZW50c1RleHR1cmUp
CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0
dXJlTWFuYWdlcik7CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBDQ1JlbmRlclN1cmZhY2U6Omhh
c1ZhbGlkQ29udGVudHNUZXh0dXJlKCkgY29uc3QKIAogYm9vbCBDQ1JlbmRlclN1cmZhY2U6OnBy
ZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCiB7Ci0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJl
ci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CisgICAgVGV4dHVyZU1hbmFnZXIqIHRl
eHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCk7CiAKICAg
ICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUpCiAgICAgICAgIG1fYmFja2dyb3VuZFRleHR1cmUg
PSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKQEAgLTI1Niw3ICsyNTYs
NyBAQCBGbG9hdFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5D
dXJyZW50U3VyZmFjZShjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiBDQ01hdGhVdGlsOjpwcm9q
ZWN0Q2xpcHBlZFJlY3QoaW52ZXJzZVNjcmVlblNwYWNlVHJhbnNmb3JtLCByb290U2Npc3NvclJl
Y3QpOwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JS
ZXBsaWNhKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wgZm9yUmVw
bGljYSwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogewogICAgIEFTU0VSVCghZm9y
UmVwbGljYSB8fCBoYXNSZXBsaWNhKCkpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBDQ1Jl
bmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVk
UXVhZFN0YXRlKiBzaGEKIAogICAgIGludCBtYXNrVGV4dHVyZUlkID0gbWFza0xheWVyID8gbWFz
a0xheWVyLT5jb250ZW50c1RleHR1cmVJZCgpIDogMDsKIAotICAgIHF1YWRMaXN0LmFwcGVuZFN1
cmZhY2UoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNv
bnRlbnRSZWN0KCksIG1fb3duaW5nTGF5ZXIsIGZvclJlcGxpY2EsIGZpbHRlcnMoKSwgYmFja2dy
b3VuZEZpbHRlcnMoKSwgbWFza1RleHR1cmVJZCkpOworICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZh
Y2UoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRS
ZWN0KCksIHJlbmRlclBhc3MsIGZvclJlcGxpY2EsIGZpbHRlcnMoKSwgYmFja2dyb3VuZEZpbHRl
cnMoKSwgbWFza1RleHR1cmVJZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5o
CmluZGV4IGM0YmI5OTk2ZjlkZDg3YmU4ZDA1OTA4NWMzNzk0NDFmMzA5MWE5OGMuLjYyNTIzYjgy
MTJiN2UzNmQ2NWQ4MmRjNmQxYzY5YjkxYzg3NGM2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NE
YW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOworY2xhc3MgQ0NSZW5kZXJQYXNzOwog
Y2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVy
UmVuZGVyZXJDaHJvbWl1bTsKQEAgLTEzOSw3ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgUGFzc093
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAg
ICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlUmVwbGljYVNoYXJlZFF1YWRT
dGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3Qg
Q0NSZW5kZXJQYXNzKik7CisKICAgICBGbG9hdFJlY3QgY29tcHV0ZVJvb3RTY2lzc29yUmVjdElu
Q3VycmVudFN1cmZhY2UoY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3NvclJlY3QpIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzQyMzgyZjY2MzdiZTE5ZGJhYzMxMDY4
YTEwYjkxODllMTljZTgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8Q0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQ+IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IENDTGF5ZXJJbXBsKiBsYXllciwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
JiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKLXsKLSAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwg
cXVhZFJlY3QsIGxheWVyLCBpc1JlcGxpY2EsIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBt
YXNrVGV4dHVyZUlkKSk7Ci19Ci0KLUNDUmVuZGVyU3VyZmFjZURyYXdRdWFkOjpDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyLCBib29sIGlzUmVwbGlj
YSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNr
VGV4dHVyZUlkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6
OlJlbmRlclN1cmZhY2UsIHF1YWRSZWN0KQotICAgICwgbV9sYXllcihsYXllcikKLSAgICAsIG1f
aXNSZXBsaWNhKGlzUmVwbGljYSkKLSAgICAsIG1fZmlsdGVycyhmaWx0ZXJzKQotICAgICwgbV9i
YWNrZ3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycykKLSAgICAsIG1fbWFza1RleHR1cmVJ
ZChtYXNrVGV4dHVyZUlkKQotewotICAgIEFTU0VSVChtX2xheWVyKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVkYWVlMjQxOTY4MDcyNDI3ZTk3NzYzOThiNDY0ZDI1ZGFmNzUxMTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkX2gKLSNkZWZpbmUgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWRfaAotCi0jaW5j
bHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBDQ0xheWVySW1wbDsKLQotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQg
OiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVy
U3VyZmFjZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgQ0NMYXllckltcGwqLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKTsKLQotICAgIEND
TGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KLSAgICBib29sIGlz
UmVwbGljYSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBsaWNhOyB9Ci0gICAgdW5zaWduZWQgbWFz
a1RleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1RleHR1cmVJZDsgfQotCi0gICAgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJzOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNr
Z3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KLQot
cHJpdmF0ZToKLSAgICBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCosIGJvb2wgaXNSZXBsaWNhLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJl
SWQpOwotCi0gICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Ci0gICAgYm9vbCBtX2lzUmVwbGljYTsK
LSAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwotICAgIFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwotICAgIHVuc2lnbmVkIG1f
bWFza1RleHR1cmVJZDsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXgg
YTFhYTMzZjZiNjFmMzcyZmNlMzc2MTQ1NGM3MWE5ZTI4M2YyNzgxMS4uOWM5MzhhOTkwYWJjNGQ5
YjU1NTQ2OGU3MDg2ZDdiNTM2MWI2MDUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtNjgsOCAr
NjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsg
fQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJp
eCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZmFjZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3Mq
LCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiBk
ZWZhdWx0UmVuZGVyUGFzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhj
b25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3Vy
cmVudFBhc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0gMDsKQEAgLTgzLDEwICs4MywxMCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBj
b25zdCBJbnRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogcmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZU1h
bmFnZXIqIGltcGxUZXh0dXJlTWFuYWdlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFRleHR1
cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJl
VXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFRleHR1
cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogaW1wbFRleHR1cmVBbGxvY2F0b3IoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChj
b25zdCBJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
Y3BwCmluZGV4IDZiNTFjODE2OWJlZmIwMmQ3NWU0MDc0MDAzNDgyYTcxMjJjOWIzY2UuLmQxOTQ4
NGNmYmE4NDg5YzIxNTMwZmEzY2RjZTIyMDIzY2I0NDJmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTU4LDExICs1OCwxMSBAQCB2b2lkIENDU2Nyb2xs
YmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBo
aWNzQ29udGV4dAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fdGV4dHVyZSkKLSAgICAg
ICAgbV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5yZW5k
ZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAgIG1fdGV4dHVyZSA9IE1hbmFnZWRU
ZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogCiAg
ICAgLy8gVGhlIGNvbnRleHQgY291bGQgaGF2ZSBiZWVuIGxvc3Qgc2luY2UgdGhlIGxhc3QgZnJh
bWUgYW5kIHRoZSBvbGQgdGV4dHVyZQogICAgIC8vIG1hbmFnZXIgbWF5IG5vIGxvbmdlciBiZSB2
YWxpZC4KLSAgICBtX3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKGxheWVyUmVuZGVyZXItPnJl
bmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICBtX3RleHR1cmUtPnNldFRleHR1cmVN
YW5hZ2VyKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIEludFNp
emUgdGV4dHVyZVNpemUgPSBjb250ZW50Qm91bmRzKCk7CiAgICAgaWYgKCFtX3RleHR1cmUtPnJl
c2VydmUodGV4dHVyZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5
ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQKIAogICAgIHsKICAgICAgICAgUGxhdGZvcm1D
YW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwotICAgICAgICBtX3RleHR1cmUtPmJp
bmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yKCkpOworICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVy
UmVuZGVyZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBT
a2lhIHVzZXMgQkdSQSBhY3R1YWxseSwgd2UgY29ycmVjdCB0aGF0IHdpdGggdGhlIHN3aXp6bGUg
cGl4ZWwgc2hhZGVyLgogICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29u
dGV4dC0+Y29udGV4dDNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4
IGUyYmM2MzI3MmM4OTM4NmE1MjU3ODYzMDc5NGVhYjNjYjRjNzAwNzcuLmJhYzliZTRjMDlhYzBh
OTEzZGVkZTc4NDBmZjMwNDBkMzI0YzI5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllcklt
cGwuY3BwCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCBib29sIENDVmlkZW9MYXllckltcGw6OnJlc2Vy
dmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1lLCBHQzNEZQogICAg
ICAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZS5pc1plcm8oKSB8fCByZXF1aXJlZFRleHR1cmVT
aXplLndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6ZSB8fCByZXF1aXJlZFRleHR1cmVTaXplLmhlaWdo
dCgpID4gbWF4VGV4dHVyZVNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKSB7Ci0gICAgICAgICAgICBtX3RleHR1
cmVzW3BsYW5lXS5tX3RleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVy
ZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICAgICAgICAgIG1fdGV4dHVy
ZXNbcGxhbmVdLm1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJl
ci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogICAgICAgICAgICAgaWYgKCFtX3RleHR1cmVzW3Bs
YW5lXS5tX3RleHR1cmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IEludFNpemUoKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoZSByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIg
bWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIHJlY3JlYXRlZCBzaW5jZSB0aGUgbGFzdCBmcmFt
ZSwgc28gcGFzcyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgIC8vIFRoZSBpbXBsVGV4dHVyZU1h
bmFnZXIgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIHJlY3JlYXRlZCBzaW5jZSB0aGUgbGFz
dCBmcmFtZSwgc28gcGFzcyB0aGUgbmV3IG9uZS4KICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBu
by1vcCBpZiB0aGUgVGV4dHVyZU1hbmFnZXIgaXMgc3RpbGwgYXJvdW5kLgotICAgICAgICAgICAg
bV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcihsYXllclJlbmRl
cmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAgICAgICBtX3RleHR1
cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKGxheWVyUmVuZGVyZXItPmlt
cGxUZXh0dXJlTWFuYWdlcigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV90ZXh0dXJlc1tw
bGFuZV0ubV90ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkKICAgICAgICAg
ICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUo
ZnJhbWUsIHBsYW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggN2ZhYTQzZDI3ZDE2NjhjOGFhYzMw
ZGQxMmQxYzQ5NDI5MTYzMjMwNC4uM2U5MDZiYmVlMWVhODVmY2Q2MmZhZmQxNDFjMzQ2OWNiZTIx
OTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEzODgsNyArMTM4OCw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udHJpYnV0aW5nTGF5ZXJFbXB0eVNjaXNzb3JQYXJ0aWFs
U3dhcCkKICAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKICAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNb
MV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlNv
bGlkQ29sb3IsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwo
KSk7Ci0gICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJTdXJmYWNlLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkpOworICAgICAgICBFWFBF
Q1RfRVEoQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFk
TGlzdCgpWzBdLT5tYXRlcmlhbCgpKTsKICAgICB9CiB9CiAKQEAgLTE0MDksNyArMTQwOSw3IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udHJpYnV0aW5nTGF5ZXJFbXB0eVNj
aXNzb3JOb1BhcnRpYWxTd2FwKQogICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRlclBh
c3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOwogICAgICAgICBBU1NFUlRfRVEoMVUsIGZyYW1l
LnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
Q0NEcmF3UXVhZDo6U29saWRDb2xvciwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgp
WzBdLT5tYXRlcmlhbCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlJlbmRlclN1
cmZhY2UsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwoKSk7
CisgICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggMzE0ODJlZDk5NzE4MDZlZmZkMGFhODhlODdmOWM1OWYwMzlkMTA4
Mi4uZTg2ZmQwYmUxMDkyZmY2YmJlMGVlZjk2NWYwZjRlN2EwYzA2MThlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jvb3RMYXll
cihDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKQogICAgIHsKICAgICAgICAgbV9yb290TGF5ZXItPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgbV9yb290UmVuZGVyUGFzcyA9IENDUmVuZGVy
UGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KIAogICAg
IC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4KQEAgLTgxLDEyICs4MiwxMyBAQCBwdWJsaWM6
CiAgICAgLy8gTWV0aG9kcyBhZGRlZCBmb3IgdGVzdC4KICAgICBpbnQgc2V0RnVsbFJvb3RMYXll
ckRhbWFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291
bnQ7IH0KIAotICAgIENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXll
ci5nZXQoKTsgfQorICAgIENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MoKSB7IHJldHVybiBt
X3Jvb3RSZW5kZXJQYXNzLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgaW50IG1fc2V0RnVsbFJv
b3RMYXllckRhbWFnZUNvdW50OwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBtX2ltcGxU
aHJlYWQ7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllcjsKKyAgICBPd25QdHI8
Q0NSZW5kZXJQYXNzPiBtX3Jvb3RSZW5kZXJQYXNzOwogfTsKIAogY2xhc3MgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewpAQCAtMTk0LDcg
KzE5Niw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBEaXNjYXJkZWRCYWNr
YnVmZmVySXNSZWNyZWF0cmVkRm9yU2NvcGVEdXJhdGlvCiAgICAgRVhQRUNUX1RSVUUobV9sYXll
clJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKICAgICBFWFBFQ1Rf
RVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKIAotICAg
IG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmJlZ2luRHJhd2luZ0ZyYW1lKG1fbW9ja0NsaWVudC5y
b290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1
bS5iZWdpbkRyYXdpbmdGcmFtZShtX21vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKSk7CiAgICAg
RVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJk
ZWQoKSk7CiAKICAgICBzd2FwQnVmZmVycygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145605</attachid>
            <date>2012-06-04 10:50:10 -0700</date>
            <delta_ts>2012-06-04 12:53:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-88132-20120604135009.patch</filename>
            <type>text/plain</type>
            <size>80876</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkzMzI2MWJiMTJkZWFl
NmNiMmI2ZWMzOTUwM2YyNTI3MzA3YmE5MS4uMzVjNDIyZjRkZjA3MzZmYTM5NDdmOWM4Mzk1YmE2
Y2NkZDBhNjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wNi0wNCAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1h
a2UgTGF5ZXJSZW5kZXJlckNocm9taXVtIHVzZSBSZW5kZXJQYXNzZXMgaW5zdGVhZCBvZiBSZW5k
ZXJTdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODgxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBwYXJ0bHkgcmVuYW1pbmcsIHBhcnRseSBtb3ZpbmcgZGF0YSBpbnRv
IENDUmVuZGVyUGFzcworICAgICAgICBhbmQgQ0NSZW5kZXJQYXNzRHJhd1F1YWQuIExheWVyUmVu
ZGVyZXJDaHJvbWl1bSBzaG91bGQgYWNjZXB0IGFzIGlucHV0CisgICAgICAgIGEgc2V0IG9mIFJl
bmRlclBhc3NlcyBhbmQgdGhpcyBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZHJhd2luZy4gSXQK
KyAgICAgICAgc2hvdWxkIGhhdmUgbm8gbm90aW9uIG9mIFJlbmRlclN1cmZhY2VzIGF0IGFsbC4K
KworICAgICAgICBGaXJzdCwgd2hhdCBpc24ndCBkb25lOiBSZW5kZXJTdXJmYWNlcyBzdGlsbCBo
b2xkIHRoZSB0ZXh0dXJlcworICAgICAgICB3aGVyZSBSZW5kZXJQYXNzZXMgYXJlIGRyYXduIHRv
L2Zyb20sIHNvIHRoYXQgdGhlc2UgdGV4dHVyZXMgY2FuCisgICAgICAgIHBlcnNpc3QgYWNyb3Nz
IGZyYW1lcy4gVGhpcyB3aWxsIGJlIGFkZHJlc3NlZCBzZXBhcmF0ZWx5LgorCisgICAgICAgIE90
aGVyd2lzZSwgdGhpcyBjb21wbGV0ZWx5IHJlbW92ZXMgdGhlIGNvbmNlcHQgb2YgUmVuZGVyU3Vy
ZmFjZSBmcm9tCisgICAgICAgIExheWVyUmVuZGVyQ2hyb21pdW0gYW5kIHRoZSBDQ0RyYXdRdWFk
LCByZXBsYWNpbmcgaXQgd2l0aCBSZW5kZXJQYXNzLgorICAgICAgICBUaGUgInJlbmRlclN1cmZh
Y2VUZXh0dXJlTWFuYWdlciIgaXMgcmVuYW1lZCB0byB0aGUgImltcGxUZXh0dXJlTWFuYWdlciIK
KyAgICAgICAgYW5kIGxpa2Utd2lzZSBmb3IgdGhlIFRleHR1cmVBbGxvY2F0b3IsIGFzIHRoZXNl
IGFyZSBub3QgdXNlZAorICAgICAgICBleGNsdXNpdmVseSBmb3IgcmVuZGVyIHN1cmZhY2VzIChw
YXNzZXMpLCBhbmQgYSB0ZXh0dXJlIG1hbmFnZXIgZm9yCisgICAgICAgIHJlbmRlciBwYXNzZXMg
dGhhdCBkb2VzIG5vdCByZXF1aXJlIGEgUmVuZGVyU3VyZmFjZSogd2lsbCBiZSB0aGUgZm9jdXMK
KyAgICAgICAgb2YgZnV0dXJlIGNoYW5nZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVJlbmRlclBhc3NUZXh0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFy
UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJl
Z2luRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVm
ZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omlz
Q3VycmVudFJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1c2VSZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXNlTWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJQYXNzUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp0b1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDQ0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
SGVhZHNVcERpc3BsYXk6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
UGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoQ0NSZW5k
ZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6ZnJhbWVidWZmZXJPdXRw
dXRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NEcmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmlzUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWFza1RleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6ZmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250ZW50c1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NSZW5kZXJlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxE
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OnJlc2VydmVU
ZXh0dXJlcyk6CisKIDIwMTItMDYtMDQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTkzOTMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkYjVjZDk4MzZjODU3ZWMyYjg5MWYzYjc3NDJj
YzlkZmU1YmExMTcuLjdmNDc4OTAyM2ZjZmIxZGRmMGE1ODQ1NGJjYTUzMjNkODZlNDFmNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDYtMDQgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
YWtlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB1c2UgUmVuZGVyUGFzc2VzIGluc3RlYWQgb2YgUmVu
ZGVyU3VyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAg
ICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoRmFrZUNDUmVuZGVyZXJD
bGllbnQ6OkZha2VDQ1JlbmRlcmVyQ2xpZW50KToKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xp
ZW50Ojpyb290UmVuZGVyUGFzcyk6CisgICAgICAgIChGYWtlQ0NSZW5kZXJlckNsaWVudCk6Cisg
ICAgICAgIChURVNUX0YpOgorCiAyMDEyLTA2LTA0ICBaZWV2IExpZWJlciAgPHpsaWViZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYW51cCBzY2lzc29yIHJlY3QgY29t
cHV0YXRpb24vdXNlIHdpdGggZGFtYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDEzMWNkNDRmZmQy
YjJmYzZkMGVmMTdlYWFkZWM0MzY5ZDRkMTE2OS4uZGEzZDM4ZGJmNzdhYmJmYWIxMmIyOTI5Njk0
MWU0NzA4YWExOWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzcyOSwxMCArMzcyOSwxMCBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
RHJhd1F1YWQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggOTJlMDNh
M2Y3NjNmMjRiMWIwNWMyNDYyZWE2MTBhZDViMzNlOTM3MS4uOGRlNDQ5YzAzNGQwOGVkNTI3OTdm
Y2NkYzJhNWI1ZjUxNGRiMzY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgot
I2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYXJlZEdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJUZXh0dXJl
Q29waWVyLmgiCkBAIC02Myw3ICs2Miw3IEBACiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKLSNp
bmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5o
IgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCIKQEAgLTIzMCwxMiArMjI5LDEyIEBAIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGlu
ZykKICAgICA6IENDUmVuZGVyZXIoY2xpZW50KQotICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZSgwKQorICAgICwgbV9jdXJyZW50UmVuZGVyUGFzcygwKQogICAgICwgbV9jdXJyZW50TWFuYWdl
ZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9z
aGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkK
KyAgICAsIG1fZGVmYXVsdFJlbmRlclBhc3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQo
ZmFsc2UpCiAgICAgLCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCiAgICAgLCBtX3Rl
eHR1cmVVcGxvYWRlclNldHRpbmcodGV4dHVyZVVwbG9hZGVyU2V0dGluZykKQEAgLTM2MSw3ICsz
NjAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IGNoYXIqCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAgaWYgKCF2aXNpYmxlKQotICAgICAg
ICByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CisgICAgICAgIHJlbGVhc2VSZW5kZXJQ
YXNzVGV4dHVyZXMoKTsKIAogICAgIC8vIFRPRE86IFJlcGxhY2Ugc2V0VmlzaWJpbGl0eUNIUk9N
SVVNIHdpdGggYW4gZXh0ZW5zaW9uIHRvIGV4cGxpY2l0bHkgbWFuYWdlIGZyb250L2JhY2tidWZm
ZXJzCiAgICAgLy8gY3JidWcuY29tLzExNjA0OQpAQCAtMzcxLDIyICszNzAsMjIgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIH0K
IAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVy
ZXMoKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJQYXNzVGV4dHVy
ZXMoKQogewotICAgIGlmIChtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcikKLSAgICAgICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMo
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgaWYgKG1faW1wbFRl
eHR1cmVNYW5hZ2VyKQorICAgICAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmREZWxl
dGVBbGxUZXh0dXJlcyhtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIH0KIAogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdlZCgpCiB7CiAgICAgbV9pc1ZpZXdw
b3J0Q2hhbmdlZCA9IHRydWU7CiAKLSAgICAvLyBSZXNldCB0aGUgY3VycmVudCByZW5kZXIgc3Vy
ZmFjZSB0byBmb3JjZSBhbiB1cGRhdGUgb2YgdGhlIHZpZXdwb3J0IGFuZAotICAgIC8vIHByb2pl
Y3Rpb24gbWF0cml4IG5leHQgdGltZSB1c2VSZW5kZXJTdXJmYWNlIGlzIGNhbGxlZC4KLSAgICBt
X2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICAvLyBSZXNldCB0aGUgY3VycmVudCBSZW5k
ZXJQYXNzIHRvIGZvcmNlIGFuIHVwZGF0ZSBvZiB0aGUgdmlld3BvcnQgYW5kCisgICAgLy8gcHJv
amVjdGlvbiBtYXRyaXggbmV4dCB0aW1lIHVzZVJlbmRlclBhc3MgaXMgY2FsbGVkLgorICAgIG1f
Y3VycmVudFJlbmRlclBhc3MgPSAwOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSwgQ0NSZW5k
ZXJTdXJmYWNlKiByb290UmVuZGVyU3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFy
UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KQogewogICAgIC8vIE5vbi1yb290IGxheWVycyBzaG91bGQgY2xlYXIgdGhlaXIgZW50aXJl
IGNvbnRlbnRzIHRvIHRyYW5zcGFyZW50LiBPbiBERUJVRyBidWlsZHMsIHRoZSByb290IGxheWVy
CiAgICAgLy8gaXMgY2xlYXJlZCB0byBibHVlIHRvIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdl
cmUgbm90IGRyYXduIG9uIHRoZSBzY3JlZW4uIElmIHdlCkBAIC0zOTQsMzYgKzM5MywzNiBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3Vy
ZmFjZSogcmVuZGVyU3VyZmFjZSwgQwogICAgIC8vIGNsZWFyIHRoZSBkYW1hZ2VkIHJlZ2lvbiwg
c28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2xlYXIgdW4tY2hhbmdlZCBwb3J0aW9ucwog
ICAgIC8vIG9mIHRoZSBzY3JlZW4uCiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSAhPSByb290UmVu
ZGVyU3VyZmFjZSkKKyAgICBpZiAocmVuZGVyUGFzcyAhPSByb290UmVuZGVyUGFzcykKICAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDApKTsKICAg
ICBlbHNlCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAw
LCAxLCAxKSk7CiAKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkKLSAg
ICAgICAgc2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KHJvb3RTY2lzc29yUmVjdElu
Q3VycmVudFN1cmZhY2UpKTsKKyAgICAgICAgc2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRS
ZWN0KGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1Qp
KTsKIAogI2lmIGRlZmluZWQoTkRFQlVHKQotICAgIGlmIChyZW5kZXJTdXJmYWNlICE9IHJvb3RS
ZW5kZXJTdXJmYWNlKQorICAgIGlmIChyZW5kZXJQYXNzICE9IHJvb3RSZW5kZXJQYXNzKQogI2Vu
ZGlmCiAgICAgICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JV
RkZFUl9CSVQpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3Vy
ZmFjZSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25z
dCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVjcmVhdGVkIG9uIGZpcnN0
IHVzZQogICAgIGVuc3VyZUZyYW1lYnVmZmVyKCk7CiAKLSAgICBtX2RlZmF1bHRSZW5kZXJTdXJm
YWNlID0gZGVmYXVsdFJlbmRlclN1cmZhY2U7Ci0gICAgQVNTRVJUKG1fZGVmYXVsdFJlbmRlclN1
cmZhY2UpOworICAgIG1fZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKKyAgICBB
U1NFUlQobV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAKICAgICBzaXplX3QgY29udGVudHNNZW1vcnlV
c2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKTsKICAgICBzaXplX3QgbWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0
ZXModmlld3BvcnRTaXplKCkpOwogICAgIHNpemVfdCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMpID8gbWF4TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVz
IDogMDsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGlt
aXRCeXRlcyhuZXdMaW1pdCk7CisgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMobmV3TGltaXQpOwogCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU0LDEzICs0NTMsMTIgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRvTm9PcCgpCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVz
aCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzKGNv
bnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdS
ZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29uc3QgRmxvYXRSZWN0
JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7Ci0gICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlID0gcmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpOwotICAgIGlmICghdXNlUmVuZGVy
U3VyZmFjZShyZW5kZXJTdXJmYWNlKSkKKyAgICBpZiAoIXVzZVJlbmRlclBhc3MocmVuZGVyUGFz
cykpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNsZWFyUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJm
YWNlLCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJm
YWNlKTsKKyAgICBjbGVhclJlbmRlclBhc3MocmVuZGVyUGFzcywgbV9kZWZhdWx0UmVuZGVyUGFz
cywgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRM
aXN0ID0gcmVuZGVyUGFzcy0+cXVhZExpc3QoKTsKICAgICBmb3IgKENDUXVhZExpc3Q6OmNvbnN0
QmFja1RvRnJvbnRJdGVyYXRvciBpdCA9IHF1YWRMaXN0LmJhY2tUb0Zyb250QmVnaW4oKTsgaXQg
IT0gcXVhZExpc3QuYmFja1RvRnJvbnRFbmQoKTsgKytpdCkKQEAgLTQ5NSw4ICs0OTMsOCBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCogcXVh
ZCkKICAgICBjYXNlIENDRHJhd1F1YWQ6OklPU3VyZmFjZUNvbnRlbnQ6CiAgICAgICAgIGRyYXdJ
T1N1cmZhY2VRdWFkKHF1YWQtPnRvSU9TdXJmYWNlRHJhd1F1YWQoKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyU3VyZmFjZToKLSAgICAgICAgZHJhd1JlbmRl
clN1cmZhY2VRdWFkKHF1YWQtPnRvUmVuZGVyU3VyZmFjZURyYXdRdWFkKCkpOworICAgIGNhc2Ug
Q0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKKyAgICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKHF1YWQt
PnRvUmVuZGVyUGFzc0RyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENDRHJh
d1F1YWQ6OlNvbGlkQ29sb3I6CiAgICAgICAgIGRyYXdTb2xpZENvbG9yUXVhZChxdWFkLT50b1Nv
bGlkQ29sb3JEcmF3UXVhZCgpKTsKQEAgLTU4MCw3ICs1NzgsNyBAQCBzdGF0aWMgaW5saW5lIFNr
Qml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIs
IGNvbnN0CiAgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMs
IHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRl
ckNvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0Jh
Y2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkLCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudHNEZXZpY2VUcmFuc2Zvcm0pCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiBxdWFkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29u
dGVudHNEZXZpY2VUcmFuc2Zvcm0pCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZHJhd3MgYSBiYWNr
Z3JvdW5kIGZpbHRlciwgd2hpY2ggYXBwbGllcyBhIGZpbHRlciB0byBhbnkgcGl4ZWxzIGJlaGlu
ZCB0aGUgcXVhZCBhbmQgc2VlbiB0aHJvdWdoIGl0cyBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSBh
bGdvcml0aG0gd29ya3MgYXMgZm9sbG93czoKQEAgLTU5NiwxMyArNTk0LDEzIEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqCiAgICAgLy8KICAgICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdv
cml0aG0gb2NjdXIgYXQgc3RlcHMgMiwgMywgNCwgYW5kIDUuCiAKLSAgICBDQ1JlbmRlclN1cmZh
Y2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAg
IENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5yZW5kZXJQYXNzKCktPnRh
cmdldFN1cmZhY2UoKTsKICAgICBpZiAocXVhZC0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tn
cm91bmQgZmlsdGVycyBvbiB0aGUgcm9vdCByZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1
cmZhY2VzIG1heSBjb250YWluCiAgICAgLy8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNv
bnRlbnRzIGJlaGluZCB0aG9zZSB0cmFuc2x1Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUg
ZmlsdGVyIGFwcGxpZWQuCi0gICAgaWYgKCFpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVs
dFJlbmRlclN1cmZhY2UpKQorICAgIGlmICghaXNDdXJyZW50UmVuZGVyUGFzcyhtX2RlZmF1bHRS
ZW5kZXJQYXNzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IERvIGEgc2luZ2xl
IHJlYWRiYWNrIGZvciBib3RoIHRoZSBzdXJmYWNlIGFuZCByZXBsaWNhIGFuZCBjYWNoZSB0aGUg
ZmlsdGVyZWQgcmVzdWx0cyAob25jZSBmaWx0ZXIgdGV4dHVyZXMgYXJlIG5vdCByZXVzZWQpLgpA
QCAtNjEzLDkgKzYxMSw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgZGV2aWNlUmVj
dC5tb3ZlKC1sZWZ0LCAtdG9wKTsKICAgICBkZXZpY2VSZWN0LmV4cGFuZChsZWZ0ICsgcmlnaHQs
IHRvcCArIGJvdHRvbSk7CiAKLSAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsKKyAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1
cnJlbnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiAKLSAgICBPd25QdHI8
TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6
OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKSk7CisgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJl
OjpjcmVhdGUobV9pbXBsVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwogICAgIGlmICghZ2V0RnJhbWVi
dWZmZXJUZXh0dXJlKGRldmljZUJhY2tncm91bmRUZXh0dXJlLmdldCgpLCBkZXZpY2VSZWN0KSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC02MjksMjggKzYyNywyOCBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkKgogICAgIGlmICghZHJhd2luZ1N1cmZhY2UtPnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVy
ZSh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRS
ZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBjb25zdCBDQ1JlbmRl
clBhc3MqIHRhcmdldFJlbmRlclBhc3MgPSBtX2N1cnJlbnRSZW5kZXJQYXNzOwogICAgIGlmICh1
c2VNYW5hZ2VkVGV4dHVyZShkcmF3aW5nU3VyZmFjZS0+YmFja2dyb3VuZFRleHR1cmUoKSwgcXVh
ZC0+cXVhZFJlY3QoKSkpIHsKICAgICAgICAgLy8gQ29weSB0aGUgcmVhZGJhY2sgcGl4ZWxzIGZy
b20gZGV2aWNlIHRvIHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlLgotICAg
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07Ci0g
ICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUocXVhZC0+cXVhZFJlY3Qo
KS53aWR0aCgpIC8gMi4wLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpIC8gMi4wKTsKLSAgICAg
ICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnNjYWxlM2QocXVhZC0+cXVhZFJlY3QoKS53aWR0
aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCAxKTsKLSAgICAgICAgZGV2aWNlVG9TdXJm
YWNlVHJhbnNmb3JtLm11bHRpcGx5KGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKSk7
Ci0gICAgICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC53
aWR0aCgpIC8gMi4wLCBkZXZpY2VSZWN0LmhlaWdodCgpIC8gMi4wKTsKLSAgICAgICAgZGV2aWNl
VG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55
KCkpOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb0ZyYW1lYnVmZmVy
VHJhbnNmb3JtOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5zbGF0
ZShxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCkgLyAyLjAsIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0
KCkgLyAyLjApOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnNjYWxlM2Qo
cXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCAxKTsK
KyAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS5tdWx0aXBseShjb250ZW50c0Rl
dmljZVRyYW5zZm9ybS5pbnZlcnNlKCkpOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJh
bnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0LndpZHRoKCkgLyAyLjAsIGRldmljZVJlY3QuaGVp
Z2h0KCkgLyAyLjApOworICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLnRyYW5z
bGF0ZShkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCkpOwogCi0gICAgICAgIGNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcihmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGRldmlj
ZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0pOworICAgICAgICBjb3B5VGV4
dHVyZVRvRnJhbWVidWZmZXIoZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZp
Y2VSZWN0LnNpemUoKSwgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybSk7CiAKLSAgICAgICAg
dXNlUmVuZGVyU3VyZmFjZSh0YXJnZXRSZW5kZXJTdXJmYWNlKTsKKyAgICAgICAgdXNlUmVuZGVy
UGFzcyh0YXJnZXRSZW5kZXJQYXNzKTsKICAgICB9CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFk
KGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogewogICAgIC8vIFRoZSByZXBsaWNh
IGlzIGFsd2F5cyBkcmF3biBmaXJzdCwgc28gZnJlZSBhZnRlciBkcmF3aW5nIHRoZSBjb250ZW50
cy4KICAgICBib29sIHNob3VsZFJlbGVhc2VUZXh0dXJlcyA9ICFxdWFkLT5pc1JlcGxpY2EoKTsK
IAotICAgIENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5sYXllcigpLT5y
ZW5kZXJTdXJmYWNlKCk7CisgICAgQ0NSZW5kZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSA9IHF1
YWQtPnJlbmRlclBhc3MoKS0+dGFyZ2V0U3VyZmFjZSgpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggcmVuZGVyVHJhbnNmb3JtID0gcXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKTsKICAgICAv
LyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRz
IGludGVuZGVkIHNpemUuCkBAIC03MDUsNyArNzAzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZCoKICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyQWxw
aGFMb2NhdGlvbiA9IC0xOwogICAgIGlmICh1c2VBQSAmJiB1c2VNYXNrKSB7Ci0gICAgICAgIGNv
bnN0IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtQUEoKTsKKyAgICAgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIHBy
b2dyYW0gPSByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogICAgICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtNzE1LDcgKzcxMyw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqCiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2Nh
dGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgIH0g
ZWxzZSBpZiAoIXVzZUFBICYmIHVzZU1hc2spIHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7CisgICAg
ICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNr
UHJvZ3JhbSgpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0o
cHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDAp
KTsKIApAQCAtNzIzLDcgKzcyMSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAgICAgICAg
IHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9j
YXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgIH0gZWxzZSBpZiAodXNlQUEgJiYgIXVzZU1h
c2spIHsKLSAgICAgICAgY29uc3QgUmVuZGVyU3VyZmFjZVByb2dyYW1BQSogcHJvZ3JhbSA9IHJl
bmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKKyAgICAgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW1B
QSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKICAgICAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTczMiw3ICs3MzAsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVy
U3VyZmFjZURyYXdRdWFkKgogICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9j
YXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBSZW5kZXJTdXJmYWNlUHJvZ3JhbSogcHJvZ3JhbSA9IHJl
bmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAgICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtKiBw
cm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW0oKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNh
bXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTEwNjYsOSArMTA2NCw4IEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjb3B5RnJhbWVUb1RleHR1cmVzKGNvbnN0IENDVmlkZW9EcmF3UXVh
ZCogcXVhZCkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5UGxhbmVUb1RleHR1cmUo
Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkLCBjb25zdCB2b2lkKiBwbGFuZSwgaW50IGluZGV4
KQogewogICAgIENDVmlkZW9MYXllckltcGw6OlRleHR1cmUmIHRleHR1cmUgPSBxdWFkLT50ZXh0
dXJlcygpW2luZGV4XTsKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSByZW5kZXJT
dXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpOwogICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAg
dGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgYWxsb2NhdG9y
KTsKKyAgICB0ZXh0dXJlLm1fdGV4dHVyZS0+YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBt
X2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0
dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7CiAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVy
ZS5tX3RleHR1cmUtPnNpemUoKTsKIApAQCAtMTIwMywxMyArMTIwMCwxMyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0dXJlKiBodWRU
ZXh0dXJlLCBjb25zdAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymxl
bmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlO
VVNfU1JDX0FMUEhBKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKLSAgICB1c2VSZW5kZXJTdXJmYWNlKG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UpOworICAgIHVzZVJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVy
UGFzcyk7CiAKICAgICBjb25zdCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIHByb2dyYW0gPSBoZWFk
c1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0
aWFsaXplZCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250
ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsK
LSAgICBodWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHJlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29u
dGV4dC5nZXQoKSwgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTIyNiwxNCArMTIyMywxNCBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVT
VCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6QkxFTkQpKTsKIAotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnBy
b3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RB
bGxUZXh0dXJlcygpOwogCiAgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7CiAgICAgc2l6
ZV90IHJlY2xhaW1MaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUoKSk7CiAgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4g
Y29udGVudHNNZW1vcnlVc2VCeXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNl
Qnl0ZXMgOiAwOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJy
ZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKLSAgICBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7Ci0gICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFu
YWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CisgICAg
bV9pbXBsVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQp
OworICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9pbXBs
VGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0b0dMTWF0cml4KGZsb2F0KiBmbGF0dGVuZWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtKQpAQCAtMTI5Myw3ICsxMjkwLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXcKIAog
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQg
dGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBkcmF3TWF0cml4KQogewotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiBw
cm9ncmFtID0gcmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKKyAgICBjb25zdCBSZW5kZXJQYXNzUHJv
Z3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQcm9ncmFtKCk7CiAKICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CkBAIC0xNDM1LDUwICsxNDMyLDQ4IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY2NDb250ZXh0LmdldCgp
LCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICB0ZXh0dXJlLT5i
aW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJl
Y3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVu
dFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQorYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
KiByZW5kZXJQYXNzKQogewotICAgIC8vIElmIHJlbmRlclN1cmZhY2UgaXMgMCwgd2UgY2FuJ3Qg
dGVsbCBpZiB3ZSBhcmUgYWxyZWFkeSB1c2luZyBpdCwgc2luY2UgbV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZSBpcwotICAgIC8vIGluaXRpYWxpemVkIHRvIDAuCi0gICAgcmV0dXJuIG1fY3VycmVudFJl
bmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFjZSAmJiAhbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7
CisgICAgcmV0dXJuIG1fY3VycmVudFJlbmRlclBhc3MgPT0gcmVuZGVyUGFzcyAmJiAhbV9jdXJy
ZW50TWFuYWdlZFRleHR1cmU7CiB9CiAKLWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VS
ZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK2Jvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVy
UGFzcykKIHsKLSAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKKyAg
ICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gcmVuZGVyUGFzczsKICAgICBtX2N1cnJlbnRNYW5hZ2Vk
VGV4dHVyZSA9IDA7CiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlKSB7CisgICAgaWYgKHJlbmRlclBhc3MgPT0gbV9kZWZhdWx0UmVuZGVyUGFzcykgewog
ICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKLSAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVj
dChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLCB0cnVlKTsKKyAgICAgICAgc2V0RHJhd0Zy
YW1lYnVmZmVyUmVjdChyZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghcmVuZGVyU3VyZmFjZS0+
cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0aGlzKSkKKyAgICBpZiAoIXJlbmRlclBhc3MtPnRhcmdl
dFN1cmZhY2UoKS0+cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0aGlzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShyZW5kZXJTdXJm
YWNlLT5jb250ZW50c1RleHR1cmUoKSwgcmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7Cisg
ICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShyZW5kZXJQYXNzLT50YXJnZXRTdXJm
YWNlKCktPmNvbnRlbnRzVGV4dHVyZSgpLCByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJl
Y3QoKSk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVy
ZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQog
ewotICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSAwOworICAgIG1fY3VycmVudFJlbmRlclBh
c3MgPSAwOwogICAgIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID0gdGV4dHVyZTsKIAogICAgIHJl
dHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUodGV4dHVyZSwgdmlld3BvcnRSZWN0KTsKIH0K
IAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQorYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZnJhbWVidWZmZXJSZWN0KQogewogICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKICAgICBSZWZQ
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGUzRChtX2NvbnRleHQpOwotICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNjQ29u
dGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAg
dGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0
dXJlQWxsb2NhdG9yLmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAo
bV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBA
IC0xNDg3LDcgKzE0ODIsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1l
YnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjbwogICAgIH0KICNlbmRp
ZgogCi0gICAgc2V0RHJhd1ZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKKyAgICBz
ZXREcmF3RnJhbWVidWZmZXJSZWN0KGZyYW1lYnVmZmVyUmVjdCwgZmFsc2UpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0xNDk2LDIxICsxNDkxLDIxIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUs
IGNvCiAvLyBzY2lzc29yUmVjdCBoYXMgaXRzIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQgY29ybmVy
IG9mIHRoZSBjdXJyZW50IHZpc2libGUgcmVjdC4KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQogewotICAgIElu
dFJlY3QgY29udGVudFJlY3QgPSAobV9jdXJyZW50UmVuZGVyU3VyZmFjZSA/IG1fY3VycmVudFJl
bmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkgOiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5jb250
ZW50UmVjdCgpKTsKKyAgICBJbnRSZWN0IGZyYW1lYnVmZmVyT3V0cHV0UmVjdCA9IChtX2N1cnJl
bnRSZW5kZXJQYXNzID8gbV9jdXJyZW50UmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0
KCkgOiBtX2RlZmF1bHRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiAKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJ
U1NPUl9URVNUKSk7CiAKICAgICAvLyBUaGUgc2Npc3NvciBjb29yZGluYXRlcyBtdXN0IGJlIHN1
cHBsaWVkIGluIHZpZXdwb3J0IHNwYWNlIHNvIHdlIG5lZWQgdG8gb2Zmc2V0Ci0gICAgLy8gYnkg
dGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJl
bnQgcmVuZGVyIHN1cmZhY2UuCi0gICAgaW50IHNjaXNzb3JYID0gc2Npc3NvclJlY3QueCgpIC0g
Y29udGVudFJlY3QueCgpOworICAgIC8vIGJ5IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUg
dG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHJlbmRlciBwYXNzLgorICAgIGludCBzY2lz
c29yWCA9IHNjaXNzb3JSZWN0LngoKSAtIGZyYW1lYnVmZmVyT3V0cHV0UmVjdC54KCk7CiAgICAg
Ly8gV2hlbiByZW5kZXJpbmcgdG8gdGhlIGRlZmF1bHQgcmVuZGVyIHN1cmZhY2Ugd2UncmUgcmVu
ZGVyaW5nIHVwc2lkZSBkb3duIHNvIHRoZSB0b3AKICAgICAvLyBvZiB0aGUgR0wgc2Npc3NvciBp
cyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4KICAgICAvLyBCdXQsIGlmIHJlbmRlcmluZyB0byBv
ZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJzZSBvdXIgc2Vuc2Ugb2YgJ3Vwc2lkZSBkb3duJy4K
ICAgICBpbnQgc2Npc3Nvclk7Ci0gICAgaWYgKGlzQ3VycmVudFJlbmRlclN1cmZhY2UobV9kZWZh
dWx0UmVuZGVyU3VyZmFjZSkpCi0gICAgICAgIHNjaXNzb3JZID0gbV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkgLSBtX2N1
cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLnkoKSk7CisgICAgaWYgKGlzQ3VycmVu
dFJlbmRlclBhc3MobV9kZWZhdWx0UmVuZGVyUGFzcykpCisgICAgICAgIHNjaXNzb3JZID0gZnJh
bWVidWZmZXJPdXRwdXRSZWN0LmhlaWdodCgpIC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIGZyYW1l
YnVmZmVyT3V0cHV0UmVjdC55KCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Npc3NvclkgPSBzY2lz
c29yUmVjdC55KCkgLSBjb250ZW50UmVjdC55KCk7CisgICAgICAgIHNjaXNzb3JZID0gc2Npc3Nv
clJlY3QueSgpIC0gZnJhbWVidWZmZXJPdXRwdXRSZWN0LnkoKTsKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPnNjaXNzb3Ioc2Npc3NvclgsIHNjaXNzb3JZLCBzY2lzc29yUmVjdC53aWR0
aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkpOwogfQogCkBAIC0xNTIyLDcgKzE1MTcsNyBAQCBi
b29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIC8vIFNldHMg
dGhlIGNvb3JkaW5hdGUgcmFuZ2Ugb2YgY29udGVudCB0aGF0IGVuZHMgYmVpbmcgZHJhd24gb250
byB0aGUgdGFyZ2V0IHJlbmRlciBzdXJmYWNlLgogLy8gVGhlIHRhcmdldCByZW5kZXIgc3VyZmFj
ZSBpcyBhc3N1bWVkIHRvIGhhdmUgYW4gb3JpZ2luIGF0IDAsIDAgYW5kIHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG9mCiAvLyBvZiB0aGUgZHJhd1JlY3QuCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlw
WSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KGNv
bnN0IEludFJlY3QmIGRyYXdSZWN0LCBib29sIGZsaXBZKQogewogICAgIGlmIChmbGlwWSkKICAg
ICAgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3
UmVjdC5tYXhYKCksIGRyYXdSZWN0Lm1heFkoKSwgZHJhd1JlY3QueSgpKTsKQEAgLTE1NDQsMjcg
KzE1MzksMjcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRP
YmplY3RzKCkKICAgICAvLyBXZSB3aWxsIGFsd2F5cyBuZWVkIHRoZXNlIHByb2dyYW1zIHRvIHJl
bmRlciwgc28gY3JlYXRlIHRoZSBwcm9ncmFtcyBlYWdlcmx5IHNvIHRoYXQgdGhlIHNoYWRlciBj
b21waWxhdGlvbiBjYW4KICAgICAvLyBzdGFydCB3aGlsZSB3ZSBkbyBvdGhlciB3b3JrLiBPdGhl
ciBwcm9ncmFtcyBhcmUgY3JlYXRlZCBsYXppbHkgb24gZmlyc3QgYWNjZXNzLgogICAgIG1fc2hh
cmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQo
KSkpOwotICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3Vy
ZmFjZVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbSA9
IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBt
X3RpbGVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkp
OwogICAgIG1fdGlsZVByb2dyYW1PcGFxdWUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1PcGFx
dWUobV9jb250ZXh0LmdldCgpKSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZs
dXNoKCkpOwogCi0gICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKKyAgICBtX2ltcGxUZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5
dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0
U2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4dHVyZUNvcGllciA9
IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAg
aWYgKG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZyA9PSBUaHJvdHRsZWRVcGxvYWRlcikKICAgICAg
ICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSht
X2NvbnRleHQuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBV
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7CiAgICAgbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1faW1wbFRleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVVc2FnZUhpbnQpCi0g
ICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3ItPnNldFRleHR1cmVVc2FnZUhp
bnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpOworICAg
ICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKICAgICBpZiAobV9jYXBh
YmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewogICAgICAgICBtX2NvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7Ci0gICAg
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdl
RXh0KHRydWUpOworICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJl
U3RvcmFnZUV4dCh0cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2MDMsNDcg
KzE1OTgsNDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpIZWFkc1VwRGlzcGxheVBy
b2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHMKICAgICByZXR1cm4gbV9oZWFkc1Vw
RGlzcGxheVByb2dyYW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
UmVuZGVyU3VyZmFjZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFj
ZVByb2dyYW0oKQorY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3Jh
bSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbSgpCiB7Ci0gICAgQVNT
RVJUKG1fcmVuZGVyU3VyZmFjZVByb2dyYW0pOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwot
ICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CisgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOworICAgIGlmICghbV9yZW5kZXJQ
YXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CiAgICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOworICAg
IHJldHVybiBtX3JlbmRlclBhc3NQcm9ncmFtLmdldCgpOwogfQogCi1jb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlJlbmRlclN1cmZhY2VQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQSgpCitjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlJlbmRlclBhc3NQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1By
b2dyYW1BQSgpCiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEpCi0gICAgICAg
IG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3Jh
bUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsK
LSAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5n
ZXQoKSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NQcm9ncmFtQUEpCisgICAgICAgIG1fcmVuZGVy
UGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4
dC5nZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgp
KSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBh
c3NQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9yZW5kZXJQYXNz
UHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVy
biBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyUGFz
c1Byb2dyYW1BQS5nZXQoKTsKIH0KIAotY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtKCkKK2NvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01h
c2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbSgp
CiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZU1hc2tQcm9n
cmFtKG1fY29udGV4dC5nZXQoKSkpOwotICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7
Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CisgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSkKKyAgICAgICAgbV9y
ZW5kZXJQYXNzTWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAg
IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgfQotICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6UmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEoKQorY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpCiB7Ci0gICAgaWYgKCFtX3JlbmRlclN1cmZhY2VN
YXNrUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBID0gYWRv
cHRQdHIobmV3IFJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwot
ICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewot
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYg
KCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKQorICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJv
Z3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5n
ZXQoKSkpOworICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQo
KSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQot
ICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLmdldCgpOworICAgIHJldHVy
biBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLmdldCgpOwogfQogCiBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtKCkKQEAgLTE3ODYsMTQgKzE3ODEsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBpZiAobV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3Jh
bSkKICAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQu
Z2V0KCkpOwogCi0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKQotICAgICAgICBt
X3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGlmIChtX3JlbmRlclN1cmZhY2VQcm9ncmFtKQotICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9n
cmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmNsZWFu
dXAobV9jb250ZXh0LmdldCgpKTsKLSAgICBpZiAobV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKQot
ICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKKyAgICBpZiAobV9yZW5kZXJQYXNzTWFza1Byb2dyYW0pCisgICAgICAgIG1fcmVuZGVyUGFz
c01hc2tQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1fcmVuZGVy
UGFzc1Byb2dyYW0pCisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKKyAgICBpZiAobV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSkKKyAgICAgICAg
bV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAg
IGlmIChtX3JlbmRlclBhc3NQcm9ncmFtQUEpCisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1B
QS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgaWYgKG1fdGV4dHVyZVByb2dyYW0p
CiAgICAgICAgIG1fdGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKQEAg
LTE4MTksNyArMTgxNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hh
cmVkT2JqZWN0cygpCiAgICAgbV90ZXh0dXJlQ29waWVyLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJl
VXBsb2FkZXIuY2xlYXIoKTsKIAotICAgIHJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsK
KyAgICByZWxlYXNlUmVuZGVyUGFzc1RleHR1cmVzKCk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjppc0NvbnRleHRMb3N0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggMjBlODExOTM2OWZlNTg3YzlmMTEyNzEyYzM1ZjNjMDAwMDkzMWIyOS4uZmE1MmI3
MzU3ZmNkY2RlMTllYzY0MDNmOGRiODlmZmRkM2E5YTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3
UXVhZDsKIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKIGNsYXNzIENDRHJhd1F1YWQ7CiBj
bGFzcyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7
CitjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFk
OwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTc1
LDggKzc1LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRy
eVF1YWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRl
clN1cmZhY2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25z
dCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3VycmVu
dFN1cmZhY2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShj
b25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5kZXJQYXNzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRS
ZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVh
ZHNVcERpc3BsYXkoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiBodWRTaXplKSBPVkVS
UklERTsKQEAgLTkyLDE0ICs5MiwxMyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBHZW9tZXRyeUJp
bmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5n
ZXQoKTsgfQogCi0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAq
cGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgYm9vbCBnZXRGcmFtZWJ1ZmZl
clRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KTsKIAot
ICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdl
dCgpOyB9CisgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogaW1wbFRleHR1cmVNYW5hZ2VyKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbXBsVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAg
ICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFRleHR1cmVVcGxv
YWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJl
VXBsb2FkZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1
cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQorICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9j
YXRvciogaW1wbFRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lt
cGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9y
KiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNj
aXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwpAQCAtMTI4LDggKzEyNyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKik7CiAgICAgdm9p
ZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7CiAg
ICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCop
OwotICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJh
bnNmb3JtKTsKLSAgICB2b2lkIGRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZCopOworICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEND
UmVuZGVyUGFzc0RyYXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZGV2aWNlVHJhbnNmb3JtKTsKKyAgICB2b2lkIGRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0
IENDU29saWRDb2xvckRyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3VGV4dHVyZVF1YWQoY29uc3Qg
Q0NUZXh0dXJlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IEND
SU9TdXJmYWNlRHJhd1F1YWQqKTsKQEAgLTE0NCwxOCArMTQzLDE4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkcmF3UkdCQShjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdZVVYo
Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CiAKLSAgICB2b2lkIHNldERyYXdWaWV3cG9ydFJlY3Qo
Y29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOworICAgIHZvaWQgc2V0RHJhd0ZyYW1lYnVmZmVy
UmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBmbGlwWSk7CiAKLSAgICAvLyBUaGUgY3VycmVudCBk
cmF3aW5nIHRhcmdldCBpcyBlaXRoZXIgYSBSZW5kZXJTdXJmYWNlIG9yIE1hbmFnZWRUZXh0dXJl
LiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvIHN3aXRjaCB0byBhIG5ldyBkcmF3aW5nIHRhcmdldC4K
LSAgICBib29sIHVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKik7CisgICAgLy8gVGhl
IGN1cnJlbnQgZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyUGFzcyBvciBNYW5hZ2Vk
VGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0
YXJnZXQuCisgICAgYm9vbCB1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopOwogICAg
IGJvb2wgdXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2
aWV3cG9ydFJlY3QpOwotICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1
cmZhY2UqKTsKKyAgICBib29sIGlzQ3VycmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
Kik7CiAKICAgICBib29sIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCk7CiAKLSAgICB2b2lkIGNsZWFyUmVuZGVyU3Vy
ZmFjZShDQ1JlbmRlclN1cmZhY2UqLCBDQ1JlbmRlclN1cmZhY2UqIHJvb3RSZW5kZXJTdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UpOworICAg
IHZvaWQgY2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KTsKIAotICAgIHZvaWQgcmVsZWFzZVJlbmRlclN1cmZhY2VUZXh0dXJlcygpOworICAgIHZv
aWQgcmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKIApAQCAtMTY3LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogCi0gICAgQ0NSZW5kZXJTdXJmYWNlKiBt
X2N1cnJlbnRSZW5kZXJTdXJmYWNlOworICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9jdXJyZW50
UmVuZGVyUGFzczsKICAgICBNYW5hZ2VkVGV4dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7
CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwogCkBAIC0xODYsMTMgKzE4
NSwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UG9zVGV4LCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZD4gVGlsZUNoZWNrZXJib2FyZFByb2dy
YW07CiAKICAgICAvLyBSZW5kZXIgc3VyZmFjZSBzaGFkZXJzLgotICAgIC8vIENDUmVuZGVyU3Vy
ZmFjZTo6ZHJhd0xheWVycygpIG5lZWRzIHRvIHNlZSB0aGVzZSBwcm9ncmFtcyBjdXJyZW50bHku
Ci0gICAgLy8gRklYTUU6IERyYXcgd2l0aCBhIHF1YWQgdHlwZSBmb3IgcmVuZGVyIHN1cmZhY2Vz
IGFuZCBnZXQgcmlkIG9mIHRoaXMgZnJpZW5kbHluZXNzLgotICAgIGZyaWVuZCBjbGFzcyBDQ1Jl
bmRlclN1cmZhY2U7Ci0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NU
ZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBSZW5kZXJTdXJmYWNlUHJvZ3JhbTsKLSAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFNYXNrPiBSZW5kZXJTdXJmYWNlTWFza1Byb2dyYW07Ci0gICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYUFBPiBSZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOwotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IFJl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUmVuZGVyUGFzc1By
b2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaz4gUmVuZGVyUGFzc01hc2tQcm9ncmFtOworICAg
IHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFBQT4gUmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICB0eXBlZGVmIFByb2dyYW1C
aW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FB
PiBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQTsKIAogICAgIC8vIFRleHR1cmUgc2hhZGVycy4KICAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFRleHR1cmVQcm9ncmFtOwpAQCAtMjE4LDEwICsyMTQs
MTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBUaWxlUHJvZ3JhbVN3aXp6bGVBQSogdGlsZVByb2dy
YW1Td2l6emxlQUEoKTsKICAgICBjb25zdCBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0oKTsKIAotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtKiBy
ZW5kZXJTdXJmYWNlUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VQcm9ncmFtQUEq
IHJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlTWFza1By
b2dyYW0qIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOwotICAgIGNvbnN0IFJlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbUFBKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOworICAgIGNvbnN0
IFJlbmRlclBhc3NQcm9ncmFtKiByZW5kZXJQYXNzUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRl
clBhc3NQcm9ncmFtQUEqIHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBSZW5kZXJQ
YXNzTWFza1Byb2dyYW0qIHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOworICAgIGNvbnN0IFJlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBKiByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogCiAgICAgY29u
c3QgVGV4dHVyZVByb2dyYW0qIHRleHR1cmVQcm9ncmFtKCk7CiAgICAgY29uc3QgVGV4dHVyZVBy
b2dyYW1GbGlwKiB0ZXh0dXJlUHJvZ3JhbUZsaXAoKTsKQEAgLTI0MiwxMCArMjM4LDEwIEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPFRpbGVQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVQcm9ncmFtU3dp
enpsZUFBOwogICAgIE93blB0cjxUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbT4gbV90aWxlQ2hlY2tl
cmJvYXJkUHJvZ3JhbTsKIAotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlUHJvZ3JhbT4gbV9yZW5k
ZXJTdXJmYWNlUHJvZ3JhbTsKLSAgICBPd25QdHI8UmVuZGVyU3VyZmFjZVByb2dyYW1BQT4gbV9y
ZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW0+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQT4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQTsKKyAgICBPd25QdHI8
UmVuZGVyUGFzc1Byb2dyYW0+IG1fcmVuZGVyUGFzc1Byb2dyYW07CisgICAgT3duUHRyPFJlbmRl
clBhc3NQcm9ncmFtQUE+IG1fcmVuZGVyUGFzc1Byb2dyYW1BQTsKKyAgICBPd25QdHI8UmVuZGVy
UGFzc01hc2tQcm9ncmFtPiBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVu
ZGVyUGFzc01hc2tQcm9ncmFtQUE+IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUE7CiAKICAgICBP
d25QdHI8VGV4dHVyZVByb2dyYW0+IG1fdGV4dHVyZVByb2dyYW07CiAgICAgT3duUHRyPFRleHR1
cmVQcm9ncmFtRmxpcD4gbV90ZXh0dXJlUHJvZ3JhbUZsaXA7CkBAIC0yNTcsMTUgKzI1MywxNSBA
QCBwcml2YXRlOgogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENvbG9yUHJv
Z3JhbTsKICAgICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5
UHJvZ3JhbTsKIAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2ltcGxUZXh0dXJlTWFu
YWdlcjsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3Bp
ZXI7CiAgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7CiAgICAg
T3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0
b3I7Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9yZW5kZXJTdXJmYWNl
VGV4dHVyZUFsbG9jYXRvcjsKKyAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBt
X2ltcGxUZXh0dXJlQWxsb2NhdG9yOwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBt
X2NvbnRleHQ7CiAKLSAgICBDQ1JlbmRlclN1cmZhY2UqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2U7
CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCiAgICAgYm9v
bCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJvb2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCAyODEyZDY1MmZmNjNhNzliODkyYzVlM2Q2ZWJj
NjBmZjg1OGM0YzRiLi4yY2IwYzIwNjdjYjQ1OTViNGM4ZDRhODMxN2RkY2JlNGIxYWUyNzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNjL0ND
RGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVy
ZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKQEAgLTg0LDEwICs4
NCwxMCBAQCBjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0lPU3VyZmFj
ZURyYXdRdWFkKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NJT1N1cmZh
Y2VEcmF3UXVhZCo+KHRoaXMpOwogfQogCi1jb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCog
Q0NEcmF3UXVhZDo6dG9SZW5kZXJTdXJmYWNlRHJhd1F1YWQoKSBjb25zdAorY29uc3QgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvUmVuZGVyUGFzc0RyYXdRdWFkKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBSZW5kZXJTdXJmYWNlKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqPih0aGlzKTsKKyAgICBB
U1NFUlQobV9tYXRlcmlhbCA9PSBSZW5kZXJQYXNzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqPih0aGlzKTsKIH0KIAogY29uc3QgQ0NTb2xpZENv
bG9yRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaAppbmRleCBmMmQ4OWYyNzk4NzIyNjYzMTdiN2U3NjhlNjBiMWUwZjU0NjI3
Yzc1Li42ODViOTI2MDA5MDRjMWJiNjk3MDBjYzc3NzdlYjNiNjBhZmVhMDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFz
cyBDQ0lPU3VyZmFjZURyYXdRdWFkOwotY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ7Citj
bGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwog
Y2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgICAgICBDaGVja2VyYm9hcmQsCiAgICAgICAgIERlYnVnQm9y
ZGVyLAogICAgICAgICBJT1N1cmZhY2VDb250ZW50LAotICAgICAgICBSZW5kZXJTdXJmYWNlLAor
ICAgICAgICBSZW5kZXJQYXNzLAogICAgICAgICBUZXh0dXJlQ29udGVudCwKICAgICAgICAgU29s
aWRDb2xvciwKICAgICAgICAgVGlsZWRDb250ZW50LApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9DaGVja2VyYm9hcmREcmF3UXVh
ZCgpIGNvbnN0OwogICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogdG9EZWJ1Z0JvcmRl
ckRyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogdG9JT1N1
cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFk
KiB0b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDUmVuZGVyUGFz
c0RyYXdRdWFkKiB0b1JlbmRlclBhc3NEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29s
aWRDb2xvckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0
IENDVGV4dHVyZURyYXdRdWFkKiB0b1RleHR1cmVEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0
IENDVGlsZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmNwcAppbmRleCBlMTRkNTNiMDY0ZWI0MjNiZDFiNDcwMTk2MTE2MzM5ODhh
NWE2MDUxLi4zNDg1YTQ4YTRhYTQxNjhlZTBkMDQxYmU3ZDEwM2FiYmVjYTI1OTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIENDSGVh
ZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAg
IG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+cmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5h
Z2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsK
IAogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNl
dHRpbmdzKCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVl
ZCB0by4uLgpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICB7CiAgICAgICAgIFBs
YXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKIAotICAgICAgICBtX2h1
ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX2h1
ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBib29sIHVwbG9hZGVk
VmlhTWFwID0gZmFsc2U7CiAgICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMo
KS51c2luZ01hcFN1YikgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDJjY2JmMjIzYTYxMjYzNWQ1NjA2YTE3Yjc1MzBlODc0YTM4ZjE2OWYuLjQxMTRmYzIxYjZjOTYx
ZWYxNjgxYjJiMTdmNzgxZjkzNTQxYjViYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zMDMsOSAr
MzAyLDEwIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2Vz
KENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAKICAgICAgICAgb2NjbHVzaW9uVHJh
Y2tlci5lbnRlckxheWVyKGl0KTsKIAotICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1
dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQtPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3Qo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyKTsKLSAgICAgICAgZWxzZSBpZiAoaXQucmVw
cmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSAmJiAg
IWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoaXQucmVwcmVzZW50
c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSAmJiAhaXQtPnJlbmRlclN1cmZhY2UoKS0+c2Np
c3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJp
YnV0aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCpp
dCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICB9
IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3Qo
KS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJSZW5kZXJlci5nZXQoKSwgY29udGV4dCgpKTsKICAgICAg
ICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwg
aGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgfQpAQCAtMzk5LDEzICszOTksMTcgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlz
LCAwKTsKICAgICBBU1NFUlQoY2FuRHJhdygpKTsKKyAgICBBU1NFUlQoIWZyYW1lLnJlbmRlclBh
c3Nlcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGlt
ZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFs
dWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVt
J3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCiAKKyAgICAvLyBUaGUgcm9vdCBSZW5kZXJQYXNzIGlz
IHRoZSBsYXN0IG9uZSB0byBiZSBkcmF3bi4KKyAgICBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQ
YXNzID0gZnJhbWUucmVuZGVyUGFzc2VzLmxhc3QoKS5nZXQoKTsKKwogICAgIG1fZnBzQ291bnRl
ci0+bWFya0JlZ2lubmluZ09mRnJhbWUoY3VycmVudFRpbWUoKSk7Ci0gICAgbV9sYXllclJlbmRl
cmVyLT5iZWdpbkRyYXdpbmdGcmFtZShtX3Jvb3RMYXllckltcGwtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgbV9sYXllclJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZShyb290UmVuZGVyUGFzcyk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCk7
ICsraSkgewogICAgICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQ
YXNzZXNbaV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCA2NmVlZjM5ZmNh
NzgwZGVjZGY2NDczYWZhYjRkODBhMDNmYzhjN2ViLi4wODQyOTk2YWI4ODVlMjZlOWY4MmZlMTc0
MGQ0ZDE5NGY1MDFjZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDT3ZlcmRy
YXdNZXRyaWNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwCmluZGV4IDVkMzQ3MzU5MDJjYTliZTYxMGFjM2YzNWY2YTE5OTA1MzM3MTljYWEuLjBl
M2FmYzA0NjkyZTBiZGJiNWU0Y2M2YWExNDQwNmQ4YTFkOWFmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmNwcApAQCAtNDQsNiArNDQsNyBAQCBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NS
ZW5kZXJQYXNzOjpjcmVhdGUoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKQogCiBDQ1Jl
bmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UpCiAg
ICAgOiBtX3RhcmdldFN1cmZhY2UodGFyZ2V0U3VyZmFjZSkKKyAgICAsIG1fZnJhbWVidWZmZXJP
dXRwdXRSZWN0KHRhcmdldFN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpCiB7CiAgICAgQVNTRVJUKG1f
dGFyZ2V0U3VyZmFjZSk7CiB9CkBAIC01OCw3ICs1OSw3IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjph
cHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2Vy
SW1wCiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVs
ZWFzZSgpKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3Vy
ZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2Nj
bHVzaW9uVHJhY2tlcikKK3ZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1
cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDUmVuZGVyUGFzcyogY29udHJp
YnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tl
cikKIHsKICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZhY2UgbGF5ZXJzIHNob3VsZCBiZSBhIEND
TGF5ZXJJbXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAgLy8gbm90IGJlIGhhbmRsZWQgc3BlY2lh
bGx5IGhlcmUuCkBAIC02OCw3ICs2OSw3IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFk
c0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzCiAKICAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IHN1cmZhY2UtPmNy
ZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgIGJvb2wgaXNSZXBsaWNhID0gZmFsc2U7Ci0gICAg
c3VyZmFjZS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBp
c1JlcGxpY2EpOworICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzKTsKICAgICBt
X3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwog
CiAgICAgaWYgKCFzdXJmYWNlLT5oYXNSZXBsaWNhKCkpCkBAIC03Nyw3ICs3OCw3IEBAIHZvaWQg
Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1w
bCogbGF5ZXIsIENDT2NjbHVzCiAgICAgLy8gQWRkIHJlcGxpY2EgYWZ0ZXIgdGhlIHN1cmZhY2Ug
c28gdGhhdCBpdCBhcHBlYXJzIGJlbG93IHRoZSBzdXJmYWNlLgogICAgIE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gcmVwbGljYVNoYXJlZFF1YWRTdGF0ZSA9IHN1cmZhY2UtPmNyZWF0ZVJlcGxp
Y2FTaGFyZWRRdWFkU3RhdGUoKTsKICAgICBpc1JlcGxpY2EgPSB0cnVlOwotICAgIHN1cmZhY2Ut
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlz
UmVwbGljYSk7CisgICAgc3VyZmFjZS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgcmVwbGljYVNo
YXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzKTsK
ICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUu
cmVsZWFzZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAppbmRleCAwMzU4ZWVjOTE4Yjhm
MTA4MmQyZWI0NWYwZDg3YmQ5YTg5NDYzMzQyLi42NDlkYmFjZGNkYTlmYTAwN2RiN2UwYjJkMWJl
MWUzMDk1ZTA5YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApAQCAtNTYsMTcgKzU2LDIwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShDQ1Jl
bmRlclN1cmZhY2UqKTsKIAogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1w
bCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwotICAg
IHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09j
Y2x1c2lvblRyYWNrZXJJbXBsKik7CisgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZh
Y2VMYXllcihDQ0xheWVySW1wbCosIGNvbnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVu
ZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOwogICAgIHZvaWQgYXBwZW5kUXVhZHNU
b0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgQ29sb3ImIHNjcmVlbkJh
Y2tncm91bmRDb2xvciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYpOwogCiAgICAgY29u
c3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAg
ICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRTdXJmYWNlOyB9CisgICAgLy8gVGhpcyBkZW5vdGVzIHRoZSBib3VuZHMgaW4gcGh5c2ljYWwg
cGl4ZWxzIG9mIHRoZSBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoaXMgUmVuZGVyUGFzcy4KKyAgICBj
b25zdCBJbnRSZWN0JiBmcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lYnVmZmVyT3V0cHV0UmVjdDsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDUmVuZGVy
UGFzcyhDQ1JlbmRlclN1cmZhY2UqKTsKIAogICAgIENDUmVuZGVyU3VyZmFjZSogbV90YXJnZXRT
dXJmYWNlOwogICAgIENDUXVhZExpc3QgbV9xdWFkTGlzdDsKKyAgICBJbnRSZWN0IG1fZnJhbWVi
dWZmZXJPdXRwdXRSZWN0OwogICAgIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4g
bV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
RHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYzRmZjY2YTFjNzE3M2JlNzM3NGE2MjVkYjk5Y2Y0
MDdiMWQ2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ1JlbmRl
clBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29u
c3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzcywgaXNSZXBsaWNhLCBmaWx0ZXJzLCBiYWNrZ3JvdW5k
RmlsdGVycywgbWFza1RleHR1cmVJZCkpOworfQorCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NS
ZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFz
cywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVy
cywgdW5zaWduZWQgbWFza1RleHR1cmVJZCkKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBxdWFkUmVjdCkKKyAgICAsIG1fcmVuZGVyUGFz
cyhyZW5kZXJQYXNzKQorICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNhKQorICAgICwgbV9maWx0
ZXJzKGZpbHRlcnMpCisgICAgLCBtX2JhY2tncm91bmRGaWx0ZXJzKGJhY2tncm91bmRGaWx0ZXJz
KQorICAgICwgbV9tYXNrVGV4dHVyZUlkKG1hc2tUZXh0dXJlSWQpCit7CisgICAgQVNTRVJUKG1f
cmVuZGVyUGFzcyk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNjYzZmMjYwNzFhMzNjMDIzMDZhZWFkOWUwOGIwODczMzM0ZTMxZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIENDUmVuZGVyUGFzc0RyYXdRdWFkX2gKKyNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRf
aAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0
ZXJPcGVyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDQ1JlbmRlclBhc3M7CisKK2NsYXNzIENDUmVuZGVyUGFzc0Ry
YXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
UmVuZGVyUGFzc0RyYXdRdWFkKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jl
bmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOwor
CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJQYXNzOyB9CisgICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVw
bGljYTsgfQorICAgIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21h
c2tUZXh0dXJlSWQ7IH0KKworICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQorICAgIGNvbnN0IFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tncm91bmRGaWx0ZXJzOyB9CisKK3ByaXZhdGU6CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5k
ZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5k
RmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCk7CisKKyAgICBjb25zdCBDQ1JlbmRlclBh
c3MqIG1fcmVuZGVyUGFzczsKKyAgICBib29sIG1faXNSZXBsaWNhOworICAgIFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CisgICAgdW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IGQ2
MmY1ZjlkYjM2YjE2NmE4NzJlODg5NzA0ODU5OGI3NmQ4NGIwYTAuLmRkYWJkNTI4YzhmZDFkMGJj
ZDU2YjIwMzcwZGM1M2RkMDMwMjJlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgotI2luY2x1
ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTg4LDcgKzg4LDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6
ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiAKIGJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVw
YXJlQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
IHsKLSAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVy
ZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlm
ICghbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlID0gTWFuYWdl
ZFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlcik7CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9v
bCBDQ1JlbmRlclN1cmZhY2U6Omhhc1ZhbGlkQ29udGVudHNUZXh0dXJlKCkgY29uc3QKIAogYm9v
bCBDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7Ci0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7Cisg
ICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+aW1wbFRl
eHR1cmVNYW5hZ2VyKCk7CiAKICAgICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUpCiAgICAgICAg
IG1fYmFja2dyb3VuZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5h
Z2VyKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBGbG9hdFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21w
dXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShjb25zdCBGbG9hdFJlYwogICAgIHJl
dHVybiBDQ01hdGhVdGlsOjpwcm9qZWN0Q2xpcHBlZFJlY3QoaW52ZXJzZVNjcmVlblNwYWNlVHJh
bnNmb3JtLCByb290U2Npc3NvclJlY3QpOwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBsaWNhKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNz
KQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBoYXNSZXBsaWNhKCkpOwogCkBAIC0yODYs
NyArMjg2LDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxl
ciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKIAogICAgIGludCBtYXNrVGV4dHVy
ZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250ZW50c1RleHR1cmVJZCgpIDogMDsKIAot
ICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIG1fb3duaW5nTGF5ZXIsIGZvclJlcGxp
Y2EsIGZpbHRlcnMoKSwgYmFja2dyb3VuZEZpbHRlcnMoKSwgbWFza1RleHR1cmVJZCkpOworICAg
IHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3MsIGZvclJlcGxpY2EsIGZpbHRl
cnMoKSwgYmFja2dyb3VuZEZpbHRlcnMoKSwgbWFza1RleHR1cmVJZCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IGM0YmI5OTk2ZjlkZDg3YmU4ZDA1OTA4NWMzNzk0
NDFmMzA5MWE5OGMuLjYyNTIzYjgyMTJiN2UzNmQ2NWQ4MmRjNmQxYzY5YjkxYzg3NGM2NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOwor
Y2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiBjbGFzcyBDQ0xh
eWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKQEAgLTEzOSw3ICsxNDAsOCBA
QCBwdWJsaWM6CiAgICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCkgY29uc3Q7CiAgICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3Jl
YXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSk7Cisg
ICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJv
b2wgZm9yUmVwbGljYSwgY29uc3QgQ0NSZW5kZXJQYXNzKik7CisKICAgICBGbG9hdFJlY3QgY29t
cHV0ZVJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UoY29uc3QgRmxvYXRSZWN0JiByb290
U2Npc3NvclJlY3QpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzQy
MzgyZjY2MzdiZTE5ZGJhYzMxMDY4YTEwYjkxODllMTljZTgxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVBhc3NPd25QdHI8Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ+IENDUmVuZGVyU3VyZmFjZURyYXdR
dWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29u
c3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllciwgYm9vbCBpc1JlcGxpY2Es
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1Rl
eHR1cmVJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyU3VyZmFjZURyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGxheWVyLCBpc1JlcGxpY2EsIGZpbHRlcnMs
IGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkKSk7Ci19Ci0KLUNDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkOjpDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwq
IGxheWVyLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRG
aWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJlbmRlclN1cmZhY2UsIHF1YWRSZWN0KQotICAgICwgbV9s
YXllcihsYXllcikKLSAgICAsIG1faXNSZXBsaWNhKGlzUmVwbGljYSkKLSAgICAsIG1fZmlsdGVy
cyhmaWx0ZXJzKQotICAgICwgbV9iYWNrZ3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycykK
LSAgICAsIG1fbWFza1RleHR1cmVJZChtYXNrVGV4dHVyZUlkKQotewotICAgIEFTU0VSVChtX2xh
eWVyKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkYWVlMjQxOTY4MDcyNDI3ZTk3NzYzOThi
NDY0ZDI1ZGFmNzUxMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkX2gKLSNkZWZpbmUgQ0NSZW5kZXJTdXJm
YWNlRHJhd1F1YWRfaAotCi0jaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0xheWVySW1wbDsKLQotY2xhc3MgQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyU3VyZmFjZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqLCBib29sIGlzUmVwbGlj
YSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNr
VGV4dHVyZUlkKTsKLQotICAgIENDTGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5ZXI7IH0KLSAgICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBsaWNh
OyB9Ci0gICAgdW5zaWduZWQgbWFza1RleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1Rl
eHR1cmVJZDsgfQotCi0gICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZEZpbHRlcnM7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCos
IGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMs
IHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQpOwotCi0gICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Ci0g
ICAgYm9vbCBtX2lzUmVwbGljYTsKLSAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9m
aWx0ZXJzOwotICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0
ZXJzOwotICAgIHVuc2lnbmVkIG1fbWFza1RleHR1cmVJZDsKLX07Ci0KLX0KLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKaW5kZXggYTFhYTMzZjZiNjFmMzcyZmNlMzc2MTQ1NGM3MWE5ZTI4M2Yy
NzgxMS4uOWM5MzhhOTkwYWJjNGQ5YjU1NTQ2OGU3MDg2ZDdiNTM2MWI2MDUxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyZXIuaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvamVjdGlvbk1hdHJpeDsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBk
ZWZhdWx0UmVuZGVyU3VyZmFjZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFz
cyhjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdElu
Q3VycmVudFN1cmZhY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUo
Y29uc3QgQ0NSZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3Qm
IHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFBhc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoRHJhd2luZ0ZyYW1lKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlz
cGxheShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0gMDsKQEAgLTgz
LDEwICs4MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQ
aXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCBU
ZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIGltcGxUZXh0dXJlTWFuYWdlcigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIHJlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogaW1wbFRl
eHR1cmVBbGxvY2F0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9y
KiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IDZiNTFjODE2OWJlZmIwMmQ3NWU0MDc0MDAz
NDgyYTcxMjJjOWIzY2UuLmQxOTQ4NGNmYmE4NDg5YzIxNTMwZmEzY2RjZTIyMDIzY2I0NDJmYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTU4LDExICs1
OCwxMSBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBs
YXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dAogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fdGV4dHVyZSkKLSAgICAgICAgbV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0
ZShsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAg
IG1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRl
eHR1cmVNYW5hZ2VyKCkpOwogCiAgICAgLy8gVGhlIGNvbnRleHQgY291bGQgaGF2ZSBiZWVuIGxv
c3Qgc2luY2UgdGhlIGxhc3QgZnJhbWUgYW5kIHRoZSBvbGQgdGV4dHVyZQogICAgIC8vIG1hbmFn
ZXIgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KLSAgICBtX3RleHR1cmUtPnNldFRleHR1cmVNYW5h
Z2VyKGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICBt
X3RleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFu
YWdlcigpKTsKIAogICAgIEludFNpemUgdGV4dHVyZVNpemUgPSBjb250ZW50Qm91bmRzKCk7CiAg
ICAgaWYgKCFtX3RleHR1cmUtPnJlc2VydmUodGV4dHVyZVNpemUsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBKSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6d2ls
bERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQKIAogICAg
IHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwot
ICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnJl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX3RleHR1cmUtPmJpbmRU
ZXh0dXJlKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwog
CiAgICAgICAgIC8vIEZJWE1FOiBTa2lhIHVzZXMgQkdSQSBhY3R1YWxseSwgd2UgY29ycmVjdCB0
aGF0IHdpdGggdGhlIHN3aXp6bGUgcGl4ZWwgc2hhZGVyLgogICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwCmluZGV4IGUyYmM2MzI3MmM4OTM4NmE1MjU3ODYzMDc5NGVhYjNjYjRj
NzAwNzcuLmJhYzliZTRjMDlhYzBhOTEzZGVkZTc4NDBmZjMwNDBkMzI0YzI5OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCBib29sIEND
VmlkZW9MYXllckltcGw6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJh
bWUmIGZyYW1lLCBHQzNEZQogICAgICAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZS5pc1plcm8o
KSB8fCByZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6ZSB8fCByZXF1
aXJlZFRleHR1cmVTaXplLmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKSB7
Ci0gICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUgPSBNYW5hZ2VkVGV4dHVy
ZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsK
KyAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJl
OjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogICAgICAgICAg
ICAgaWYgKCFtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9
IEludFNpemUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoZSByZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXIgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIHJlY3JlYXRl
ZCBzaW5jZSB0aGUgbGFzdCBmcmFtZSwgc28gcGFzcyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAg
IC8vIFRoZSBpbXBsVGV4dHVyZU1hbmFnZXIgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIHJl
Y3JlYXRlZCBzaW5jZSB0aGUgbGFzdCBmcmFtZSwgc28gcGFzcyB0aGUgbmV3IG9uZS4KICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgYSBuby1vcCBpZiB0aGUgVGV4dHVyZU1hbmFnZXIgaXMgc3RpbGwg
YXJvdW5kLgotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5zZXRUZXh0
dXJlTWFuYWdlcihsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7
CisgICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNldFRleHR1cmVNYW5h
Z2VyKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRU
ZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNpemUg
PSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
N2ZhYTQzZDI3ZDE2NjhjOGFhYzMwZGQxMmQxYzQ5NDI5MTYzMjMwNC4uM2U5MDZiYmVlMWVhODVm
Y2Q2MmZhZmQxNDFjMzQ2OWNiZTIxOTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEzODgsNyAr
MTM4OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udHJpYnV0aW5nTGF5
ZXJFbXB0eVNjaXNzb3JQYXJ0aWFsU3dhcCkKICAgICAgICAgQVNTRVJUX0VRKDFVLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKICAgICAgICAgQVNTRVJUX0VRKDFV
LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVh
ZExpc3QoKVswXS0+bWF0ZXJpYWwoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpS
ZW5kZXJTdXJmYWNlLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVy
aWFsKCkpOworICAgICAgICBFWFBFQ1RfRVEoQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgZnJhbWUu
cmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLT5tYXRlcmlhbCgpKTsKICAgICB9CiB9CiAK
QEAgLTE0MDksNyArMTQwOSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29u
dHJpYnV0aW5nTGF5ZXJFbXB0eVNjaXNzb3JOb1BhcnRpYWxTd2FwKQogICAgICAgICBBU1NFUlRf
RVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOwogICAgICAg
ICBBU1NFUlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkp
OwogICAgICAgICBFWFBFQ1RfRVEoQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpWzBdLT5tYXRlcmlhbCgpKTsKLSAgICAgICAgRVhQRUNUX0VR
KENDRHJhd1F1YWQ6OlJlbmRlclN1cmZhY2UsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExp
c3QoKVswXS0+bWF0ZXJpYWwoKSk7CisgICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpSZW5k
ZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggMzE0ODJlZDk5NzE4MDZlZmZk
MGFhODhlODdmOWM1OWYwMzlkMTA4Mi4uZTg2ZmQwYmUxMDkyZmY2YmJlMGVlZjk2NWYwZjRlN2Ew
YzA2MThlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX3Jvb3RMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKQogICAgIHsKICAg
ICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgbV9yb290
UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOwogICAgIH0KIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4KQEAgLTgx
LDEyICs4MiwxMyBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyBhZGRlZCBmb3IgdGVzdC4KICAg
ICBpbnQgc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQ7IH0KIAotICAgIENDTGF5ZXJJbXBsKiByb290TGF5ZXIo
KSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQorICAgIENDUmVuZGVyUGFzcyogcm9vdFJl
bmRlclBhc3MoKSB7IHJldHVybiBtX3Jvb3RSZW5kZXJQYXNzLmdldCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgaW50IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50OwogICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBtX2ltcGxUaHJlYWQ7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jv
b3RMYXllcjsKKyAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBtX3Jvb3RSZW5kZXJQYXNzOwogfTsK
IAogY2xhc3MgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclJlbmRlcmVy
Q2hyb21pdW0gewpAQCAtMTk0LDcgKzE5Niw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LCBEaXNjYXJkZWRCYWNrYnVmZmVySXNSZWNyZWF0cmVkRm9yU2NvcGVEdXJhdGlvCiAg
ICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2Nh
cmRlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJE
YW1hZ2VDb3VudCgpKTsKIAotICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmJlZ2luRHJhd2lu
Z0ZyYW1lKG1fbW9ja0NsaWVudC5yb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBt
X2xheWVyUmVuZGVyZXJDaHJvbWl1bS5iZWdpbkRyYXdpbmdGcmFtZShtX21vY2tDbGllbnQucm9v
dFJlbmRlclBhc3MoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVt
LmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBzd2FwQnVmZmVycygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>