<?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>91554</bug_id>
          
          <creation_ts>2012-07-17 16:28:18 -0700</creation_ts>
          <short_desc>viewport units (vw, vh) don&apos;t work in CSS transforms</short_desc>
          <delta_ts>2022-07-13 10:30:24 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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>112315</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Lawther">mikelawther</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>7raivis</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bjonesbe</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>eoconnor</cc>
    
    <cc>eric</cc>
    
    <cc>haaiee</cc>
    
    <cc>jamesr</cc>
    
    <cc>joethomas</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>roland</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>timloh</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>671729</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-07-17 16:28:18 -0700</bug_when>
    <thetext>As reported in http://code.google.com/p/chromium/issues/detail?id=137617:

1. See attached viewport-animations.html
2. The third div should animate something like the first two. It does not.
3. I&apos;ve included the fourth div as a reference that has no animation applied just a transform using vh units, just to show that this isn&apos;t specifically an animation issue, but a transform issue (though animations should also work.)

Joe - since you implemented the viewport units, can you take a look at this please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671731</commentid>
    <comment_count>1</comment_count>
      <attachid>152870</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-07-17 16:29:01 -0700</bug_when>
    <thetext>Created attachment 152870
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692248</commentid>
    <comment_count>2</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-08-09 23:31:43 -0700</bug_when>
    <thetext>Ping. Joe - are you able to look into this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692754</commentid>
    <comment_count>3</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-08-10 11:45:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Ping. Joe - are you able to look into this one?

I am busy with some other work these days. I will take a look at it late next week. Sorry for the delay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833541</commentid>
    <comment_count>4</comment_count>
      <attachid>188450</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-02-14 16:29:57 -0800</bug_when>
    <thetext>Created attachment 188450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833546</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-02-14 16:35:21 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=188450) [details]
&gt; Patch

This seems to fix the problem, but I think there has to be a better way to do this. Making viewport units work in calc() will take additional plumbing. I imagine that adding a RenderView pointer to Length objects would make this much nicer, but I imagine that we want to keep these objects as small as possible.

Does anyone more experienced with the code base have some suggestions on how to do this better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833556</commentid>
    <comment_count>6</comment_count>
      <attachid>188450</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-14 16:39:20 -0800</bug_when>
    <thetext>Comment on attachment 188450
Patch

Can we do this without passing a RenderView into platform code? That&apos;s why we pass the extents as a Rect to handle percentages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835152</commentid>
    <comment_count>7</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2013-02-17 23:14:39 -0800</bug_when>
    <thetext>Hi Dino - just for some historical context: those floatValueForLength() functions were added as a result of https://bugs.webkit.org/show_bug.cgi?id=27160#c59 where there was the question of unnecessarily calculating the viewport size. 

It seems the way forward here is to pass the viewport extents as an IntSize down into the platform code to avoid any layering violations. It should be non-optional to avoid bugs like this one. It does mean calling the viewportSize() function a lot. If it&apos;s demonstrably a performance problem, then caching it or something might be the go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853129</commentid>
    <comment_count>8</comment_count>
      <attachid>192654</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-12 00:04:30 -0700</bug_when>
    <thetext>Created attachment 192654
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853137</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-12 00:19:00 -0700</bug_when>
    <thetext>Okay, I&apos;ve tried to do this by changing the optional RenderView* parameter in the valueForLength functions to a required const IntSize&amp;. Unfortunately, the number of files and functions I&apos;ve had to touch seems much too high to resolve the issues with viewport units (the patch also makes these units compatible with calc, borders, and some other places). It doesn&apos;t seem right to have to pass the viewport size around everywhere, but the only other idea I have is to have the viewport size accessible globally (is this actually a workable/decent idea?)

Perhaps one of the more experienced developers here could chime in with some suggestions on how else to attack this problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853652</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-12 11:23:07 -0700</bug_when>
    <thetext>Everywhere in rendering code you should be able to get at the viewport size. In platform code, you can either pass it in, or get it via some &quot;client&quot; callback interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853887</commentid>
    <comment_count>11</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-12 16:08:56 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Everywhere in rendering code you should be able to get at the viewport size. In platform code, you can either pass it in, or get it via some &quot;client&quot; callback interface.

Hi Simon,
My problem here isn&apos;t getting the viewport size to the appropriate places -- the WIP patch I uploaded does this and seems to work fine. I&apos;m just wondering if there&apos;s a better approach to this problem than poking at a hundred files and even more functions. But if the approach seems okay to you, I can tidy up / add tests and put it up for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854791</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-13 16:53:11 -0700</bug_when>
    <thetext>This patch looks good to me. I think it&apos;d be good to break it up into a couple smaller pieces, but they don&apos;t need to be tiny given then mechanical nature of this patch. So, ideally you&apos;d do something like the following set of patches to make it easier for the reviewer to verify correctness:

1. Add the valueForLength methods to RenderObject.h and change all the callers in the rendering code to use these new methods that don&apos;t require passing in the RenderView (exactly as you have in your current patch).
2. Change the Length.h versions of all these functions to take an optional viewport size instead of a RenderView.
3. Change the viewport size argument to be required and add tests.

The first two won&apos;t change any behavior and just need to pass the existing tests. 

That sound ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854799</commentid>
    <comment_count>13</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-13 17:03:59 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; This patch looks good to me. I think it&apos;d be good to break it up into a couple smaller pieces, but they don&apos;t need to be tiny given then mechanical nature of this patch. So, ideally you&apos;d do something like the following set of patches to make it easier for the reviewer to verify correctness:
&gt; 
&gt; 1. Add the valueForLength methods to RenderObject.h and change all the callers in the rendering code to use these new methods that don&apos;t require passing in the RenderView (exactly as you have in your current patch).
&gt; 2. Change the Length.h versions of all these functions to take an optional viewport size instead of a RenderView.
&gt; 3. Change the viewport size argument to be required and add tests.
&gt; 
&gt; The first two won&apos;t change any behavior and just need to pass the existing tests. 
&gt; 
&gt; That sound ok?

Sounds fine. I think there were a few places in getting calc working with viewport units which required some slight non-mechanical changes, so I might put that as a separate patch between your suggested steps 2 and 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854804</commentid>
    <comment_count>14</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2013-03-13 17:13:11 -0700</bug_when>
    <thetext>In the original implementation of vw, vh, vmin in bug 27160, I tried passing viewport as an argument to Length functions but later got reverted as it regressed Parser/html5-full-render. So we decided to go by RenderView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854812</commentid>
    <comment_count>15</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-13 17:26:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; In the original implementation of vw, vh, vmin in bug 27160, I tried passing viewport as an argument to Length functions but later got reverted as it regressed Parser/html5-full-render. So we decided to go by RenderView.

While I&apos;m changing the Length functions to take IntSize parameters, I&apos;m also adding valueForLength methods to RenderObject, which call the original function but won&apos;t compute the viewport size unless the Length object is a viewport percentage. The html5-full-render test doesn&apos;t seem to have regressed from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014770</commentid>
    <comment_count>16</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-06-11 09:21:28 -0700</bug_when>
    <thetext>It looks like this was fixed by the patch for Bug 87846.

I will turn the test in this patch into a layout test, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1883151</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-13 10:30:24 -0700</bug_when>
    <thetext>Safari, Chrome, and Firefox all agree on rendering for this test case. I don&apos;t believe there is any remaining compatibility issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>152870</attachid>
            <date>2012-07-17 16:29:01 -0700</date>
            <delta_ts>2012-07-17 16:29:01 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>viewport-animations.html</filename>
            <type>text/html</type>
            <size>907</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">PHN0eWxlPgogICAgZGl2IHtib3JkZXI6IDJweCBkYXNoZWQgYmx1ZTsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDEwMHB4OyBtYXJnaW46IDVweDsgZmxvYXQ6IGxlZnQ7fQoKLm51bWJlcjEgewogICAg
LXdlYmtpdC1hbmltYXRpb246IG1vdmV1cC1waXggMS41cyAuNXMgYm90aDsKfQoKQC13ZWJraXQt
a2V5ZnJhbWVzIG1vdmV1cC1waXggewogICAgMCUgICAgICB7LXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZVkoMTAwcHgpO30KICAgIDEwMCUgICAgey13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xh
dGVZKDApO30KfQoKLm51bWJlcjIgewogICAgLXdlYmtpdC1hbmltYXRpb246IG1vdmV1cC1lbSAx
LjVzIC41cyBib3RoOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgbW92ZXVwLWVtIHsKICAgIDAlICAg
ICAgey13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDYuMjVlbSk7fQogICAgMTAwJSAgICB7
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7fQp9CgoubnVtYmVyMyB7CiAgICAtd2Vi
a2l0LWFuaW1hdGlvbjogbW92ZXVwLXZoIDEuNXMgLjVzIGJvdGg7Cn0KCkAtd2Via2l0LWtleWZy
YW1lcyBtb3ZldXAtdmggewogICAgMCUgICAgICB7LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0
ZVkoMzB2aCk7fQogICAgMTAwJSAgICB7LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7
fQp9CgoubnVtYmVyNCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHZoKTsK
fQo8L3N0eWxlPgoKPGRpdiBjbGFzcz0ibnVtYmVyMSI+IzEgcGl4ZWxzPC9kaXY+CjxkaXYgY2xh
c3M9Im51bWJlcjIiPiMyIGVtczwvZGl2Pgo8ZGl2IGNsYXNzPSJudW1iZXIzIj4jMyB2aCA6KDwv
ZGl2PgoKPGRpdiBjbGFzcz0ibnVtYmVyNCI+IzQgdmggbm8gYW5pbWF0aW9uPC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188450</attachid>
            <date>2013-02-14 16:29:57 -0800</date>
            <delta_ts>2013-03-12 00:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91554-20130215112623.patch</filename>
            <type>text/plain</type>
            <size>52395</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZkOWM4YWYzOTZiYzVh
YTM1YThlOTYzOWU4NTRmYWY4ZjYxODE3My4uNjY1OTdjM2U1Y2U3MThlYzIwNDM1MzU0OTY0ZWYz
NmVlMDNiOTRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEzLTAyLTE0ICBUaW1v
dGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5jb20+CisKKyAgICAgICAgdmlld3BvcnQgdW5pdHMg
KHZ3LCB2aCkgZG9uJ3Qgd29yayBpbiBDU1MgdHJhbnNmb3JtcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgTGVuZ3RoRnVuY3Rpb25zOjpmbG9hdFZh
bHVlRm9yTGVuZ3RoIHRha2VzIGEgUmVuZGVyVmlldyBvYmplY3QsCisgICAgICAgIHdoaWNoIGhh
cyBub3QgcHJldmlvdXNseSBiZWVuIHBhc3NlZCBpbi4gVGhpcyBwYXRjaCBwYXNzZXMgdGhlc2UK
KyAgICAgICAgb2JqZWN0cyBkb3duIHdoZXJlIG5lY2Vzc2FyeSBzbyB0aGF0IHRyYW5zZm9ybXMg
d2lsbCB3b3JrIHdpdGgKKyAgICAgICAgdmlld3BvcnQgdW5pdHMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB1cGRhdGVkIHRyYW5zZm9ybXMvMmQvdHJhbnNmb3JtLTJkLmh0bWwuCisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVkVHJhbnNmb3JtKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwZW5kS2V5ZnJhbWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjphcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJBcnJheVBh
cmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXI6
OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck51bWJlclBhcmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTnVtYmVy
UGFyYW1ldGVyOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKEN1c3RvbUZpbHRlck9wZXJhdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dDo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0
aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6U2tld1RyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFRyYW5zZm9ybU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlVc2luZ01hdHJpeEludGVycG9s
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
cy5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YXBwbHkpOgorICAg
ICAgICAoVHJhbnNmb3JtT3BlcmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6eCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OnkpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjp6KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5S
ZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAxMy0wMi0xMyBK
b2UgTWFzb24gPGptYXNvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBOb3RpZnkg
cGxhdGZvcm0gbGF5ZXIgb2YgZmFpbGluZyB0byBnZXQgYXV0aGVudGljYXRpb24gY3JlZGVudGlh
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggMzFhZDczNjNhYmNmMmY4ODRlMTFkMDQ4MjZjNTgwNjQwOGUwOGQ3ZC4uMWFm
ODAzMjNhNzI5ODU0NDhiODMxZDFjOTc5ZjU2NGMxM2M5YjY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTgwNSw3ICs4
MDUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgICAgICBib3ggPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpKTsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICBzdHlsZS0+YXBwbHlUcmFuc2Zv
cm0odHJhbnNmb3JtLCBib3guc2l6ZSgpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9y
aWdpbik7CisgICAgc3R5bGUtPmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm94LnNpemUoKSwg
UmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4sIHJlbmRlcmVyLT52aWV3KCkpOwog
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGZsYXR0ZW4gdG8gYW4gYWZmaW5lIHRyYW5z
Zm9ybSBpZiBFTkFCTEUoM0RfUkVOREVSSU5HKSBpcyBvZmYsIGJ5IGRlc2lnbi4KIAogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIHByaW50IG91dCBpbmRpdmlkdWFsIGZ1bmN0aW9ucyAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDAx
OWY1NDM4YzZhNjU0OTI0OWZjMmE3NzNhOTA4Njg0NWU4ZjA2MWQuLjU3ZjM2YmY5ZDNjYTg1MTc0
MTQ2ZTY1NWRmZWEyZTFmMmM5YWE3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJC
b3guaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKQEAgLTEyNCw3ICsx
MjUsNyBAQCBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0
IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYQogewogICAgIGlmIChhbmltLT5pc1RyYW5z
Zm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpCiAgICAgICAgIHJldHVybiB0by5ibGVuZEJ5TWF0Y2hp
bmdPcGVyYXRpb25zKGZyb20sIHByb2dyZXNzKTsKLSAgICByZXR1cm4gdG8uYmxlbmRCeVVzaW5n
TWF0cml4SW50ZXJwb2xhdGlvbihmcm9tLCBwcm9ncmVzcywgYW5pbS0+cmVuZGVyZXIoKS0+aXNC
b3goKSA/IHRvUmVuZGVyQm94KGFuaW0tPnJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6
ZSgpIDogTGF5b3V0U2l6ZSgpKTsKKyAgICByZXR1cm4gdG8uYmxlbmRCeVVzaW5nTWF0cml4SW50
ZXJwb2xhdGlvbihmcm9tLCBwcm9ncmVzcywgYW5pbS0+cmVuZGVyZXIoKS0+aXNCb3goKSA/IHRv
UmVuZGVyQm94KGFuaW0tPnJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6ZSgpIDogTGF5
b3V0U2l6ZSgpLCBhbmltLT5yZW5kZXJlcigpLT52aWV3KCkpOwogfQogCiBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiwgQ2xpcFBhdGhPcGVyYXRpb24qIGZyb20sIENsaXBQYXRoT3BlcmF0aW9uKiB0bywgZG91
YmxlIHByb2dyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAK
aW5kZXggMWE4YjQ2NmYzMjk5NDBiMjkyZTczOTY3YmQyYjVlMjJlMDAzYjVlZi4uMWFhYzc4ODI0
Yzc2NmNhOTlhNThmYzkzYzk5Zjc2ZjJmNjc5MDUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRp
b25UcmFuc2xhdGlvblV0aWwuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zPiB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucywgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQorUGFz
c093blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucywgY29uc3QgRmxv
YXRTaXplJiBib3hTaXplLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIC8vIFdlIG5l
ZWQgdG8gZG8gYSBkZWVwIGNvcHkgdGhlIHRyYW5zZm9ybU9wZXJhdGlvbnMgbWF5IGNvbnRhaW4g
cmVmIHBvaW50ZXJzIHRvIFRyYW5zZm9ybU9wZXJhdGlvbiBvYmplY3RzLgogICAgIE93blB0cjxX
ZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiB3ZWJUcmFuc2Zvcm1PcGVyYXRpb25zID0gYWRvcHRQdHIo
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3JlYXRlVHJhbnNmb3Jt
T3BlcmF0aW9ucygpKTsKQEAgLTgxLDcgKzgxLDcgQEAgUGFzc093blB0cjxXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zPiB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmEK
ICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKICAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURTogewogICAgICAgICAgICAgVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtqXS5n
ZXQoKSk7Ci0gICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLT5hcHBlbmRUcmFuc2xh
dGUoZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPngoKSwgYm94U2l6ZS53aWR0aCgpKSwg
ZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnkoKSwgYm94U2l6ZS5oZWlnaHQoKSksIGZs
b2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtLT56KCksIDEpKTsKKyAgICAgICAgICAgIHdlYlRy
YW5zZm9ybU9wZXJhdGlvbnMtPmFwcGVuZFRyYW5zbGF0ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKHRy
YW5zZm9ybS0+eCgpLCBib3hTaXplLndpZHRoKCksIHJlbmRlclZpZXcpLCBmbG9hdFZhbHVlRm9y
TGVuZ3RoKHRyYW5zZm9ybS0+eSgpLCBib3hTaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSwgZmxv
YXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnooKSwgMSwgcmVuZGVyVmlldykpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlJPVEFURV9YOgpAQCAtMTEzLDcgKzExMyw3IEBAIFBhc3NPd25QdHI8V2ViVHJhbnNmb3JtT3Bl
cmF0aW9ucz4gdG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9wZXJhCiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOiB7
CiAgICAgICAgICAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtID0g
c3RhdGljX2Nhc3Q8UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVy
YXRpb25zLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWJUcmFuc2Zvcm1P
cGVyYXRpb25zLT5hcHBlbmRQZXJzcGVjdGl2ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9y
bS0+cGVyc3BlY3RpdmUoKSwgMCkpOworICAgICAgICAgICAgd2ViVHJhbnNmb3JtT3BlcmF0aW9u
cy0+YXBwZW5kUGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnBlcnNw
ZWN0aXZlKCksIDAsIHJlbmRlclZpZXcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKQEAgLTEyOSwxNCAr
MTI5LDE0IEBAIFBhc3NPd25QdHI8V2ViVHJhbnNmb3JtT3BlcmF0aW9ucz4gdG9XZWJUcmFuc2Zv
cm1PcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9wZXJhCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBW
YWx1ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1cnZlPgotYm9vbCBhcHBlbmRLZXlmcmFtZVdp
dGhTdGFuZGFyZFRpbWluZ0Z1bmN0aW9uKEN1cnZlKiBjdXJ2ZSwgZG91YmxlIGtleVRpbWUsIGNv
bnN0IFZhbHVlKiB2YWx1ZSwgY29uc3QgVmFsdWUqIGxhc3RWYWx1ZSwgV2ViS2l0OjpXZWJBbmlt
YXRpb25DdXJ2ZTo6VGltaW5nRnVuY3Rpb25UeXBlIHRpbWluZ0Z1bmN0aW9uVHlwZSwgY29uc3Qg
RmxvYXRTaXplJikKK2Jvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlv
bihDdXJ2ZSogY3VydmUsIGRvdWJsZSBrZXlUaW1lLCBjb25zdCBWYWx1ZSogdmFsdWUsIGNvbnN0
IFZhbHVlKiBsYXN0VmFsdWUsIFdlYktpdDo6V2ViQW5pbWF0aW9uQ3VydmU6OlRpbWluZ0Z1bmN0
aW9uVHlwZSB0aW1pbmdGdW5jdGlvblR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcpCiB7CiAgICAgY3VydmUtPmFkZChLZXlmcmFtZShrZXlUaW1lLCB2YWx1ZS0+
dmFsdWUoKSksIHRpbWluZ0Z1bmN0aW9uVHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBWYWx1ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1cnZlPgotYm9vbCBh
cHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbihDdXJ2ZSogY3VydmUs
IGRvdWJsZSBrZXlUaW1lLCBjb25zdCBWYWx1ZSogdmFsdWUsIGNvbnN0IFZhbHVlKiBsYXN0VmFs
dWUsIGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MiwgY29uc3QgRmxv
YXRTaXplJikKK2Jvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVyVGltaW5nRnVuY3Rp
b24oQ3VydmUqIGN1cnZlLCBkb3VibGUga2V5VGltZSwgY29uc3QgVmFsdWUqIHZhbHVlLCBjb25z
dCBWYWx1ZSogbGFzdFZhbHVlLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3Vi
bGUgeTIsIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiB7CiAgICAg
Y3VydmUtPmFkZChLZXlmcmFtZShrZXlUaW1lLCB2YWx1ZS0+dmFsdWUoKSksIHgxLCB5MSwgeDIs
IHkyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1MiwxNCArMTUyLDE0IEBAIGJvb2wgaXNSb3Rh
dGlvblR5cGUoVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUp
CiB9CiAKIHRlbXBsYXRlIDw+Ci1ib29sIGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5n
RnVuY3Rpb248VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUsIFdlYlRyYW5zZm9ybUtleWZyYW1lLCBX
ZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4oV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIGN1
cnZlLCBkb3VibGUga2V5VGltZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHZhbHVl
LCBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogbGFzdFZhbHVlLCBXZWJLaXQ6OldlYkFu
aW1hdGlvbkN1cnZlOjpUaW1pbmdGdW5jdGlvblR5cGUgdGltaW5nRnVuY3Rpb25UeXBlLCBjb25z
dCBGbG9hdFNpemUmIGJveFNpemUpCitib29sIGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGlt
aW5nRnVuY3Rpb248VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUsIFdlYlRyYW5zZm9ybUtleWZyYW1l
LCBXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4oV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUq
IGN1cnZlLCBkb3VibGUga2V5VGltZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHZh
bHVlLCBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogbGFzdFZhbHVlLCBXZWJLaXQ6Oldl
YkFuaW1hdGlvbkN1cnZlOjpUaW1pbmdGdW5jdGlvblR5cGUgdGltaW5nRnVuY3Rpb25UeXBlLCBj
b25zdCBGbG9hdFNpemUmIGJveFNpemUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiB7CiAgICAg
Ym9vbCBjYW5CbGVuZCA9ICFsYXN0VmFsdWU7Ci0gICAgT3duUHRyPFdlYlRyYW5zZm9ybU9wZXJh
dGlvbnM+IG9wZXJhdGlvbnModG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCp2YWx1ZS0+dmFsdWUo
KSwgYm94U2l6ZSkpOworICAgIE93blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBvcGVyYXRp
b25zKHRvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucygqdmFsdWUtPnZhbHVlKCksIGJveFNpemUsIHJl
bmRlclZpZXcpKTsKICAgICBpZiAoIW9wZXJhdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWNhbkJsZW5kKSB7Ci0gICAgICAgIE93blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRp
b25zPiBsYXN0T3BlcmF0aW9ucyh0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoKmxhc3RWYWx1ZS0+
dmFsdWUoKSwgYm94U2l6ZSkpOworICAgICAgICBPd25QdHI8V2ViVHJhbnNmb3JtT3BlcmF0aW9u
cz4gbGFzdE9wZXJhdGlvbnModG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCpsYXN0VmFsdWUtPnZh
bHVlKCksIGJveFNpemUsIHJlbmRlclZpZXcpKTsKICAgICAgICAgaWYgKCFsYXN0T3BlcmF0aW9u
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FuQmxlbmQgPSBsYXN0T3Bl
cmF0aW9ucy0+Y2FuQmxlbmRXaXRoKCpvcGVyYXRpb25zKTsKQEAgLTE3MiwxNCArMTcyLDE0IEBA
IGJvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbjxUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSwgV2ViVHJhbnNmCiB9CiAKIHRlbXBsYXRlIDw+Ci1ib29sIGFwcGVuZEtl
eWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KFdl
YlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSwgZG91YmxlIGtleVRpbWUsIGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKiB2YWx1ZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUqIGxhc3RWYWx1ZSwgZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHky
LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCitib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3Rv
bUJlemllclRpbWluZ0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2Zv
cm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KFdlYlRyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlKiBjdXJ2ZSwgZG91YmxlIGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKiB2YWx1ZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGxhc3RWYWx1ZSwg
ZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyLCBjb25zdCBGbG9hdFNp
emUmIGJveFNpemUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiB7CiAgICAgYm9vbCBjYW5CbGVu
ZCA9ICFsYXN0VmFsdWU7Ci0gICAgT3duUHRyPFdlYlRyYW5zZm9ybU9wZXJhdGlvbnM+IG9wZXJh
dGlvbnModG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCp2YWx1ZS0+dmFsdWUoKSwgYm94U2l6ZSkp
OworICAgIE93blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBvcGVyYXRpb25zKHRvV2ViVHJh
bnNmb3JtT3BlcmF0aW9ucygqdmFsdWUtPnZhbHVlKCksIGJveFNpemUsIHJlbmRlclZpZXcpKTsK
ICAgICBpZiAoIW9wZXJhdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNh
bkJsZW5kKSB7Ci0gICAgICAgIE93blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBsYXN0T3Bl
cmF0aW9ucyh0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoKmxhc3RWYWx1ZS0+dmFsdWUoKSwgYm94
U2l6ZSkpOworICAgICAgICBPd25QdHI8V2ViVHJhbnNmb3JtT3BlcmF0aW9ucz4gbGFzdE9wZXJh
dGlvbnModG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCpsYXN0VmFsdWUtPnZhbHVlKCksIGJveFNp
emUsIHJlbmRlclZpZXcpKTsKICAgICAgICAgaWYgKCFsYXN0T3BlcmF0aW9ucykKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FuQmxlbmQgPSBsYXN0T3BlcmF0aW9ucy0+Y2Fu
QmxlbmRXaXRoKCpvcGVyYXRpb25zKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIGFwcGVuZEtl
eWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlLCBXZWJUcgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBj
bGFzcyBDdXJ2ZT4KLVBhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFu
aW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRp
b24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCwgQ3VydmUq
IGN1cnZlLCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVy
dHksIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKK1Bhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmlt
YXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklkLCBkb3VibGUg
dGltZU9mZnNldCwgQ3VydmUqIGN1cnZlLCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJv
cGVydHkgdGFyZ2V0UHJvcGVydHksIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgUmVuZGVyVmll
dyogcmVuZGVyVmlldykKIHsKICAgICBib29sIGFsdGVybmF0ZSA9IGZhbHNlOwogICAgIGJvb2wg
cmV2ZXJzZSA9IGZhbHNlOwpAQCAtMjU0LDkgKzI1NCw5IEBAIFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsCiAKICAgICAgICAgYm9vbCBhZGRlZEtleWZyYW1lID0gZmFsc2U7CiAgICAgICAgIGlmIChp
c1VzaW5nQ3VzdG9tQmV6aWVyVGltaW5nRnVuY3Rpb24pCi0gICAgICAgICAgICBhZGRlZEtleWZy
YW1lID0gYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVyVGltaW5nRnVuY3Rpb248VmFsdWUs
IEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUsIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUsIGxhc3RPcmln
aW5hbFZhbHVlLCB4MSwgeTEsIHgyLCB5MiwgYm94U2l6ZSk7CisgICAgICAgICAgICBhZGRlZEtl
eWZyYW1lID0gYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVyVGltaW5nRnVuY3Rpb248VmFs
dWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUsIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUsIGxhc3RP
cmlnaW5hbFZhbHVlLCB4MSwgeTEsIHgyLCB5MiwgYm94U2l6ZSwgcmVuZGVyVmlldyk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhT
dGFuZGFyZFRpbWluZ0Z1bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3VydmU+KGN1cnZlLCBrZXlU
aW1lLCBvcmlnaW5hbFZhbHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgdGltaW5nRnVuY3Rpb25UeXBl
LCBib3hTaXplKTsKKyAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdp
dGhTdGFuZGFyZFRpbWluZ0Z1bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3VydmU+KGN1cnZlLCBr
ZXlUaW1lLCBvcmlnaW5hbFZhbHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgdGltaW5nRnVuY3Rpb25U
eXBlLCBib3hTaXplLCByZW5kZXJWaWV3KTsKICAgICAgICAgaWYgKCFhZGRlZEtleWZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjczLDE4ICsyNzMsMTggQEAg
UGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICByZXR1cm4gd2ViQW5pbWF0aW9uLnJlbGVhc2Uo
KTsKIH0KIAotUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0
aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bWF0aW9uLCBpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGJveFNpemUpCitQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJB
bmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgQW5pbWF0aW9u
KiBhbmltYXRpb24sIGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEZs
b2F0U2l6ZSYgYm94U2l6ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKIHsKIAogCiAgICAgaWYg
KHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pIHsK
ICAgICAgICAgT3duUHRyPFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZSA9IGFkb3B0
UHRyKFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZVRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9u
PFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNm
b3JtQW5pbWF0aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9m
ZnNldCwgY3VydmUuZ2V0KCksIFdlYktpdDo6V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eVRy
YW5zZm9ybSwgRmxvYXRTaXplKGJveFNpemUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYkFu
aW1hdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdl
YlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQs
IHRpbWVPZmZzZXQsIGN1cnZlLmdldCgpLCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJv
cGVydHlUcmFuc2Zvcm0sIEZsb2F0U2l6ZShib3hTaXplKSwgcmVuZGVyVmlldyk7CiAgICAgfQog
CiAgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSB7
CiAgICAgICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZSA9IGFkb3B0UHRy
KFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUZsb2F0QW5p
bWF0aW9uQ3VydmUoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248RmxvYXRB
bmltYXRpb25WYWx1ZSwgV2ViRmxvYXRLZXlmcmFtZSwgV2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4o
dmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0LCBjdXJ2ZS5nZXQoKSwg
V2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSwgRmxvYXRTaXplKCkp
OworICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9uVmFsdWUs
IFdlYkZsb2F0S2V5ZnJhbWUsIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0
aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgY3VydmUuZ2V0KCksIFdlYktpdDo6V2ViQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eU9wYWNpdHksIEZsb2F0U2l6ZSgpLCByZW5kZXJWaWV3KTsK
ICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNs
YXRpb25VdGlsLmgKaW5kZXggODczOWFiNzZhYmYxODJlMWIyMTk0OWIwYjNiOWFlYjE1YzlmZmRh
Mi4uMDE0NjFjNjdhODA1ZTBjNDc1N2EyYTI3NDFlNzFkOWZhMjMyNWVkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNs
YXRpb25VdGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgS2V5ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBBbmltYXRpb247CiBj
bGFzcyBGbG9hdFNpemU7CitjbGFzcyBSZW5kZXJWaWV3OwogCiAKIC8vIFRyYW5zbGF0ZXMgV2Vi
Q29yZSBhbmltYXRpb24gZGF0YSBpbnRvIGEgV2ViQW5pbWF0aW9uLiBJZiB3ZSBhcmUgdW5hYmxl
CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIC8vICAgLSBhIHN0ZXBzIHRpbWlu
ZyBmdW5jdGlvbiBpcyB1c2VkLAogLy8gICAtIGEgcHJvcGVydHkgb3RoZXIgdGhhbiBBbmltYXRl
ZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBvciBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSBpcyBh
bmltYXRlZCwgb3IKIC8vICAgLSBhIHRyYW5zZm9ybSBhbmltYXRpb24gaW52b2x2ZXMgYSBub24t
aW52ZXJ0YWJsZSB0cmFuc2Zvcm0uCi1QYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBj
cmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRp
b24qLCBpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGJveFNpemUpOworUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5p
bWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgaW50IGFu
aW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplLCBS
ZW5kZXJWaWV3KiA9IDApOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGY1OTJjODVlMDUwOWI2MTZmZjk0ZTI1N2Y4
MDg0OWY3MjA1ZjM2MDUuLjc4NzQ4ODc3MzQ4ZjJkM2MwOGExMjE0YzdiNzI0ZWM0ZmY4NmY2N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTgzLDcgKzU4Myw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKENvbnRlbnRzTGF5
ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYkxheWVyCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwog
fQogCi1ib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBB
bmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUg
dGltZU9mZnNldCwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKIHsKICAgICBwbGF0Zm9ybUxheWVy
KCktPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwogCkBAIC01OTIsNyArNTkyLDcgQEAgYm9v
bCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVzLCBjb25zdAogICAgIGlmIChtX2FuaW1hdGlvbklkTWFwLmNvbnRhaW5zKGFu
aW1hdGlvbk5hbWUpKQogICAgICAgICBhbmltYXRpb25JZCA9IG1fYW5pbWF0aW9uSWRNYXAuZ2V0
KGFuaW1hdGlvbk5hbWUpOwogCi0gICAgT3duUHRyPFdlYkFuaW1hdGlvbj4gdG9BZGQoY3JlYXRl
V2ViQW5pbWF0aW9uKHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwg
Ym94U2l6ZSkpOworICAgIE93blB0cjxXZWJBbmltYXRpb24+IHRvQWRkKGNyZWF0ZVdlYkFuaW1h
dGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQsIGJveFNpemUs
IHJlbmRlclZpZXcpKTsKIAogICAgIGlmICh0b0FkZCkgewogICAgICAgICBhbmltYXRpb25JZCA9
IHRvQWRkLT5pZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRleCA2YWE1
YTYzYmYyZTY5Y2EzM2Y1ZmYwMWZlNzNhZmY0NWYyNDc5MmY0Li4zZGUwYTM2OTQyMGUwOTBhY2Qy
Mzc3YTM0ZGU3MTI3ZTM1NGE4ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7CiAgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXpl
JiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZU9m
ZnNldCk7CisgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0
cmluZyYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBSZW5kZXJWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lk
IHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVP
ZmZzZXQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91Ymxl
IHdhbGxDbG9ja1RpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlci5o
CmluZGV4IDMwNTBjYjQ0NTdjNmU1YTEyMjllZTYzZjY4N2IwOTcwZTcwNmY2ZWMuLmU0MDk5N2Zk
YmFhYmRmZjZmOWMyMjAzYTA5NGJmZjFhOGM0NDhmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckFycmF5UGFyYW1ldGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhZGRWYWx1ZShkb3VibGUgdmFsdWUpIHsgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlciogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRT
aXplJikKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVu
ZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29u
c3QgTGF5b3V0U2l6ZSYsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiAgICAgewogICAgICAgICBp
ZiAoIWZyb20gfHwgIWlzU2FtZVR5cGUoKmZyb20pKQogICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaAppbmRleCAwOTM3ODU4
M2M0YTFiNGEyM2FjOGYxOGFlYzFkZTRjMjM1NDgwMzFkLi4zZGYwNDQ5NzhlMWNlMDZkNjQzNWJl
YzU2NmViNTlmNDMwZGQ5ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRWYWx1ZShk
b3VibGUgdmFsdWUpIHsgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7IH0KICAgICAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXIqIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91
dFNpemUmLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogICAgIHsKICAgICAgICAgaWYgKCFmcm9t
IHx8ICFpc1NhbWVUeXBlKCpmcm9tKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDkyNTJmNDdkNGZhNWQ5MzIwZWY4NWQw
NjMxYzMxYTk2Yjk4MGE3OWQuLmQwMjdhYzYxOTI4NmRlMzFmMTExYWM5YmFhMmE4NGY5YTg0MDdl
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTU0LDcgKzU0LDcg
QEAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjp+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCkKIHsKIH0K
IAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Ymxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExh
eW91dFNpemUmIHNpemUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmIHNpemUsIGJv
b2wgYmxlbmRUb1Bhc3N0aHJvdWdoLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIC8v
IEZJWE1FOiBUaGVyZSdzIG5vIHdheSB0byBkZWNpZGUgd2hhdCBpcyB0aGUgInBhc3N0aHJvdWdo
IGZpbHRlciIgZm9yIHNoYWRlcnMgdXNpbmcgdGhlIGN1cnJlbnQgQ1NTIFN5bnRheC4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5MDMKQEAgLTcwLDcg
KzcwLDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlv
bjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKgogICAgICAgICByZXR1cm4gdGhpczsKICAg
ICAKICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IGFuaW1hdGVkUGFyYW1ldGVyczsKLSAg
ICBtX3BhcmFtZXRlcnMuYmxlbmQoZnJvbU9wLT5tX3BhcmFtZXRlcnMsIHByb2dyZXNzLCBzaXpl
LCBhbmltYXRlZFBhcmFtZXRlcnMpOworICAgIG1fcGFyYW1ldGVycy5ibGVuZChmcm9tT3AtPm1f
cGFyYW1ldGVycywgcHJvZ3Jlc3MsIHNpemUsIGFuaW1hdGVkUGFyYW1ldGVycywgcmVuZGVyVmll
dyk7CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3JhbSwg
YW5pbWF0ZWRQYXJhbWV0ZXJzLCBtX21lc2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hUeXBl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggMGY5MmJkOTlkNzZl
YjNjYjI3MjRlN2JhZmI4MmQyYzE4ZmY2NzIxNS4uZDFkMWQyMmQyMTUyOTJjZGY2MjU1YzA2MjJl
MGExODA4YzFjMWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02NCw3
ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGJsZW5kaW5nTmVlZHNSZW5kZXJlclNp
emUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9
IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0
U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UsIFJlbmRlclZpZXcqID0gMCk7
CiAKIHByb3RlY3RlZDoKICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJQcm9ncmFtPiwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYsIHVuc2ln
bmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKaW5kZXggNjQxMjI1YTU2ZTlkNjhiZjY4
MGNlNTkxMTkyZjU1MjlhZGY0NTM5Yi4uMDAwMGVjODYzZmM4MGE4NTFhYjczZjE2Yjk2NGNlMTk2
MWIwNGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCkBAIC0zNyw2ICszNyw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVmlldzsKKwogY2xhc3Mg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBvdGhlciBwYXJhbWV0
ZXJzIHR5cGVzOgpAQCAtNTcsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1Nh
bWVUeXBlKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IHBhcmFtZXRlclR5cGUoKSA9PSBvdGhlci5wYXJhbWV0ZXJUeXBlKCk7IH0KICAgICAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmKSA9
IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQo
Y29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlv
dXRTaXplJiwgUmVuZGVyVmlldyopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvKTsgfQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdC5jcHAKaW5kZXggY2M2MzNlOWQ5NjQwZjRhY2Y4YTVlYTAzYjZiNzYyNjg1ZjI5Zjk2OS4u
OGQ4ZWZjYzZmZTk1OWJlNGY2NGZjMjQ0Y2ZlZjdlOTg2ZDA0ZDgyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0
ZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyTGlzdDo6Y2hlY2tBbHBoYWJldGljYWxPcmRlcigpIGNvbnN0CiB9
CiAKIHZvaWQgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdDo6YmxlbmQoY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgZnJvbUxpc3QsIAotICAgIGRvdWJsZSBwcm9ncmVzcywgY29uc3Qg
TGF5b3V0U2l6ZSYgZnJhbWVTaXplLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRM
aXN0KSBjb25zdAorICAgIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgZnJhbWVT
aXplLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0LCBSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3KSBjb25zdAogewogICAgIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgYm90aCBsaXN0
cyB0byBiZSBzb3J0ZWQgYnkgcGFyYW1ldGVyIG5hbWUgYW5kIHRoZSByZXN1bHQgbGlzdCBpcyBh
bHNvIHNvcnRlZC4KICAgICBBU1NFUlQoY2hlY2tBbHBoYWJldGljYWxPcmRlcigpKTsKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0OjpibGVuZChjb25zdCBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwKICAgICAgICAgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyKiBwYXJhbUZyb20gPSBmcm9tTGlzdC5hdChmcm9tTGlzdEluZGV4KS5nZXQoKTsK
ICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBwYXJhbVRvID0gYXQodG9MaXN0SW5kZXgp
LmdldCgpOwogICAgICAgICBpZiAocGFyYW1Gcm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgp
KSB7Ci0gICAgICAgICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZy
b20sIHByb2dyZXNzLCBmcmFtZVNpemUpKTsKKyAgICAgICAgICAgIHJlc3VsdExpc3QuYXBwZW5k
KHBhcmFtVG8tPmJsZW5kKHBhcmFtRnJvbSwgcHJvZ3Jlc3MsIGZyYW1lU2l6ZSwgcmVuZGVyVmll
dykpOwogICAgICAgICAgICAgKytmcm9tTGlzdEluZGV4OwogICAgICAgICAgICAgKyt0b0xpc3RJ
bmRleDsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QuaAppbmRleCAyZTEyOGU3NjkyMDk2YjU4ZjgxMmVjMDIzNjM4ZDdkMzM4MzhhOWE0
Li4zYzhhOGIyMzIyYTA1MmI1NTVjNGQ0NmU0ZDU2ZDJhZGI3ZjgxZjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlcjsKIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+ID4gQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dEJhc2U7CitjbGFzcyBSZW5kZXJWaWV3OwogCiBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0IDogcHVibGljIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3RCYXNlIHsKIHB1YmxpYzoKQEAg
LTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3Qoc2l6ZV90KTsKIAogICAgIGJvb2wgY2hlY2tBbHBoYWJldGljYWxPcmRlcigpIGNvbnN0
OwotICAgIHZvaWQgYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcmVzdWx0TGlzdCkgY29uc3Q7CisgICAgdm9pZCBibGVuZChjb25zdCBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUm
LCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0LCBSZW5kZXJWaWV3KikgY29u
c3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Qm
KSBjb25zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlci5oCmluZGV4IDViZDY2MTFhMDhiNGEyYzA2MTgyZmVlZmI4Y2QzOWNkM2MyN2I3ODcuLjM5
MjgyMzcyMTg1YzdjMDUwZDM3ZGQ2ZWYyYjI3YTRlYzRhOWQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3Jt
UGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFy
YW1ldGVyKG5hbWUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb21QYXJh
bWV0ZXIsIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXIqIGZyb21QYXJhbWV0ZXIsIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5
b3V0U2l6ZSYgc2l6ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKICAgICB7CiAgICAgICAgIGlm
ICghZnJvbVBhcmFtZXRlciB8fCAhaXNTYW1lVHlwZSgqZnJvbVBhcmFtZXRlcikpCiAgICAgICAg
ICAgICByZXR1cm4gdGhpczsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgIAogICAg
ICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyPiByZXN1bHQgPSBDdXN0
b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKCkpOwogICAgICAgICBpZiAo
ZnJvbS5zaXplKCkgJiYgdG8uc2l6ZSgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXRPcGVyYXRp
b25zKHRvLmJsZW5kKGZyb20sIHByb2dyZXNzLCBzaXplKSk7CisgICAgICAgICAgICByZXN1bHQt
PnNldE9wZXJhdGlvbnModG8uYmxlbmQoZnJvbSwgcHJvZ3Jlc3MsIHNpemUsIHJlbmRlclZpZXcp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0LT5zZXRPcGVyYXRpb25zKHByb2dy
ZXNzID4gMC41ID8gdG8gOiBmcm9tKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlU
cmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBlM2VjY2MxZTc3YjA1
MTRjY2UxYTcwOTU0YzAzMTA0OWM4ZTI2MmQzLi4xY2RkMTc4NTY4MmU1MmEyMDUzOTY3OGI5YjVh
MTY4NzcyODI1MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJh
dGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBpc1NhbWVU
eXBlKG8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyVmlldyogPSAwKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zv
cm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBiMDU3N2E2ZTQ4NDljOTQzZTc3
OWE3MzMyMzUyMmI5MThjNTIzMGE3Li4wOThkNTFmOTFmYmYzMmMxNGIzNWExNDA5MTQzZTZjZDQ4
MzM2OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5o
CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX21hdHJpeCA9PSBt
LT5tX21hdHJpeDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3QKKyAgICB2aXJ0dWFs
IGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRT
aXplJiwgUmVuZGVyVmlldyogPSAwKSBjb25zdAogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLm11
bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbWF0cml4KSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDQ1
ZjllYTcwZmI3OTk5ZWQ1NTc5OTRjMDcwNzliOGM0NDM4YjUwM2UuLjA3MzRiNmMyMmNiMDJlODE0
NTk4ZmMwYmQ4ODgxOWFmNGMxMjEzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24uaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
bV9hID09IG0tPm1fYSAmJiBtX2IgPT0gbS0+bV9iICYmIG1fYyA9PSBtLT5tX2MgJiYgbV9kID09
IG0tPm1fZCAmJiBtX2UgPT0gbS0+bV9lICYmIG1fZiA9PSBtLT5tX2Y7CiAgICAgfQogCi0gICAg
dmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlclZpZXcqID0gMCkgY29u
c3QKICAgICB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChtX2EsIG1fYiwg
bV9jLCBtX2QsIG1fZSwgbV9mKTsKICAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1hdHJpeCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5k
ZXggMzczMGQ0Mjc1NjYyMjI5YmEyMTY2MWVkNjdiMjRlOWE5NTAwNjkxMC4uNGVmZGUwNDM5ZjFh
ZTNjYzhmNTJlMjk0NTQ1NjIzOTA4MWM3NGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gbV9wID09IHAtPm1fcDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
YXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikg
Y29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyVmlldyogPSAwKSBjb25zdAogICAgIHsKICAg
ICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxlbmd0aChtX3As
IDEpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmgKaW5kZXggMGQ0OTVjNWE3MGViMGM2ZDU5MmZiMTFiY2UxMmI2M2U4MDg2
MWJkYi4uYWY5MzUzZTEwNzQyNTM1ZjMwMzExYjQ3OGRmYzUyMTk0OTc3YWQwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX3ggPT0gci0+bV94ICYmIG1feSA9PSByLT5tX3kgJiYg
bV96ID09IHItPm1feiAmJiBtX2FuZ2xlID09IHItPm1fYW5nbGU7CiAgICAgfQogCi0gICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0U2l6ZSYgLypib3JkZXJCb3hTaXplKi8pIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
clZpZXcqID0gMCkgY29uc3QKICAgICB7CiAgICAgICAgIHRyYW5zZm9ybS5yb3RhdGUzZChtX3gs
IG1feSwgbV96LCBtX2FuZ2xlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDczNDNkMDk1MjU3ZmU5YzU4NTg0M2I4
OGM5ZWUxNjU1OThmYjM0NDEuLjY4ZjljZGE5NzllZmY0NGM4MTVjOGQ5ZjMzYmFhYjI4MDMyNWUx
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTU5LDcg
KzU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1feCA9PSBzLT5tX3ggJiYgbV95ID09
IHMtPm1feSAmJiBtX3ogPT0gcy0+bV96OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBs
eShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmKSBjb25z
dAorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJWaWV3KiA9IDApIGNvbnN0CiAgICAgewogICAgICAg
ICB0cmFuc2Zvcm0uc2NhbGUzZChtX3gsIG1feSwgbV96KTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBkZGRlOTg2YzM1
ZjkzYjIwMWNlMzM5Y2EyZGMyNDZiYjE1ZDRmY2FlLi5lODQwNTg5ZjFmOWI5MDM3OGI0OTRlNzdk
NzcxYjgyNDc0Zjk1YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9hbmdsZVggPT0g
cy0+bV9hbmdsZVggJiYgbV9hbmdsZVkgPT0gcy0+bV9hbmdsZVk7CiAgICAgfQogCi0gICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlclZpZXcqID0gMCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHRyYW5zZm9ybS5za2V3KG1fYW5nbGVYLCBtX2FuZ2xlWSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDFl
N2ViYjBlNTY0ZTllOTdhNDUzM2FkNWQxOTM5NmFjNGQxNGFjMmEuLjM2MDFmYjliN2MxMDY2MWM1
NDAxOTQyZDI1N2Y0ZWIyZDU0NmM2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtMzIsNiArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRl
clZpZXc7CisKIC8vIENTUyBUcmFuc2Zvcm1zIChtYXkgYmVjb21lIHBhcnQgb2YgQ1NTMykKIAog
Y2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhbnNmb3JtT3Bl
cmF0aW9uPiB7CkBAIC01OSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJ
ZGVudGl0eSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBib3JkZXJC
b3hTaXplIHdhcyB1c2VkIGluIHRoZSBjb21wdXRhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgotICAg
IHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0U2l6
ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSwgUmVuZGVy
VmlldyogPSAwKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3Jt
T3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCAwZTJhMWRiMzMyMDE0N2EyMmJhMWY0MGNh
NmZjYzA2MmY2YWRkZjU5Li4wZTBiMWZlZDZkNjg2N2Q1YjY5OGU2N2VjN2JjZDNkZDBmOTRmNjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTkwLDE1ICs5MCwx
NSBAQCBUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRj
aGluZ09wZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRy
YW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeVVzaW5nTWF0cml4
SW50ZXJwb2xhdGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGNvbnN0IExheW91dFNpemUmIHNpemUpIGNvbnN0CitUcmFuc2Zvcm1PcGVyYXRpb25z
IFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlVc2luZ01hdHJpeEludGVycG9sYXRpb24oY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlv
dXRTaXplJiBzaXplLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KSBjb25zdAogewogICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgcmVzdWx0OwogCiAgICAgLy8gQ29udmVydCB0aGUgVHJhbnNmb3JtT3Bl
cmF0aW9ucyBpbnRvIG1hdHJpY2VzCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5z
Zm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1RyYW5zZm9ybTsKLSAgICBmcm9tLmFw
cGx5KHNpemUsIGZyb21UcmFuc2Zvcm0pOwotICAgIGFwcGx5KHNpemUsIHRvVHJhbnNmb3JtKTsK
KyAgICBmcm9tLmFwcGx5KHNpemUsIGZyb21UcmFuc2Zvcm0sIHJlbmRlclZpZXcpOworICAgIGFw
cGx5KHNpemUsIHRvVHJhbnNmb3JtLCByZW5kZXJWaWV3KTsKIAogICAgIHRvVHJhbnNmb3JtLmJs
ZW5kKGZyb21UcmFuc2Zvcm0sIHByb2dyZXNzKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeVVzaW5nTWF0cml4SW50
ZXJwb2xhdGlvbihjb25zdCBUCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVHJhbnNmb3JtT3Bl
cmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmIHNpemUpIGNvbnN0
CitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykgY29uc3QKIHsKICAgICBpZiAoZnJvbSA9
PSAqdGhpcykKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtMTE2LDcgKzExNiw3IEBAIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQoY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9ucyYgZnJvbSwKICAgICBpZiAoZnJvbS5zaXplKCkgJiYgZnJvbS5vcGVyYXRpb25z
TWF0Y2goKnRoaXMpKQogICAgICAgICByZXR1cm4gYmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhm
cm9tLCBwcm9ncmVzcyk7CiAKLSAgICByZXR1cm4gYmxlbmRCeVVzaW5nTWF0cml4SW50ZXJwb2xh
dGlvbihmcm9tLCBwcm9ncmVzcywgc2l6ZSk7CisgICAgcmV0dXJuIGJsZW5kQnlVc2luZ01hdHJp
eEludGVycG9sYXRpb24oZnJvbSwgcHJvZ3Jlc3MsIHNpemUsIHJlbmRlclZpZXcpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCmlu
ZGV4IDUzNTRmODE5YmE3NGJjYjZmODg0MGM4N2I5MjFkYzFhNGE1ZDMwYWEuLmIxMjBkMDJkNmE1
ZTNjMmViYzI2ODk4ZGI0ZDYzYzhlN2ZmMjliZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3Bl
cmF0aW9ucy5oCkBAIC00MywxMCArNDMsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhcHBseShjb25zdCBGbG9hdFNpemUm
IHN6LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkgY29uc3QKKyAgICB2b2lkIGFwcGx5KGNvbnN0
IEZsb2F0U2l6ZSYgc3osIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX29wZXJhdGlvbnNbaV0t
PmFwcGx5KHQsIHN6KTsKKyAgICAgICAgICAgIG1fb3BlcmF0aW9uc1tpXS0+YXBwbHkodCwgc3os
IHJlbmRlclZpZXcpOwogICAgIH0KICAgICAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2Yg
dGhlIG9wZXJhdGlvbiB0eXBlcyBhcmUgM0Qgb3BlcmF0aW9uIHR5cGVzIChldmVuIGlmIHRoZQpA
QCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBh
dChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUo
KSA/IG1fb3BlcmF0aW9ucy5hdChpbmRleCkuZ2V0KCkgOiAwOyB9CiAKICAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIGJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyYgZnJvbSwgY29uc3QgZG91YmxlJiBwcm9ncmVzcykgY29uc3Q7Ci0gICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBibGVuZEJ5VXNpbmdNYXRyaXhJbnRlcnBvbGF0aW9uKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpIGNv
bnN0OwotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJikgY29uc3Q7Cisg
ICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZEJ5VXNpbmdNYXRyaXhJbnRlcnBvbGF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5
b3V0U2l6ZSYsIFJlbmRlclZpZXcqKSBjb25zdDsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJs
ZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29u
c3QgTGF5b3V0U2l6ZSYsIFJlbmRlclZpZXcqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBWZWN0
b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBmYzJiYzFmMjc4ZTU1
OTRiNzM1YWYxNjc0YjE5M2MwOGIxZTY5YWQxLi4xMjExMmQyYmYxNDU2MDcxYjFlZWE1NDM2ZDhj
OWVjYzUyODNjYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmgKQEAgLTQzLDkgKzQzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0eXBlKSk7CiAg
ICAgfQogCi0gICAgZG91YmxlIHgoY29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25z
dCB7IHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feCwgYm9yZGVyQm94U2l6ZS53aWR0aCgp
KTsgfQotICAgIGRvdWJsZSB5KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3Qg
eyByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ksIGJvcmRlckJveFNpemUuaGVpZ2h0KCkp
OyB9Ci0gICAgZG91YmxlIHooY29uc3QgRmxvYXRTaXplJikgY29uc3QgeyByZXR1cm4gZmxvYXRW
YWx1ZUZvckxlbmd0aChtX3osIDEpOyB9CisgICAgZG91YmxlIHgoY29uc3QgRmxvYXRTaXplJiBi
b3JkZXJCb3hTaXplLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KSBjb25zdCB7IHJldHVybiBmbG9h
dFZhbHVlRm9yTGVuZ3RoKG1feCwgYm9yZGVyQm94U2l6ZS53aWR0aCgpLCByZW5kZXJWaWV3KTsg
fQorICAgIGRvdWJsZSB5KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSwgUmVuZGVyVmll
dyogcmVuZGVyVmlldykgY29uc3QgeyByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ksIGJv
cmRlckJveFNpemUuaGVpZ2h0KCksIHJlbmRlclZpZXcpOyB9CisgICAgZG91YmxlIHooY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyVmlldyogcmVuZGVyVmlldykgY29uc3QgeyByZXR1cm4gZmxvYXRW
YWx1ZUZvckxlbmd0aChtX3osIDEsIHJlbmRlclZpZXcpOyB9CiAKICAgICBMZW5ndGggeCgpIGNv
bnN0IHsgcmV0dXJuIG1feDsgfQogICAgIExlbmd0aCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9
CkBAIC02NSw5ICs2NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3ggPT0gdC0+bV94
ICYmIG1feSA9PSB0LT5tX3kgJiYgbV96ID09IHQtPm1fejsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRT
aXplJiBib3JkZXJCb3hTaXplKSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUs
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcpIGNvbnN0CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlM2QoeChib3JkZXJCb3hTaXplKSwgeShib3JkZXJCb3hTaXplKSwgeihib3JkZXJC
b3hTaXplKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCh4KGJvcmRlckJveFNpemUs
IHJlbmRlclZpZXcpLCB5KGJvcmRlckJveFNpemUsIHJlbmRlclZpZXcpLCB6KGJvcmRlckJveFNp
emUsIHJlbmRlclZpZXcpKTsKICAgICAgICAgcmV0dXJuIG1feC50eXBlKCkgPT0gUGVyY2VudCB8
fCBtX3kudHlwZSgpID09IFBlcmNlbnQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCmluZGV4IDg2NjQ3NTRmY2M4NGQzY2M4OTVhZjM2ZGViN2E4ODIzMWY0M2Ez
NTYuLjhkMGMxNDQxYjE3MzkyMGE5NzEwMDZiNWJlOWUwZGVmYWRlYzllNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yMDEzLDcgKzIwMTMsNyBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKExvZ2ljYWxFeHRlbnRDb21wdXRl
ZFZhbHVlcyYgY29tcHV0ZQogICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFy
dCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250
YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwogICAgICAgICBjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9lbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2lu
RW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CiAgICAgICAgIGlmICh0
cmVhdEFzUmVwbGFjZWQpCi0gICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IG1h
eDxMYXlvdXRVbml0PihmbG9hdFZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aExlbmd0aCwgMCkg
KyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWF4PExheW91dFVu
aXQ+KGZsb2F0VmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoTGVuZ3RoLCAwLCB2aWV3KCkpICsg
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDQwOGJkYjliNWU1OTNmZjQ4ODYzOTU2MDQ4NDczMTlkM2FkZDAz
NzcuLmY5YmIwZWYzZDBhYWU4M2QxN2ZlZjYzZmI0M2IwOGI1Zjg4ODdmMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtODM1LDcgKzgzNSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgICAgIFJlbmRlckJveCogYm94ID0g
cmVuZGVyQm94KCk7CiAgICAgICAgIEFTU0VSVChib3gpOwogICAgICAgICBtX3RyYW5zZm9ybS0+
bWFrZUlkZW50aXR5KCk7Ci0gICAgICAgIGJveC0+c3R5bGUoKS0+YXBwbHlUcmFuc2Zvcm0oKm1f
dHJhbnNmb3JtLCBib3gtPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCksIFJlbmRl
clN0eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKKyAgICAgICAgYm94LT5zdHlsZSgpLT5h
cHBseVRyYW5zZm9ybSgqbV90cmFuc2Zvcm0sIGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVj
dCgpLnNpemUoKSwgUmVuZGVyU3R5bGU6OkluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4sIHJlbmRlcmVy
KCktPnZpZXcoKSk7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKCptX3RyYW5zZm9ybSwg
Y2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgIH0KIApAQCAtODUyLDcgKzg1Miw3IEBAIFRy
YW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKFJlbmRlclN0
eWxlOjpBcHBseVRyYW5zZm9ybU9yCiAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmlzUnVu
bmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uKCkpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggY3VyclRyYW5zZm9ybTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHJl
bmRlcmVyKCktPmFuaW1hdGlvbigpLT5nZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIocmVuZGVy
ZXIoKSk7Ci0gICAgICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybShjdXJyVHJhbnNmb3JtLCByZW5k
ZXJCb3goKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgYXBwbHlPcmlnaW4p
OworICAgICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0oY3VyclRyYW5zZm9ybSwgcmVuZGVyQm94
KCktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCksIGFwcGx5T3JpZ2luLCByZW5k
ZXJlcigpLT52aWV3KCkpOwogICAgICAgICBtYWtlTWF0cml4UmVuZGVyYWJsZShjdXJyVHJhbnNm
b3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgICAgIHJldHVybiBjdXJyVHJhbnNm
b3JtOwogICAgIH0KQEAgLTg2MSw3ICs4NjEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5k
ZXJMYXllcjo6Y3VycmVudFRyYW5zZm9ybShSZW5kZXJTdHlsZTo6QXBwbHlUcmFuc2Zvcm1Pcgog
ICAgIGlmIChhcHBseU9yaWdpbiA9PSBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdp
bikgewogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjdXJyVHJhbnNmb3JtOwotICAgICAgICBib3gtPnN0eWxlKCktPmFw
cGx5VHJhbnNmb3JtKGN1cnJUcmFuc2Zvcm0sIGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVj
dCgpLnNpemUoKSwgUmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4pOworICAgICAg
ICBib3gtPnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKGN1cnJUcmFuc2Zvcm0sIGJveC0+cGl4ZWxT
bmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgUmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zv
cm1PcmlnaW4sIHJlbmRlcmVyKCktPnZpZXcoKSk7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJh
YmxlKGN1cnJUcmFuc2Zvcm0sIGNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKICAgICAgICAgcmV0
dXJuIGN1cnJUcmFuc2Zvcm07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA0ODE0ZmQzZDc3OTcxM2FhZGVlOWMyMmZiN2Vj
OGNlMDRiMzYyM2ZmLi5mMDJmMDU4MDM3ZGEwZjA0ZDljYTJlODJjMGNkYzRhNjdiNzBhNjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zv
cm0oY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIC8vIGJha2VkIGludG8gaXQsIGFuZCB3
ZSBkb24ndCB3YW50IHRoYXQuCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAgICBpZiAo
bV9vd25pbmdMYXllci0+aGFzVHJhbnNmb3JtKCkpIHsKLSAgICAgICAgc3R5bGUtPmFwcGx5VHJh
bnNmb3JtKHQsIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hS
ZWN0KCkuc2l6ZSgpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CisgICAg
ICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0LCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4
ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgUmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFu
c2Zvcm1PcmlnaW4sIHJlbmRlcmVyKCktPnZpZXcoKSk7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5k
ZXJhYmxlKHQsIGNvbXBvc2l0b3IoKS0+Y2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDcyNWI4ZDhlYzE2MmEzZGQwNGEyYzIyMWEzYjZlMGI0MDQ2ZjBlN2MuLjQ2NGU0Njgz
Y2NhYTAxYjkyZmMzZDllYmNjYjhjYjU3YmFiZDVlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtODQyLDcgKzg0Miw3IEBAIGlubGlu
ZSBib29sIHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+ID4mIHRyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclN0
eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBMYXlvdXRTaXplJiBib3JkZXJCb3hTaXplLCBBcHBseVRyYW5zZm9ybU9yaWdpbiBhcHBseU9y
aWdpbikgY29uc3QKK3ZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IExheW91dFNpemUmIGJvcmRlckJveFNpemUsIEFw
cGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KSBj
b25zdAogewogICAgIC8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBwb3J0ZWQg
KGJ1ZyA3MTE0MykgdGhlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiBjb3VsZCBiZSByZXBsYWNlZCBi
eQogICAgIC8vIGFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgYm9yZGVyQm94U2l6ZSksIGFwcGx5T3JpZ2luKTsKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lk
IFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBMYXlvdXRTaQogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHRyYW5zZm9ybU9wZXJh
dGlvbnMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnNbaV0tPmFwcGx5KHRyYW5zZm9ybSwgYm9yZGVyQm94
U2l6ZSk7CisgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnNbaV0tPmFwcGx5KHRyYW5zZm9ybSwg
Ym9yZGVyQm94U2l6ZSwgcmVuZGVyVmlldyk7CiAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1Pcmln
aW4pCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtZmxvYXRWYWx1ZUZvckxlbmd0aCh0
cmFuc2Zvcm1PcmlnaW5YKCksIGJvcmRlckJveFNpemUud2lkdGgoKSksIC1mbG9hdFZhbHVlRm9y
TGVuZ3RoKHRyYW5zZm9ybU9yaWdpblkoKSwgYm9yZGVyQm94U2l6ZS5oZWlnaHQoKSksIC10cmFu
c2Zvcm1PcmlnaW5aKCkpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKaW5kZXggNWE1ZWQwNmMwMjI4NjgxNjA2ZjYxMzgzYmNhN2ZlNGQzYTJmNGQ1Yi4u
MTUwYjM1OTI1ZTdjYzAyZGFjNDc1ODgxNTFhMjA3YWFjYzIxNTU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTg0Niw3ICs4NDYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSBjb25zdCB7IHJl
dHVybiBoYXNUcmFuc2Zvcm0oKSB8fCBwcmVzZXJ2ZXMzRCgpIHx8IGhhc1BlcnNwZWN0aXZlKCk7
IH0KIAogICAgIGVudW0gQXBwbHlUcmFuc2Zvcm1PcmlnaW4geyBJbmNsdWRlVHJhbnNmb3JtT3Jp
Z2luLCBFeGNsdWRlVHJhbnNmb3JtT3JpZ2luIH07Ci0gICAgdm9pZCBhcHBseVRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IExheW91dFNpemUmIGJvcmRlckJveFNpemUsIEFw
cGx5VHJhbnNmb3JtT3JpZ2luID0gSW5jbHVkZVRyYW5zZm9ybU9yaWdpbikgY29uc3Q7CisgICAg
dm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IExheW91dFNp
emUmIGJvcmRlckJveFNpemUsIEFwcGx5VHJhbnNmb3JtT3JpZ2luID0gSW5jbHVkZVRyYW5zZm9y
bU9yaWdpbiwgUmVuZGVyVmlldyogPSAwKSBjb25zdDsKICAgICB2b2lkIGFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgQXBw
bHlUcmFuc2Zvcm1PcmlnaW4gPSBJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKSBjb25zdDsKICAgICB2
b2lkIHNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZDNhN2Q4ZjJjYTJi
YzEwMzVmMjA5Zjk4NTVkODliMGRlMWEzMTZlLi41OGQ0OTE5YTk1MjIxMTRmNWUzMzFlMmI4NzQw
ZjI5ZjQ2YWMxNmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMTQgIFRpbW90aHkg
TG9oICA8dGltbG9oQGNocm9taXVtLmNvbT4KKworICAgICAgICB2aWV3cG9ydCB1bml0cyAodncs
IHZoKSBkb24ndCB3b3JrIGluIENTUyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdHJhbnNmb3Jtcy8yZC90cmFuc2Zvcm0tMmQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHRyYW5zZm9ybXMvMmQvdHJhbnNmb3JtLTJkLmh0bWw6CisK
IDIwMTMtMDItMTQgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBCYWQgY2FzdCBpbiBSZW5kZXJCbG9jazo6c3BsaXRCbG9ja3MuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90cmFuc2Zvcm1zLzJkL3RyYW5zZm9ybS0yZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90cmFuc2Zvcm1zLzJkL3RyYW5zZm9ybS0yZC1leHBlY3RlZC50eHQKaW5kZXggMWZi
ZWE0N2M2MmMwMjdlZmVmM2QzM2E0NDFlOTAxOTk5ZTRhZmI5Yi4uMWY4MzkxZDIyYzA2ZjEyNWQ5
YzJhM2M2YjM4YzMwODg1Yzg1ZDNiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jt
cy8yZC90cmFuc2Zvcm0tMmQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RyYW5zZm9y
bXMvMmQvdHJhbnNmb3JtLTJkLWV4cGVjdGVkLnR4dApAQCAtMywxMSArMywxNCBAQCB0cmFuc2Zv
cm0gIiIgZXhwZWN0ZWQgIm1hdHJpeCg1Ljk2MDQ2ZS0wOCwgMSwgLTEsIDUuOTYwNDZlLTA4LCAw
LCAwKSIgOiBQQVNTCiB0cmFuc2Zvcm0gImluaGVyaXQiIGV4cGVjdGVkICJub25lIiA6IFBBU1MK
IHRyYW5zZm9ybSAidHJhbnNsYXRlKDgwcHgsIDkwcHgpIiBleHBlY3RlZCAibWF0cml4KDEsIDAs
IDAsIDEsIDgwLCA5MCkiIDogUEFTUwogdHJhbnNmb3JtICJ0cmFuc2xhdGUoMTAwJSwgM2VtKSIg
ZXhwZWN0ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCAyMDAsIDQ4KSIgOiBQQVNTCit0cmFuc2Zvcm0g
InRyYW5zbGF0ZSgzMHZ3LCAtNjB2aCkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwgMCwgMSwgMjQw
LCAtMzYwKSIgOiBQQVNTCiB0cmFuc2Zvcm0gInRyYW5zbGF0ZSg1MHB4KSIgZXhwZWN0ZWQgIm1h
dHJpeCgxLCAwLCAwLCAxLCA1MCwgMCkiIDogUEFTUwogdHJhbnNmb3JtICJ0cmFuc2xhdGV4KC0y
MHB4KSIgZXhwZWN0ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCAtMjAsIDApIiA6IFBBU1MKIHRyYW5z
Zm9ybSAidHJhbnNsYXRlWCgtMjBweCkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwgMCwgMSwgLTIw
LCAwKSIgOiBQQVNTCit0cmFuc2Zvcm0gInRyYW5zbGF0ZVgoMjB2bWF4KSIgZXhwZWN0ZWQgIm1h
dHJpeCgxLCAwLCAwLCAxLCAxNjAsIDApIiA6IFBBU1MKIHRyYW5zZm9ybSAidHJhbnNsYXRleSgy
M3B4KSIgZXhwZWN0ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAyMykiIDogUEFTUwogdHJhbnNm
b3JtICJ0cmFuc2xhdGVZKC0zZW0pIiBleHBlY3RlZCAibWF0cml4KDEsIDAsIDAsIDEsIDAsIC00
OCkiIDogUEFTUwordHJhbnNmb3JtICJ0cmFuc2xhdGVZKDIwdm1pbikiIGV4cGVjdGVkICJtYXRy
aXgoMSwgMCwgMCwgMSwgMCwgMTIwKSIgOiBQQVNTCiB0cmFuc2Zvcm0gInNjYWxlKDEuMikiIGV4
cGVjdGVkICJtYXRyaXgoMS4yLCAwLCAwLCAxLjIsIDAsIDApIiA6IFBBU1MKIHRyYW5zZm9ybSAi
c2NhbGV4KDEuNSkiIGV4cGVjdGVkICJtYXRyaXgoMS41LCAwLCAwLCAxLCAwLCAwKSIgOiBQQVNT
CiB0cmFuc2Zvcm0gInNjYWxlWCgxLjUpIiBleHBlY3RlZCAibWF0cml4KDEuNSwgMCwgMCwgMSwg
MCwgMCkiIDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8yZC90cmFu
c2Zvcm0tMmQuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvMmQvdHJhbnNmb3JtLTJkLmh0
bWwKaW5kZXggYWY3ZWNiZjdmMzBhOTlhMGE0YTY2MzQ3ZWMzZjM1NDNiMjZmZTM1MC4uYjFhOTJi
Yjc1ZTMxMTM3YzdjMWZjNGE5ZTQ0ODc1NGY3ODA2M2Y0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvdHJhbnNmb3Jtcy8yZC90cmFuc2Zvcm0tMmQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90cmFu
c2Zvcm1zLzJkL3RyYW5zZm9ybS0yZC5odG1sCkBAIC0zOCwxMSArMzgsMTQgQEAKICAgICAgIC8v
IHRyYW5zbGF0ZQogICAgICAgeyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGUoODBweCwgOTBweCkn
LCAgJ3Jlc3VsdCcgOiAnbWF0cml4KDEsIDAsIDAsIDEsIDgwLCA5MCknIH0sCiAgICAgICB7ICd0
cmFuc2Zvcm0nIDogJ3RyYW5zbGF0ZSgxMDAlLCAzZW0pJywgICAncmVzdWx0JyA6ICdtYXRyaXgo
MSwgMCwgMCwgMSwgMjAwLCA0OCknIH0sICAvLyBkZXBlbmRzIG9uIGZvbnQgc2l6ZQorICAgICAg
eyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGUoMzB2dywgLTYwdmgpJywgJ3Jlc3VsdCcgOiAnbWF0
cml4KDEsIDAsIDAsIDEsIDI0MCwgLTM2MCknIH0sCiAgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3Ry
YW5zbGF0ZSg1MHB4KScsICAgICAgICAncmVzdWx0JyA6ICdtYXRyaXgoMSwgMCwgMCwgMSwgNTAs
IDApJyB9LAogICAgICAgeyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGV4KC0yMHB4KScsICAgICAg
J3Jlc3VsdCcgOiAnbWF0cml4KDEsIDAsIDAsIDEsIC0yMCwgMCknIH0sCiAgICAgICB7ICd0cmFu
c2Zvcm0nIDogJ3RyYW5zbGF0ZVgoLTIwcHgpJywgICAgICAncmVzdWx0JyA6ICdtYXRyaXgoMSwg
MCwgMCwgMSwgLTIwLCAwKScgfSwKKyAgICAgIHsgJ3RyYW5zZm9ybScgOiAndHJhbnNsYXRlWCgy
MHZtYXgpJywgICAgICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAwLCAxLCAxNjAsIDApJyB9LAog
ICAgICAgeyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGV5KDIzcHgpJywgICAgICAgJ3Jlc3VsdCcg
OiAnbWF0cml4KDEsIDAsIDAsIDEsIDAsIDIzKScgfSwKICAgICAgIHsgJ3RyYW5zZm9ybScgOiAn
dHJhbnNsYXRlWSgtM2VtKScsICAgICAgICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAwLCAxLCAw
LCAtNDgpJyB9LCAgLy8gZGVwZW5kcyBvbiBmb250IHNpemUKKyAgICAgIHsgJ3RyYW5zZm9ybScg
OiAndHJhbnNsYXRlWSgyMHZtaW4pJywgICAgICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAwLCAx
LCAwLCAxMjApJyB9LAogCiAgICAgICAvLyBzY2FsZQogICAgICAgeyAndHJhbnNmb3JtJyA6ICdz
Y2FsZSgxLjIpJywgICAgICAgICAgICAgJ3Jlc3VsdCcgOiAnbWF0cml4KDEuMiwgMCwgMCwgMS4y
LCAwLCAwKScgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192654</attachid>
            <date>2013-03-12 00:04:30 -0700</date>
            <delta_ts>2013-03-12 00:04:30 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-91554-20130312180028.patch</filename>
            <type>text/plain</type>
            <size>324769</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYzODIxMDBmZmZmYzVl
NjVkNmViNDMwNjViYzQ2MmYxYjY2YzZkMi4uOThkZGY4ZTk0ZTQwOTVkNGRlOWUxOWI0ZTdjODA2
MmM0YWM4MTFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1NyBAQAorMjAxMy0wMy0xMSAgVGlt
b3RoeSBMb2ggIDx0aW1sb2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHZpZXdwb3J0IHVuaXRz
ICh2dywgdmgpIGRvbid0IHdvcmsgaW4gQ1NTIHRyYW5zZm9ybXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorICAgICAgICBDaGFuZ2Ugb3B0aW9u
YWwgUmVuZGVyVmlldyogcGFyYW1ldGVyIGluIHZhbHVlRm9yTGVuZ3RoIGZ1bmN0aW9ucyB0byBh
IGNvbnN0IEludFNpemUmLgorICAgICAgICBBZGQgZXF1aXZhbGVudCB2YWx1ZUZvckxlbmd0aCBm
dW5jdGlvbnMgdG8gUmVuZGVyT2JqZWN0IHdoaWNoIGNhbGwgdGhlIHJlZ3VsYXIgb25lcywKKyAg
ICAgICAgc28gd2UgZG9uJ3QgaGF2ZSB0byBjb21wdXRlIHRoZSB2aWV3cG9ydFNpemUgYWxsIHRo
ZSB0aW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAg
ICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgICogY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pdENhdGVnb3J5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y29tcHV0ZUxlbmd0aFB4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoUHgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbjo6Y29tcHV0ZUxlbmd0aFB4
KToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTQ2Fs
Y1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFBvc2l0aW9uT2Zmc2V0VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvcmRlclJh
ZGl1c1Nob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1l
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja01pbk1heCk6CisgICAgICAgIChXZWJDb3Jl
Ojp2YWx1ZUZvckdyaWRUcmFja0dyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3Jp
ZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpsaW5lSGVpZ2h0RnJvbVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6
cG9zaXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6
Y29tcHV0ZUVuZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFs
dWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRpZW50
VmFsdWU6OnJlc29sdmVSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVl
Lmg6CisgICAgICAgIChDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKENTU1JhZGlhbEdyYWRp
ZW50VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aERvdWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRUb0xlbmd0aCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5
bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVh
ZCk6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6aW50VmFsdWVG
b3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6bWluaW11bVZhbHVlRm9yTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0
VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNl
X2hlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX3dpZHRo
TWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpoZWlnaHRNZWRpYUZlYXR1cmVF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OndpZHRoTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAg
ICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6bW1MZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjppbmNoTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVG
aWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAg
ICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VT
aXplQW5kTWFyZ2luc0luUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmdldFJlZ2lvbik6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpl
dmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoQ2FsY0V4
cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKENhbGN1bGF0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbGNFeHByZXNzaW9uTGVuZ3RoOjpldmFsdWF0ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lv
bkJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJsZW5k
TGVuZ3RoOjpldmFsdWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9MZW5ndGguaDoKKyAgICAgICAgKExlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjphcHBseUZpbHRlckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBs
eVRyYW5zZm9ybUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5p
bWF0aW9uOjphcHBseUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJB
bmltYXRpb246OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRp
b25zOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckFu
aW1hdGlvbi5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckFuaW1hdGlvbik6CisgICAgICAgIChH
cmFwaGljc0xheWVyQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRLZXlmcmFt
ZVdpdGhTdGFuZGFyZFRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEtl
eWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdl
YkFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0
aW9uVHJhbnNsYXRpb25VdGlsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoR3JhcGhpY3NMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgor
ICAgICAgICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oOgorICAgICAgICAoQ3VzdG9tRmls
dGVyUGFyYW1ldGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdDo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdC5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJSZW5kZXJl
cjo6YmluZFByb2dyYW1UcmFuc2Zvcm1QYXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI6OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6YXBwbHlUcmFuc2Zv
cm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1ZhbGlkYXRlZEN1c3RvbUZpbHRl
ck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0ZWRDdXN0b21GaWx0ZXJP
cGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Zh
bGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoVmFsaWRhdGVkQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJZGVudGl0
eVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6SWRlbnRpdHlU
cmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAg
ICAgKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjphcHBseSk6CisgICAgICAg
IChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
aXNJZGVudGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6YXBwbHkpOgorICAgICAgICAoUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OmFwcGx5KToKKyAgICAgICAgKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjph
cHBseSk6CisgICAgICAgIChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAg
ICAgKFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChUcmFuc2Zvcm1PcGVy
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpi
bGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU9w
ZXJhdGlvbnM6OmJsZW5kQnlVc2luZ01hdHJpeEludGVycG9sYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YXBwbHkpOgorICAgICAgICAoVHJhbnNmb3JtT3BlcmF0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6eCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb246OnkpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjp6KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6aXNJZGVudGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5n
L0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3Bl
cmF0aW9uOjpwYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaDoKKyAgICAgICAgKEV4Y2x1c2lv
blNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbmZvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6Y29tcHV0ZWRTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJl
bmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnRleHRJbmRlbnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNv
bXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cmVmbGVjdGlvbk9m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2xpcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94OjpmaWxsQXZhaWxhYmxlTWVhc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWln
aHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExv
Z2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJl
cGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZUJsb2NrRGlyZWN0aW9uTWFyZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVw
bGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxh
dGl2ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJhY2tncm91bmRSb3VuZGVk
UmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdl
R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUJvcmRlckltYWdlU2lkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJv
bVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZv
ckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlQ2hp
bGRNYXJnaW5WYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZTcGVjaWZpZWRM
ZW5ndGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZU1hcmdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29t
cHV0ZVRyYW5zZm9ybU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbmFs
Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjppbnRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6ZmxvYXRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVk
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmxvZ2ljYWxIZWlnaHRGb3JSb3dTaXppbmcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
Om1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bWFyZ2luUmlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjU2hhcmVkOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9z
aXRpb25Gb3JCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUmVjdGFuZ2xlOjpwYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2ljU2hhcGVDaXJjbGU6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFz
aWNTaGFwZUVsbGlwc2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVBvbHln
b246OnBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oOgorICAg
ICAgICAoQmFzaWNTaGFwZVJlY3RhbmdsZSk6CisgICAgICAgIChCYXNpY1NoYXBlQ2lyY2xlKToK
KyAgICAgICAgKEJhc2ljU2hhcGVFbGxpcHNlKToKKyAgICAgICAgKEJhc2ljU2hhcGVQb2x5Z29u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGNSYWRpaUZvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Um91bmRl
ZEJvcmRlckZvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZExp
bmVIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNvbHZlTGVuZ3RoQXR0cmlidXRlRm9yU1ZHKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisgICAg
ICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6Y3VycmVudFZpZXdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmN1cnJlbnRWaWV3cG9ydFNpemUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1Rl
eHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjphbmltYXRl
ZExvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToK
KwogMjAxMy0wMy0xMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zIHNob3VsZCB1c2UgT3duUHRyIGZvciBwZW5kaW5nIHJl
c291cmNlIG1hcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEyMDI3YTc4MjQzNTJk
ZTk3MjUyYWU2OWExZTZhN2I3NThjYzE5ZDYuLmJiNTg0ODY0YTljNDVhMjBkYWUxMDYzNjRiZWI3
NDZlYjU1NDY4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDMtMTEgIFRpbW90aHkgTG9oICA8dGltbG9oQGNocm9taXVtLm9yZz4KKworICAgICAg
ICB2aWV3cG9ydCB1bml0cyAodncsIHZoKSBkb24ndCB3b3JrIGluIENTUyB0cmFuc2Zvcm1zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU1NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQW5p
bWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFuaW1hdGlv
bkNhbkJlVHJhbnNsYXRlZCk6CisKIDIwMTMtMDMtMDkgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkg
IDxzYWRydWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGRlcHJl
Y2F0ZWQgZmxpbmdTdGFydC5zb3VyY2VEZXZpY2UgZnJvbSBXZWJHZXN0dXJlRXZlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCBmYWQwMTcxMWU1OGU2OTk0ZTNiNDZh
MWViODUzMzhlNGZjYjAxNzE0Li5kNTg3MTIwNjkyNjc0NGJiOGU2Y2VhZTBiNDcxMTFlZGIxODMz
Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0yNDYsNyArMjQ2
LDcgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJp
bGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICB9CiAKICAgICBpZiAoIXN0eWxlLT50
ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnQgaW5kZW50YXRpb24gPSB2
YWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgp
LCByZW5kZXJlci0+dmlldygpKTsKKyAgICAgICAgaW50IGluZGVudGF0aW9uID0gcmVuZGVyZXIt
PnZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCksIG9iamVjdC0+c2l6ZSgpLndpZHRo
KCksIHJlbmRlcmVyKTsKICAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYoIiVpIiwg
aW5kZW50YXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVz
dWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9JTkRFTlQpLCBi
dWZmZXIuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAppbmRleCAyMzljOTlkMmM0ZmYyMzgxMzg2ZjUwZWQ1OTMwYjc4ODQxNmFhNDU0Li42
MmQ2OWE5NTEzNzVhZGM0NjcyZjQ1NDcyZjUyODVkMGQzYzBhNjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5o
IgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKQEAgLTY4
LDYgKzY5LDEwIEBAIHN0YXRpYyBDYWxjdWxhdGlvbkNhdGVnb3J5IHVuaXRDYXRlZ29yeShDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BDOgogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TOgogICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DSFM6CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZXOgorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDoKKyAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1JTjoKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVk1BWDoKICAgICAgICAgcmV0dXJuIENhbGNMZW5ndGg7CiAjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU6
CkBAIC0xMjgsOSArMTMzLDkgQEAgZG91YmxlIENTU0NhbGNWYWx1ZTo6ZG91YmxlVmFsdWUoKSBj
b25zdAogICAgIHJldHVybiBjbGFtcFRvUGVybWl0dGVkUmFuZ2UobV9leHByZXNzaW9uLT5kb3Vi
bGVWYWx1ZSgpKTsKIH0KIAotZG91YmxlIENTU0NhbGNWYWx1ZTo6Y29tcHV0ZUxlbmd0aFB4KFJl
bmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKSBjb25zdAorZG91YmxlIENTU0NhbGNW
YWx1ZTo6Y29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZG91YmxlIG11bHRp
cGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNsYW1w
VG9QZXJtaXR0ZWRSYW5nZShtX2V4cHJlc3Npb24tPmNvbXB1dGVMZW5ndGhQeChjdXJyZW50U3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsKKyAgICByZXR1
cm4gY2xhbXBUb1Blcm1pdHRlZFJhbmdlKG1fZXhwcmVzc2lvbi0+Y29tcHV0ZUxlbmd0aFB4KGN1
cnJlbnRTdHlsZSwgcm9vdFN0eWxlLCB2aWV3cG9ydFNpemUsIG11bHRpcGxpZXIsIGNvbXB1dGlu
Z0ZvbnRTaXplKSk7CiB9CiAgICAgCiBDU1NDYWxjRXhwcmVzc2lvbk5vZGU6On5DU1NDYWxjRXhw
cmVzc2lvbk5vZGUoKSAKQEAgLTE3NCw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
Q2FsY051bWJlcjoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Np
b25OdW1iZXIobV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKSk7CiAgICAgICAgIGNhc2UgQ2FsY0xl
bmd0aDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1i
ZXIobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgo
bV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24gJiB+Rml4ZWRJbnRlZ2VyQ29u
dmVyc2lvbj4oc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkpKTsKICAgICAgICAgY2FzZSBDYWxjUGVy
Y2VudDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudExlbmd0aDoKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgoU3R5bGVSZXNvbHZlcjo6Y29udmVy
dFRvRmxvYXRMZW5ndGgobV92YWx1ZS5nZXQoKSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkpKTsK
QEAgLTIwOSwxMSArMjE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIAotICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3Vy
cmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciwgYm9v
bCBjb21wdXRpbmdGb250U2l6ZSkgY29uc3QKKyAgICB2aXJ0dWFsIGRvdWJsZSBjb21wdXRlTGVu
Z3RoUHgoUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwg
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBkb3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21w
dXRpbmdGb250U2l6ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9jYXRlZ29yeSkg
ewogICAgICAgICBjYXNlIENhbGNMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+
Y29tcHV0ZUxlbmd0aDxkb3VibGU+KGN1cnJlbnRTdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVy
LCBjb21wdXRpbmdGb250U2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y29tcHV0
ZUxlbmd0aDxkb3VibGU+KGN1cnJlbnRTdHlsZSwgcm9vdFN0eWxlLCB2aWV3cG9ydFNpemUsIG11
bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKTsKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudDoK
ICAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdl
dERvdWJsZVZhbHVlKCk7CkBAIC0zMzAsMTAgKzMzNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBldmFsdWF0ZShtX2xlZnRTaWRlLT5kb3VibGVWYWx1ZSgpLCBtX3JpZ2h0U2lkZS0+ZG91
YmxlVmFsdWUoKSk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1dGVMZW5n
dGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBk
b3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkgY29uc3QKKyAgICB2aXJ0
dWFsIGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgoUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBkb3VibGUg
bXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkgY29uc3QKICAgICB7Ci0gICAgICAg
IGNvbnN0IGRvdWJsZSBsZWZ0VmFsdWUgPSBtX2xlZnRTaWRlLT5jb21wdXRlTGVuZ3RoUHgoY3Vy
cmVudFN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKTsKLSAg
ICAgICAgY29uc3QgZG91YmxlIHJpZ2h0VmFsdWUgPSBtX3JpZ2h0U2lkZS0+Y29tcHV0ZUxlbmd0
aFB4KGN1cnJlbnRTdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6
ZSk7CisgICAgICAgIGNvbnN0IGRvdWJsZSBsZWZ0VmFsdWUgPSBtX2xlZnRTaWRlLT5jb21wdXRl
TGVuZ3RoUHgoY3VycmVudFN0eWxlLCByb290U3R5bGUsIHZpZXdwb3J0U2l6ZSwgbXVsdGlwbGll
ciwgY29tcHV0aW5nRm9udFNpemUpOworICAgICAgICBjb25zdCBkb3VibGUgcmlnaHRWYWx1ZSA9
IG1fcmlnaHRTaWRlLT5jb21wdXRlTGVuZ3RoUHgoY3VycmVudFN0eWxlLCByb290U3R5bGUsIHZp
ZXdwb3J0U2l6ZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpOwogICAgICAgICByZXR1
cm4gZXZhbHVhdGUobGVmdFZhbHVlLCByaWdodFZhbHVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IDU2OWRiZGVhMGIwZjJiM2I4OThhZTdh
NGM3MjJmMGI1NjRiYWRmODQuLmYyMjRhZmUzOGVkMDg3MDI5OWZjZjJhMDFkZTNjMjA0N2JiOTg2
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzWmVybygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5k
ZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0gMS4wKSBjb25z
dCA9IDA7ICAgIAogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0
eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9v
bCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3Vi
bGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZG91YmxlIG11bHRpcGxp
ZXIgPSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBmYWxzZSkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENT
U19WQVJJQUJMRVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFi
bGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOwpAQCAt
MTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1cm4g
bV9leHByZXNzaW9uLT5pc0ludGVnZXIoKTsgfSAgICAKICAgICBkb3VibGUgZG91YmxlVmFsdWUo
KSBjb25zdDsKICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Np
b24tPmRvdWJsZVZhbHVlKCkgPCAwOyB9Ci0gICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25zdDsKKyAg
ICBkb3VibGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZG91YmxlIG11
bHRpcGxpZXIgPSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBmYWxzZSkgY29uc3Q7CiAg
ICAgICAgIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDU4YjIyOTM1ZGEyZWMwM2Jm
M2VjM2I0NDNiZmU1ODAyNjBkZTI1ZGMuLmRiMzUxMDQ4Yjk4ODg1Yzc5MGYxOGMzNGRiYjNiNTAz
YmMzNGFiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3Bl
cnQKICAgICByZXR1cm4gcG9zaXRpb25MaXN0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJTdHls
ZSogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplKQogewogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjY4LDcg
KzY2OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQb3NpdGlvbk9mZnNldFZh
bHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJvcGVyCiAgICAgICAgIGlmIChsLnR5cGUoKSA9
PSBXZWJDb3JlOjpGaXhlZCkKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKGwudmFsdWUoKSwgc3R5bGUpOwogICAgICAgICBlbHNlIGlmIChsLmlzVmlld3BvcnRQZXJj
ZW50YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1
ZUZvckxlbmd0aChsLCAwLCByZW5kZXJWaWV3KSwgc3R5bGUpOworICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgobCwgMCwgdmlld3BvcnRTaXpl
KSwgc3R5bGUpOwogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobCk7
CiAgICAgfQogCkBAIC02OTAsMzEgKzY5MCwzMSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmN1cnJlbnRDb2xvck9yVmFsaWRDbwog
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVDb2xvclZhbHVlKGNvbG9yLnJnYigpKTsK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3Ju
ZXJWYWx1ZXMoTGVuZ3RoU2l6ZSByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0
Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKExlbmd0aFNpemUgcmFkaXVzLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgIGlmIChyYWRpdXMud2lkdGgoKS50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHJhZGl1cy53aWR0aCgpLnBlcmNl
bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAgICAgZWxzZQotICAg
ICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChy
YWRpdXMud2lkdGgoKSwgMCwgcmVuZGVyVmlldyksIHN0eWxlKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy53aWR0aCgp
LCAwLCB2aWV3cG9ydFNpemUpLCBzdHlsZSkpOwogICAgIGlmIChyYWRpdXMuaGVpZ2h0KCkudHlw
ZSgpID09IFBlcmNlbnQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShyYWRpdXMuaGVpZ2h0KCkucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpKTsKICAgICBlbHNlCi0gICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy5oZWlnaHQoKSwgMCwgcmVuZGVyVmll
dyksIHN0eWxlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy5oZWlnaHQoKSwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUp
KTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShMZW5ndGhTaXplIHJhZGl1cywgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKExlbmd0aFNpemUg
cmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSkKIHsKICAgICBpZiAocmFkaXVzLndpZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKSB7CiAg
ICAgICAgIGlmIChyYWRpdXMud2lkdGgoKS50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyYWRpdXMud2lkdGgoKS5wZXJjZW50
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy53aWR0aCgpLCAwLCBy
ZW5kZXJWaWV3KSwgc3R5bGUpOworICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMud2lkdGgoKSwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUp
OwogICAgIH0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHJhZGl1cywg
c3R5bGUsIHJlbmRlclZpZXcpOworICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMocmFkaXVzLCBzdHlsZSwgdmlld3BvcnRTaXplKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7
CiAgICAgYm9vbCBzaG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgPSBzdHlsZS0+Ym9yZGVyVG9wUmln
aHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lk
dGgoKTsKQEAgLTcyNiwxMCArNzI2LDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqCiAgICAg
Ym9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IChzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMo
KS5oZWlnaHQoKSAhPSBzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCgpKSB8fCBz
aG93VmVydGljYWxCb3R0b21SaWdodDsKICAgICBib29sIHNob3dWZXJ0aWNhbFRvcExlZnQgPSAo
c3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLT5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KCkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wTGVm
dFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9yZGVyVG9wTGVm
dFJhZGl1cygpLCBzdHlsZSwgcmVuZGVyVmlldyk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
dG9wUmlnaHRSYWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRl
clRvcFJpZ2h0UmFkaXVzKCksIHN0eWxlLCByZW5kZXJWaWV3KTsKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBib3R0b21SaWdodFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhz
dHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgc3R5bGUsIHJlbmRlclZpZXcpOwotICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbUxlZnRSYWRpdXMgPSBnZXRCb3JkZXJSYWRpdXND
b3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUsIHJlbmRl
clZpZXcpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRSYWRpdXMgPSBnZXRCb3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUs
IHZpZXdwb3J0U2l6ZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wUmlnaHRSYWRpdXMg
PSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCksIHN0eWxlLCB2aWV3cG9ydFNpemUpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRv
bVJpZ2h0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLCBzdHlsZSwgdmlld3BvcnRTaXplKTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVz
KHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksIHN0eWxlLCB2aWV3cG9ydFNpemUpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gaG9yaXpvbnRhbFJhZGlpID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGhvcml6b250YWxSYWRpaS0+YXBwZW5kKHRv
cExlZnRSYWRpdXMtPml0ZW0oMCkpOwpAQCAtODE0LDcgKzgxNCw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBSZW5kCiAgICAgICAgIGJveCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9SZW5kZXJCb3go
cmVuZGVyZXIpLT5ib3JkZXJCb3hSZWN0KCkpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtOwotICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJveC5zaXpl
KCksIFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKKyAgICBzdHlsZS0+YXBw
bHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3guc2l6ZSgpLCByZW5kZXJlciwgUmVuZGVyU3R5bGU6
OkV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4pOwogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90
IGZsYXR0ZW4gdG8gYW4gYWZmaW5lIHRyYW5zZm9ybSBpZiBFTkFCTEUoM0RfUkVOREVSSU5HKSBp
cyBvZmYsIGJ5IGRlc2lnbi4KIAogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHByaW50IG91dCBpbmRp
dmlkdWFsIGZ1bmN0aW9ucyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTI0KQpAQCAtODQ1LDcgKzg0NSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZUZvckN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcihjb25zdCBSZW5kZXJPCiB7CiAg
ICAgSW50U2l6ZSBzaXplID0gcmVuZGVyZXIgPyBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvUmVuZGVy
Qm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCkgOiBJbnRTaXplKCk7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAgIHRyYW5zZm9ybVBhcmFtZXRlci0+
YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBzaXplKTsKKyAgICB0cmFuc2Zvcm1QYXJhbWV0ZXIt
PmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgc2l6ZSwgcmVuZGVyZXItPnZpZXcoKS0+dmlld3Bv
cnRTaXplKCkpOwogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHByaW50IG91dCBpbmRpdmlkdWFsIGZ1
bmN0aW9ucyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI0KQog
ICAgIHJldHVybiBtYXRyaXhUcmFuc2Zvcm1WYWx1ZSh0cmFuc2Zvcm0sIHN0eWxlKTsKIH0KQEAg
LTEwMjgsNDUgKzEwMjgsNDUgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJPYmoKIH0KICNlbmRpZgog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNv
bnN0IExlbmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clZpZXcgKnJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JH
cmlkVHJhY2tCcmVhZHRoKGNvbnN0IExlbmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAodHJh
Y2tCcmVhZHRoLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgaWYgKHRyYWNrQnJlYWR0aC5pc1Zp
ZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSh2YWx1ZUZvckxlbmd0aCh0cmFja0JyZWFkdGgsIDAsIHJlbmRlclZpZXcpLCBzdHlsZSk7Cisg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHRyYWNr
QnJlYWR0aCwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUpOwogICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHRyYWNrQnJlYWR0aCwgc3R5bGUpOwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tNaW5NYXgoY29uc3QgR3JpZFRy
YWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJh
Y2tNaW5NYXgoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBzd2l0Y2ggKHRy
YWNrU2l6ZS50eXBlKCkpIHsKICAgICBjYXNlIExlbmd0aFRyYWNrU2l6aW5nOgotICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZS5sZW5ndGgoKSwgc3R5bGUs
IHJlbmRlclZpZXcpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRy
YWNrU2l6ZS5sZW5ndGgoKSwgc3R5bGUsIHZpZXdwb3J0U2l6ZSk7CiAgICAgY2FzZSBNaW5NYXhU
cmFja1NpemluZzoKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbWluTWF4VHJhY2tCcmVh
ZHRocyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgbWlu
TWF4VHJhY2tCcmVhZHRocy0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja1Np
emUubWluVHJhY2tCcmVhZHRoKCksIHN0eWxlLCByZW5kZXJWaWV3KSk7Ci0gICAgICAgIG1pbk1h
eFRyYWNrQnJlYWR0aHMtPmFwcGVuZCh2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tTaXpl
Lm1heFRyYWNrQnJlYWR0aCgpLCBzdHlsZSwgcmVuZGVyVmlldykpOworICAgICAgICBtaW5NYXhU
cmFja0JyZWFkdGhzLT5hcHBlbmQodmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZS5t
aW5UcmFja0JyZWFkdGgoKSwgc3R5bGUsIHZpZXdwb3J0U2l6ZSkpOworICAgICAgICBtaW5NYXhU
cmFja0JyZWFkdGhzLT5hcHBlbmQodmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZS5t
YXhUcmFja0JyZWFkdGgoKSwgc3R5bGUsIHZpZXdwb3J0U2l6ZSkpOwogICAgICAgICByZXR1cm4g
Q1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCJtaW5tYXgoIiwgbWluTWF4VHJhY2tCcmVhZHRocyk7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tHcm91cChjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZUZvckdyaWRUcmFja0dyb3VwKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tT
aXplcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrU2l6
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckdyaWRUcmFja01p
bk1heCh0cmFja1NpemVzW2ldLCBzdHlsZSwgcmVuZGVyVmlldykpOworICAgICAgICBsaXN0LT5h
cHBlbmQodmFsdWVGb3JHcmlkVHJhY2tNaW5NYXgodHJhY2tTaXplc1tpXSwgc3R5bGUsIHZpZXdw
b3J0U2l6ZSkpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmll
dyAqcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRU
cmFja0xpc3QoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVzLCBjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICAv
LyBIYW5kbGUgdGhlICdub25lJyBjYXNlIGhlcmUuCiAgICAgaWYgKCF0cmFja1NpemVzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vbmUpOwogCi0gICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrR3JvdXAodHJhY2tT
aXplcywgc3R5bGUsIHJlbmRlclZpZXcpOworICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0dy
b3VwKHRyYWNrU2l6ZXMsIHN0eWxlLCB2aWV3cG9ydFNpemUpOwogfQogCiBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBw
b3NpdGlvbikKQEAgLTE0MzQsNyArMTQzNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJu
IGxpc3QucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gbGluZUhlaWdodEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdo
dEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSkKIHsKICAgICBMZW5ndGggbGVuZ3RoID0gc3R5bGUtPmxpbmVIZWlnaHQoKTsKICAgICBpZiAo
bGVuZ3RoLmlzTmVnYXRpdmUoKSkKQEAgLTE0NDUsNyArMTQ0NSw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuCiAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNpemUg
ZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCiAgICAg
ICAgIC8vIHRoYXQgaGVyZSBlaXRoZXIuCiAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlKHN0YXRpY19jYXN0PGludD4obGVuZ3RoLnBlcmNlbnQoKSAqIHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkpIC8gMTAwLCBzdHlsZSk7Ci0gICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgobGVuZ3RoLCAwLCByZW5kZXJWaWV3
KSwgc3R5bGUpOworICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aCwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUpOwogfQogCiBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0
eWxlKQpAQCAtMTc1Niw3ICsxNzU2LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKICAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUuZ2V0
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAgICAgICAgICAgcmV0dXJu
IGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Qm90dG9tLCBt
X25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0
UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlCb3R0b20sIG1fbm9k
ZS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94QWxpZ246CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoc3R5bGUtPmJveEFsaWduKCkpOwogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspCkBAIC0xODk4LDcgKzE4OTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAg
ICAgICAgICAgY29tcHV0ZWRGb250LT52YXJpYW50ID0gZm9udFZhcmlhbnRGcm9tU3R5bGUoc3R5
bGUuZ2V0KCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT53ZWlnaHQgPSBmb250V2VpZ2h0
RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+c2l6ZSA9
IGZvbnRTaXplRnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCksIG1fbm9kZS0+
ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+bGlu
ZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1l
bnQoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5mYW1pbHkg
PSBmb250RmFtaWx5RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBj
b21wdXRlZEZvbnQucmVsZWFzZSgpOwogICAgICAgICB9CkBAIC0xOTMzLDkgKzE5MzMsOSBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3Jp
ZEF1dG9GbG93OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHN0eWxlLT5ncmlkQXV0b0Zsb3coKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRH
cmlkQ29sdW1uczoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qoc3R5
bGUtPmdyaWRDb2x1bW5zKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRl
clZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KHN0eWxl
LT5ncmlkQ29sdW1ucygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLT52aWV3cG9y
dFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czoKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qoc3R5bGUtPmdyaWRSb3dzKCksIHN0
eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAg
ICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KHN0eWxlLT5ncmlkUm93cygpLCBzdHlsZS5n
ZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLT52aWV3cG9ydFNpemUoKSk7CiAKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRTdGFydDoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZv
ckdyaWRQb3NpdGlvbihzdHlsZS0+Z3JpZEl0ZW1TdGFydCgpKTsKQEAgLTE5OTYsNyArMTk5Niw3
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmltYWdlUmVzb2x1dGlvbigpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0RQUFgpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0Ogot
ICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENT
U1Byb3BlcnR5TGVmdCwgbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpOworICAgICAg
ICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3Bl
cnR5TGVmdCwgbV9ub2RlLT5kb2N1bWVudCgpLT52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgogICAgICAgICAgICAgaWYgKCFzdHlsZS0+bGV0
dGVyU3BhY2luZygpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwpAQCAtMjAwNiw3ICsyMDA2LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmxpbmVDbGFtcCgpLnZhbHVl
KCksIHN0eWxlLT5saW5lQ2xhbXAoKS5pc1BlcmNlbnRhZ2UoKSA/IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gbGluZUhl
aWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3
KCkpOworICAgICAgICAgICAgcmV0dXJuIGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCks
IG1fbm9kZS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlSW1hZ2U6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmxpc3RTdHlsZUlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpLT5j
c3NWYWx1ZSgpOwpAQCAtMjAzNCw3ICsyMDM0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQK
ICAgICAgICAgICAgICAgICAvLyBSZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQg
aXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAog
ICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBi
b3gsIHdoZW4gZGlzcGxheSA9PSBCTE9DSy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQog
ICAgICAgICAgICAgICAgIC8vIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUg
aW5zdGVhZCBvZiByZWx5aW5nIG9uIFJlbmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCi0g
ICAgICAgICAgICAgICAgdmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQs
IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29u
dGVudCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSByZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0LCB0
b1JlbmRlckJveChyZW5kZXJlciktPmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRl
bnQoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b1JlbmRl
ckJveChyZW5kZXJlciktPm1hcmdpblJpZ2h0KCk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZSwgc3R5bGUuZ2V0KCkpOwpAQCAtMjEzOSw3ICsyMTM5LDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0
aW9uOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxl
LT5wb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgICAgICAg
ICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5
UmlnaHQsIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVJpZ2h0
LCBtX25vZGUtPmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+cnVieVBvc2l0aW9uKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VGFibGVMYXlvdXQ6CkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+dGV4dFRyYW5z
Zm9ybSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDoKLSAgICAgICAgICAgIHJldHVy
biBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVRvcCwgbV9u
b2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldFBv
c2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5VG9wLCBtX25vZGUtPmRv
Y3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0
eWxlLT51bmljb2RlQmlkaSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z246CkBAIC0yNDY5LDkgKzI0NjksOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAg
ICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgICAgICAgICAgICAgYm94
ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5ib3JkZXJCb3hSZWN0KCk7CiAKLSAgICAgICAgICAg
ICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJW
aWV3KCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm94
LndpZHRoKCksIHJlbmRlclZpZXcpLCBzdHlsZS5nZXQoKSkpOwotICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveC5oZWlnaHQoKSwgcmVuZGVyVmlldyksIHN0
eWxlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUocmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3Rp
dmVPcmlnaW5YKCksIGJveC53aWR0aCgpKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyZW5kZXJlci0+bWluaW11bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpKSwg
c3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0
eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgc3R5bGUuZ2V0KCkpKTsKQEAgLTI0OTEsMTMgKzI0
OTAsMTMgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJTZWxlY3Q6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUoc3R5bGUtPnVzZXJTZWxlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1
c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksIHN0eWxlLmdldCgp
LCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXco
KSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50
KCktPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExl
ZnRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUo
c3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXND
b3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCBzdHlsZS5nZXQoKSwgbV9u
b2RlLT5kb2N1bWVudCgpLT52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCks
IG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwg
c3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Q2xpcDogewogICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xp
cCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKQEAgLTI1MTksOSArMjUxOCw4IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKQogICAg
ICAgICAgICAgICAgICAgICBib3ggPSB0b1JlbmRlckJveChyZW5kZXJlciktPmJvcmRlckJveFJl
Y3QoKTsKIAotICAgICAgICAgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX25vZGUt
PmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5z
Zm9ybU9yaWdpblgoKSwgYm94LndpZHRoKCksIHJlbmRlclZpZXcpLCBzdHlsZS5nZXQoKSkpOwot
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLCBib3guaGVpZ2h0KCks
IHJlbmRlclZpZXcpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSwgYm94LndpZHRoKCkpLCBzdHlsZS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlbmRl
cmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm94
LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblooKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCBzdHlsZS5n
ZXQoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI2ODQsNyArMjY4Miw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHN0eWxlLT5ib3JkZXJJ
bWFnZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKLSAgICAgICAg
ICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShzdHlsZS5nZXQoKSwgbV9u
b2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJv
cmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkt
PnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Ogog
ICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhib3JkZXJSaWdodFNob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclN0eWxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4IDhm
MTY4YWI3MmNlMzA3NTZkZTAzNDE3ODRkZjgwMGZkMzc2MGJmMmUuLjkwNDQ2Njc2YWU0MDA5ZGNl
Yjc5ZGM5M2ViZTc1NTNkZmNhYWQyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbnRTaXplSGFzaC5oIgogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25WZWN0b3IuaD4KQEAgLTE2OCw2ICsxNjksNyBAQCB2b2lkIENTU0dyYWRp
ZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgUmVuZAogICAgIH0KIAogICAgIHNpemVfdCBudW1TdG9wcyA9IG1fc3RvcHMuc2l6ZSgp
OworICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSA9IHJlbmRlcmVyLT52aWV3KCktPnZp
ZXdwb3J0U2l6ZSgpOwogCiAgICAgVmVjdG9yPEdyYWRpZW50U3RvcD4gc3RvcHMobnVtU3RvcHMp
OwogCkBAIC0xOTYsOSArMTk4LDkgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhH
cmFkaWVudCogZ3JhZGllbnQsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoOwogICAgICAgICAgICAgICAg
IGlmIChzdG9wLm1fcG9zaXRpb24tPmlzTGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgIGxl
bmd0aCA9IHN0b3AubV9wb3NpdGlvbi0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RT
dHlsZSwgc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCA9IHN0b3AubV9wb3NpdGlvbi0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RTdHls
ZSwgdmlld3BvcnRTaXplLCBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgICAgICAg
ICBlbHNlIAotICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBzdG9wLm1fcG9zaXRpb24tPmNz
c0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCBzdHlsZS0+ZWZmZWN0
aXZlWm9vbSgpKS0+ZXZhbHVhdGUoZ3JhZGllbnRMZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICBsZW5ndGggPSBzdG9wLm1fcG9zaXRpb24tPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShz
dHlsZSwgcm9vdFN0eWxlLCBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKS0+ZXZhbHVhdGUoZ3JhZGll
bnRMZW5ndGgsIHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgICAgICAgICAgc3RvcHNbaV0ub2Zmc2V0
ID0gKGdyYWRpZW50TGVuZ3RoID4gMCkgPyBsZW5ndGggLyBncmFkaWVudExlbmd0aCA6IDA7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMzk5LDcgKzQwMSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3Jh
ZGllbnQqIGdyYWRpZW50LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kCiAgICAgZ3JhZGll
bnQtPnNldFN0b3BzU29ydGVkKHRydWUpOwogfQogCi1zdGF0aWMgZmxvYXQgcG9zaXRpb25Gcm9t
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaXNIb3Jpem9udGFs
KQorc3RhdGljIGZsb2F0IHBvc2l0aW9uRnJvbVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBJbnRT
aXplJiBzaXplLCBib29sIGlzSG9yaXpvbnRhbCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KQogewogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwogCkBA
IC00MTEsNyArNDEzLDcgQEAgc3RhdGljIGZsb2F0IHBvc2l0aW9uRnJvbVZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW4KICAgICAgICAgcmV0dXJu
IHZhbHVlLT5nZXRGbG9hdFZhbHVlKCkgLyAxMDAuZiAqIGVkZ2VEaXN0YW5jZTsKIAogICAgIGlm
ICh2YWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKLSAgICAgICAgcmV0
dXJuIHZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJvb3RTdHlsZSwg
c3R5bGUtPmVmZmVjdGl2ZVpvb20oKSktPmV2YWx1YXRlKGVkZ2VEaXN0YW5jZSk7CisgICAgICAg
IHJldHVybiB2YWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5
bGUsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkpLT5ldmFsdWF0ZShlZGdlRGlzdGFuY2UsIHZpZXdw
b3J0U2l6ZSk7CiAKICAgICBzd2l0Y2ggKHZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVRvcDoKQEAgLTQyOCwxOCArNDMwLDE4IEBAIHN0YXRpYyBmbG9hdCBwb3NpdGlvbkZy
b21WYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
CiAgICAgICAgIHJldHVybiBzaXplLndpZHRoKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHZhbHVl
LT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKKyAg
ICByZXR1cm4gdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5bGUsIHZp
ZXdwb3J0U2l6ZSwgem9vbUZhY3Rvcik7CiB9CiAKLUZsb2F0UG9pbnQgQ1NTR3JhZGllbnRWYWx1
ZTo6Y29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsLCBDU1NQcmlt
aXRpdmVWYWx1ZSogdmVydGljYWwsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJv
b3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK0Zsb2F0UG9pbnQgQ1NTR3JhZGllbnRWYWx1
ZTo6Y29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsLCBDU1NQcmlt
aXRpdmVWYWx1ZSogdmVydGljYWwsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJv
b3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KQogewogICAgIEZsb2F0UG9pbnQgcmVzdWx0OwogCiAgICAgaWYgKGhvcml6b250YWwpCi0gICAg
ICAgIHJlc3VsdC5zZXRYKHBvc2l0aW9uRnJvbVZhbHVlKGhvcml6b250YWwsIHN0eWxlLCByb290
U3R5bGUsIHNpemUsIHRydWUpKTsKKyAgICAgICAgcmVzdWx0LnNldFgocG9zaXRpb25Gcm9tVmFs
dWUoaG9yaXpvbnRhbCwgc3R5bGUsIHJvb3RTdHlsZSwgc2l6ZSwgdHJ1ZSwgdmlld3BvcnRTaXpl
KSk7CiAKICAgICBpZiAodmVydGljYWwpCi0gICAgICAgIHJlc3VsdC5zZXRZKHBvc2l0aW9uRnJv
bVZhbHVlKHZlcnRpY2FsLCBzdHlsZSwgcm9vdFN0eWxlLCBzaXplLCBmYWxzZSkpOworICAgICAg
ICByZXN1bHQuc2V0WShwb3NpdGlvbkZyb21WYWx1ZSh2ZXJ0aWNhbCwgc3R5bGUsIHJvb3RTdHls
ZSwgc2l6ZSwgZmFsc2UsIHZpZXdwb3J0U2l6ZSkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTY2OSwxMSArNjcxLDEyIEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgICAgIGZs
b2F0IGFuZ2xlID0gbV9hbmdsZS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RFRyk7CiAgICAgICAgIGVuZFBvaW50c0Zyb21BbmdsZShhbmdsZSwgc2l6ZSwgZmlyc3RQb2lu
dCwgc2Vjb25kUG9pbnQsIG1fZ3JhZGllbnRUeXBlKTsKICAgICB9IGVsc2UgeworICAgICAgICBj
b25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUgPSByZW5kZXJlci0+dmlldygpLT52aWV3cG9ydFNp
emUoKTsKICAgICAgICAgc3dpdGNoIChtX2dyYWRpZW50VHlwZSkgewogICAgICAgICBjYXNlIENT
U0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudDoKLSAgICAgICAgICAgIGZpcnN0UG9pbnQgPSBjb21w
dXRlRW5kUG9pbnQobV9maXJzdFguZ2V0KCksIG1fZmlyc3RZLmdldCgpLCByZW5kZXJlci0+c3R5
bGUoKSwgcm9vdFN0eWxlLCBzaXplKTsKKyAgICAgICAgICAgIGZpcnN0UG9pbnQgPSBjb21wdXRl
RW5kUG9pbnQobV9maXJzdFguZ2V0KCksIG1fZmlyc3RZLmdldCgpLCByZW5kZXJlci0+c3R5bGUo
KSwgcm9vdFN0eWxlLCBzaXplLCB2aWV3cG9ydFNpemUpOwogICAgICAgICAgICAgaWYgKG1fc2Vj
b25kWCB8fCBtX3NlY29uZFkpCi0gICAgICAgICAgICAgICAgc2Vjb25kUG9pbnQgPSBjb21wdXRl
RW5kUG9pbnQobV9zZWNvbmRYLmdldCgpLCBtX3NlY29uZFkuZ2V0KCksIHJlbmRlcmVyLT5zdHls
ZSgpLCByb290U3R5bGUsIHNpemUpOworICAgICAgICAgICAgICAgIHNlY29uZFBvaW50ID0gY29t
cHV0ZUVuZFBvaW50KG1fc2Vjb25kWC5nZXQoKSwgbV9zZWNvbmRZLmdldCgpLCByZW5kZXJlci0+
c3R5bGUoKSwgcm9vdFN0eWxlLCBzaXplLCB2aWV3cG9ydFNpemUpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmlyc3RYKQogICAgICAgICAgICAgICAgICAgICBz
ZWNvbmRQb2ludC5zZXRYKHNpemUud2lkdGgoKSAtIGZpcnN0UG9pbnQueCgpKTsKQEAgLTY4Miw3
ICs2ODUsNyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpj
cmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudDoKLSAg
ICAgICAgICAgIGZpcnN0UG9pbnQgPSBjb21wdXRlRW5kUG9pbnQobV9maXJzdFguZ2V0KCksIG1f
Zmlyc3RZLmdldCgpLCByZW5kZXJlci0+c3R5bGUoKSwgcm9vdFN0eWxlLCBzaXplKTsKKyAgICAg
ICAgICAgIGZpcnN0UG9pbnQgPSBjb21wdXRlRW5kUG9pbnQobV9maXJzdFguZ2V0KCksIG1fZmly
c3RZLmdldCgpLCByZW5kZXJlci0+c3R5bGUoKSwgcm9vdFN0eWxlLCBzaXplLCB2aWV3cG9ydFNp
emUpOwogICAgICAgICAgICAgaWYgKG1fZmlyc3RYKQogICAgICAgICAgICAgICAgIHNlY29uZFBv
aW50LnNldFgoc2l6ZS53aWR0aCgpIC0gZmlyc3RQb2ludC54KCkpOwogICAgICAgICAgICAgaWYg
KG1fZmlyc3RZKQpAQCAtNzAxLDcgKzcwNCw3IEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCogcmVuZGVyCiAg
ICAgICAgICAgICAgICAgZmxvYXQgYW5nbGUgPSA5MCAtIHJhZDJkZWcoYXRhbjIocmlzZSwgcnVu
KSk7CiAgICAgICAgICAgICAgICAgZW5kUG9pbnRzRnJvbUFuZ2xlKGFuZ2xlLCBzaXplLCBmaXJz
dFBvaW50LCBzZWNvbmRQb2ludCwgbV9ncmFkaWVudFR5cGUpOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChtX2ZpcnN0WCB8fCBtX2ZpcnN0WSkgeyAKLSAgICAgICAgICAgICAgICBzZWNvbmRQb2lu
dCA9IGNvbXB1dGVFbmRQb2ludChtX2ZpcnN0WC5nZXQoKSwgbV9maXJzdFkuZ2V0KCksIHJlbmRl
cmVyLT5zdHlsZSgpLCByb290U3R5bGUsIHNpemUpOworICAgICAgICAgICAgICAgIHNlY29uZFBv
aW50ID0gY29tcHV0ZUVuZFBvaW50KG1fZmlyc3RYLmdldCgpLCBtX2ZpcnN0WS5nZXQoKSwgcmVu
ZGVyZXItPnN0eWxlKCksIHJvb3RTdHlsZSwgc2l6ZSwgdmlld3BvcnRTaXplKTsKICAgICAgICAg
ICAgICAgICBpZiAobV9maXJzdFgpCiAgICAgICAgICAgICAgICAgICAgIGZpcnN0UG9pbnQuc2V0
WChzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOwogICAgICAgICAgICAgICAgIGlmICht
X2ZpcnN0WSkKQEAgLTkxMiw3ICs5MTUsNyBAQCBTdHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwog
fQogCi1mbG9hdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpyZXNvbHZlUmFkaXVzKENTU1ByaW1p
dGl2ZVZhbHVlKiByYWRpdXMsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZmxvYXQqIHdpZHRoT3JIZWlnaHQpCitmbG9hdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpyZXNvbHZlUmFkaXVzKENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMsIFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
LCBmbG9hdCogd2lkdGhPckhlaWdodCkKIHsKICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUt
PmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtOTIyLDcgKzkyNSw3IEBAIGZsb2F0IENTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OnJlc29sdmVSYWRpdXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cywgUmVu
ZGVyU3R5CiAgICAgZWxzZSBpZiAod2lkdGhPckhlaWdodCAmJiByYWRpdXMtPmlzUGVyY2VudGFn
ZSgpKQogICAgICAgICByZXN1bHQgPSAqd2lkdGhPckhlaWdodCAqIHJhZGl1cy0+Z2V0RmxvYXRW
YWx1ZSgpIC8gMTAwOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gcmFkaXVzLT5jb21wdXRl
TGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgcmVz
dWx0ID0gcmFkaXVzLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB2aWV3
cG9ydFNpemUsIHpvb21GYWN0b3IpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMDks
MTQgKzEwMTIsMTUgQEAgUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXIKICAgICBBU1NFUlQoIXNpemUu
aXNFbXB0eSgpKTsKIAogICAgIFJlbmRlclN0eWxlKiByb290U3R5bGUgPSByZW5kZXJlci0+ZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCk7CisgICAgY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplID0gcmVuZGVyZXItPnZpZXcoKS0+dmlld3BvcnRTaXplKCk7CiAK
LSAgICBGbG9hdFBvaW50IGZpcnN0UG9pbnQgPSBjb21wdXRlRW5kUG9pbnQobV9maXJzdFguZ2V0
KCksIG1fZmlyc3RZLmdldCgpLCByZW5kZXJlci0+c3R5bGUoKSwgcm9vdFN0eWxlLCBzaXplKTsK
KyAgICBGbG9hdFBvaW50IGZpcnN0UG9pbnQgPSBjb21wdXRlRW5kUG9pbnQobV9maXJzdFguZ2V0
KCksIG1fZmlyc3RZLmdldCgpLCByZW5kZXJlci0+c3R5bGUoKSwgcm9vdFN0eWxlLCBzaXplLCB2
aWV3cG9ydFNpemUpOwogICAgIGlmICghbV9maXJzdFgpCiAgICAgICAgIGZpcnN0UG9pbnQuc2V0
WChzaXplLndpZHRoKCkgLyAyKTsKICAgICBpZiAoIW1fZmlyc3RZKQogICAgICAgICBmaXJzdFBv
aW50LnNldFkoc2l6ZS5oZWlnaHQoKSAvIDIpOwogCi0gICAgRmxvYXRQb2ludCBzZWNvbmRQb2lu
dCA9IGNvbXB1dGVFbmRQb2ludChtX3NlY29uZFguZ2V0KCksIG1fc2Vjb25kWS5nZXQoKSwgcmVu
ZGVyZXItPnN0eWxlKCksIHJvb3RTdHlsZSwgc2l6ZSk7CisgICAgRmxvYXRQb2ludCBzZWNvbmRQ
b2ludCA9IGNvbXB1dGVFbmRQb2ludChtX3NlY29uZFguZ2V0KCksIG1fc2Vjb25kWS5nZXQoKSwg
cmVuZGVyZXItPnN0eWxlKCksIHJvb3RTdHlsZSwgc2l6ZSwgdmlld3BvcnRTaXplKTsKICAgICBp
ZiAoIW1fc2Vjb25kWCkKICAgICAgICAgc2Vjb25kUG9pbnQuc2V0WChzaXplLndpZHRoKCkgLyAy
KTsKICAgICBpZiAoIW1fc2Vjb25kWSkKQEAgLTEwMjQsMTggKzEwMjgsMTggQEAgUGFzc1JlZlB0
cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXIKIAogICAgIGZsb2F0IGZpcnN0UmFkaXVzID0gMDsKICAgICBpZiAobV9m
aXJzdFJhZGl1cykKLSAgICAgICAgZmlyc3RSYWRpdXMgPSByZXNvbHZlUmFkaXVzKG1fZmlyc3RS
YWRpdXMuZ2V0KCksIHJlbmRlcmVyLT5zdHlsZSgpLCByb290U3R5bGUpOworICAgICAgICBmaXJz
dFJhZGl1cyA9IHJlc29sdmVSYWRpdXMobV9maXJzdFJhZGl1cy5nZXQoKSwgcmVuZGVyZXItPnN0
eWxlKCksIHJvb3RTdHlsZSwgdmlld3BvcnRTaXplKTsKIAogICAgIGZsb2F0IHNlY29uZFJhZGl1
cyA9IDA7CiAgICAgZmxvYXQgYXNwZWN0UmF0aW8gPSAxOyAvLyB3aWR0aCAvIGhlaWdodC4KICAg
ICBpZiAobV9zZWNvbmRSYWRpdXMpCi0gICAgICAgIHNlY29uZFJhZGl1cyA9IHJlc29sdmVSYWRp
dXMobV9zZWNvbmRSYWRpdXMuZ2V0KCksIHJlbmRlcmVyLT5zdHlsZSgpLCByb290U3R5bGUpOwor
ICAgICAgICBzZWNvbmRSYWRpdXMgPSByZXNvbHZlUmFkaXVzKG1fc2Vjb25kUmFkaXVzLmdldCgp
LCByZW5kZXJlci0+c3R5bGUoKSwgcm9vdFN0eWxlLCB2aWV3cG9ydFNpemUpOwogICAgIGVsc2Ug
aWYgKG1fZW5kSG9yaXpvbnRhbFNpemUpIHsKICAgICAgICAgZmxvYXQgd2lkdGggPSBzaXplLndp
ZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgICAgIHNl
Y29uZFJhZGl1cyA9IHJlc29sdmVSYWRpdXMobV9lbmRIb3Jpem9udGFsU2l6ZS5nZXQoKSwgcmVu
ZGVyZXItPnN0eWxlKCksIHJvb3RTdHlsZSwgJndpZHRoKTsKKyAgICAgICAgc2Vjb25kUmFkaXVz
ID0gcmVzb2x2ZVJhZGl1cyhtX2VuZEhvcml6b250YWxTaXplLmdldCgpLCByZW5kZXJlci0+c3R5
bGUoKSwgcm9vdFN0eWxlLCB2aWV3cG9ydFNpemUsICZ3aWR0aCk7CiAgICAgICAgIGlmIChtX2Vu
ZFZlcnRpY2FsU2l6ZSkKLSAgICAgICAgICAgIGFzcGVjdFJhdGlvID0gc2Vjb25kUmFkaXVzIC8g
cmVzb2x2ZVJhZGl1cyhtX2VuZFZlcnRpY2FsU2l6ZS5nZXQoKSwgcmVuZGVyZXItPnN0eWxlKCks
IHJvb3RTdHlsZSwgJmhlaWdodCk7CisgICAgICAgICAgICBhc3BlY3RSYXRpbyA9IHNlY29uZFJh
ZGl1cyAvIHJlc29sdmVSYWRpdXMobV9lbmRWZXJ0aWNhbFNpemUuZ2V0KCksIHJlbmRlcmVyLT5z
dHlsZSgpLCByb290U3R5bGUsIHZpZXdwb3J0U2l6ZSwgJmhlaWdodCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGFzcGVjdFJhdGlvID0gMTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggOGUxYzc3YjY0MTEwZDk5NjdkMzcyMWIxY2FmYzA1
ZjI5ZjgxMTUyZi4uYmQyY2U1MjY5ZTczYTdlMjQ2MmI3NWU5Zjk3YmVmMmY5MzQ4ZTg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgYWRkU3RvcHMoR3JhZGllbnQqLCBSZW5kZXJPYmplY3QqLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBmbG9hdCBtYXhMZW5ndGhGb3JSZXBlYXQgPSAwKTsKIAogICAg
IC8vIFJlc29sdmUgcG9pbnRzL3JhZGlpIHRvIGZyb250IGVuZCB2YWx1ZXMuCi0gICAgRmxvYXRQ
b2ludCBjb21wdXRlRW5kUG9pbnQoQ1NTUHJpbWl0aXZlVmFsdWUqLCBDU1NQcmltaXRpdmVWYWx1
ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYp
OworICAgIEZsb2F0UG9pbnQgY29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiwgQ1NT
UHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNv
bnN0IEludFNpemUmLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogCiAgICAgYm9vbCBp
c0NhY2hlYWJsZSgpIGNvbnN0OwogCkBAIC0yMjUsNyArMjI1LDcgQEAgcHJpdmF0ZToKIAogCiAg
ICAgLy8gUmVzb2x2ZSBwb2ludHMvcmFkaWkgdG8gZnJvbnQgZW5kIHZhbHVlcy4KLSAgICBmbG9h
dCByZXNvbHZlUmFkaXVzKENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBmbG9hdCogd2lkdGhPckhlaWdodCA9IDApOworICAgIGZsb2F0IHJl
c29sdmVSYWRpdXMoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQqIHdpZHRoT3JI
ZWlnaHQgPSAwKTsKIAogICAgIC8vIFRoZXNlIG1heSBiZSBudWxsIGZvciBub24tZGVwcmVjYXRl
ZCBncmFkaWVudHMuCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2ZpcnN0UmFkaXVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggYWNkNzg3N2U3
Y2VjMDFmYjUwOTBhZWRkOWJkNDgzZmY1YWU0NTU4MC4uOWU2ZmFhMGE4Mjg5OGI4MmVlMzgxZDMz
YzYyMzFjZjFmMTE1OTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCkBAIC00ODEsNTAgKzQ4MSw1MCBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVEZWdyZWVzKCkKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW50IENTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgZmxvYXQgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKK3RlbXBsYXRlPD4g
aW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwg
UmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiByb3Vu
ZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50Pihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCBy
b290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CisgICAgcmV0dXJuIHJv
dW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUs
IHJvb3RTdHlsZSwgdmlld3BvcnRTaXplLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkp
OwogfQogCi10ZW1wbGF0ZTw+IHVuc2lnbmVkIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZmxvYXQgbXVs
dGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKK3RlbXBsYXRlPD4gdW5zaWduZWQgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG11bHRp
cGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCiB7Ci0gICAgcmV0dXJuIHJvdW5kRm9ySW1w
cmVjaXNlQ29udmVyc2lvbjx1bnNpZ25lZD4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9v
dFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkpOworICAgIHJldHVybiByb3Vu
ZEZvckltcHJlY2lzZUNvbnZlcnNpb248dW5zaWduZWQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5
bGUsIHJvb3RTdHlsZSwgdmlld3BvcnRTaXplLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6
ZSkpOwogfQogCi10ZW1wbGF0ZTw+IExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGZsb2F0IG11
bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCit0ZW1wbGF0ZTw+IExlbmd0aCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgbXVsdGlw
bGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKICNpZiBFTkFCTEUoU1VCUElYRUxfTEFZ
T1VUKQotICAgIHJldHVybiBMZW5ndGgoY2xhbXBUbzxmbG9hdD4oY29tcHV0ZUxlbmd0aERvdWJs
ZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSksIG1pblZh
bHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIEZpeGVkKTsKKyAgICByZXR1
cm4gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RT
dHlsZSwgdmlld3BvcnRTaXplLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSksIG1pblZh
bHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIEZpeGVkKTsKICNlbHNlCi0g
ICAgcmV0dXJuIExlbmd0aChjbGFtcFRvPGZsb2F0Pihyb3VuZEZvckltcHJlY2lzZUNvbnZlcnNp
b248ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGll
ciwgY29tcHV0aW5nRm9udFNpemUpKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9y
Q3NzTGVuZ3RoKSwgRml4ZWQpOworICAgIHJldHVybiBMZW5ndGgoY2xhbXBUbzxmbG9hdD4ocm91
bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGZsb2F0Pihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxl
LCByb290U3R5bGUsIHZpZXdwb3J0U2l6ZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUp
KSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVuZ3RoKSwgRml4ZWQpOwog
I2VuZGlmCiB9CiAKLXRlbXBsYXRlPD4gc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBmbG9hdCBt
dWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQordGVtcGxhdGU8PiBzaG9ydCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgbXVsdGlw
bGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKLSAgICByZXR1cm4gcm91bmRGb3JJbXBy
ZWNpc2VDb252ZXJzaW9uPHNob3J0Pihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5
bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CisgICAgcmV0dXJuIHJvdW5kRm9y
SW1wcmVjaXNlQ29udmVyc2lvbjxzaG9ydD4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9v
dFN0eWxlLCB2aWV3cG9ydFNpemUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CiB9
CiAKLXRlbXBsYXRlPD4gdW5zaWduZWQgc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBmbG9hdCBt
dWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQordGVtcGxhdGU8PiB1bnNpZ25lZCBz
aG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUs
IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxv
YXQgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKLSAgICByZXR1cm4gcm91
bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPHVuc2lnbmVkIHNob3J0Pihjb21wdXRlTGVuZ3RoRG91
YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7Cisg
ICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjx1bnNpZ25lZCBzaG9ydD4oY29t
cHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCB2aWV3cG9ydFNpemUsIG11bHRpcGxp
ZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPD4gZmxvYXQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSog
cm9vdFN0eWxlLCBmbG9hdCBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQordGVt
cGxhdGU8PiBmbG9hdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHls
ZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgZmxvYXQgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RT
dHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgdmlld3Bv
cnRTaXplLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkpOwogfQogCi10ZW1wbGF0ZTw+
IGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGZsb2F0IG11bHRpcGxpZXIsIGJvb2wgY29tcHV0
aW5nRm9udFNpemUpCit0ZW1wbGF0ZTw+IGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSkKIHsKLSAgICByZXR1cm4gY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0
eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSk7CisgICAgcmV0dXJuIGNvbXB1dGVM
ZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgdmlld3BvcnRTaXplLCBtdWx0aXBsaWVyLCBj
b21wdXRpbmdGb250U2l6ZSk7CiB9CiAKLWRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aERvdWJsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUs
IGZsb2F0IG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCitkb3VibGUgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhEb3VibGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG11
bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCiB7CiAgICAgaWYgKG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX0NBTEMpCiAgICAgICAgIC8vIFRoZSBtdWx0aXBsaWVyIGFuZCBmYWN0
b3IgaXMgYXBwbGllZCB0byBlYWNoIHZhbHVlIGluIHRoZSBjYWxjIGV4cHJlc3Npb24gaW5kaXZp
ZHVhbGx5Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLmNhbGMtPmNvbXB1dGVMZW5ndGhQeChzdHls
ZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSk7CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlLmNhbGMtPmNvbXB1dGVMZW5ndGhQeChzdHlsZSwgcm9vdFN0eWxlLCB2aWV3
cG9ydFNpemUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKTsKICAgICAgICAgCiAgICAg
ZG91YmxlIGZhY3RvcjsKIApAQCAtNTY5LDYgKzU2OSwxOCBAQCBkb3VibGUgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNvbXB1dGVMZW5ndGhEb3VibGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcgogICAgICAgICAgICAgLy8gMSBwYyA9PSAxMiBwdAogICAgICAgICAgICAgZmFjdG9yID0g
Y3NzUGl4ZWxzUGVySW5jaCAqIDEyLjAgLyA3Mi4wOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1NTX1ZXOgorICAgICAgICAgICAgZmFjdG9yID0gdmlld3BvcnRTaXplLndpZHRo
KCkgLyAxMDAuMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19WSDoKKyAg
ICAgICAgICAgIGZhY3RvciA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIDEwMC4wOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1ZNSU46CisgICAgICAgICAgICBmYWN0b3Ig
PSBzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAv
IDEwMC4wOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1ZNQVg6CisgICAg
ICAgICAgICBmYWN0b3IgPSBzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRT
aXplLmhlaWdodCgpKSAvIDEwMC4wOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKICAgICAgICAgY2FzZSBDU1NfQ0FMQ19Q
RVJDRU5UQUdFX1dJVEhfTlVNQkVSOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0xMzE4LDYgKzEzMzAsNyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmIG90aGVyKSBjb25zdAogICAgIGNhc2UgQ1NTX1ZXOgogICAg
IGNhc2UgQ1NTX1ZIOgogICAgIGNhc2UgQ1NTX1ZNSU46CisgICAgY2FzZSBDU1NfVk1BWDoKICAg
ICBjYXNlIENTU19ESU1FTlNJT046CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLm51bSA9PSBvdGhl
ci5tX3ZhbHVlLm51bTsKICAgICBjYXNlIENTU19JREVOVDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKaW5kZXggMThkMjNmYWU3YjAwYjE3NTM0Yzc0ZmMwNzI3YmEwNTdjMDIw
ZjliZS4uYWFhZDAyYjQ1MTZjNGFkNjU0ZTZkNzI0NmQ5YTUyMDgwNzhhOTE3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTI0OSw3ICsyNDksNyBAQCBwdWJsaWM6
CiAgICAgICogdGhpcyBpcyBzY3JlZW4vcHJpbnRlciBkZXBlbmRlbnQsIHNvIHdlIHByb2JhYmx5
IG5lZWQgYSBjb25maWcgb3B0aW9uIGZvciB0aGlzLAogICAgICAqIGFuZCBzb21lIHRvb2wgdG8g
Y2FsaWJyYXRlLgogICAgICAqLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29tcHV0ZUxl
bmd0aChSZW5kZXJTdHlsZSogY3VyclN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBmbG9h
dCBtdWx0aXBsaWVyID0gMS4wZiwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUqIGN1cnJT
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
LCBmbG9hdCBtdWx0aXBsaWVyID0gMS4wZiwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNl
KTsKIAogICAgIC8vIENvbnZlcnRzIHRvIGEgTGVuZ3RoLCBtYXBwaW5nIHZhcmlvdXMgdW5pdCB0
eXBlcyBhcHByb3ByaWF0ZWx5LgogICAgIHRlbXBsYXRlPGludD4gTGVuZ3RoIGNvbnZlcnRUb0xl
bmd0aChSZW5kZXJTdHlsZSogY3VyclN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKTsKQEAg
LTM2MCw3ICszNjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdChQYXNzUmVmUHRyPENTU0Nh
bGNWYWx1ZT4pOwogICAgIGJvb2wgZ2V0RG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgdGFy
Z2V0VW5pdFR5cGUsIGRvdWJsZSogcmVzdWx0KSBjb25zdDsKIAotICAgIGRvdWJsZSBjb21wdXRl
TGVuZ3RoRG91YmxlKFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGZsb2F0IG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpOworICAgIGRv
dWJsZSBjb21wdXRlTGVuZ3RoRG91YmxlKFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgbXVs
dGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSk7CiAKICAgICB1bmlvbiB7CiAgICAgICAg
IGludCBpZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCmluZGV4IGMwZTU1YzM4NWQ2YTM1MmQ1ZDRmMGVjODQyM2JkYjFhNjg5NmNkYTYuLjJl
MTNjMDA3MjI2NmExZDE4ZDQwMDE2MGI0NjY4OTJhYjI3YmM0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtNDE4MywxOCArNDE4Mywx
OCBAQCB0ZW1wbGF0ZTxpbnQgc3VwcG9ydGVkPiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bnZlcnRUb0xlbmd0aChSZW5kZXJTdHlsZSogcwogI2VuZGlmCiAgICAgaWYgKChzdXBwb3J0ZWQg
JiAoRml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJzaW9uKSkgJiYgaXNG
b250UmVsYXRpdmVMZW5ndGgoKSAmJiAoIXN0eWxlIHx8ICFyb290U3R5bGUpKQogICAgICAgICBy
ZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7CisgICAgaWYgKChzdXBwb3J0ZWQgJiBDYWxjdWxhdGVk
Q29udmVyc2lvbikgJiYgaXNDYWxjdWxhdGVkKCkpCisgICAgICAgIHJldHVybiBMZW5ndGgoY3Nz
Q2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpKTsK
ICAgICBpZiAoKHN1cHBvcnRlZCAmIEZpeGVkSW50ZWdlckNvbnZlcnNpb24pICYmIGlzTGVuZ3Ro
KCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUsIHJvb3RTdHls
ZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpOworICAgICAgICByZXR1cm4gY29tcHV0
ZUxlbmd0aDxMZW5ndGg+KHN0eWxlLCByb290U3R5bGUsIEludFNpemUoKSwgbXVsdGlwbGllciwg
Y29tcHV0aW5nRm9udFNpemUpOwogICAgIGlmICgoc3VwcG9ydGVkICYgRml4ZWRGbG9hdENvbnZl
cnNpb24pICYmIGlzTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoY29tcHV0ZUxlbmd0
aDxkb3VibGU+KHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhlZCk7CisgICAgICAg
IHJldHVybiBMZW5ndGgoY29tcHV0ZUxlbmd0aDxkb3VibGU+KHN0eWxlLCByb290U3R5bGUsIElu
dFNpemUoKSwgbXVsdGlwbGllciksIEZpeGVkKTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIFBlcmNl
bnRDb252ZXJzaW9uKSAmJiBpc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aChn
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIEZyYWN0aW9u
Q29udmVyc2lvbikgJiYgaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aChnZXREb3Vi
bGVWYWx1ZSgpICogMTAwLjAsIFBlcmNlbnQpOwogICAgIGlmICgoc3VwcG9ydGVkICYgQXV0b0Nv
bnZlcnNpb24pICYmIGdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4g
TGVuZ3RoKEF1dG8pOwotICAgIGlmICgoc3VwcG9ydGVkICYgQ2FsY3VsYXRlZENvbnZlcnNpb24p
ICYmIGlzQ2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKGNzc0NhbGNWYWx1ZSgp
LT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CiAgICAgaWYgKChz
dXBwb3J0ZWQgJiBWaWV3cG9ydFBlcmNlbnRhZ2VDb252ZXJzaW9uKSAmJiBpc1ZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCk7CiAgICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCmluZGV4IDcyMWZkOGU5MDFiNWViYmYxY2Y2Y2Q3NDlmYThmNTNmMWNmYmE0OWIu
LjlmZjM2MGFhMDAzNDYyNzY1MzE4OTk0OTVjN2Y4OTZmZWRhOTM4Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLAogCiAgICAgTGVuZ3RoIGxlbmd0aDsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlz
TGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
PExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICAg
ICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgp
LCByb290RWxlbWVudFN0eWxlKCksIEludFNpemUoKSwgem9vbUZhY3Rvcik7CiAgICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICBsZW5ndGggPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQpA
QCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbihD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsCiAKICAgICBMZW5ndGgg
bGVuZ3RoOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290
RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVW
YWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwg
SW50U2l6ZSgpLCB6b29tRmFjdG9yKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQ
ZXJjZW50YWdlKCkpCiAgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlz
Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCkBAIC02MTQsMjggKzYxNCwyOCBAQCBM
ZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlKiB2
YWx1ZSkKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAg
ICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJsZVZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNs
aWNlcy0+dG9wKCktPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBib3gubV90
b3AgPSBzbGljZXMtPnRvcCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgcm9vdEVs
ZW1lbnRTdHlsZSgpLCB6b29tKTsKKyAgICAgICAgYm94Lm1fdG9wID0gc2xpY2VzLT50b3AoKS0+
Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdl
Q29udmVyc2lvbj4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKIAogICAgIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzTnVtYmVyKCkpCiAgICAgICAgIGJveC5tX3JpZ2h0ID0gTGVu
Z3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2Ug
aWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgIGJveC5tX3JpZ2h0
ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdo
dCgpLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBz
bGljZXMtPnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVu
dFN0eWxlKCksIHpvb20pOworICAgICAgICBib3gubV9yaWdodCA9IHNsaWNlcy0+cmlnaHQoKS0+
Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdl
Q29udmVyc2lvbj4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKIAogICAgIGlm
IChzbGljZXMtPmJvdHRvbSgpLT5pc051bWJlcigpKQogICAgICAgICBib3gubV9ib3R0b20gPSBM
ZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVs
c2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQogICAgICAgICBib3gubV9i
b3R0b20gPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2Vz
LT5ib3R0b20oKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2Jv
dHRvbSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCBy
b290RWxlbWVudFN0eWxlKCksIHpvb20pOworICAgICAgICBib3gubV9ib3R0b20gPSBzbGljZXMt
PmJvdHRvbSgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBWaWV3cG9y
dFBlcmNlbnRhZ2VDb252ZXJzaW9uPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb20p
OwogCiAgICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc051bWJlcigpKQogICAgICAgICBib3gubV9s
ZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAg
ICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQogICAgICAgICBib3gu
bV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKICAgICBlbHNlIGlmIChzbGljZXMt
PmxlZnQoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2xlZnQg
PSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVt
ZW50U3R5bGUoKSwgem9vbSk7CisgICAgICAgIGJveC5tX2xlZnQgPSBzbGljZXMtPmxlZnQoKS0+
Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdl
Q29udmVyc2lvbj4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKIAogICAgIHJl
dHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4IGFk
YmExMDA4MTJjYTY4MGY1YjgwNzZiMzM2MmJmMWQzYzNiMDFlYTkuLjQ0NjAxMWZiYzkyZmVkYjhh
NGQ0YWZlMWVkMjJmZDZkY2U4YjFkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlv
bnMuY3BwCkBAIC0zMCwxNyArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbnQg
bWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0
IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldywgYm9vbCByb3VuZFBlcmNlbnRh
Z2VzKQoraW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwg
TGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9v
bCByb3VuZFBlcmNlbnRhZ2VzKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgcmVuZGVyVmlldywgcm91bmRQ
ZXJjZW50YWdlcykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgdmlld3BvcnRTaXplLCByb3VuZFBlcmNlbnRh
Z2VzKSk7CiB9CiAKLWludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwg
TGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91
bmRQZXJjZW50YWdlcykKK2ludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0
aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
Ym9vbCByb3VuZFBlcmNlbnRhZ2VzKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCByZW5kZXJWaWV3LCByb3VuZFBlcmNl
bnRhZ2VzKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsdWVGb3JMZW5ndGgobGVu
Z3RoLCBtYXhpbXVtVmFsdWUsIHZpZXdwb3J0U2l6ZSwgcm91bmRQZXJjZW50YWdlcykpOwogfQog
Ci1MYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwg
TGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91
bmRQZXJjZW50YWdlcykKK0xheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCiB7CiAgICAgc3dpdGNoIChsZW5ndGgu
dHlwZSgpKSB7CiAgICAgY2FzZSBGaXhlZDoKQEAgLTUxLDI3ICs1MSwxNSBAQCBMYXlvdXRVbml0
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBt
YXhpbXVtVmFsdWUsCiAgICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBm
bG9hdC4gSXQgaXMgbmVlZGVkIGZvciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMg
dGhhdCB1c2UgdGhlIEZQVSBzdGFjay4KICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExheW91
dFVuaXQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgp
IC8gMTAwLjBmKSk7CiAgICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICByZXR1cm4gbGVuZ3Ro
Lm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOworICAgICAgICByZXR1cm4gbGVu
Z3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUsIHZpZXdwb3J0U2l6ZSk7CiAg
ICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4ocmVuZGVyVmlldy0+
dmlld3BvcnRTaXplKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KSAvIDEwMC4wZik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TGF5b3V0VW5pdD4odmlld3BvcnRTaXplLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJj
ZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVp
Z2h0OgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxMYXlvdXRVbml0PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSAqIGxl
bmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4odmlld3BvcnRTaXpl
LmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsK
ICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1pbjoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcp
IHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3Bv
cnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3Rk
OjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5n
dGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3Rk
OjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5n
dGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2UgVmlld3Bv
cnRQZXJjZW50YWdlTWF4OgotICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAg
SW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdGQ6Om1heCh2aWV3cG9ydFNp
emUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdGQ6Om1heCh2aWV3cG9ydFNp
emUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBGaWxsQXZhaWxhYmxlOgogICAgIGNh
c2UgQXV0bzoKICAgICAgICAgcmV0dXJuIDA7CkBAIC04OSw3ICs3Nyw3IEBAIExheW91dFVuaXQg
bWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1h
eGltdW1WYWx1ZSwKICAgICByZXR1cm4gMDsKIH0KIAotTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0
aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKK0xheW91dFVuaXQgdmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBj
b25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKIHsKICAg
ICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgpAQCAtOTksNyArODcs
NyBAQCBMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVgogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdl
SGVpZ2h0OgogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgIGNhc2UgVmlld3Bv
cnRQZXJjZW50YWdlTWF4OgotICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxl
bmd0aCwgbWF4aW11bVZhbHVlLCByZW5kZXJWaWV3LCByb3VuZFBlcmNlbnRhZ2VzKTsKKyAgICAg
ICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgdmll
d3BvcnRTaXplLCByb3VuZFBlcmNlbnRhZ2VzKTsKICAgICBjYXNlIEZpbGxBdmFpbGFibGU6CiAg
ICAgY2FzZSBBdXRvOgogICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOwpAQCAtMTE4LDcgKzEw
Niw3IEBAIExheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExh
eW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWCiB9CiAKIC8vIEZJWE1FOiB3aGVuIHN1YnBp
eGVsIGxheW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgo
KSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KLWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3KQorZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
IGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgpA
QCAtMTI5LDI3ICsxMTcsMTUgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclYKICAgICBjYXNlIEF1
dG86CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsKICAg
ICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRl
ZFZhbHVlKG1heGltdW1WYWx1ZSk7ICAgICAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gbGVu
Z3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUsIHZpZXdwb3J0U2l6ZSk7CiAg
ICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9y
dFNpemUoKS53aWR0aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAw
LjBmKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHZpZXdwb3J0U2l6ZS53aWR0aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgp
IC8gMTAwLjBmKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKLSAgICAgICAg
aWYgKHJlbmRlclZpZXcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5k
ZXJWaWV3LT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9y
dFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRh
Z2VNaW46Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZp
ZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNp
emUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBm
KTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1heDoKLSAgICAgICAgaWYgKHJlbmRlclZp
ZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmll
d3BvcnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1h
eCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52
aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjptYXgodmll
d3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3Bv
cnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2UgUmVsYXRpdmU6CiAgICAg
Y2FzZSBJbnRyaW5zaWM6CiAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CkBAIC0xNjQsNyArMTQwLDcg
QEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclYKICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQgZmxv
YXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpCiB7CiAgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CiAgICAgY2FzZSBGaXhl
ZDoKQEAgLTE3NSwyNyArMTUxLDE1IEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyoKICAgICBjYXNl
IEF1dG86CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsK
ICAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3Vs
YXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7CisgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2Fs
Y3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSwgdmlld3BvcnRTaXplKTsKICAgICBjYXNlIFZpZXdw
b3J0UGVyY2VudGFnZVdpZHRoOgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLndpZHRo
KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2aWV3cG9ydFNp
emUud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7
CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6Ci0gICAgICAgIGlmIChyZW5kZXJW
aWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
LyAxMDAuMGYpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0Pih2aWV3cG9ydFNpemUuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdl
TGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgotICAg
ICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUg
PSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVp
Z2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgp
KSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2Fz
ZSBWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAg
ICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptYXgodmlld3BvcnRT
aXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJj
ZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZS53
aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFJlbGF0aXZlOgogICAgIGNhc2UgSW50cmlu
c2ljOgogICAgIGNhc2UgTWluSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0xlbmd0aEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9u
cy5oCmluZGV4IDlmY2YyZWYwNjIyYzZjOGI2MzU1NTU2ZjAyMmVjYTVlYTc5YzE1NDEuLmIyNmVi
YzViOTYwMjI5YjdkN2U1YTlmZDY5NzE2NzFiNzc3N2Y3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVu
Z3RoRnVuY3Rpb25zLmgKQEAgLTI2LDE2ICsyNiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEludFNpemU7CiBjbGFzcyBMYXlvdXRVbml0OwotY2xhc3MgUmVuZGVyVmlldzsK
IHN0cnVjdCBMZW5ndGg7CiAKLWludCBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVu
Z3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzID0gZmFsc2UpOwotaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcyA9IGZhbHNlKTsKLUxheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJv
b2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKLUxheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwg
Ym9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOwotZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0
aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAw
KTsKLWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11
bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDApOworaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitpbnQgaW50VmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworTGF5
b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBt
YXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpOworTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
LCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBi
b29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBm
bG9hdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCmluZGV4IGMyZmMwZjYxOWY3NDQ4NDRhZjM1N2RiNjg5NDJjYjg5ZGQxZGU3NzAuLmNm
NDUwYzZkZDJmOTlhYTAzNjNiMTY3NTM3YTMzMTYyNDQ3M2U0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTQyNCw3ICs0MjQsNyBAQCBzdGF0aWMg
Ym9vbCBncmlkTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwg
RnJhbWUqLCBNZWRpYUZlYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgY29t
cHV0ZUxlbmd0aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGludCYgcmVzdWx0KQorc3RhdGljIGJvb2wgY29t
cHV0ZUxlbmd0aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
aW50JiByZXN1bHQpCiB7CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzcsNyArNDM3LDcgQEAgc3RhdGljIGJvb2wgY29tcHV0
ZUxlbmd0aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBSZW5kZXJTdHlsZSogc3R5bGUs
IFJlbmQKICAgICB9CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpIHsKLSAg
ICAgICAgcmVzdWx0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSwg
cm9vdFN0eWxlKTsKKyAgICAgICAgcmVzdWx0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8aW50PihzdHlsZSwgcm9vdFN0eWxlLCB2aWV3cG9ydFNpemUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgYm9vbCBkZXZpY2VfaGVp
Z2h0TWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RgogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBsb25nIGhlaWdodCA9IHNnLmhlaWdodCgp
OwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5U2NyZWVuSGVpZ2h0T3Zl
cnJpZGUoZnJhbWUsICZoZWlnaHQpOwotICAgICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1
ZSwgIWZyYW1lLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwg
bGVuZ3RoKSAmJiBjb21wYXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50PihoZWlnaHQpLCBsZW5ndGgs
IG9wKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9jdW1l
bnQoKS0+aW5RdWlya3NNb2RlKCksIHN0eWxlLCByb290U3R5bGUsIGZyYW1lLT5kb2N1bWVudCgp
LT52aWV3cG9ydFNpemUoKSwgbGVuZ3RoKSAmJiBjb21wYXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50
PihoZWlnaHQpLCBsZW5ndGgsIG9wKTsKICAgICB9CiAgICAgLy8gKHssbWluLSxtYXgtfWRldmlj
ZS1oZWlnaHQpCiAgICAgLy8gYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24t
emVybwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHN0YXRpYyBib29sIGRldmljZV93aWR0aE1lZGlhRmVh
dHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyCiAgICAgICAg
IGludCBsZW5ndGg7CiAgICAgICAgIGxvbmcgd2lkdGggPSBzZy53aWR0aCgpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShmcmFtZSwg
JndpZHRoKTsKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9j
dW1lbnQoKS0+aW5RdWlya3NNb2RlKCksIHN0eWxlLCByb290U3R5bGUsIGxlbmd0aCkgJiYgY29t
cGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4od2lkdGgpLCBsZW5ndGgsIG9wKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NN
b2RlKCksIHN0eWxlLCByb290U3R5bGUsIGZyYW1lLT5kb2N1bWVudCgpLT52aWV3cG9ydFNpemUo
KSwgbGVuZ3RoKSAmJiBjb21wYXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIGxlbmd0
aCwgb3ApOwogICAgIH0KICAgICAvLyAoeyxtaW4tLG1heC19ZGV2aWNlLXdpZHRoKQogICAgIC8v
IGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KQEAgLTQ4NCw3ICs0
ODQsNyBAQCBzdGF0aWMgYm9vbCBoZWlnaHRNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZSogZgogICAgICAgICAgICAgaGVpZ2h0ID0gYWRq
dXN0Rm9yQWJzb2x1dGVab29tKGhlaWdodCwgcmVuZGVyVmlldyk7CiAgICAgICAgIFJlbmRlclN0
eWxlKiByb290U3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJl
bmRlclN0eWxlKCk7CiAgICAgICAgIGludCBsZW5ndGg7Ci0gICAgICAgIHJldHVybiBjb21wdXRl
TGVuZ3RoKHZhbHVlLCAhZnJhbWUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBzdHlsZSwg
cm9vdFN0eWxlLCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZShoZWlnaHQsIGxlbmd0aCwgb3ApOwor
ICAgICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZyYW1lLT5kb2N1bWVudCgpLT5p
blF1aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwgZnJhbWUtPmRvY3VtZW50KCktPnZpZXdw
b3J0U2l6ZSgpLCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZShoZWlnaHQsIGxlbmd0aCwgb3ApOwog
ICAgIH0KIAogICAgIHJldHVybiB2aWV3LT5sYXlvdXRIZWlnaHQoKSAhPSAwOwpAQCAtNTAwLDcg
KzUwMCw3IEBAIHN0YXRpYyBib29sIHdpZHRoTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFs
dWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWUqIGZyCiAgICAgICAgICAgICB3aWR0aCA9IGFk
anVzdEZvckFic29sdXRlWm9vbSh3aWR0aCwgcmVuZGVyVmlldyk7CiAgICAgICAgIFJlbmRlclN0
eWxlKiByb290U3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJl
bmRlclN0eWxlKCk7CiAgICAgICAgIGludCBsZW5ndGg7Ci0gICAgICAgIHJldHVybiBjb21wdXRl
TGVuZ3RoKHZhbHVlLCAhZnJhbWUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBzdHlsZSwg
cm9vdFN0eWxlLCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZSh3aWR0aCwgbGVuZ3RoLCBvcCk7Cisg
ICAgICAgIHJldHVybiBjb21wdXRlTGVuZ3RoKHZhbHVlLCAhZnJhbWUtPmRvY3VtZW50KCktPmlu
UXVpcmtzTW9kZSgpLCBzdHlsZSwgcm9vdFN0eWxlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dmlld3Bv
cnRTaXplKCksIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVlKHdpZHRoLCBsZW5ndGgsIG9wKTsKICAg
ICB9CiAKICAgICByZXR1cm4gdmlldy0+bGF5b3V0V2lkdGgoKSAhPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGQxZTljNjBkM2I5ZGVkN2UyMGZj
NzY1ZTljNzdhNDMxNmUzYjZkMTMuLjBjZDE1Y2E3ZGFjOGFlMTA0OGRkNDZhNWQ1YjM1N2ViY2Yy
ODIwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAg
LTU2NCwxMCArNTY0LDEyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgICAgICBDU1NWYWx1ZSog
Zmlyc3RWYWx1ZSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCk7CiAgICAgICAgICAg
ICBpZiAoIWZpcnN0VmFsdWUtPmlzU2hhZG93VmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93
VmFsdWUqPihmaXJzdFZhbHVlKTsKLSAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uKGl0ZW0t
PngtPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0
eWxlKCkpLAotICAgICAgICAgICAgICAgIGl0ZW0tPnktPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0
ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpKTsKLSAgICAgICAgICAgIGludCBi
bHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5z
dHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpIDogMDsKKyAgICAgICAgICAgIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSA9IHN0YXRlLmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgp
OworICAgICAgICAgICAgSW50UG9pbnQgbG9jYXRpb24oaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aDxp
bnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgdmlld3BvcnRTaXpl
KSwKKyAgICAgICAgICAgICAgICBpdGVtLT55LT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5
bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB2aWV3cG9ydFNpemUpKTsKKyAgICAgICAg
ICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50
PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHZpZXdwb3J0U2l6ZSkg
OiAwOwogICAgICAgICAgICAgQ29sb3IgY29sb3I7CiAgICAgICAgICAgICBpZiAoaXRlbS0+Y29s
b3IpCiAgICAgICAgICAgICAgICAgY29sb3IgPSBjb2xvckZyb21QcmltaXRpdmVWYWx1ZShpdGVt
LT5jb2xvci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IGQ2MmQ2
ZTAwNWJjZjkyNGJkYWUzODRiY2IwYWU1YjczM2MyZjQ3MzkuLjkyMWI4OWZlYzJmMDVkY2U5MTQ5
ZjI0Y2M2ZmE5MzUyY2FkZWMzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogICAgICAgICBlbHNlIGlmICh2YWx1ZVR5cGUgPT0g
TnVtYmVyKQogICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgKnBy
aW1pdGl2ZVZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWVUeXBlID09IENvbXB1dGVMZW5n
dGgpCi0gICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBwcmltaXRp
dmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxUPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJl
c29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSkpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSwgcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8VD4oc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5kb2N1
bWVudCgpLT52aWV3cG9ydFNpemUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5k
bGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5
SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChhdXRvRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLCBMZW5ndGgoKSk7CiAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5y
b290RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20o
KSk7CisgICAgICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290
RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgp
LCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICAgICAg
bGVuZ3RoLnNldFF1aXJrKHByaW1pdGl2ZVZhbHVlLT5pc1F1aXJrVmFsdWUoKSk7CiAgICAgICAg
ICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBsZW5ndGgpOwogICAgICAgICB9
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKQEAgLTQ1MCw3ICs0NTAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UgaWYgKHBhaXItPmZpcnN0KCktPmlzQ2FsY3VsYXRl
ZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0
aCgocGFpci0+Zmlyc3QoKS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByYWRpdXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCks
IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICBy
YWRpdXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxl
UmVzb2x2ZXItPmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpLCBzdHlsZVJlc29sdmVyLT5zdHls
ZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAocGFpci0+c2Vjb25kKCktPmlzUGVy
Y2VudGFnZSgpKQogICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29u
ZCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICAgICAgZWxzZSBpZiAocGFpci0+
c2Vjb25kKCktPmlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpCkBAIC00NTgsNyArNDU4LDcg
QEAgcHVibGljOgogICAgICAgICBlbHNlIGlmIChwYWlyLT5zZWNvbmQoKS0+aXNDYWxjdWxhdGVk
UGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0
aCgocGFpci0+c2Vjb25kKCktPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmFkaXVzSGVpZ2h0ID0gcGFpci0+c2Vjb25kKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
PihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxl
KCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAg
ICByYWRpdXNIZWlnaHQgPSBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwg
c3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCksIHN0eWxlUmVzb2x2ZXIt
PnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGludCB3aWR0aCA9IHJhZGl1c1dp
ZHRoLnZhbHVlKCk7CiAgICAgICAgIGludCBoZWlnaHQgPSByYWRpdXNIZWlnaHQudmFsdWUoKTsK
ICAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQpAQCAtNjAzLDEyICs2MDMsMTMg
QEAgcHVibGljOgogICAgICAgICAgICAgbGVuZ3RoID0gNTsKICAgICAgICAgfSBlbHNlIGlmIChp
ZGVudCA9PSBDU1NWYWx1ZUludmFsaWQpIHsKICAgICAgICAgICAgIGZsb2F0IHpvb20gPSAoc3Zn
Wm9vbUVuYWJsZWQgJiYgc3R5bGVSZXNvbHZlci0+dXNlU1ZHWm9vbVJ1bGVzKCkpID8gMS4wZiA6
IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgICAgIGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSA9IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnZp
ZXdwb3J0U2l6ZSgpOwogCiAgICAgICAgICAgICAvLyBBbnkgb3JpZ2luYWwgcmVzdWx0IHRoYXQg
d2FzID49IDEgc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGZhbGwgYmVsb3cgMS4KICAgICAgICAg
ICAgIC8vIFRoaXMga2VlcHMgYm9yZGVyIGxpbmVzIGZyb20gdmFuaXNoaW5nLgotICAgICAgICAg
ICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8VD4oc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKyAg
ICAgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPFQ+KHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwgdmll
d3BvcnRTaXplLCB6b29tKTsKICAgICAgICAgICAgIGlmICh6b29tIDwgMS4wZiAmJiBsZW5ndGgg
PCAxLjApIHsKLSAgICAgICAgICAgICAgICBUIG9yaWdpbmFsTGVuZ3RoID0gcHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGg8VD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZl
ci0+cm9vdEVsZW1lbnRTdHlsZSgpLCAxLjApOworICAgICAgICAgICAgICAgIFQgb3JpZ2luYWxM
ZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxUPihzdHlsZVJlc29sdmVyLT5z
dHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHZpZXdwb3J0U2l6ZSwg
MS4wKTsKICAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxMZW5ndGggPj0gMS4wKQogICAgICAg
ICAgICAgICAgICAgICBsZW5ndGggPSAxLjA7CiAgICAgICAgICAgICB9CkBAIC03NTEsMTMgKzc1
MiwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0
ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8fCAhKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSB8fCBw
cmltaXRpdmVWYWx1ZS0+aXNGb250UmVsYXRpdmVMZW5ndGgoKSkpOwogICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNpemUgPSBwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5
bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCAxLjAsIHRydWUpOworICAg
ICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4o
c3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRT
dHlsZSgpLCBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT52aWV3cG9ydFNpemUoKSwgMS4wLCB0
cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2Uo
KSkKICAgICAgICAgICAgICAgICBzaXplID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVl
KCkgKiBwYXJlbnRTaXplKSAvIDEwMC4wZjsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQotICAgICAgICAgICAg
ICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0
eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5
bGUoKSktPmV2YWx1YXRlKHBhcmVudFNpemUpOworICAgICAgICAgICAgICAgIHNpemUgPSBwcmlt
aXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlUmVzb2x2ZXItPnBh
cmVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSktPmV2YWx1YXRl
KHBhcmVudFNpemUsIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNpemUgPSB2YWx1ZUZvckxlbmd0aChwcmltaXRp
dmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCksIDAsIHN0eWxlUmVzb2x2ZXItPmRv
Y3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICAgICAgc2l6ZSA9IHZhbHVlRm9y
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSwgMCwgc3R5
bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTE2NSw3ICsxMTY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgICAgICBt
dWx0aXBsaWVyICo9IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwotICAgICAgICAgICAgbGluZUhl
aWdodCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBtdWx0aXBsaWVy
KTsKKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aDxMZW5ndGg+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVt
ZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+dmlld3BvcnRTaXplKCksIG11
bHRpcGxpZXIpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRh
Z2UoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IHBlcmNlbnRhZ2Ugc2hvdWxkIG5vdCBiZSBy
ZXN0cmljdGVkIHRvIGFuIGludGVnZXIgaGVyZS4KICAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBM
ZW5ndGgoKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmZvbnRTaXplKCkgKiBwcmltaXRpdmVWYWx1
ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKQEAgLTExODcsOCArMTE4OCw4IEBAIHB1
YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVBhZ2VTaXplIHsKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIExlbmd0aCBtbUxlbmd0aChkb3VibGUgbW0pIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUobW0sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU0pLT5jb21wdXRlTGVuZ3RoPExl
bmd0aD4oMCwgMCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluY2hMZW5ndGgoZG91YmxlIGluY2gp
IHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaW5jaCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19JTiktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPigwLCAwKTsgfQorICAgIHN0YXRpYyBM
ZW5ndGggbW1MZW5ndGgoZG91YmxlIG1tKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+
KDAsIDAsIEludFNpemUoKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluY2hMZW5ndGgoZG91Ymxl
IGluY2gpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaW5jaCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JTiktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPigwLCAwLCBJbnRTaXplKCkp
OyB9CiAgICAgc3RhdGljIGJvb2wgZ2V0UGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1
ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5n
dGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKICAgICB7CiAgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoTGVuZ3RoLCBhNVdpZHRoLCAobW1MZW5ndGgoMTQ4KSkpOwpAQCAtMTI4Myw4ICsxMjg0
LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+ezJ9CiAgICAgICAgICAg
ICAgICAgaWYgKCFzZWNvbmQtPmlzTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB3aWR0aCA9IGZpcnN0LT5jb21wdXRlTGVuZ3RoPExlbmd0aD4o
c3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgp
KTsKLSAgICAgICAgICAgICAgICBoZWlnaHQgPSBzZWNvbmQtPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
PihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxl
KCkpOworICAgICAgICAgICAgICAgIHdpZHRoID0gZmlyc3QtPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
PihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxl
KCksIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQgPSBzZWNvbmQtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxlUmVz
b2x2ZXItPmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgogICAgICAgICAg
ICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NTUGFyc2VyOjpw
YXJzZVNpemVQYXJhbWV0ZXIuCkBAIC0xMzAyLDcgKzEzMDMsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAv
LyA8bGVuZ3RoPgogICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNP
TFZFRDsKLSAgICAgICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9IHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZl
ci0+cm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9
IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5
bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5k
b2N1bWVudCgpLT52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKICAgICAgICAg
ICAgICAgICBjYXNlIDA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMTM4
YTlhYjI4MmFjY2I3NWU5MDk0YjQ2OTEwNTEzOWZlNDJjNWVjYy4uYmQwMWU0OWZhNDE4NDczOGM3
OGQyNGYxNDRkNjRkNTc4OTFmZWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMzE2NCwxMCArMzE2NCwxMSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgaWYgKCFj
dXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUqPihj
dXJyVmFsdWUpOwotICAgICAgICAgICAgaW50IHggPSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoPGlu
dD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsK
LSAgICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0
eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAg
ICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4o
c3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7
Ci0gICAgICAgICAgICBpbnQgc3ByZWFkID0gaXRlbS0+c3ByZWFkID8gaXRlbS0+c3ByZWFkLT5j
b21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgp
LCB6b29tRmFjdG9yKSA6IDA7CisgICAgICAgICAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUgPSBzdGF0ZS5kb2N1bWVudCgpLT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIGludCB4
ID0gaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RF
bGVtZW50U3R5bGUoKSwgdmlld3BvcnRTaXplLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGlu
dCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSwgdmlld3BvcnRTaXplLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAg
IGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50Pihz
dGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHZpZXdwb3J0U2l6ZSwgem9v
bUZhY3RvcikgOiAwOworICAgICAgICAgICAgaW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0
ZW0tPnNwcmVhZC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RF
bGVtZW50U3R5bGUoKSwgdmlld3BvcnRTaXplLCB6b29tRmFjdG9yKSA6IDA7CiAgICAgICAgICAg
ICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKICAgICAgICAgICAg
IENvbG9yIGNvbG9yOwogICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQpAQCAtMzM0MywxMSAr
MzM0NCwxMSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgICAgIHJlc3VsdCAqPSAzOwogICAg
ICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVU
aGljaykKICAgICAgICAgICAgICAgICByZXN1bHQgKj0gNTsKLSAgICAgICAgICAgIHdpZHRoID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RU1TKS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1l
bnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHdpZHRoID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKS0+Y29tcHV0
ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCBJ
bnRTaXplKCksIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwg
em9vbUZhY3Rvcik7CisgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRl
TGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHN0
YXRlLmRvY3VtZW50KCktPnZpZXdwb3J0U2l6ZSgpLCB6b29tRmFjdG9yKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTdHJva2VX
aWR0aCh3aWR0aCk7CkBAIC0zMzczLDEwICszMzc0LDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAKICAgICAg
ICAgZmxvYXQgcGVyc3BlY3RpdmVWYWx1ZTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c0xlbmd0aCgpKQotICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0
eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290
RWxlbWVudFN0eWxlKCksIEludFNpemUoKSwgem9vbUZhY3Rvcik7CiAgICAgICAgIGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAvLyBGb3IgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSwgdHJlYXQgdmFsdWVsZXNzIG51bWJlcnMgYXMgcHguCi0gICAgICAg
ICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwcmltaXRp
dmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNv
bXB1dGVMZW5ndGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUo
KSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCks
IHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgSW50U2l6ZSgpLCB6b29tRmFjdG9yKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTM1MzAsNyArMzUzMSw3IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSogdmFsdWUpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcjogewogICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChmaWx0ZXIsIEZpbHRlcik7CiAgICAgICAgIEZpbHRl
ck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICAgICAgaWYgKGNyZWF0ZUZpbHRlck9wZXJhdGlv
bnModmFsdWUsIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgb3BlcmF0
aW9ucykpCisgICAgICAgIGlmIChjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHZhbHVlLCBzdGF0ZS5z
dHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHN0YXRlLmRvY3VtZW50KCktPnZpZXdw
b3J0U2l6ZSgpLCBvcGVyYXRpb25zKSkKICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEZp
bHRlcihvcGVyYXRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4NDEsNyArNDg0
Miw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBTdHlsZVJlc29sdmVyOjpj
cmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb24oV2ViCiAKICNlbmRpZgogCi1ib29sIFN0eWxlUmVz
b2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0
eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgRmlsdGVyT3BlcmF0aW9ucyYgb3V0
T3BlcmF0aW9ucykKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhD
U1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIEZpbHRlck9wZXJhdGlvbnMmIG91dE9w
ZXJhdGlvbnMpCiB7CiAgICAgQVNTRVJUKG91dE9wZXJhdGlvbnMuaXNFbXB0eSgpKTsKICAgICAK
QEAgLTQ5NzYsOSArNDk3Nyw5IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3Bl
cmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGlj
X2Nhc3Q8U2hhZG93VmFsdWUqPihjc3NWYWx1ZSk7Ci0gICAgICAgICAgICBJbnRQb2ludCBsb2Nh
dGlvbihpdGVtLT54LT5jb21wdXRlTGVuZ3RoPGludD4oc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZh
Y3RvciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT55LT5jb21wdXRlTGVu
Z3RoPGludD4oc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3RvcikpOwotICAgICAgICAgICAgaW50
IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1ci0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxl
LCByb290U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKKyAgICAgICAgICAgIEludFBvaW50IGxvY2F0
aW9uKGl0ZW0tPngtPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSwgcm9vdFN0eWxlLCB2aWV3cG9y
dFNpemUsIHpvb21GYWN0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+
eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlLCByb290U3R5bGUsIHZpZXdwb3J0U2l6ZSwgem9v
bUZhY3RvcikpOworICAgICAgICAgICAgaW50IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1
ci0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlLCByb290U3R5bGUsIHZpZXdwb3J0U2l6ZSwgem9v
bUZhY3RvcikgOiAwOwogICAgICAgICAgICAgQ29sb3IgY29sb3I7CiAgICAgICAgICAgICBpZiAo
aXRlbS0+Y29sb3IpCiAgICAgICAgICAgICAgICAgY29sb3IgPSBjb2xvckZyb21QcmltaXRpdmVW
YWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRl
eCA1NTg0ZDg3YmQ5ZGViZGUwM2FhMzgyMTg5MGU4OWJkMDRhNTQxZjUyLi40YTBlNDFhNDg2NGEy
NzNlMDhkMDlhYWRiMTM2YmE2MDMzOWU3YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKQEAgLTMwNCw3ICszMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZSgpOwogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGJvb2wg
Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGlu
U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIEZpbHRlck9wZXJhdGlvbnMmIG91dE9wZXJh
dGlvbnMpOworICAgIGJvb2wgY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1
ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgRmlsdGVyT3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucyk7CiAj
aWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIFN0eWxlU2hhZGVyKiBzdHlsZVNoYWRlcihDU1NW
YWx1ZSopOwogICAgIFN0eWxlU2hhZGVyKiBjYWNoZWRPclBlbmRpbmdTdHlsZVNoYWRlckZyb21W
YWx1ZShXZWJLaXRDU1NTaGFkZXJWYWx1ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0
cml4LmNwcAppbmRleCA1MTg4YjY2Yjg3ZGFjM2IyZDE3MjQxYzQxOTM3M2UxMDFmYjI3MGE0Li42
MjZkZTIzN2QxYWQ1MTUzODk0YmE3NjM1YjkyY2RkMTVkYThiNGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdlYktpdENTU01h
dHJpeDo6c2V0TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICAvLyBpZiBhIHBhcmFtIGhhcyBhIHBlcmNlbnRhZ2UgKCclJykKICAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAob3BlcmF0aW9ucy5vcGVyYXRpb25zKClbaV0uZ2V0KCktPmFwcGx5KHQsIEludFNpemUoMCwg
MCkpKSB7CisgICAgICAgICAgICBpZiAob3BlcmF0aW9ucy5vcGVyYXRpb25zKClbaV0uZ2V0KCkt
PmFwcGx5KHQsIEludFNpemUoKSwgSW50U2l6ZSgpKSkgewogICAgICAgICAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAyNmYxY2RiZGQ4MTg5MzI5ZDgwYjQxM2Q0OWVjNzk2OTYy
MDc2NDBmLi4xZjE3MWQ2M2NmZThmMDE1M2VlNTRmNmMzNTUxNDdjNzRiZTljZDhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE5NjYsNyArMTk2Niw2IEBAIGJvb2wgRG9jdW1lbnQ6Omlz
UGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5k
TWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmIG1h
cmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0b20sIGludCYgbWFyZ2lu
TGVmdCkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JQYWdlKHBh
Z2VJbmRleCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9IHJlbmRlclZpZXcoKTsKIAogICAgIGlu
dCB3aWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHBhZ2VTaXplLmhl
aWdodCgpOwpAQCAtMTk4NSw4ICsxOTg0LDggQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRN
YXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAg
ICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXplKCk7CiAgICAgICAgIEFTU0VS
VChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKICAgICAgICAgQVNTRVJUKHNpemUuaGVpZ2h0KCku
aXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0aChzaXplLndpZHRoKCks
IDAsIHZpZXcpOwotICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChzaXplLmhlaWdodCgp
LCAwLCB2aWV3KTsKKyAgICAgICAgd2lkdGggPSByZW5kZXJlcigpLT52YWx1ZUZvckxlbmd0aChz
aXplLndpZHRoKCksIDApOworICAgICAgICBoZWlnaHQgPSByZW5kZXJlcigpLT52YWx1ZUZvckxl
bmd0aChzaXplLmhlaWdodCgpLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1
bHQ6CkBAIC0xOTk2LDEwICsxOTk1LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFy
Z2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAKICAg
ICAvLyBUaGUgcGVyY2VudGFnZSBpcyBjYWxjdWxhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUgd2lk
dGggZXZlbiBmb3IgbWFyZ2luIHRvcCBhbmQgYm90dG9tLgogICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2luLXByb3BlcnRpZXMKLSAgICBtYXJnaW5Ub3AgPSBz
dHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiBpbnRWYWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5SaWdodCA9IHN0
eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiBpbnRWYWx1ZUZvckxl
bmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpOwotICAgIG1hcmdpbkJvdHRv
bSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IGludFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXcpOwotICAgIG1h
cmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGlu
dFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKKyAgICBt
YXJnaW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiByZW5k
ZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoKTsKKyAg
ICBtYXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmln
aHQgOiByZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwg
d2lkdGgpOworICAgIG1hcmdpbkJvdHRvbSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8o
KSA/IG1hcmdpbkJvdHRvbSA6IHJlbmRlcmVyKCktPmludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5t
YXJnaW5Cb3R0b20oKSwgd2lkdGgpOworICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVm
dCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHJlbmRlcmVyKCktPmludFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0SXNW
aWV3U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVs
ZW1lbnQuY3BwCmluZGV4IGJhNDA5MWY5ZTE5OWZmNjNkYTE0MDA2Mjk5Mzk4NTAzODYwZTdiMjMu
LmIzNTU5ZGVlNTEwMjkxZDRlNDgwNzY2ZGQzNjEyODQ4OTU5MDc2NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTE0NCwzMCArMTQ0LDMwIEBAIFBhdGggSFRN
TEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKICAg
ICB9CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGRvY3Vt
ZW50KCktPnJlbmRlclZpZXcoKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKTsKICAgICBzd2l0Y2ggKHNoYXBlKSB7CiAgICAgICAgIGNh
c2UgUG9seToKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSA2KSB7CiAgICAgICAgICAg
ICAgICAgaW50IG51bVBvaW50cyA9IG1fY29vcmRzTGVuIC8gMjsKLSAgICAgICAgICAgICAgICBw
YXRoLm1vdmVUbyhGbG9hdFBvaW50KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwg
d2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhl
aWdodCwgcmVuZGVyVmlldykpKTsKKyAgICAgICAgICAgICAgICBwYXRoLm1vdmVUbyhGbG9hdFBv
aW50KHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoKSwg
cmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1sxXSwgaGVpZ2h0KSkpOwog
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbnVtUG9pbnRzOyArK2kpCi0gICAg
ICAgICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQobWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1fY29vcmRzW2kgKiAyXSwgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0LCByZW5kZXJWaWV3KSkpOworICAg
ICAgICAgICAgICAgICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHJlbmRlcmVyLT5taW5p
bXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDJdLCB3aWR0aCksIHJlbmRlcmVyLT5taW5p
bXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0KSkpOwogICAgICAg
ICAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNM
ZW4gPj0gMykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsK
LSAgICAgICAgICAgICAgICBpbnQgciA9IG1pbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVz
LCB3aWR0aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIGhlaWdo
dCwgcmVuZGVyVmlldykpOwotICAgICAgICAgICAgICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJl
Y3QobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCwgcmVuZGVyVmlldykg
LSByLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwgcmVuZGVyVmll
dykgLSByLCAyICogciwgMiAqIHIpKTsKKyAgICAgICAgICAgICAgICBpbnQgciA9IG1pbihyZW5k
ZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgpLCByZW5kZXJlci0+bWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgaGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgcGF0
aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChyZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1f
Y29vcmRzWzBdLCB3aWR0aCkgLSByLCByZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1f
Y29vcmRzWzFdLCBoZWlnaHQpIC0gciwgMiAqIHIsIDIgKiByKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWN0OgogICAgICAgICAgICAgaWYgKG1f
Y29vcmRzTGVuID49IDQpIHsKLSAgICAgICAgICAgICAgICBpbnQgeDAgPSBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgICAgICAg
ICBpbnQgeTAgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwgcmVu
ZGVyVmlldyk7Ci0gICAgICAgICAgICAgICAgaW50IHgxID0gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KG1fY29vcmRzWzJdLCB3aWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICAgICAgaW50IHkx
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzNdLCBoZWlnaHQsIHJlbmRlclZpZXcp
OworICAgICAgICAgICAgICAgIGludCB4MCA9IHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5n
dGgobV9jb29yZHNbMF0sIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQgeTAgPSByZW5kZXJl
ci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQpOworICAgICAgICAg
ICAgICAgIGludCB4MSA9IHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNb
Ml0sIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQgeTEgPSByZW5kZXJlci0+bWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1fY29vcmRzWzNdLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgIHBhdGgu
YWRkUmVjdChGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3ZWQ4ODBkY2ZhYWQ2ZTNk
NDAxMjE3MGMwNmVhZjZhZjJhYzc3ZDU3Li43MTIwZDJjNmQyYzA1ODFmMjQwMTA4ZmEzNjhmMTcz
YzM3MjBlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTWF0
cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU3R5
bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCkBAIC0xMjQsOCArMTI1LDggQEAgc3RhdGlj
IGlubGluZSBQYXNzT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiBhbmltLCBjb25zdAogc3RhdGljIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25z
JiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQog
ewogICAgIGlmIChhbmltLT5pc1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpCi0gICAgICAg
IHJldHVybiB0by5ibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGZyb20sIHByb2dyZXNzKTsKLSAg
ICByZXR1cm4gdG8uYmxlbmRCeVVzaW5nTWF0cml4SW50ZXJwb2xhdGlvbihmcm9tLCBwcm9ncmVz
cywgYW5pbS0+cmVuZGVyZXIoKS0+aXNCb3goKSA/IHRvUmVuZGVyQm94KGFuaW0tPnJlbmRlcmVy
KCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6ZSgpIDogTGF5b3V0U2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIHRvLmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoZnJvbSwgcHJvZ3Jlc3MsIGFuaW0tPnJl
bmRlcmVyKCktPnZpZXcoKS0+dmlld3BvcnRTaXplKCkpOworICAgIHJldHVybiB0by5ibGVuZEJ5
VXNpbmdNYXRyaXhJbnRlcnBvbGF0aW9uKGZyb20sIHByb2dyZXNzLCBhbmltLT5yZW5kZXJlcigp
LT5pc0JveCgpID8gdG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3Qo
KS5zaXplKCkgOiBMYXlvdXRTaXplKCksIGFuaW0tPnJlbmRlcmVyKCktPnZpZXcoKS0+dmlld3Bv
cnRTaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRp
b24+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgQ2xpcFBhdGhPcGVyYXRpb24qIGZy
b20sIENsaXBQYXRoT3BlcmF0aW9uKiB0bywgZG91YmxlIHByb2dyZXNzKQpAQCAtMTY2LDcgKzE2
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBGCiAgICAgQVNTRVJUKHRvT3ApOwogICAgIGlm
ICh0b09wLT5ibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpIHsKICAgICAgICAgTGF5b3V0U2l6
ZSBzaXplID0gYW5pbS0+cmVuZGVyZXIoKS0+aXNCb3goKSA/IHRvUmVuZGVyQm94KGFuaW0tPnJl
bmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6ZSgpIDogTGF5b3V0U2l6ZSgpOwotICAgICAg
ICByZXR1cm4gdG9PcC0+YmxlbmQoZnJvbU9wLCBwcm9ncmVzcywgc2l6ZSwgYmxlbmRUb1Bhc3N0
aHJvdWdoKTsKKyAgICAgICAgcmV0dXJuIHRvT3AtPmJsZW5kKGZyb21PcCwgcHJvZ3Jlc3MsIHNp
emUsIGFuaW0tPnJlbmRlcmVyKCktPnZpZXcoKS0+dmlld3BvcnRTaXplKCksIGJsZW5kVG9QYXNz
dGhyb3VnaCk7CiAgICAgfQogICAgIHJldHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNz
LCBibGVuZFRvUGFzc3Rocm91Z2gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxj
dWxhdGlvblZhbHVlLmNwcAppbmRleCBmZTc1NzFkMjI4MTA4MDBmYjhkOTY4YjRlZGZmOGE2Y2My
NWE2ZDFiLi43YjZlM2RlNjQwOTYxMmRmOTA2ZTNlNjNjMzJhNTYxMWIwOWVmZGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzUsMTAgKzM1
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZmxvYXQgQ2FsY0V4cHJlc3Npb25CaW5h
cnlPcGVyYXRpb246OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAorZmxvYXQgQ2FsY0V4
cHJlc3Npb25CaW5hcnlPcGVyYXRpb246OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpIGNvbnN0CiB7Ci0gICAgZmxvYXQgbGVmdCA9IG1fbGVmdFNp
ZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsKLSAgICBmbG9hdCByaWdodCA9IG1fcmlnaHRTaWRlLT5l
dmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgZmxvYXQgbGVmdCA9IG1fbGVmdFNpZGUtPmV2YWx1YXRl
KG1heFZhbHVlLCB2aWV3cG9ydFNpemUpOworICAgIGZsb2F0IHJpZ2h0ID0gbV9yaWdodFNpZGUt
PmV2YWx1YXRlKG1heFZhbHVlLCB2aWV3cG9ydFNpemUpOwogICAgIHN3aXRjaCAobV9vcGVyYXRv
cikgewogICAgIGNhc2UgQ2FsY0FkZDoKICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodDsKQEAg
LTYwLDkgKzYwLDkgQEAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk4KICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENhbGN1bGF0aW9uVmFsdWUodmFsdWUsIHJhbmdlKSk7CiB9CiAKLWZsb2F0IENhbGN1
bGF0aW9uVmFsdWU6OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAorZmxvYXQgQ2FsY3Vs
YXRpb25WYWx1ZTo6ZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSkgY29uc3QKIHsKLSAgICBmbG9hdCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZSht
YXhWYWx1ZSk7CisgICAgZmxvYXQgcmVzdWx0ID0gbV92YWx1ZS0+ZXZhbHVhdGUobWF4VmFsdWUs
IHZpZXdwb3J0U2l6ZSk7CiAgICAgLy8gRklYTUUgY2FsYyBodHRwczovL3dlYmtpdC5vcmcvYi84
MDQxMSA6IHJlc3VsdCBpcyBOYU4gd2hlbiB0aGVyZSBpcyBhIGRpdmlzaW9uIAogICAgIC8vIGJ5
IHplcm8gd2hpY2ggaXNuJ3QgZm91bmQgYXQgcGFyc2UgdGltZS4gCiAgICAgaWYgKHN0ZDo6aXNu
YW4ocmVzdWx0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaApp
bmRleCA3MjU0M2ZmNjBiZGVkMDMwZGU2MDZkZWJhZjFlMjQ1ZmZkZDhmOGIyLi5jMjNkN2QyYzM4
YmVjNjg2ZDhkMjYxOWJmOThmOTA0Y2M5ZTcyNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmKSBjb25zdCA9IDA7CiAKICAgICBDYWxj
RXhwcmVzc2lvbk5vZGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTg0
LDcgKzg0LDcgQEAgcHJvdGVjdGVkOgogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPENhbGN1bGF0aW9uVmFsdWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5v
ZGU+IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOwotICAgIGZsb2F0IGV2
YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdDsKKyAgICBmbG9hdCBldmFsdWF0ZShmbG9hdCBt
YXhWYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdDsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDYWxjdWxhdGlvblZhbHVlJiBvKSBjb25zdCAKICAgICB7IApAQCAt
MTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvLnR5cGUo
KSAmJiAqdGhpcyA9PSBzdGF0aWNfY2FzdDxjb25zdCBDYWxjRXhwcmVzc2lvbk51bWJlciY+KG8p
OwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0KSBjb25zdCAK
KyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0LCBjb25zdCBJbnRTaXplJikgY29uc3Qg
CiAgICAgewogICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICB9CkBAIC0xNDcsOSArMTQ3LDkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG8udHlwZSgpICYmICp0aGlzID09
IHN0YXRpY19jYXN0PGNvbnN0IENhbGNFeHByZXNzaW9uTGVuZ3RoJj4obyk7CiAgICAgfQogICAg
IAotICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0CisgICAg
dmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGZsb2F0VmFsdWVGb3JMZW5n
dGgobV9sZW5ndGgsIG1heFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGZsb2F0VmFsdWVGb3JMZW5n
dGgobV9sZW5ndGgsIG1heFZhbHVlLCB2aWV3cG9ydFNpemUpOwogICAgIH0KICAgICAKIHByaXZh
dGU6CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICAKLSAgICB2
aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IGV2
YWx1YXRlKGZsb2F0LCBjb25zdCBJbnRTaXplJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgT3du
UHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9sZWZ0U2lkZTsKQEAgLTIwNSw5ICsyMDUsOSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gby50eXBlKCkgJiYgKnRoaXMgPT0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aCY+KG8pOwogICAgIH0KICAg
ICAKLSAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAorICAg
IHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUsIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAoMS4wZiAtIG1fcHJvZ3Jl
c3MpICogZmxvYXRWYWx1ZUZvckxlbmd0aChtX2Zyb20sIG1heFZhbHVlKSArIG1fcHJvZ3Jlc3Mg
KiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fdG8sIG1heFZhbHVlKTsKKyAgICAgICAgcmV0dXJuICgx
LjBmIC0gbV9wcm9ncmVzcykgKiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fZnJvbSwgbWF4VmFsdWUs
IHZpZXdwb3J0U2l6ZSkgKyBtX3Byb2dyZXNzICogZmxvYXRWYWx1ZUZvckxlbmd0aChtX3RvLCBt
YXhWYWx1ZSwgdmlld3BvcnRTaXplKTsKICAgICB9CiAgICAgCiBwcml2YXRlOiAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCBiNTNmOGZhZDk0MDNkODJiOWE0NjI3ODQzZjEzNjAx
MzdkNDY3ZTlkLi5lMDdiZjRjNjUzOGRiYjVhYjdkNTg1NTFjZmQ1ZjE5ZWU4MTkxZjUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTIzNiwxMCArMjM2LDEwIEBAIHZvaWQgTGVu
Z3RoOjpkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3QKICAgICBjYWxjTGVuZ3RoLT5kZXJl
ZigpOwogfSAgICAKIAotZmxvYXQgTGVuZ3RoOjpub25OYW5DYWxjdWxhdGVkVmFsdWUoaW50IG1h
eFZhbHVlKSBjb25zdAorZmxvYXQgTGVuZ3RoOjpub25OYW5DYWxjdWxhdGVkVmFsdWUoaW50IG1h
eFZhbHVlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlzQ2FsY3VsYXRlZCgpKTsKLSAgICBmbG9hdCByZXN1bHQgPSBjYWxjdWxhdGlvblZhbHVlKCkt
PmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBmbG9hdCByZXN1bHQgPSBjYWxjdWxhdGlvblZhbHVl
KCktPmV2YWx1YXRlKG1heFZhbHVlLCB2aWV3cG9ydFNpemUpOwogICAgIGlmIChzdGQ6OmlzbmFu
KHJlc3VsdCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5oCmluZGV4IDY0YjMxYTlhMzNjOGIxMjFkNzdkYWFiNDMzMTBiMTY5NTQ4
MTVlYzIuLjRiNjc1ZjljNmFiZDdmZGE5Mjg0YmY1MmMxOTc1ZTIwMjNjOWE1M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoIWlzVW5kZWZpbmVkKCkpOwogICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gbV9mbG9h
dFZhbHVlIDogbV9pbnRWYWx1ZTsKICAgICB9Ci0gICAgZmxvYXQgbm9uTmFuQ2FsY3VsYXRlZFZh
bHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgZmxvYXQgbm9uTmFuQ2FsY3VsYXRlZFZhbHVl
KGludCBtYXhWYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdDsKIAogICAg
IGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBmZGY4NzY2OWJj
MTlkODRkYmExNWVhNTM1Zjc2Y2RiYWI4Zjc1MDAyLi5iZGQ5ZTg0MGUwNWNjOGExMzNhMDU4MGM3
NWNhODU4Y2Q1ODI4NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCkBAIC0zMzYsNyArMzM2LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0cnVlIGlmIHRoZSBhbmltYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgY29tcG9zaXRpbmcg
c3lzdGVtLiBJZiB0aGlzIHJldHVybnMKICAgICAvLyBmYWxzZSwgdGhlIGFuaW1hdGlvbiB3aWxs
IGJlIHJ1biBieSBBbmltYXRpb25Db250cm9sbGVyLgogICAgIC8vIFRoZXNlIG1ldGhvZHMgaGFu
ZGxlIGJvdGggdHJhbnNpdGlvbnMgYW5kIGtleWZyYW1lIGFuaW1hdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNp
emUmIC8qYm94U2l6ZSovLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIC8qYW5pbWF0
aW9uTmFtZSovLCBkb3VibGUgLyp0aW1lT2Zmc2V0Ki8pICB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBJbnRTaXplJiAvKmJveFNpemUqLywgY29uc3QgSW50U2l6ZSYgLyp2aWV3cG9ydFNpemUqLywg
Y29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiAvKmFuaW1hdGlvbk5hbWUqLywgZG91Ymxl
IC8qdGltZU9mZnNldCovKSAgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGF1
c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiAvKmFuaW1hdGlvbk5hbWUqLywgZG91YmxlIC8qdGlt
ZU9mZnNldCovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0
cmluZyYgLyphbmltYXRpb25OYW1lKi8pIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4
IDE2NzEwYjYyOTQ3MWZmOTMyMGUwZjY0ZjlmY2E4OWQwMWE5NDZjODMuLjM5YjhjNTIwOGFiN2Qx
NDQyZTg3ZDM5YTQ1ZjYzNTZlZWM4YWIyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0y
OSwxNyArMjksMTcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKLXN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kRnVu
YyhGaWx0ZXJPcGVyYXRpb24qIGZyb21PcCwgRmlsdGVyT3BlcmF0aW9uKiB0b09wLCBkb3VibGUg
cHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0g
ZmFsc2UpCitzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZEZ1
bmMoRmlsdGVyT3BlcmF0aW9uKiBmcm9tT3AsIEZpbHRlck9wZXJhdGlvbiogdG9PcCwgZG91Ymxl
IHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpCiB7CiAgICAgQVNTRVJUKHRvT3Ap
OwogICAgIGlmICh0b09wLT5ibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpCi0gICAgICAgIHJl
dHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNzLCBMYXlvdXRTaXplKHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSksIGJsZW5kVG9QYXNzdGhyb3VnaCk7CisgICAgICAgIHJldHVybiB0
b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNzLCBMYXlvdXRTaXplKHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSksIHZpZXdwb3J0U2l6ZSwgYmxlbmRUb1Bhc3N0aHJvdWdoKTsKIAogICAgIHJl
dHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNzLCBibGVuZFRvUGFzc3Rocm91Z2gpOwog
fQogCiAKLXN0YXRpYyBGaWx0ZXJPcGVyYXRpb25zIGFwcGx5RmlsdGVyQW5pbWF0aW9uKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUpCitzdGF0aWMgRmlsdGVyT3BlcmF0
aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXpl
JiBib3hTaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgLy8gRmlyc3Qg
ZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpCkBAIC02MCw3ICs2MCw3
IEBAIHN0YXRpYyBGaWx0ZXJPcGVyYXRpb25zIGFwcGx5RmlsdGVyQW5pbWF0aW9uKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMqIGZyb20sIGNvbnN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyBpKyspIHsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkg
PCBmcm9tU2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwogICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlv
bnMoKVtpXS5nZXQoKSA6IDA7Ci0gICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5k
ZWRPcCA9IHRvT3AgPyBibGVuZEZ1bmMoZnJvbU9wLmdldCgpLCB0b09wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSkgOiAoZnJvbU9wID8gYmxlbmRGdW5jKDAsIGZyb21PcC5nZXQoKSwgcHJvZ3Jl
c3MsIGJveFNpemUsIHRydWUpIDogMCk7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
IGJsZW5kZWRPcCA9IHRvT3AgPyBibGVuZEZ1bmMoZnJvbU9wLmdldCgpLCB0b09wLmdldCgpLCBw
cm9ncmVzcywgYm94U2l6ZSwgdmlld3BvcnRTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwg
ZnJvbU9wLmdldCgpLCBwcm9ncmVzcywgYm94U2l6ZSwgdmlld3BvcnRTaXplLCB0cnVlKSA6IDAp
OwogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNTUsMjcgKzE1NSwyNyBA
QCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0KIAotc3Rh
dGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHRvLCBk
b3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNNYXRjaCkK
K3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zKiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB0
bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIGJvb2wgbGlzdHNNYXRjaCkKIHsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtYXRyaXg7CiAKICAgICAvLyBGaXJzdCBmcmFtZSBvZiBhbiBhbmltYXRpb24uCiAgICAg
aWYgKCFwcm9ncmVzcykgewotICAgICAgICBmcm9tLT5hcHBseShib3hTaXplLCBtYXRyaXgpOwor
ICAgICAgICBmcm9tLT5hcHBseShib3hTaXplLCB2aWV3cG9ydFNpemUsIG1hdHJpeCk7CiAgICAg
ICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTGFzdCBmcmFtZSBvZiBhbiBhbmlt
YXRpb24uCiAgICAgaWYgKHByb2dyZXNzID09IDEpIHsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNp
emUsIG1hdHJpeCk7CisgICAgICAgIHRvLT5hcHBseShib3hTaXplLCB2aWV3cG9ydFNpemUsIG1h
dHJpeCk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2
ZSBpbmNvbXBhdGlibGUgb3BlcmF0aW9uIGxpc3RzLCB3ZSBibGVuZCB0aGUgcmVzdWx0aW5nIG1h
dHJpY2VzLgogICAgIGlmICghbGlzdHNNYXRjaCkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tTWF0cml4OwotICAgICAgICB0by0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKLSAg
ICAgICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgZnJvbU1hdHJpeCk7CisgICAgICAgIHRvLT5hcHBs
eShib3hTaXplLCB2aWV3cG9ydFNpemUsIG1hdHJpeCk7CisgICAgICAgIGZyb20tPmFwcGx5KGJv
eFNpemUsIHZpZXdwb3J0U2l6ZSwgZnJvbU1hdHJpeCk7CiAgICAgICAgIG1hdHJpeC5ibGVuZChm
cm9tTWF0cml4LCBwcm9ncmVzcyk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQpAQCAt
MTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9y
bUFuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiBmCiAgICAgaWYgKCF0by0+c2l6
ZSgpKSB7CiAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZCgqZnJvbSk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5vcGVyYXRpb25zKCkuc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoMCwgcHJvZ3Jl
c3MsIHRydWUpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAgICAgICAgYmxlbmRlZC5v
cGVyYXRpb25zKClbaV0tPmJsZW5kKDAsIHByb2dyZXNzLCB2aWV3cG9ydFNpemUsIHRydWUpLT5h
cHBseShtYXRyaXgsIHZpZXdwb3J0U2l6ZSwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRy
aXg7CiAgICAgfQogCkBAIC0xOTIsMTQgKzE5MiwxNCBAQCBzdGF0aWMgVHJhbnNmb3JtYXRpb25N
YXRyaXggYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyog
ZgogICAgIGlmICghZnJvbS0+c2l6ZSgpKSB7CiAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMg
YmxlbmRlZCgqdG8pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3Bl
cmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClb
aV0tPmJsZW5kKDAsIDEuIC0gcHJvZ3Jlc3MsIHRydWUpLT5hcHBseShtYXRyaXgsIGJveFNpemUp
OworICAgICAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClbaV0tPmJsZW5kKDAsIDEuIC0gcHJv
Z3Jlc3MsIHZpZXdwb3J0U2l6ZSwgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgdmlld3BvcnRTaXplLCBi
b3hTaXplKTsKICAgICAgICAgcmV0dXJuIG1hdHJpeDsKICAgICB9CiAKICAgICAvLyBOb3JtYWwg
YW5pbWF0aW9uIHdpdGggYSBtYXRjaGluZyBvcGVyYXRpb24gbGlzdC4KICAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIGJsZW5kZWQoKnRvKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5k
ZWQub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoZnJvbS0+YXQoaSksIHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseSht
YXRyaXgsIGJveFNpemUpOworICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQo
ZnJvbS0+YXQoaSksIHByb2dyZXNzLCB2aWV3cG9ydFNpemUsICFmcm9tLT5hdChpKSktPmFwcGx5
KG1hdHJpeCwgdmlld3BvcnRTaXplLCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4OwogfQog
CkBAIC0yMjcsMTggKzIyNywxOCBAQCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpHcmFwaGljc0xh
eWVyQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS2V5ZnJhbQogewogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFwcGx5SW50ZXJuYWwoQ2xpZW50KiBjbGllbnQs
IGNvbnN0IEFuaW1hdGlvblZhbHVlKiBmcm9tLCBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8sIGZs
b2F0IHByb2dyZXNzKQordm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjphcHBseUludGVybmFs
KENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJvbSwgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KQogewogICAgIHN3aXRjaCAobV9rZXlmcmFtZXMucHJvcGVydHkoKSkgewogICAgIGNhc2UgQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRPcGFjaXR5
KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25W
YWx1ZSo+KGZyb20pLT52YWx1ZSgpKSwgKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUqPih0byktPnZhbHVlKCkpLCBwcm9ncmVzcykpOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAgICAgICBjbGllbnQtPnNl
dEFuaW1hdGVkVHJhbnNmb3JtKGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9ncmVzcywg
bV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKKyAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZFRy
YW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwg
dmlld3BvcnRTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0g
ICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0
YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0
YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9n
cmVzcywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFw
cGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVl
Kj4oZnJvbSktPnZhbHVlKCksIHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVl
Kj4odG8pLT52YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplLCB2aWV3cG9ydFNpemUpKTsKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKQEAgLTI3Myw3ICsyNzMsNyBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zOjpoYXNSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFw
cGx5KENsaWVudCogY2xpZW50KQordm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjphcHBseShD
bGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIGlmICgh
aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg4LDE4ICsyODgsMTggQEAgdm9pZCBH
cmFwaGljc0xheWVyQW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAKICAg
ICBpZiAoIW5vcm1hbGl6ZWRWYWx1ZSkgewotICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwg
bV9rZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEpLCAwKTsKKyAgICAgICAgYXBwbHlJ
bnRlcm5hbChjbGllbnQsIG1fa2V5ZnJhbWVzLmF0KDApLCBtX2tleWZyYW1lcy5hdCgxKSwgMCwg
dmlld3BvcnRTaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChub3JtYWxp
emVkVmFsdWUgPT0gMS4wKSB7Ci0gICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBtX2tleWZy
YW1lcy5hdChtX2tleWZyYW1lcy5zaXplKCkgLSAyKSwgbV9rZXlmcmFtZXMuYXQobV9rZXlmcmFt
ZXMuc2l6ZSgpIC0gMSksIDEpOworICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgbV9rZXlm
cmFtZXMuYXQobV9rZXlmcmFtZXMuc2l6ZSgpIC0gMiksIG1fa2V5ZnJhbWVzLmF0KG1fa2V5ZnJh
bWVzLnNpemUoKSAtIDEpLCAxLCB2aWV3cG9ydFNpemUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkgPT0gMikgewogICAgICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKG1fa2V5ZnJhbWVzLmF0KDApLCBtX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgICAgIG5vcm1h
bGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6
ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwotICAgICAgICBhcHBseUludGVybmFs
KGNsaWVudCwgbV9rZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEpLCBub3JtYWxpemVk
VmFsdWUpOworICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgbV9rZXlmcmFtZXMuYXQoMCks
IG1fa2V5ZnJhbWVzLmF0KDEpLCBub3JtYWxpemVkVmFsdWUsIHZpZXdwb3J0U2l6ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJBbmltYXRpb246OmFwcGx5KENsaWVudCogY2xpZW50KQogICAgICAgICBub3JtYWxpemVkVmFs
dWUgPSAobm9ybWFsaXplZFZhbHVlIC0gZnJvbS0+a2V5VGltZSgpKSAvICh0by0+a2V5VGltZSgp
IC0gZnJvbS0+a2V5VGltZSgpKTsKICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmcm9tLCBtX2FuaW1h
dGlvbi5nZXQoKSk7CiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rp
b24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9u
KCkpOwotICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5vcm1hbGl6ZWRW
YWx1ZSk7CisgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0bywgbm9ybWFsaXpl
ZFZhbHVlLCB2aWV3cG9ydFNpemUpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0zODUs
MTAgKzM4NSwxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zOjpyZW1vdmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcAogICAgIH0KIH0KIAotdm9pZCBH
cmFwaGljc0xheWVyQW5pbWF0aW9uczo6YXBwbHkoR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6Q2xp
ZW50KiBjbGllbnQpCit2b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zOjphcHBseShHcmFwaGlj
c0xheWVyQW5pbWF0aW9uOjpDbGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbmltYXRpb25zLnNpemUoKTsg
KytpKQotICAgICAgICBtX2FuaW1hdGlvbnNbaV0uYXBwbHkoY2xpZW50KTsKKyAgICAgICAgbV9h
bmltYXRpb25zW2ldLmFwcGx5KGNsaWVudCwgdmlld3BvcnRTaXplKTsKIH0KIAogR3JhcGhpY3NM
YXllckFuaW1hdGlvbnMgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM6OmdldEFjdGl2ZUFuaW1hdGlv
bnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCmluZGV4IDlmMGI1YzUyYWJkOTgyZDdiZGM0Njg4
MjdlM2Q4ZjkwZDY1YmExZGIuLjlkNDU4Nzg3ZjViYmRiMWY2ODJmYjIwZWI0NTlmMjI4NTgxMzU4
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQW5pbWF0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAg
ICA6IG1fa2V5ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkKQogICAgIHsgfQogICAgIEdy
YXBoaWNzTGF5ZXJBbmltYXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgZG91YmxlLCBib29sKTsKLSAg
ICB2b2lkIGFwcGx5KENsaWVudCopOworICAgIHZvaWQgYXBwbHkoQ2xpZW50KiwgY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKTsKICAgICB2b2lkIHBhdXNlKGRvdWJsZSk7CiAgICAgdm9pZCBy
ZXN1bWUoKTsKICAgICBkb3VibGUgY29tcHV0ZVRvdGFsUnVubmluZ1RpbWUoKTsKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbGlzdHNNYXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGlzdHNNYXRjaDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQq
LCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBm
bG9hdCBwcm9ncmVzcyk7CisgICAgdm9pZCBhcHBseUludGVybmFsKENsaWVudCosIGNvbnN0IEFu
aW1hdGlvblZhbHVlKiBmcm9tLCBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8sIGZsb2F0IHByb2dy
ZXNzLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogICAgIEtleWZyYW1lVmFsdWVMaXN0
IG1fa2V5ZnJhbWVzOwogICAgIEludFNpemUgbV9ib3hTaXplOwogICAgIFJlZlB0cjxBbmltYXRp
b24+IG1fYW5pbWF0aW9uOwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXVz
ZShjb25zdCBTdHJpbmcmLCBkb3VibGUpOwogICAgIHZvaWQgc3VzcGVuZChkb3VibGUpOwogICAg
IHZvaWQgcmVzdW1lKCk7Ci0gICAgdm9pZCBhcHBseShHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpD
bGllbnQqKTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OkNsaWVudCos
IGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9hbmltYXRpb25zLmlzRW1wdHkoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9hbmltYXRpb25zLnNpemUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyQW5pbWF0aW9uPiYgYW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9uczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAKaW5kZXgg
MWE4YjQ2NmYzMjk5NDBiMjkyZTczOTY3YmQyYjVlMjJlMDAzYjVlZi4uMzQzZDc5OTE5NjAyZjAx
M2FhNWNmYjg1MzU2OTQ1ZGI4NzRlMDFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFu
c2xhdGlvblV0aWwuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRp
b25zPiB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
dHJhbnNmb3JtT3BlcmF0aW9ucywgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQorUGFzc093blB0
cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucywgY29uc3QgRmxvYXRTaXpl
JiBib3hTaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgLy8gV2UgbmVl
ZCB0byBkbyBhIGRlZXAgY29weSB0aGUgdHJhbnNmb3JtT3BlcmF0aW9ucyBtYXkgY29udGFpbiBy
ZWYgcG9pbnRlcnMgdG8gVHJhbnNmb3JtT3BlcmF0aW9uIG9iamVjdHMuCiAgICAgT3duUHRyPFdl
YlRyYW5zZm9ybU9wZXJhdGlvbnM+IHdlYlRyYW5zZm9ybU9wZXJhdGlvbnMgPSBhZG9wdFB0cihQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVUcmFuc2Zvcm1P
cGVyYXRpb25zKCkpOwpAQCAtODEsNyArODEsNyBAQCBQYXNzT3duUHRyPFdlYlRyYW5zZm9ybU9w
ZXJhdGlvbnM+IHRvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBUcmFuc2Zvcm1PcGVyYQog
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgogICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOiB7CiAgICAgICAgICAgICBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpW2pdLmdl
dCgpKTsKLSAgICAgICAgICAgIHdlYlRyYW5zZm9ybU9wZXJhdGlvbnMtPmFwcGVuZFRyYW5zbGF0
ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybS0+eCgpLCBib3hTaXplLndpZHRoKCkpLCBm
bG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybS0+eSgpLCBib3hTaXplLmhlaWdodCgpKSwgZmxv
YXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnooKSwgMSkpOworICAgICAgICAgICAgd2ViVHJh
bnNmb3JtT3BlcmF0aW9ucy0+YXBwZW5kVHJhbnNsYXRlKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJh
bnNmb3JtLT54KCksIGJveFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplKSwgZmxvYXRWYWx1ZUZv
ckxlbmd0aCh0cmFuc2Zvcm0tPnkoKSwgYm94U2l6ZS5oZWlnaHQoKSwgdmlld3BvcnRTaXplKSwg
ZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnooKSwgMSwgdmlld3BvcnRTaXplKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6Uk9UQVRFX1g6CkBAIC0xMTMsNyArMTEzLDcgQEAgUGFzc093blB0cjxXZWJUcmFuc2Zv
cm1PcGVyYXRpb25zPiB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3Bl
cmEKICAgICAgICAgfQogICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJ
VkU6IHsKICAgICAgICAgICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zv
cm0gPSBzdGF0aWNfY2FzdDxQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wZXJhdGlvbnMub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKLSAgICAgICAgICAgIHdlYlRyYW5z
Zm9ybU9wZXJhdGlvbnMtPmFwcGVuZFBlcnNwZWN0aXZlKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJh
bnNmb3JtLT5wZXJzcGVjdGl2ZSgpLCAwKSk7CisgICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVy
YXRpb25zLT5hcHBlbmRQZXJzcGVjdGl2ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybS0+
cGVyc3BlY3RpdmUoKSwgMCwgdmlld3BvcnRTaXplKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6CkBAIC0x
MjksMTQgKzEyOSwxNCBAQCBQYXNzT3duUHRyPFdlYlRyYW5zZm9ybU9wZXJhdGlvbnM+IHRvV2Vi
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBUcmFuc2Zvcm1PcGVyYQogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4KLWJvb2wgYXBwZW5kS2V5
ZnJhbWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbihDdXJ2ZSogY3VydmUsIGRvdWJsZSBrZXlU
aW1lLCBjb25zdCBWYWx1ZSogdmFsdWUsIGNvbnN0IFZhbHVlKiBsYXN0VmFsdWUsIFdlYktpdDo6
V2ViQW5pbWF0aW9uQ3VydmU6OlRpbWluZ0Z1bmN0aW9uVHlwZSB0aW1pbmdGdW5jdGlvblR5cGUs
IGNvbnN0IEZsb2F0U2l6ZSYpCitib29sIGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5n
RnVuY3Rpb24oQ3VydmUqIGN1cnZlLCBkb3VibGUga2V5VGltZSwgY29uc3QgVmFsdWUqIHZhbHVl
LCBjb25zdCBWYWx1ZSogbGFzdFZhbHVlLCBXZWJLaXQ6OldlYkFuaW1hdGlvbkN1cnZlOjpUaW1p
bmdGdW5jdGlvblR5cGUgdGltaW5nRnVuY3Rpb25UeXBlLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgY3VydmUtPmFkZChLZXlmcmFtZShrZXlU
aW1lLCB2YWx1ZS0+dmFsdWUoKSksIHRpbWluZ0Z1bmN0aW9uVHlwZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBWYWx1ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1
cnZlPgotYm9vbCBhcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbihD
dXJ2ZSogY3VydmUsIGRvdWJsZSBrZXlUaW1lLCBjb25zdCBWYWx1ZSogdmFsdWUsIGNvbnN0IFZh
bHVlKiBsYXN0VmFsdWUsIGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5
MiwgY29uc3QgRmxvYXRTaXplJikKK2Jvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVy
VGltaW5nRnVuY3Rpb24oQ3VydmUqIGN1cnZlLCBkb3VibGUga2V5VGltZSwgY29uc3QgVmFsdWUq
IHZhbHVlLCBjb25zdCBWYWx1ZSogbGFzdFZhbHVlLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91
YmxlIHgyLCBkb3VibGUgeTIsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSkKIHsKICAgICBjdXJ2ZS0+YWRkKEtleWZyYW1lKGtleVRpbWUsIHZhbHVlLT52YWx1
ZSgpKSwgeDEsIHkxLCB4MiwgeTIpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTUyLDE0ICsxNTIs
MTQgQEAgYm9vbCBpc1JvdGF0aW9uVHlwZShUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5
cGUgdHJhbnNmb3JtVHlwZSkKIH0KIAogdGVtcGxhdGUgPD4KLWJvb2wgYXBwZW5kS2V5ZnJhbWVX
aXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSwgV2ViVHJh
bnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPihXZWJUcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZSogY3VydmUsIGRvdWJsZSBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSogdmFsdWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBsYXN0VmFs
dWUsIFdlYktpdDo6V2ViQW5pbWF0aW9uQ3VydmU6OlRpbWluZ0Z1bmN0aW9uVHlwZSB0aW1pbmdG
dW5jdGlvblR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKK2Jvb2wgYXBwZW5kS2V5ZnJh
bWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSwgV2Vi
VHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPihXZWJUcmFuc2Zv
cm1BbmltYXRpb25DdXJ2ZSogY3VydmUsIGRvdWJsZSBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSogdmFsdWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBsYXN0
VmFsdWUsIFdlYktpdDo6V2ViQW5pbWF0aW9uQ3VydmU6OlRpbWluZ0Z1bmN0aW9uVHlwZSB0aW1p
bmdGdW5jdGlvblR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXplKQogewogICAgIGJvb2wgY2FuQmxlbmQgPSAhbGFzdFZhbHVlOwotICAgIE93
blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBvcGVyYXRpb25zKHRvV2ViVHJhbnNmb3JtT3Bl
cmF0aW9ucygqdmFsdWUtPnZhbHVlKCksIGJveFNpemUpKTsKKyAgICBPd25QdHI8V2ViVHJhbnNm
b3JtT3BlcmF0aW9ucz4gb3BlcmF0aW9ucyh0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoKnZhbHVl
LT52YWx1ZSgpLCBib3hTaXplLCB2aWV3cG9ydFNpemUpKTsKICAgICBpZiAoIW9wZXJhdGlvbnMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNhbkJsZW5kKSB7Ci0gICAgICAgIE93
blB0cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBsYXN0T3BlcmF0aW9ucyh0b1dlYlRyYW5zZm9y
bU9wZXJhdGlvbnMoKmxhc3RWYWx1ZS0+dmFsdWUoKSwgYm94U2l6ZSkpOworICAgICAgICBPd25Q
dHI8V2ViVHJhbnNmb3JtT3BlcmF0aW9ucz4gbGFzdE9wZXJhdGlvbnModG9XZWJUcmFuc2Zvcm1P
cGVyYXRpb25zKCpsYXN0VmFsdWUtPnZhbHVlKCksIGJveFNpemUsIHZpZXdwb3J0U2l6ZSkpOwog
ICAgICAgICBpZiAoIWxhc3RPcGVyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBjYW5CbGVuZCA9IGxhc3RPcGVyYXRpb25zLT5jYW5CbGVuZFdpdGgoKm9wZXJhdGlv
bnMpOwpAQCAtMTcyLDE0ICsxNzIsMTQgQEAgYm9vbCBhcHBlbmRLZXlmcmFtZVdpdGhTdGFuZGFy
ZFRpbWluZ0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2YKIH0KIAog
dGVtcGxhdGUgPD4KLWJvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVyVGltaW5nRnVu
Y3Rpb248VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUsIFdlYlRyYW5zZm9ybUtleWZyYW1lLCBXZWJU
cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4oV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIGN1cnZl
LCBkb3VibGUga2V5VGltZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHZhbHVlLCBj
b25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogbGFzdFZhbHVlLCBkb3VibGUgeDEsIGRvdWJs
ZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKK2Jv
b2wgYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVyVGltaW5nRnVuY3Rpb248VHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUsIFdlYlRyYW5zZm9ybUtleWZyYW1lLCBXZWJUcmFuc2Zvcm1BbmltYXRp
b25DdXJ2ZT4oV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIGN1cnZlLCBkb3VibGUga2V5VGlt
ZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHZhbHVlLCBjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSogbGFzdFZhbHVlLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgy
LCBkb3VibGUgeTIsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKQogewogICAgIGJvb2wgY2FuQmxlbmQgPSAhbGFzdFZhbHVlOwotICAgIE93blB0
cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBvcGVyYXRpb25zKHRvV2ViVHJhbnNmb3JtT3BlcmF0
aW9ucygqdmFsdWUtPnZhbHVlKCksIGJveFNpemUpKTsKKyAgICBPd25QdHI8V2ViVHJhbnNmb3Jt
T3BlcmF0aW9ucz4gb3BlcmF0aW9ucyh0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoKnZhbHVlLT52
YWx1ZSgpLCBib3hTaXplLCB2aWV3cG9ydFNpemUpKTsKICAgICBpZiAoIW9wZXJhdGlvbnMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNhbkJsZW5kKSB7Ci0gICAgICAgIE93blB0
cjxXZWJUcmFuc2Zvcm1PcGVyYXRpb25zPiBsYXN0T3BlcmF0aW9ucyh0b1dlYlRyYW5zZm9ybU9w
ZXJhdGlvbnMoKmxhc3RWYWx1ZS0+dmFsdWUoKSwgYm94U2l6ZSkpOworICAgICAgICBPd25QdHI8
V2ViVHJhbnNmb3JtT3BlcmF0aW9ucz4gbGFzdE9wZXJhdGlvbnModG9XZWJUcmFuc2Zvcm1PcGVy
YXRpb25zKCpsYXN0VmFsdWUtPnZhbHVlKCksIGJveFNpemUsIHZpZXdwb3J0U2l6ZSkpOwogICAg
ICAgICBpZiAoIWxhc3RPcGVyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBjYW5CbGVuZCA9IGxhc3RPcGVyYXRpb25zLT5jYW5CbGVuZFdpdGgoKm9wZXJhdGlvbnMp
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9tQmV6aWVy
VGltaW5nRnVuY3Rpb248VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUsIFdlYlRyCiB9CiAKIHRlbXBs
YXRlIDxjbGFzcyBWYWx1ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1cnZlPgotUGFzc093blB0
cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBpbnQgYW5p
bWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBDdXJ2ZSogY3VydmUsIFdlYktpdDo6V2ViQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgY29uc3QgRmxvYXRTaXplJiBi
b3hTaXplKQorUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0
aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiog
YW5pbWF0aW9uLCBpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBDdXJ2ZSogY3Vy
dmUsIFdlYktpdDo6V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwg
Y29uc3QgRmxvYXRTaXplJiBib3hTaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7
CiAgICAgYm9vbCBhbHRlcm5hdGUgPSBmYWxzZTsKICAgICBib29sIHJldmVyc2UgPSBmYWxzZTsK
QEAgLTI1NCw5ICsyNTQsOSBAQCBQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVh
dGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogCiAgICAgICAgIGJv
b2wgYWRkZWRLZXlmcmFtZSA9IGZhbHNlOwogICAgICAgICBpZiAoaXNVc2luZ0N1c3RvbUJlemll
clRpbWluZ0Z1bmN0aW9uKQotICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZy
YW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3VydmU+
KGN1cnZlLCBrZXlUaW1lLCBvcmlnaW5hbFZhbHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgeDEsIHkx
LCB4MiwgeTIsIGJveFNpemUpOworICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtl
eWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3Vy
dmU+KGN1cnZlLCBrZXlUaW1lLCBvcmlnaW5hbFZhbHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgeDEs
IHkxLCB4MiwgeTIsIGJveFNpemUsIHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhTdGFuZGFyZFRpbWluZ0Z1
bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3VydmU+KGN1cnZlLCBrZXlUaW1lLCBvcmlnaW5hbFZh
bHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgdGltaW5nRnVuY3Rpb25UeXBlLCBib3hTaXplKTsKKyAg
ICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhTdGFuZGFyZFRpbWlu
Z0Z1bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3VydmU+KGN1cnZlLCBrZXlUaW1lLCBvcmlnaW5h
bFZhbHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgdGltaW5nRnVuY3Rpb25UeXBlLCBib3hTaXplLCB2
aWV3cG9ydFNpemUpOwogICAgICAgICBpZiAoIWFkZGVkS2V5ZnJhbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNzMsMTggKzI3MywxOCBAQCBQYXNzT3duUHRyPFdl
YktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbAogICAgIHJldHVybiB3ZWJBbmltYXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNz
T3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBh
bmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkK
K1Bhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwg
aW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBib3hT
aXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAKIAogICAgIGlmICh2YWx1ZXMu
cHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSB7CiAgICAgICAg
IE93blB0cjxXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4gY3VydmUgPSBhZG9wdFB0cihQbGF0
Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25DdXJ2ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQsIGN1
cnZlLmdldCgpLCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlUcmFuc2Zvcm0s
IEZsb2F0U2l6ZShib3hTaXplKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUsIFdlYlRyYW5zZm9ybUtleWZyYW1lLCBXZWJUcmFuc2Zv
cm1BbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zm
c2V0LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5VHJh
bnNmb3JtLCBGbG9hdFNpemUoYm94U2l6ZSksIHZpZXdwb3J0U2l6ZSk7CiAgICAgfQogCiAgICAg
aWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSB7CiAgICAg
ICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZSA9IGFkb3B0UHRyKFBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUZsb2F0QW5pbWF0aW9u
Q3VydmUoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248RmxvYXRBbmltYXRp
b25WYWx1ZSwgV2ViRmxvYXRLZXlmcmFtZSwgV2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4odmFsdWVz
LCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0
OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSwgRmxvYXRTaXplKCkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9uVmFsdWUsIFdlYkZs
b2F0S2V5ZnJhbWUsIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBh
bmltYXRpb25JZCwgdGltZU9mZnNldCwgY3VydmUuZ2V0KCksIFdlYktpdDo6V2ViQW5pbWF0aW9u
OjpUYXJnZXRQcm9wZXJ0eU9wYWNpdHksIEZsb2F0U2l6ZSgpLCB2aWV3cG9ydFNpemUpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlv
blV0aWwuaAppbmRleCA4NzM5YWI3NmFiZjE4MmUxYjIxOTQ5YjBiM2I5YWViMTVjOWZmZGEyLi5m
NmM0MWY1OWE0ZTA3MmI1Yzk3M2I0ZTk2Yjc0NjQwOGUwYjQyMDAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlv
blV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9B
bmltYXRpb25UcmFuc2xhdGlvblV0aWwuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIEFuaW1hdGlvbjsKIGNsYXNz
IEZsb2F0U2l6ZTsKK2NsYXNzIEludFNpemU7CiAKIAogLy8gVHJhbnNsYXRlcyBXZWJDb3JlIGFu
aW1hdGlvbiBkYXRhIGludG8gYSBXZWJBbmltYXRpb24uIElmIHdlIGFyZSB1bmFibGUKQEAgLTQ5
LDcgKzUwLDcgQEAgY2xhc3MgRmxvYXRTaXplOwogLy8gICAtIGEgc3RlcHMgdGltaW5nIGZ1bmN0
aW9uIGlzIHVzZWQsCiAvLyAgIC0gYSBwcm9wZXJ0eSBvdGhlciB0aGFuIEFuaW1hdGVkUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm0sIG9yIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5IGlzIGFuaW1hdGVk
LCBvcgogLy8gICAtIGEgdHJhbnNmb3JtIGFuaW1hdGlvbiBpbnZvbHZlcyBhIG5vbi1pbnZlcnRh
YmxlIHRyYW5zZm9ybS4KLVBhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdl
YkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGlu
dCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6
ZSk7CitQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBpbnQgYW5pbWF0aW9u
SWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUsIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGIxZmViZTJmNjFmZGI4ODAwOTQ0
YTFmODcyZWY3MWY3ZmQ4ZDNjZS4uYTZiMmJhNjhkYjEzZjBmNWE5YjU1NTU2NjI2ZWQ4MmMyNDFi
ZWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01ODIsNyAr
NTgyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29udGVu
dHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViTGF5ZXIKICAgICAgICAgdXBkYXRlQ2hpbGRMaXN0
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24oY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWVPZmZzZXQpCitib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgcGxh
dGZvcm1MYXllcigpLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKIApAQCAtNTkxLDcgKzU5
MSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24oY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QKICAgICBpZiAobV9hbmltYXRpb25JZE1hcC5j
b250YWlucyhhbmltYXRpb25OYW1lKSkKICAgICAgICAgYW5pbWF0aW9uSWQgPSBtX2FuaW1hdGlv
bklkTWFwLmdldChhbmltYXRpb25OYW1lKTsKIAotICAgIE93blB0cjxXZWJBbmltYXRpb24+IHRv
QWRkKGNyZWF0ZVdlYkFuaW1hdGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRp
bWVPZmZzZXQsIGJveFNpemUpKTsKKyAgICBPd25QdHI8V2ViQW5pbWF0aW9uPiB0b0FkZChjcmVh
dGVXZWJBbmltYXRpb24odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0
LCBib3hTaXplLCB2aWV3cG9ydFNpemUpKTsKIAogICAgIGlmICh0b0FkZCkgewogICAgICAgICBh
bmltYXRpb25JZCA9IHRvQWRkLT5pZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aAppbmRleCA2YWE1YTYzYmYyZTY5Y2EzM2Y1ZmYwMWZlNzNhZmY0NWYyNDc5MmY0Li45MmNhYjdi
ZjBhZTgyZDYwZDliMzRjY2U1M2UyMmYxY2I1MzQ5MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uaApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7CiAgICAgdmlydHVhbCBib29s
IGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBj
b25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBk
b3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEludFNpemUm
IHZpZXdwb3J0U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIHRp
bWVPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7CiAgICAgdmlydHVhbCB2
b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQXJy
YXlQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXIuaAppbmRleCAzMDUwY2I0NDU3YzZlNWExMjI5ZWU2
M2Y2ODdiMDk3MGU3MDZmNmVjLi4zNWJhZDYzMzFkYjliNTY4MzFlOTQ2ZDM3YjFjOGVjNDc4NmY4
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlci5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7IG1f
ZGF0YS5hcHBlbmQodmFsdWUpOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpCisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUpCiAgICAgewogICAgICAgICBpZiAoIWZyb20gfHwgIWlzU2FtZVR5cGUo
KmZyb20pKQogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJOdW1iZXJQYXJhbWV0ZXIuaAppbmRleCAwOTM3ODU4M2M0YTFiNGEyM2FjOGYxOGFlYzFkZTRj
MjM1NDgwMzFkLi44YmIyZDQ0MDg1MjFhMjA0NGI0ZTk0NGMyNDM4Yzc3ZmU0MzNiZjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck51bWJlclBhcmFtZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRWYWx1ZShkb3VibGUgdmFsdWUpIHsgbV9kYXRhLmFw
cGVuZCh2YWx1ZSk7IH0KICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVy
UGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBm
cm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUpCiAgICAgewogICAgICAgICBpZiAoIWZyb20gfHwgIWlzU2FtZVR5cGUoKmZy
b20pKQogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHAKaW5kZXggOTI1MmY0N2Q0ZmE1ZDkzMjBlZjg1ZDA2MzFjMzFhOTZiOTgwYTc5ZC4u
MjkxZTMwNDg2YzBlOWVhODExODFkOWJlN2VkYmYzYzUyZjZiZGVhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBDdXN0b21GaWx0ZXJPcGVy
YXRpb246On5DdXN0b21GaWx0ZXJPcGVyYXRpb24oKQogewogfQogCi1QYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgYm9v
bCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICAvLyBGSVhNRTogVGhlcmUn
cyBubyB3YXkgdG8gZGVjaWRlIHdoYXQgaXMgdGhlICJwYXNzdGhyb3VnaCBmaWx0ZXIiIGZvciBz
aGFkZXJzIHVzaW5nIHRoZSBjdXJyZW50IENTUyBTeW50YXguCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0OTAzCkBAIC03MCw3ICs3MCw3IEBAIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0
IEZpbHRlck9wZXJhdGlvbioKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyTGlzdCBhbmltYXRlZFBhcmFtZXRlcnM7Ci0gICAgbV9wYXJhbWV0ZXJz
LmJsZW5kKGZyb21PcC0+bV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgc2l6ZSwgYW5pbWF0ZWRQYXJh
bWV0ZXJzKTsKKyAgICBtX3BhcmFtZXRlcnMuYmxlbmQoZnJvbU9wLT5tX3BhcmFtZXRlcnMsIHBy
b2dyZXNzLCBzaXplLCB2aWV3cG9ydFNpemUsIGFuaW1hdGVkUGFyYW1ldGVycyk7CiAgICAgcmV0
dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3JhbSwgYW5pbWF0ZWRQYXJh
bWV0ZXJzLCBtX21lc2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hUeXBlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggMGY5MmJkOTlkNzZlYjNjYjI3MjRlN2Jh
ZmI4MmQyYzE4ZmY2NzIxNS4uNjFiMWY1NjU5NzhmMTI1ZGVlYzQ3NzBmODY1MDc3MjQxODU5ZTY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02NCw3ICs2NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIGJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJP
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7
CiAKIHByb3RlY3RlZDoKICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJQcm9ncmFtPiwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYsIHVuc2ln
bmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKaW5kZXggNjQxMjI1YTU2ZTlkNjhiZjY4
MGNlNTkxMTkyZjU1MjlhZGY0NTM5Yi4uZDBmOTNjNDM2MDMwYzdjNzhmZDYzNzdhNTBhYTU4YjFj
ODEwYTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCkBAIC01Nyw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyVHlwZSgpID09IG90aGVy
LnBhcmFtZXRlclR5cGUoKTsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21G
aWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXIqLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXImKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsg
fQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdC5jcHAK
aW5kZXggY2M2MzNlOWQ5NjQwZjRhY2Y4YTVlYTAzYjZiNzYyNjg1ZjI5Zjk2OS4uMTZlMjZiZmE1
OTA0ZWM3ZjE0ZDExYTcxZWE3NzQ0NjM5NDkxMDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclBhcmFtZXRlckxpc3QuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdDo6Y2hlY2tBbHBoYWJldGljYWxPcmRlcigpIGNvbnN0CiB9CiAKIHZvaWQg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdDo6YmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyTGlzdCYgZnJvbUxpc3QsIAotICAgIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6
ZSYgZnJhbWVTaXplLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KSBjb25z
dAorICAgIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgZnJhbWVTaXplLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3Vs
dExpc3QpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBib3RoIGxpc3RzIHRv
IGJlIHNvcnRlZCBieSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHJlc3VsdCBsaXN0IGlzIGFsc28g
c29ydGVkLgogICAgIEFTU0VSVChjaGVja0FscGhhYmV0aWNhbE9yZGVyKCkpOwpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q6OmJsZW5kKGNvbnN0IEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QmIGZyb21MaXN0LAogICAgICAgICBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0LmF0KGZyb21MaXN0SW5kZXgpLmdldCgpOwogICAg
ICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtVG8gPSBhdCh0b0xpc3RJbmRleCkuZ2V0
KCk7CiAgICAgICAgIGlmIChwYXJhbUZyb20tPm5hbWUoKSA9PSBwYXJhbVRvLT5uYW1lKCkpIHsK
LSAgICAgICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKHBhcmFtRnJvbSwg
cHJvZ3Jlc3MsIGZyYW1lU2l6ZSkpOworICAgICAgICAgICAgcmVzdWx0TGlzdC5hcHBlbmQocGFy
YW1Uby0+YmxlbmQocGFyYW1Gcm9tLCBwcm9ncmVzcywgZnJhbWVTaXplLCB2aWV3cG9ydFNpemUp
KTsKICAgICAgICAgICAgICsrZnJvbUxpc3RJbmRleDsKICAgICAgICAgICAgICsrdG9MaXN0SW5k
ZXg7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0
ZXJMaXN0LmgKaW5kZXggMmUxMjhlNzY5MjA5NmI1OGY4MTJlYzAyMzYzOGQ3ZDMzODM4YTlhNC4u
MmZkOTJmOTM3NTg1NmE3N2Q2MGQ4OWZhMjY3YjE3ZjliMGM3MjY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0
ZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Qoc2l6ZV90KTsKIAogICAgIGJvb2wg
Y2hlY2tBbHBoYWJldGljYWxPcmRlcigpIGNvbnN0OwotICAgIHZvaWQgYmxlbmQoY29uc3QgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlv
dXRTaXplJiwgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkgY29uc3Q7Cisg
ICAgdm9pZCBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpIGNvbnN0OwogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JikgY29uc3Q7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUmVuZGVyZXIuY3BwCmluZGV4IGFkOGRiM2E4YjU1NGYw
M2EzNjE3MzQwM2RkODY1NDNiMDY5OTRmZWIuLmM3NmFjZTA5MDExZmMwNjk3NTc2ODI3M2ZmYjkx
OTAzMjAxNmU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUmVuZGVyZXIuY3BwCkBAIC0xOTEs
NyArMTkxLDcgQEAgdm9pZCBDdXN0b21GaWx0ZXJSZW5kZXJlcjo6YmluZFByb2dyYW1UcmFuc2Zv
cm1QYXJhbWV0ZXIoaW50IHVuaWZvcm1Mb2NhdGlvbiwgQ3UKICAgICAgICAgLy8gTm90ZSB0aGF0
IHRoZSBvcmlnaW4gKDAsIDApIG9mIHRoZSB2aWV3cG9ydCBpcyBpbiB0aGUgbWlkZGxlIG9mIHRo
ZSBjb250ZXh0LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gY2hhbmdlIHRoZSBvcmlnaW4gb2YgdGhl
IHRyYW5zZm9ybQogICAgICAgICAvLyBpbiBvcmRlciB0byByb3RhdGUgYXJvdW5kIHRoZSBtaWRk
bGUgb2YgbWVzaC4KICAgICAgICAgbWF0cml4LnNjYWxlM2QoMS4wIC8gbV9jb250ZXh0U2l6ZS53
aWR0aCgpLCAxLjAgLyBtX2NvbnRleHRTaXplLmhlaWdodCgpLCAxKTsKLSAgICAgICAgdHJhbnNm
b3JtUGFyYW1ldGVyLT5hcHBseVRyYW5zZm9ybShtYXRyaXgsIG1fY29udGV4dFNpemUpOworICAg
ICAgICB0cmFuc2Zvcm1QYXJhbWV0ZXItPmFwcGx5VHJhbnNmb3JtKG1hdHJpeCwgbV9jb250ZXh0
U2l6ZSwgSW50U2l6ZSgpKTsKICAgICAgICAgbWF0cml4LnNjYWxlM2QobV9jb250ZXh0U2l6ZS53
aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCAxKTsKICAgICB9CiAgICAgZmxvYXQgZ2xN
YXRyaXhbMTZdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVy
LmgKaW5kZXggNWJkNjYxMWEwOGI0YTJjMDYxODJmZWVmYjhjZDM5Y2QzYzI3Yjc4Ny4uYzJjMGY1
ZmYzNjA2NzJhMTQ2Y2MxY2E1NThmY2NjZDgzZTIyNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJh
bWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0
ZXIobmFtZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciogZnJvbVBhcmFtZXRl
ciwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRl
clBhcmFtZXRlciogZnJvbVBhcmFtZXRlciwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgewogICAgICAgICBp
ZiAoIWZyb21QYXJhbWV0ZXIgfHwgIWlzU2FtZVR5cGUoKmZyb21QYXJhbWV0ZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAKICAg
ICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcj4gcmVzdWx0ID0gQ3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyOjpjcmVhdGUobmFtZSgpKTsKICAgICAgICAgaWYg
KGZyb20uc2l6ZSgpICYmIHRvLnNpemUoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0T3BlcmF0
aW9ucyh0by5ibGVuZChmcm9tLCBwcm9ncmVzcywgc2l6ZSkpOworICAgICAgICAgICAgcmVzdWx0
LT5zZXRPcGVyYXRpb25zKHRvLmJsZW5kKGZyb20sIHByb2dyZXNzLCBzaXplLCB2aWV3cG9ydFNp
emUpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0LT5zZXRPcGVyYXRpb25zKHBy
b2dyZXNzID4gMC41ID8gdG8gOiBmcm9tKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc0
LDEwICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29wZXJhdGlvbnMgPT0gb3Ro
ZXItPm1fb3BlcmF0aW9uczsKICAgICB9CiAKLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkgY29u
c3QKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG1fb3Bl
cmF0aW9ucy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBtX29wZXJhdGlvbnMu
YXQoaSktPmFwcGx5KHRyYW5zZm9ybSwgYm94U2l6ZSk7CisgICAgICAgICAgICBtX29wZXJhdGlv
bnMuYXQoaSktPmFwcGx5KHRyYW5zZm9ybSwgYm94U2l6ZSwgdmlld3BvcnRTaXplKTsKICAgICB9
CiAKICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcGVyYXRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGVyYXRpb25zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBmYjliNjc2MTk4
OTJhZDJkMmYyYWQwM2ZjMDA3MTZlNjJlZDZjYjQ0Li4zM2Y4ZjA2MjNiNDMxNzhmYmExYmU0NzE0
M2RkY2RmMWMzNDk4N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTkxLDcgKzkxLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gMDsgCiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20q
LywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRv
UGFzc3Rocm91Z2gqLyA9IGZhbHNlKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnBy
b2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBjb25zdCBJbnRTaXplJiAvKnZpZXdwb3J0U2l6
ZSovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7IAogICAgICAg
ICBBU1NFUlQoYmxlbmRpbmdOZWVkc1JlbmRlcmVyU2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIDA7
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKaW5kZXggZGI2NTk0Mzk0ZTM3ZTQxZDczMGI5MDdi
ZmEyMDE3MGZhMDY3NjA5YS4uM2U0ZWY3ZDk3MWQyZjUwYWU1ZWM3MTVhMDFiOTIyMjgwNzM0NWU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgRmlsdGVy
T3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKICAgICAgICAgc3dpdGNo
IChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgQmx1ckZpbHRlck9wZXJhdGlvbiog
Ymx1ck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJP
cGVyYXRpb24pOwotICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChibHVyT3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwgMCk7CisgICAgICAgICAgICBm
bG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24tPnN0
ZERldmlhdGlvbigpLCAwLCBJbnRTaXplKCkpOwogICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRT
aXplID0gb3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKICAgICAgICAgICAgIEZpbHRl
ck91dHNldHMgb3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCks
IG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CiAgICAgICAgICAgICB0
b3RhbE91dHNldHMgKz0gb3V0c2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvVmFsaWRhdGVkQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCA4ZWE0ZDUyNTFjZTVkNWI3Y2U1YWFlMmMzNDMxN2Nl
ZWUxOGZhN2MwLi5mYTI3NjNjMGRkZGNkZDUyNmNhODA0YjY4NTgzM2QxNmEwOGE4ODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1ZhbGlkYXRl
ZEN1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9WYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC01
NCw3ICs1NCw3IEBAIFZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6flZhbGlkYXRlZEN1
c3RvbUZpbHRlck9wZXJhdGlvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiosIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gVmFsaWRhdGVkQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBkb3VibGUg
cHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dy
ZXNzKTsKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1ZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9WYWxpZGF0ZWRD
dXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBlYWJiMGQ1NTk5NmEzODU2MWZjOTUyYjhkOGUy
N2RkM2ZhNDViNGU5Li5kODI5ZTZhODRjMjk0NDUzNTQyYmFkZjNiNzA5ZTMzNzIwN2ZkM2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1ZhbGlk
YXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgYmxlbmRpbmdOZWVkc1JlbmRlcmVy
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBm
YWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNp
emUmLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
ID0gZmFsc2UpOwogCiAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSogdmFsaWRhdGVk
UHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRhdGVkUHJvZ3JhbS5nZXQoKTsgfQogICAg
IGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1P
cGVyYXRpb24uaAppbmRleCBlM2VjY2MxZTc3YjA1MTRjY2UxYTcwOTU0YzAzMTA0OWM4ZTI2MmQz
Li5kZGNiNzYzNTEzZTljZWQxZjdiNzI4ZWNjNWZiZjJjNDkwZTY2ZjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNm
b3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC00NiwxMiArNDYsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUobyk7CiAgICAgfQogCi0gICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRTaXplJikg
Y29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBJbnRTaXplJikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qLCBkb3VibGUsIGJvb2wgPSBmYWxz
ZSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qLCBkb3VibGUsIGNvbnN0IEludFNpemUmLCBib29sID0gZmFs
c2UpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCmluZGV4IGUzNjYyMTM0YzYxNjJmYmVj
OGQwZDEzYjMxZmJjZDQ1NDA1MjE3MWEuLmE3MTUwMzc5OGQyNWNjMWY4Nzg2OGQ5ZDI2NDI5ODE0
NDI5ZWZhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRp
b24uY3BwCkBAIC0zMiw3ICszMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IE1hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCitQYXNzUmVmUHRyPFRyYW5zZm9y
bU9wZXJhdGlvbj4gTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC00Miw5ICs0Miw5
IEBAIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJv
bVQ7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG9UOwogICAgIGlmIChmcm9tKQotICAgICAg
ICBmcm9tLT5hcHBseShmcm9tVCwgc2l6ZSk7CisgICAgICAgIGZyb20tPmFwcGx5KGZyb21ULCBz
aXplLCB2aWV3cG9ydFNpemUpOwogCi0gICAgYXBwbHkodG9ULCBzaXplKTsKKyAgICBhcHBseSh0
b1QsIHNpemUsIHZpZXdwb3J0U2l6ZSk7CiAKICAgICBpZiAoYmxlbmRUb0lkZW50aXR5KQogICAg
ICAgICBzdGQ6OnN3YXAoZnJvbVQsIHRvVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggYjA1NzdhNmU0ODQ5Yzk0M2U3NzlhNzMzMjM1MjJiOTE4
YzUyMzBhNy4uMzk0NzM3NzA1MDA0YzExNTgyMWY2Yjc5MDdhNWVjMDM4NzVmODlmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTMsMTMgKzUz
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX21hdHJpeCA9PSBtLT5tX21hdHJpeDsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHko
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW50U2l6ZSYpIGNvbnN0CiAgICAgewogICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNm
b3JtYXRpb25NYXRyaXgobV9tYXRyaXgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9J
ZGVudGl0eSA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVz
cywgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZh
bHNlKTsKICAgICAKICAgICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uLmNwcAppbmRleCAwNWVmZWUwYTlhOGYwNzc2NjhiNjM1MmMzZTI5YjliZjNk
MTJlMDhhLi4zMzgwZTYxNzY2YWI0NjAwYzhhZTQ5ZWUwYjQ1ZDc0YWIyZWY0MjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0yOCw3ICsyOCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb0lkZW50aXR5KQorUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IE1hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCBibGVuZFRvSWRl
bnRpdHkpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5oCmluZGV4IDQ1ZjllYTcwZmI3OTk5ZWQ1NTc5OTRjMDcwNzliOGM0NDM4YjUwM2UuLjAzMzE1
MTYzNGU2NTA2MzYwMzI2ZGU5MTkxNDFjOTY2M2I5Y2JhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9N
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTksMTQgKzU5LDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBtX2EgPT0gbS0+bV9hICYmIG1fYiA9PSBtLT5tX2IgJiYgbV9jID09IG0t
Pm1fYyAmJiBtX2QgPT0gbS0+bV9kICYmIG1fZSA9PSBtLT5tX2UgJiYgbV9mID09IG0tPm1fZjsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHko
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW50U2l6ZSYpIGNvbnN0CiAgICAgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRy
aXgobV9hLCBtX2IsIG1fYywgbV9kLCBtX2UsIG1fZik7CiAgICAgICAgIHRyYW5zZm9ybS5tdWx0
aXBseShtYXRyaXgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFs
c2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpOwogICAgIAog
ICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBj
LCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKQogICAgICAgICA6IG1fYShhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVj
dGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBl
ODQyMjkyNWMyZTZmNDkwYWU3NWFhMjMyYWViZmUwYTAwNTVjZTJiLi43MmZiYjNkMjUwNmE2MGQw
YmM2YzZlYWFhNDgzNzZiM2M5MTBmMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtMzMsMTMgKzMzLDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRl
bnRpdHkpCitQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgYmxlbmRUb0lkZW50
aXR5KQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkgewotICAgICAg
ICBkb3VibGUgcCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9wLCAxKTsKKyAgICAgICAgZG91Ymxl
IHAgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fcCwgMSwgdmlld3BvcnRTaXplKTsKICAgICAgICAg
cCA9IFdlYkNvcmU6OmJsZW5kKHAsIDEuMCwgcHJvZ3Jlc3MpOyAvLyBGSVhNRTogdGhpcyBzZWVt
cyB3cm9uZy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNzAwCiAg
ICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0
aChjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHApLCBGaXhlZCkpOwogICAgIH0KQEAgLTUwLDggKzUw
LDggQEAgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFBlcnNwZWN0aXZlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2YKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZyb21UOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVDsKLSAgICBmcm9tVC5hcHBseVBl
cnNwZWN0aXZlKGZsb2F0VmFsdWVGb3JMZW5ndGgoZnJvbVAsIDEpKTsKLSAgICB0b1QuYXBwbHlQ
ZXJzcGVjdGl2ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKHRvUCwgMSkpOworICAgIGZyb21ULmFwcGx5
UGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxlbmd0aChmcm9tUCwgMSwgdmlld3BvcnRTaXplKSk7
CisgICAgdG9ULmFwcGx5UGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxlbmd0aCh0b1AsIDEsIHZp
ZXdwb3J0U2l6ZSkpOwogICAgIHRvVC5ibGVuZChmcm9tVCwgcHJvZ3Jlc3MpOwogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXA7CiAgICAgdG9ULmRlY29tcG9z
ZShkZWNvbXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oCmluZGV4IDM3MzBkNDI3NTY2MjIyOWJhMjE2NjFlZDY3YjI0ZTlhOTUwMDY5MTAuLmJh
ZTkwMmFjZGI2MjAwNDBkMjgyOWUwMDBiNWRkM2JlYmIyMzhiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIExlbmd0aCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcDsgfQog
ICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IHsgcmV0
dXJuICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fcCwgMSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
ZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fcCwgMSwgSW50
U2l6ZSgxLCAxKSk7IH0KICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFBFUlNQRUNUSVZFOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Ft
ZVR5cGUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9w
ZXJhdGlvblR5cGUoKSA9PSBQRVJTUEVDVElWRTsgfQogCkBAIC01NCwxMyArNTQsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIG1fcCA9PSBwLT5tX3A7CiAgICAgfQogCi0gICAgdmlydHVh
bCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKGZsb2F0
VmFsdWVGb3JMZW5ndGgobV9wLCAxKSk7CisgICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0
aXZlKGZsb2F0VmFsdWVGb3JMZW5ndGgobV9wLCAxLCB2aWV3cG9ydFNpemUpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1P
cGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29s
IGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKTsKIAogICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3Bl
cmF0aW9uKGNvbnN0IExlbmd0aCYgcCkKICAgICAgICAgOiBtX3AocCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCA5MDYzNGI3ZWI0ODcwMWQ1YmQ1
MTE0MmYxMjMwNjZiMmZlOTJiNTg4Li5mODk2ZjRmY2RjNjYwNmU1NDMwMDFhZjA1OGRjNDI5ZWJl
MWU4Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
CkBAIC0zMCw3ICszMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQorUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRp
b24+IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
Ym9vbCBibGVuZFRvSWRlbnRpdHkpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5
cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDBkNDk1YzVhNzBlYjBjNmQ1OTJmYjExYmNlMTJiNjNl
ODA4NjFiZGIuLmMwNDAxYTg4OTFlNzYzODFiYmExOGI0ZjIyZjAyNDEyNmIxYTQ0NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNjAsMTMgKzYwLDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3ggPT0gci0+bV94ICYmIG1feSA9PSByLT5t
X3kgJiYgbV96ID09IHItPm1feiAmJiBtX2FuZ2xlID09IHItPm1fYW5nbGU7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0U2l6ZSYgLypib3JkZXJCb3hTaXplKi8pIGNvbnN0CisgICAgdmlydHVhbCBib29s
IGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEludFNpemUmKSBjb25zdAogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZTNk
KG1feCwgbV95LCBtX3osIG1fYW5nbGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lk
ZW50aXR5ID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRp
b24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNz
LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFs
c2UpOwogCiAgICAgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwg
ZG91YmxlIHosIGRvdWJsZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IG1f
eCh4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBl
ODgwNmYyMDMwOGY3ZjM4MDdkZTI3MWE0NzQ4OWI5MzE4YTE0ZTY3Li42MWYzMzZiNTk1NzY1YzIz
ZGVlZmQyZjc0YWZkZjRmOWM1YWIzYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uLmNwcApAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlv
bjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGJvb2wgYmxlbmRUb0lkZW50aXR5KQorUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFNj
YWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZy
b20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIGJs
ZW5kVG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhp
cykpCiAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oCmluZGV4IDczNDNkMDk1MjU3ZmU5YzU4NTg0M2I4OGM5ZWUxNjU1OThmYjM0NDEu
LjQ0MzgwNGRlOTU1YzliMGQ4MDM5MDIwM2M3Y2QxMDEwOTFjZDJlNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTU5LDEzICs1OSwxMyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gbV94ID09IHMtPm1feCAmJiBtX3kgPT0gcy0+bV95ICYmIG1feiA9
PSBzLT5tX3o7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBi
b29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEludFNpemUmKSBjb25zdAogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxl
M2QobV94LCBtX3ksIG1feik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zv
cm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkg
PSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSk7CiAK
ICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91Ymxl
IHN6LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV94KHN4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggZDkyZDg5NWNlYjY4NzYwZmZmNzQw
YzE3NDZiNmRjMzU0MmYyYTdmMi4uZmI3M2IwMTRkZGNlYWU1ZGU3YWJkMmVlMTJjMmEwNmJmOGI4
NWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0y
Niw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkK
K1Bhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpi
bGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIGJsZW5kVG9JZGVudGl0eSkKIHsKICAgICBp
ZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBkZGRlOTg2YzM1
ZjkzYjIwMWNlMzM5Y2EyZGMyNDZiYjE1ZDRmY2FlLi42ODJjMzAzYWQ4MGI3ZTkwZjQxYWFjYjQy
NzU3Yzc5NzQ2YmJmNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtNTIsMTMgKzUyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2FuZ2xlWCA9
PSBzLT5tX2FuZ2xlWCAmJiBtX2FuZ2xlWSA9PSBzLT5tX2FuZ2xlWTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRTaXplJikgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0
CiAgICAgewogICAgICAgICB0cmFuc2Zvcm0uc2tldyhtX2FuZ2xlWCwgbV9hbmdsZVkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUs
IGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpOwogICAgIAogICAgIFNrZXdUcmFuc2Zvcm1P
cGVyYXRpb24oZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSwgT3BlcmF0aW9uVHlwZSB0eXBl
KQogICAgICAgICA6IG1fYW5nbGVYKGFuZ2xlWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bi5oCmluZGV4IDFlN2ViYjBlNTY0ZTllOTdhNDUzM2FkNWQxOTM5NmFjNGQxNGFjMmEuLjM5ZjYz
ZWFiNDE0NWZlMDQzOGQxOGNjNDI4ZWQ0ZTExZWMyNzc2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb24uaApAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzSWRlbnRpdHkoKSBjb25zdCA9IDA7CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgYm9y
ZGVyQm94U2l6ZSB3YXMgdXNlZCBpbiB0aGUgY29tcHV0YXRpb24sIGZhbHNlIG90aGVyd2lzZS4K
LSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9h
dFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHko
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUsIGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpID0g
MDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAK
aW5kZXggMGUyYTFkYjMzMjAxNDdhMjJiYTFmNDBjYTZmY2MwNjJmNmFkZGY1OS4uZTIyOTQ0NWI5
MDQ1YmM5YjNmZTk1MjFhZjRlNTU3NzU3Njc3NDQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bU9wZXJhdGlvbnMuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgVHJhbnNmb3JtT3BlcmF0aW9u
czo6b3BlcmF0aW9uc01hdGNoKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG90aGVyKSBjb25z
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3Bl
cmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiBmcm9tLCBjb25zdCBkb3VibGUmIHByb2dyZXNzKSBjb25zdAorVHJhbnNmb3JtT3BlcmF0
aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IGRvdWJsZSYgcHJvZ3Jlc3MsIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKIHsKICAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IHJlc3VsdDsKIApAQCAtNzUsNyArNzUsNyBAQCBUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9y
bU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgUmVmUHRyPFRy
YW5zZm9ybU9wZXJhdGlvbj4gZnJvbU9wZXJhdGlvbiA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5v
cGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwogICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiB0b09wZXJhdGlvbiA9IChpIDwgdG9TaXplKSA/IG9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6
IDA7Ci0gICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kZWRPcGVyYXRpb24g
PSB0b09wZXJhdGlvbiA/IHRvT3BlcmF0aW9uLT5ibGVuZChmcm9tT3BlcmF0aW9uLmdldCgpLCBw
cm9ncmVzcykgOiAoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24tPmJsZW5kKDAsIHByb2dy
ZXNzLCB0cnVlKSA6IDApOworICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVu
ZGVkT3BlcmF0aW9uID0gdG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbi0+YmxlbmQoZnJvbU9wZXJh
dGlvbi5nZXQoKSwgcHJvZ3Jlc3MsIHZpZXdwb3J0U2l6ZSkgOiAoZnJvbU9wZXJhdGlvbiA/IGZy
b21PcGVyYXRpb24tPmJsZW5kKDAsIHByb2dyZXNzLCB2aWV3cG9ydFNpemUsIHRydWUpIDogMCk7
CiAgICAgICAgIGlmIChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJh
dGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewpAQCAtOTAs
MTUgKzkwLDE1IEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6Ymxl
bmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5VXNp
bmdNYXRyaXhJbnRlcnBvbGF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK1RyYW5zZm9ybU9w
ZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeVVzaW5nTWF0cml4SW50ZXJwb2xh
dGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNv
bnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QK
IHsKICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHJlc3VsdDsKIAogICAgIC8vIENvbnZlcnQgdGhl
IFRyYW5zZm9ybU9wZXJhdGlvbnMgaW50byBtYXRyaWNlcwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZyb21UcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG9UcmFuc2Zvcm07
Ci0gICAgZnJvbS5hcHBseShzaXplLCBmcm9tVHJhbnNmb3JtKTsKLSAgICBhcHBseShzaXplLCB0
b1RyYW5zZm9ybSk7CisgICAgZnJvbS5hcHBseShzaXplLCB2aWV3cG9ydFNpemUsIGZyb21UcmFu
c2Zvcm0pOworICAgIGFwcGx5KHNpemUsIHZpZXdwb3J0U2l6ZSwgdG9UcmFuc2Zvcm0pOwogCiAg
ICAgdG9UcmFuc2Zvcm0uYmxlbmQoZnJvbVRyYW5zZm9ybSwgcHJvZ3Jlc3MpOwogCkBAIC0xMDgs
MTUgKzEwOCwxNSBAQCBUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJs
ZW5kQnlVc2luZ01hdHJpeEludGVycG9sYXRpb24oY29uc3QgVAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLVRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlv
dXRTaXplJiBzaXplKSBjb25zdAorVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRp
b25zOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkg
Y29uc3QKIHsKICAgICBpZiAoZnJvbSA9PSAqdGhpcykKICAgICAgICAgcmV0dXJuICp0aGlzOwog
CiAgICAgaWYgKGZyb20uc2l6ZSgpICYmIGZyb20ub3BlcmF0aW9uc01hdGNoKCp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIGJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoZnJvbSwgcHJvZ3Jlc3MpOwor
ICAgICAgICByZXR1cm4gYmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhmcm9tLCBwcm9ncmVzcywg
dmlld3BvcnRTaXplKTsKIAotICAgIHJldHVybiBibGVuZEJ5VXNpbmdNYXRyaXhJbnRlcnBvbGF0
aW9uKGZyb20sIHByb2dyZXNzLCBzaXplKTsKKyAgICByZXR1cm4gYmxlbmRCeVVzaW5nTWF0cml4
SW50ZXJwb2xhdGlvbihmcm9tLCBwcm9ncmVzcywgc2l6ZSwgdmlld3BvcnRTaXplKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaApp
bmRleCA1MzU0ZjgxOWJhNzRiY2I2Zjg4NDBjODdiOTIxZGMxYTRhNWQzMGFhLi45MjNlNzUwY2M2
YzZkMTlhMmE1MDkzZDBjZGI0NjY4YTY0ZjQ0MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9w
ZXJhdGlvbnMuaApAQCAtNDMsMTAgKzQzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYXBwbHkoY29uc3QgRmxvYXRTaXpl
JiBzeiwgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpIGNvbnN0CisgICAgdm9pZCBhcHBseShjb25z
dCBGbG9hdFNpemUmIHN6LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0KSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fb3BlcmF0aW9uc1tp
XS0+YXBwbHkodCwgc3opOworICAgICAgICAgICAgbV9vcGVyYXRpb25zW2ldLT5hcHBseSh0LCBz
eiwgdmlld3BvcnRTaXplKTsKICAgICB9CiAgICAgCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgYW55
IG9mIHRoZSBvcGVyYXRpb24gdHlwZXMgYXJlIDNEIG9wZXJhdGlvbiB0eXBlcyAoZXZlbiBpZiB0
aGUKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGVyYXRpb25zLnNpemUoKTsgfQogICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5z
aXplKCkgPyBtX29wZXJhdGlvbnMuYXQoaW5kZXgpLmdldCgpIDogMDsgfQogCi0gICAgVHJhbnNm
b3JtT3BlcmF0aW9ucyBibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIGZyb20sIGNvbnN0IGRvdWJsZSYgcHJvZ3Jlc3MpIGNvbnN0OwotICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgYmxlbmRCeVVzaW5nTWF0cml4SW50ZXJwb2xhdGlvbihjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUm
KSBjb25zdDsKLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0
OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBkb3VibGUmIHByb2dyZXNzLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpIGNvbnN0OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMg
YmxlbmRCeVVzaW5nTWF0cml4SW50ZXJwb2xhdGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25z
JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUpIGNvbnN0OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlv
dXRTaXplJiwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXgg
ODFjMzBhZTg1YzdhMDk2Mjk0NzMxNjdjM2IxNGRjODUwMDZkZTFjMC4uODIzZmQxNTI3NWE1NzFi
NzdmMWU4NGY4NGNmM2M4NWNiYTgwMjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKK1Bhc3NSZWZQdHI8VHJhbnNmb3Jt
T3BlcmF0aW9uPiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBmYzJiYzFmMjc4ZTU1OTRi
NzM1YWYxNjc0YjE5M2MwOGIxZTY5YWQxLi4xODE0ZTg3Y2FlNTZlZWVmN2UwYjRhOGFjYWMwZGE5
YmRkNGFiMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgKQEAgLTQzLDE2ICs0MywyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKHR4LCB0eSwgdHosIHR5cGUpKTsKICAg
ICB9CiAKLSAgICBkb3VibGUgeChjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0
IHsgcmV0dXJuIGZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCBib3JkZXJCb3hTaXplLndpZHRoKCkp
OyB9Ci0gICAgZG91YmxlIHkoY29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCB7
IHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feSwgYm9yZGVyQm94U2l6ZS5oZWlnaHQoKSk7
IH0KLSAgICBkb3VibGUgeihjb25zdCBGbG9hdFNpemUmKSBjb25zdCB7IHJldHVybiBmbG9hdFZh
bHVlRm9yTGVuZ3RoKG1feiwgMSk7IH0KKyAgICBkb3VibGUgeChjb25zdCBGbG9hdFNpemUmIGJv
cmRlckJveFNpemUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QgeyByZXR1cm4g
ZmxvYXRWYWx1ZUZvckxlbmd0aChtX3gsIGJvcmRlckJveFNpemUud2lkdGgoKSwgdmlld3BvcnRT
aXplKTsgfQorICAgIGRvdWJsZSB5KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSwgY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdCB7IHJldHVybiBmbG9hdFZhbHVlRm9yTGVu
Z3RoKG1feSwgYm9yZGVyQm94U2l6ZS5oZWlnaHQoKSwgdmlld3BvcnRTaXplKTsgfQorICAgIGRv
dWJsZSB6KGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgY29u
c3QgeyByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3osIDEsIHZpZXdwb3J0U2l6ZSk7IH0K
IAogICAgIExlbmd0aCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CiAgICAgTGVuZ3RoIHkoKSBj
b25zdCB7IHJldHVybiBtX3k7IH0KICAgICBMZW5ndGggeigpIGNvbnN0IHsgcmV0dXJuIG1fejsg
fQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgeyByZXR1
cm4gIWZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCAxKSAmJiAhZmxvYXRWYWx1ZUZvckxlbmd0aCht
X3ksIDEpICYmICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feiwgMSk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNJZGVudGl0eSgpIGNvbnN0CisgICAgeworICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6
ZSgxLCAxKTsKKyAgICAgICAgcmV0dXJuICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feCwgMSwgdmll
d3BvcnRTaXplKSAmJiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ksIDEsIHZpZXdwb3J0U2l6ZSkg
JiYgIWZsb2F0VmFsdWVGb3JMZW5ndGgobV96LCAxLCB2aWV3cG9ydFNpemUpOworICAgIH0KIAog
ICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBtX3R5
cGU7IH0KQEAgLTY1LDEzICs2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV94ID09
IHQtPm1feCAmJiBtX3kgPT0gdC0+bV95ICYmIG1feiA9PSB0LT5tX3o7CiAgICAgfQogCi0gICAg
dmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHko
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJiBib3JkZXJC
b3hTaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpIGNvbnN0CiAgICAgewotICAgICAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoeChib3JkZXJCb3hTaXplKSwgeShib3JkZXJCb3hTaXpl
KSwgeihib3JkZXJCb3hTaXplKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCh4KGJv
cmRlckJveFNpemUsIHZpZXdwb3J0U2l6ZSksIHkoYm9yZGVyQm94U2l6ZSwgdmlld3BvcnRTaXpl
KSwgeihib3JkZXJCb3hTaXplLCB2aWV3cG9ydFNpemUpKTsKICAgICAgICAgcmV0dXJuIG1feC50
eXBlKCkgPT0gUGVyY2VudCB8fCBtX3kudHlwZSgpID09IFBlcmNlbnQ7CiAgICAgfQogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJs
ZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpOwog
CiAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKGNvbnN0IExlbmd0aCYgdHgsIGNvbnN0
IExlbmd0aCYgdHksIGNvbnN0IExlbmd0aCYgdHosIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICAg
ICAgOiBtX3godHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1Rh
YmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQu
Y3BwCmluZGV4IGQ0MGRjNWI5ODY3NzgwMWEyMzQ3YzhhZGExMmU5NzlhM2FjOTcwNmMuLjdlOTY0
ODBhZWEzOThhOGI0NDY3Yjg2YWRmYWJmZDRjYjUzOWJjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBB
dXRvVGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bkVmZkNvbHM7ICsraSkgewogICAgICAgICAgICAgTGVuZ3RoJiBsb2dpY2FsV2lkdGggPSBtX2xh
eW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICBpZiAobG9n
aWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNlbGxMb2dpY2Fs
V2lkdGggPSBtYXg8aW50PihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lk
dGgsIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIHRhYmxlTG9naWNhbFdpZHRo
KSk7CisgICAgICAgICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBtYXg8aW50PihtX2xh
eW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGgsIG1pbmltdW1WYWx1ZUZvckxl
bmd0aChsb2dpY2FsV2lkdGgsIHRhYmxlTG9naWNhbFdpZHRoLCBJbnRTaXplKCkpKTsKICAgICAg
ICAgICAgICAgICBhdmFpbGFibGUgKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2Fs
V2lkdGggLSBjZWxsTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0
W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKaW5kZXgg
YTFmNzdlMjQzYTY3NmViOWJkMjAyMDgzOGViNGY4ZGNjNjkzYzIwNy4uMjljOGFlODIxNTYyMTU3
NmY3MmMzYTgzM2Y3NTY0MGQyMWE1ZTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NsaXBQYXRoT3BlcmF0aW9uLmgKQEAgLTEwMiwxMiArMTAyLDEyIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlLmdl
dCgpOyB9CiAgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlLT53
aW5kUnVsZSgpOyB9Ci0gICAgY29uc3QgUGF0aCYgcGF0aChjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nUmVjdCkKKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdS
ZWN0LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9zaGFwZSk7CiAgICAgICAgIG1fcGF0aC5jbGVhcigpOwogICAgICAgICBtX3BhdGggPSBhZG9w
dFB0cihuZXcgUGF0aCk7Ci0gICAgICAgIG1fc2hhcGUtPnBhdGgoKm1fcGF0aCwgYm91bmRpbmdS
ZWN0KTsKKyAgICAgICAgbV9zaGFwZS0+cGF0aCgqbV9wYXRoLCBib3VuZGluZ1JlY3QsIHZpZXdw
b3J0U2l6ZSk7CiAgICAgICAgIHJldHVybiAqbV9wYXRoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5jcHAKaW5kZXggMjcyMzVjNmQ0ZDI4ZTIyN2Iy
MTZlZjBhYTgwZGQ3OWNmNWY5YTM4Mi4uMDY1YThhMTc1MWRiZDdiZDhhNzMyNTdmOWJhODY5MGUz
MGU4NDc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNo
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgRmxvYXRTaXplIHBoeXNpY2FsU2l6ZVRv
TG9naWNhbChjb25zdCBGbG9hdFNpemUmIHNpemUsIFdyaXRpbmdNb2RlCiAgICAgcmV0dXJuIHNp
emUudHJhbnNwb3NlZFNpemUoKTsKIH0KIAotUGFzc093blB0cjxFeGNsdXNpb25TaGFwZT4gRXhj
bHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2lj
U2hhcGUsIGZsb2F0IGxvZ2ljYWxCb3hXaWR0aCwgZmxvYXQgbG9naWNhbEJveEhlaWdodCwgV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKQorUGFz
c093blB0cjxFeGNsdXNpb25TaGFwZT4gRXhjbHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNo
YXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGZsb2F0IGxvZ2ljYWxCb3hXaWR0aCwg
ZmxvYXQgbG9naWNhbEJveEhlaWdodCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCiB7CiAg
ICAgQVNTRVJUKGJhc2ljU2hhcGUpOwogCkBAIC0xMDQsMTUgKzEwNCwxNSBAQCBQYXNzT3duUHRy
PEV4Y2x1c2lvblNoYXBlPiBFeGNsdXNpb25TaGFwZTo6Y3JlYXRlRXhjbHVzaW9uU2hhcGUoY29u
c3QgQmFzaWNTaGFwZQogICAgIGNhc2UgQmFzaWNTaGFwZTo6QkFTSUNfU0hBUEVfUkVDVEFOR0xF
OiB7CiAgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqIHJlY3RhbmdsZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2ljU2hhcGVSZWN0YW5nbGUqPihiYXNpY1NoYXBlKTsKICAgICAgICAg
RmxvYXRSZWN0IGJvdW5kcygKLSAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVjdGFu
Z2xlLT54KCksIGJveFdpZHRoKSwKLSAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgocmVj
dGFuZ2xlLT55KCksIGJveEhlaWdodCksCi0gICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHJlY3RhbmdsZS0+d2lkdGgoKSwgYm94V2lkdGgpLAotICAgICAgICAgICAgZmxvYXRWYWx1ZUZv
ckxlbmd0aChyZWN0YW5nbGUtPmhlaWdodCgpLCBib3hIZWlnaHQpKTsKKyAgICAgICAgICAgIGZs
b2F0VmFsdWVGb3JMZW5ndGgocmVjdGFuZ2xlLT54KCksIGJveFdpZHRoLCB2aWV3cG9ydFNpemUp
LAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChyZWN0YW5nbGUtPnkoKSwgYm94SGVp
Z2h0LCB2aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChyZWN0
YW5nbGUtPndpZHRoKCksIGJveFdpZHRoLCB2aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgZmxv
YXRWYWx1ZUZvckxlbmd0aChyZWN0YW5nbGUtPmhlaWdodCgpLCBib3hIZWlnaHQsIHZpZXdwb3J0
U2l6ZSkpOwogICAgICAgICBMZW5ndGggcmFkaXVzWExlbmd0aCA9IHJlY3RhbmdsZS0+Y29ybmVy
UmFkaXVzWCgpOwogICAgICAgICBMZW5ndGggcmFkaXVzWUxlbmd0aCA9IHJlY3RhbmdsZS0+Y29y
bmVyUmFkaXVzWSgpOwogICAgICAgICBGbG9hdFNpemUgY29ybmVyUmFkaWkoCi0gICAgICAgICAg
ICByYWRpdXNYTGVuZ3RoLmlzVW5kZWZpbmVkKCkgPyAwIDogZmxvYXRWYWx1ZUZvckxlbmd0aChy
YWRpdXNYTGVuZ3RoLCBib3hXaWR0aCksCi0gICAgICAgICAgICByYWRpdXNZTGVuZ3RoLmlzVW5k
ZWZpbmVkKCkgPyAwIDogZmxvYXRWYWx1ZUZvckxlbmd0aChyYWRpdXNZTGVuZ3RoLCBib3hIZWln
aHQpKTsKKyAgICAgICAgICAgIHJhZGl1c1hMZW5ndGguaXNVbmRlZmluZWQoKSA/IDAgOiBmbG9h
dFZhbHVlRm9yTGVuZ3RoKHJhZGl1c1hMZW5ndGgsIGJveFdpZHRoLCB2aWV3cG9ydFNpemUpLAor
ICAgICAgICAgICAgcmFkaXVzWUxlbmd0aC5pc1VuZGVmaW5lZCgpID8gMCA6IGZsb2F0VmFsdWVG
b3JMZW5ndGgocmFkaXVzWUxlbmd0aCwgYm94SGVpZ2h0LCB2aWV3cG9ydFNpemUpKTsKICAgICAg
ICAgRmxvYXRSZWN0IGxvZ2ljYWxCb3VuZHMgPSBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoYm91bmRz
LCBsb2dpY2FsQm94SGVpZ2h0LCB3cml0aW5nTW9kZSk7CiAKICAgICAgICAgZXhjbHVzaW9uU2hh
cGUgPSBjcmVhdGVFeGNsdXNpb25SZWN0YW5nbGUobG9naWNhbEJvdW5kcywgcGh5c2ljYWxTaXpl
VG9Mb2dpY2FsKGNvcm5lclJhZGlpLCB3cml0aW5nTW9kZSkpOwpAQCAtMTIyLDkgKzEyMiw5IEBA
IFBhc3NPd25QdHI8RXhjbHVzaW9uU2hhcGU+IEV4Y2x1c2lvblNoYXBlOjpjcmVhdGVFeGNsdXNp
b25TaGFwZShjb25zdCBCYXNpY1NoYXBlCiAKICAgICBjYXNlIEJhc2ljU2hhcGU6OkJBU0lDX1NI
QVBFX0NJUkNMRTogewogICAgICAgICBjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKiBjaXJjbGUgPSBz
dGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKj4oYmFzaWNTaGFwZSk7Ci0gICAgICAg
IGZsb2F0IGNlbnRlclggPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNpcmNsZS0+Y2VudGVyWCgpLCBi
b3hXaWR0aCk7Ci0gICAgICAgIGZsb2F0IGNlbnRlclkgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNp
cmNsZS0+Y2VudGVyWSgpLCBib3hIZWlnaHQpOwotICAgICAgICBmbG9hdCByYWRpdXMgPSAgZmxv
YXRWYWx1ZUZvckxlbmd0aChjaXJjbGUtPnJhZGl1cygpLCBzdGQ6Om1heChib3hIZWlnaHQsIGJv
eFdpZHRoKSk7CisgICAgICAgIGZsb2F0IGNlbnRlclggPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNp
cmNsZS0+Y2VudGVyWCgpLCBib3hXaWR0aCwgdmlld3BvcnRTaXplKTsKKyAgICAgICAgZmxvYXQg
Y2VudGVyWSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoY2lyY2xlLT5jZW50ZXJZKCksIGJveEhlaWdo
dCwgdmlld3BvcnRTaXplKTsKKyAgICAgICAgZmxvYXQgcmFkaXVzID0gIGZsb2F0VmFsdWVGb3JM
ZW5ndGgoY2lyY2xlLT5yYWRpdXMoKSwgc3RkOjptYXgoYm94SGVpZ2h0LCBib3hXaWR0aCksIHZp
ZXdwb3J0U2l6ZSk7CiAgICAgICAgIEZsb2F0UG9pbnQgbG9naWNhbENlbnRlciA9IHBoeXNpY2Fs
UG9pbnRUb0xvZ2ljYWwoRmxvYXRQb2ludChjZW50ZXJYLCBjZW50ZXJZKSwgbG9naWNhbEJveEhl
aWdodCwgd3JpdGluZ01vZGUpOwogCiAgICAgICAgIGV4Y2x1c2lvblNoYXBlID0gY3JlYXRlRXhj
bHVzaW9uQ2lyY2xlKGxvZ2ljYWxDZW50ZXIsIHJhZGl1cyk7CkBAIC0xMzQsMTAgKzEzNCwxMCBA
QCBQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBFeGNsdXNpb25TaGFwZTo6Y3JlYXRlRXhjbHVz
aW9uU2hhcGUoY29uc3QgQmFzaWNTaGFwZQogCiAgICAgY2FzZSBCYXNpY1NoYXBlOjpCQVNJQ19T
SEFQRV9FTExJUFNFOiB7CiAgICAgICAgIGNvbnN0IEJhc2ljU2hhcGVFbGxpcHNlKiBlbGxpcHNl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZUVsbGlwc2UqPihiYXNpY1NoYXBlKTsKLSAg
ICAgICAgZmxvYXQgY2VudGVyWCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+Y2VudGVy
WCgpLCBib3hXaWR0aCk7Ci0gICAgICAgIGZsb2F0IGNlbnRlclkgPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGVsbGlwc2UtPmNlbnRlclkoKSwgYm94SGVpZ2h0KTsKLSAgICAgICAgZmxvYXQgcmFkaXVz
WCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+cmFkaXVzWCgpLCBib3hXaWR0aCk7Ci0g
ICAgICAgIGZsb2F0IHJhZGl1c1kgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGVsbGlwc2UtPnJhZGl1
c1koKSwgYm94SGVpZ2h0KTsKKyAgICAgICAgZmxvYXQgY2VudGVyWCA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgoZWxsaXBzZS0+Y2VudGVyWCgpLCBib3hXaWR0aCwgdmlld3BvcnRTaXplKTsKKyAgICAg
ICAgZmxvYXQgY2VudGVyWSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoZWxsaXBzZS0+Y2VudGVyWSgp
LCBib3hIZWlnaHQsIHZpZXdwb3J0U2l6ZSk7CisgICAgICAgIGZsb2F0IHJhZGl1c1ggPSBmbG9h
dFZhbHVlRm9yTGVuZ3RoKGVsbGlwc2UtPnJhZGl1c1goKSwgYm94V2lkdGgsIHZpZXdwb3J0U2l6
ZSk7CisgICAgICAgIGZsb2F0IHJhZGl1c1kgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGVsbGlwc2Ut
PnJhZGl1c1koKSwgYm94SGVpZ2h0LCB2aWV3cG9ydFNpemUpOwogICAgICAgICBGbG9hdFBvaW50
IGxvZ2ljYWxDZW50ZXIgPSBwaHlzaWNhbFBvaW50VG9Mb2dpY2FsKEZsb2F0UG9pbnQoY2VudGVy
WCwgY2VudGVyWSksIGxvZ2ljYWxCb3hIZWlnaHQsIHdyaXRpbmdNb2RlKTsKICAgICAgICAgRmxv
YXRTaXplIGxvZ2ljYWxSYWRpaSA9IHBoeXNpY2FsU2l6ZVRvTG9naWNhbChGbG9hdFNpemUocmFk
aXVzWCwgcmFkaXVzWSksIHdyaXRpbmdNb2RlKTsKIApAQCAtMTU1LDggKzE1NSw4IEBAIFBhc3NP
d25QdHI8RXhjbHVzaW9uU2hhcGU+IEV4Y2x1c2lvblNoYXBlOjpjcmVhdGVFeGNsdXNpb25TaGFw
ZShjb25zdCBCYXNpY1NoYXBlCiAgICAgICAgIFZlY3RvcjxGbG9hdFBvaW50PiogdmVydGljZXMg
PSBuZXcgVmVjdG9yPEZsb2F0UG9pbnQ+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAgRmxv
YXRQb2ludCB2ZXJ0ZXgoCi0gICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1
ZXMuYXQoaSksIGJveFdpZHRoKSwKLSAgICAgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHZhbHVlcy5hdChpICsgMSksIGJveEhlaWdodCkpOworICAgICAgICAgICAgICAgIGZsb2F0VmFs
dWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBib3hXaWR0aCwgdmlld3BvcnRTaXplKSwKKyAgICAg
ICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlcy5hdChpICsgMSksIGJveEhlaWdo
dCwgdmlld3BvcnRTaXplKSk7CiAgICAgICAgICAgICAoKnZlcnRpY2VzKVtpIC8gMl0gPSBwaHlz
aWNhbFBvaW50VG9Mb2dpY2FsKHZlcnRleCwgbG9naWNhbEJveEhlaWdodCwgd3JpdGluZ01vZGUp
OwogICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94LnNldExv
Y2F0aW9uKHZlcnRleCk7CkBAIC0xNzUsOCArMTc1LDggQEAgUGFzc093blB0cjxFeGNsdXNpb25T
aGFwZT4gRXhjbHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKGNvbnN0IEJhc2ljU2hh
cGUKICAgICBleGNsdXNpb25TaGFwZS0+bV9sb2dpY2FsQm94V2lkdGggPSBsb2dpY2FsQm94V2lk
dGg7CiAgICAgZXhjbHVzaW9uU2hhcGUtPm1fbG9naWNhbEJveEhlaWdodCA9IGxvZ2ljYWxCb3hI
ZWlnaHQ7CiAgICAgZXhjbHVzaW9uU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsK
LSAgICBleGNsdXNpb25TaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdp
biwgMCk7Ci0gICAgZXhjbHVzaW9uU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgocGFkZGluZywgMCk7CisgICAgZXhjbHVzaW9uU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1
ZUZvckxlbmd0aChtYXJnaW4sIDAsIHZpZXdwb3J0U2l6ZSk7CisgICAgZXhjbHVzaW9uU2hhcGUt
Pm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGluZywgMCwgdmlld3BvcnRTaXpl
KTsKIAogICAgIHJldHVybiBleGNsdXNpb25TaGFwZS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCmluZGV4IGM2MTgxODA2NzQ1Yjg1NGZjNDBi
YmFhYmZiMTllNjcxNzE2MzU0NGQuLjZmNDA1NTc2NTJmYmRmYTJhMDQwZmQ2NDA0NmYyNWZhMTQz
YmM2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC01
OSw3ICs1OSw3IEBAIHR5cGVkZWYgVmVjdG9yPExpbmVTZWdtZW50PiBTZWdtZW50TGlzdDsKIAog
Y2xhc3MgRXhjbHVzaW9uU2hhcGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEV4
Y2x1c2lvblNoYXBlPiBjcmVhdGVFeGNsdXNpb25TaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgZmxv
YXQgbG9naWNhbEJveFdpZHRoLCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSwg
TGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEV4
Y2x1c2lvblNoYXBlPiBjcmVhdGVFeGNsdXNpb25TaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgZmxv
YXQgbG9naWNhbEJveFdpZHRoLCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGlu
Zyk7CiAKICAgICB2aXJ0dWFsIH5FeGNsdXNpb25TaGFwZSgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbmZvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluZm8uY3BwCmluZGV4IDg0ODRkYzZkNDJk
N2MxNmM1ZjgwNGIxOGYxNjZiYjI2NDBlOWI2ODYuLjI3NmJhMGFhYzQ3ZDAzZjFhYjkxMWQwZmYy
OWU5MGM3OGU0OTI2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25TaGFwZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNp
b25TaGFwZUluZm8uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQm94Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPGNs
YXNzIFJlbmRlclR5cGUsIEV4Y2x1c2lvblNoYXBlVmFsdWUqIChSZW5kZXJTdHlsZTo6KnNoYXBl
R2V0dGVyKSgpIGNvbnN0LCB2b2lkIChFeGNsdXNpb25TaGFwZTo6KmludGVydmFsR2V0dGVyKShm
bG9hdCwgZmxvYXQsIFNlZ21lbnRMaXN0JikgY29uc3Q+CkBAIC01MCw3ICs1MSw3IEBAIGNvbnN0
IEV4Y2x1c2lvblNoYXBlKiBFeGNsdXNpb25TaGFwZUluZm88UmVuZGVyVHlwZSwgc2hhcGVHZXR0
ZXIsIGludGVydmFsR2V0dGVyCiAKICAgICBBU1NFUlQoc2hhcGUpOwogCi0gICAgbV9zaGFwZSA9
IEV4Y2x1c2lvblNoYXBlOjpjcmVhdGVFeGNsdXNpb25TaGFwZShzaGFwZSwgbV9zaGFwZUxvZ2lj
YWxXaWR0aCwgbV9zaGFwZUxvZ2ljYWxIZWlnaHQsIG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRp
bmdNb2RlKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1fcmVuZGVyZXIt
PnN0eWxlKCktPnNoYXBlUGFkZGluZygpKTsKKyAgICBtX3NoYXBlID0gRXhjbHVzaW9uU2hhcGU6
OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKHNoYXBlLCBtX3NoYXBlTG9naWNhbFdpZHRoLCBtX3NoYXBl
TG9naWNhbEhlaWdodCwgbV9yZW5kZXJlci0+dmlldygpLT52aWV3cG9ydFNpemUoKSwgbV9yZW5k
ZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVN
YXJnaW4oKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5nKCkpOwogICAgIEFTU0VS
VChtX3NoYXBlKTsKICAgICByZXR1cm4gbV9zaGFwZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGFhNDYwYjg1
YTAwOTZkY2ZjYTNlNzYxNjk2Zjg1YzMxNmQ2YzBlMmYuLjMwNmJkM2Y5NDMwMzBjOWRjY2QyZTE0
ZGEwNDZhMGI1MDgzOWQ3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzMxLDcgKzMzMSw3IEBAIGJvb2wgRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6
IHsKICAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0
aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlv
bi0+c3RkRGV2aWF0aW9uKCksIDApOworICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0g
cmVuZGVyZXItPmZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9u
KCksIDApOwogICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSh0aGlz
LCBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmlu
ZGV4IGE2YjY1ZTkzNGZlYTMxMTVhMmZlZDIzZWY3MjQ3NDNkODBlOGQ5NDEuLjc2NjNkYjdhN2Vm
YzVhNmRkMTUzMzc5ZDA1ZTE2MTMzZTQ4MmNiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEZpeGVk
VGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBtX3dpZHRo
W2ldLnZhbHVlKCk7CiAgICAgICAgICAgICB0b3RhbEZpeGVkV2lkdGggKz0gY2FsY1dpZHRoW2ld
OwogICAgICAgICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNQZXJjZW50KCkpIHsKLSAgICAgICAg
ICAgIGNhbGNXaWR0aFtpXSA9IHZhbHVlRm9yTGVuZ3RoKG1fd2lkdGhbaV0sIHRhYmxlTG9naWNh
bFdpZHRoKTsKKyAgICAgICAgICAgIGNhbGNXaWR0aFtpXSA9IHZhbHVlRm9yTGVuZ3RoKG1fd2lk
dGhbaV0sIHRhYmxlTG9naWNhbFdpZHRoLCBJbnRTaXplKCkpOwogICAgICAgICAgICAgdG90YWxQ
ZXJjZW50V2lkdGggKz0gY2FsY1dpZHRoW2ldOwogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9
IG1fd2lkdGhbaV0ucGVyY2VudCgpOwogICAgICAgICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNB
dXRvKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDA2
N2FlYzc3YzBmMDc0ZmNiMjhhYmQ4NjE5OGE4MzczNmNlNDIzOGMuLjJlZmUzNjkxOTkzMGE2ZGE3
MzVkY2E5YmEyMjg3MzkzMGNhZjA1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcApAQCAtNDI5MCwxMiArNDI5MCw5IEBAIGlubGluZSB2b2lkIFJlbmRlckJsb2Nr
OjpGbG9hdEludGVydmFsU2VhcmNoQWRhcHRlcjxGbG9hdFR5cGVWYWx1ZT46OmNvbGxlY3RJZk5l
CiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjp0ZXh0SW5kZW50T2Zmc2V0KCkgY29uc3QKIHsKICAg
ICBMYXlvdXRVbml0IGN3ID0gMDsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKICAg
ICBpZiAoc3R5bGUoKS0+dGV4dEluZGVudCgpLmlzUGVyY2VudCgpKQogICAgICAgICBjdyA9IGNv
bnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKLSAgICBlbHNlIGlmIChz
dHlsZSgpLT50ZXh0SW5kZW50KCkuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmVu
ZGVyVmlldyA9IHZpZXcoKTsKLSAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPnRleHRJbmRlbnQoKSwgY3csIHJlbmRlclZpZXcpOworICAgIHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS0+dGV4dEluZGVudCgpLCBjdyk7CiB9CiAKIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24qIHJl
Z2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdApA
QCAtNTk2NSw3ICs1OTYyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIC8vIFNpZ25hbHMgdGhlIHRleHQgaW5kZW50IHdhcyBt
b3JlIG5lZ2F0aXZlIHRoYW4gdGhlIG1pbiBwcmVmZXJyZWQgd2lkdGgKICAgICBib29sIGhhc1Jl
bWFpbmluZ05lZ2F0aXZlVGV4dEluZGVudCA9IGZhbHNlOwogCi0gICAgTGF5b3V0VW5pdCB0ZXh0
SW5kZW50ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPnRleHRJbmRlbnQoKSwg
Y3csIHZpZXcoKSk7CisgICAgTGF5b3V0VW5pdCB0ZXh0SW5kZW50ID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlVG9Vc2UtPnRleHRJbmRlbnQoKSwgY3cpOwogICAgIFJlbmRlck9iamVjdCog
cHJldkZsb2F0ID0gMDsKICAgICBib29sIGlzUHJldkNoaWxkSW5saW5lRmxvdyA9IGZhbHNlOwog
ICAgIGJvb2wgc2hvdWxkQnJlYWtMaW5lQWZ0ZXJUZXh0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDQ1NzMzODBkNDYyODk1NTdlNTczZTliMWNmMTdl
Y2E2YmE1MWQ5NzQuLjA5OWY0MzY4MzY2YmEzYWQxYTE4ZjlkMTliZDc0MGJjNGQwNjE2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01NzYsMTAgKzU3Niw5IEBA
IGludCBSZW5kZXJCb3g6OnJlZmxlY3Rpb25PZmZzZXQoKSBjb25zdAogewogICAgIGlmICghc3R5
bGUoKS0+Ym94UmVmbGVjdCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3ID0gdmlldygpOwogICAgIGlmIChzdHlsZSgpLT5ib3hSZWZsZWN0KCktPmRpcmVj
dGlvbigpID09IFJlZmxlY3Rpb25MZWZ0IHx8IHN0eWxlKCktPmJveFJlZmxlY3QoKS0+ZGlyZWN0
aW9uKCkgPT0gUmVmbGVjdGlvblJpZ2h0KQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5vZmZzZXQoKSwgYm9yZGVyQm94UmVjdCgpLndpZHRoKCks
IHJlbmRlclZpZXcpOwotICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3hSZWZs
ZWN0KCktPm9mZnNldCgpLCBib3JkZXJCb3hSZWN0KCkuaGVpZ2h0KCksIHJlbmRlclZpZXcpOwor
ICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5vZmZz
ZXQoKSwgYm9yZGVyQm94UmVjdCgpLndpZHRoKCkpOworICAgIHJldHVybiB2YWx1ZUZvckxlbmd0
aChzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBib3JkZXJCb3hSZWN0KCkuaGVpZ2h0
KCkpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6cmVmbGVjdGVkUmVjdChjb25zdCBMYXlv
dXRSZWN0JiByKSBjb25zdApAQCAtMTA4OSw3ICsxMDg4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWkKICAgICAgICAgLy8gVG8gYXZvaWQgdGhlIGJhY2tncm91bmQgY29sb3IgYmxlZWRpbmcg
b3V0IGJlaGluZCB0aGUgYm9yZGVyLCB3ZSdsbCByZW5kZXIgYmFja2dyb3VuZCBhbmQgYm9yZGVy
CiAgICAgICAgIC8vIGludG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIsIGFuZCB0aGVuIGNsaXAgdGhh
dCBpbiBvbmUgZ28gKHdoaWNoIHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIGNsaXAgYmVmb3JlCiAg
ICAgICAgIC8vIGJlZ2lubmluZyB0aGUgbGF5ZXIpLgotICAgICAgICBSb3VuZGVkUmVjdCBib3Jk
ZXIgPSBzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCwgdmlldygpKTsKKyAg
ICAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihw
YWludFJlY3QsIHRoaXMpOwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOwogICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKQEAgLTE0MDgsNyArMTQwNyw3
IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QoaXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRl
ZE9mZnNldCkgOiBvdmVyZmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBwYWludEluZm8u
cmVuZGVyUmVnaW9uKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBpZiAo
c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3Qoc3R5bGUoKS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJl
Y3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5
b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSwgdGhpcykpOwogICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE0NDgs
MTAgKzE0NDcsOSBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3QgTGF5b3V0
UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbgogewogICAgIExheW91dFJlY3Qg
Ym9yZGVyQm94UmVjdCA9IGJvcmRlckJveFJlY3RJblJlZ2lvbihyZWdpb24pOwogICAgIExheW91
dFJlY3QgY2xpcFJlY3QgPSBMYXlvdXRSZWN0KGJvcmRlckJveFJlY3QubG9jYXRpb24oKSArIGxv
Y2F0aW9uLCBib3JkZXJCb3hSZWN0LnNpemUoKSk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IHZpZXcoKTsKIAogICAgIGlmICghc3R5bGUoKS0+Y2xpcExlZnQoKS5pc0F1dG8oKSkgewot
ICAgICAgICBMYXlvdXRVbml0IGMgPSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwTGVmdCgp
LCBib3JkZXJCb3hSZWN0LndpZHRoKCksIHJlbmRlclZpZXcpOworICAgICAgICBMYXlvdXRVbml0
IGMgPSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwTGVmdCgpLCBib3JkZXJCb3hSZWN0Lndp
ZHRoKCkpOwogICAgICAgICBjbGlwUmVjdC5tb3ZlKGMsIDApOwogICAgICAgICBjbGlwUmVjdC5j
b250cmFjdChjLCAwKTsKICAgICB9CkBAIC0xNDYwLDE2ICsxNDU4LDE2IEBAIExheW91dFJlY3Qg
UmVuZGVyQm94OjpjbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlclJl
Z2lvbiogcmVnaW9uCiAgICAgLy8gZnJvbSB0aGUgbGVmdCBhbmQgdG9wIGVkZ2VzLiBUaGVyZWZv
cmUgaXQncyBiZXR0ZXIgdG8gYXZvaWQgY29uc3RyYWluaW5nIHRvIHNtYWxsZXIgd2lkdGhzIGFu
ZCBoZWlnaHRzLgogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwUmlnaHQoKS5pc0F1dG8oKSkKLSAg
ICAgICAgY2xpcFJlY3QuY29udHJhY3Qod2lkdGgoKSAtIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
PmNsaXBSaWdodCgpLCB3aWR0aCgpLCByZW5kZXJWaWV3KSwgMCk7CisgICAgICAgIGNsaXBSZWN0
LmNvbnRyYWN0KHdpZHRoKCkgLSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwUmlnaHQoKSwg
d2lkdGgoKSksIDApOwogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwVG9wKCkuaXNBdXRvKCkpIHsK
LSAgICAgICAgTGF5b3V0VW5pdCBjID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Y2xpcFRvcCgp
LCBib3JkZXJCb3hSZWN0LmhlaWdodCgpLCByZW5kZXJWaWV3KTsKKyAgICAgICAgTGF5b3V0VW5p
dCBjID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Y2xpcFRvcCgpLCBib3JkZXJCb3hSZWN0Lmhl
aWdodCgpKTsKICAgICAgICAgY2xpcFJlY3QubW92ZSgwLCBjKTsKICAgICAgICAgY2xpcFJlY3Qu
Y29udHJhY3QoMCwgYyk7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwQm90dG9tKCku
aXNBdXRvKCkpCi0gICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KDAsIGhlaWdodCgpIC0gdmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS0+Y2xpcEJvdHRvbSgpLCBoZWlnaHQoKSwgcmVuZGVyVmlldykpOwor
ICAgICAgICBjbGlwUmVjdC5jb250cmFjdCgwLCBoZWlnaHQoKSAtIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPmNsaXBCb3R0b20oKSwgaGVpZ2h0KCkpKTsKIAogICAgIHJldHVybiBjbGlwUmVjdDsK
IH0KQEAgLTE5OTQsOSArMTk5Miw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdp
ZHRoSW5SZWdpb24oTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlCiAgICAgCiAg
ICAgaWYgKGlzSW5saW5lKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpIHsKICAg
ICAgICAgLy8ganVzdCBjYWxjdWxhdGUgbWFyZ2lucwotICAgICAgICBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gdmlldygpOwotICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFy
dCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250
YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9lbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2lu
RW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIGNvbXB1
dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
VG9Vc2UtPm1hcmdpblN0YXJ0KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGNv
bXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZVRvVXNlLT5tYXJnaW5FbmQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKICAgICAgICAgaWYg
KHRyZWF0QXNSZXBsYWNlZCkKICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0g
bWF4PExheW91dFVuaXQ+KGZsb2F0VmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoTGVuZ3RoLCAw
KSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yMDE1LDkgKzIwMTIsOCBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYgY29tcHV0ZQogCiAgICAgLy8gTWFyZ2luIGNhbGN1bGF0aW9ucy4KICAgICBpZiAoaGFz
UGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayB8fCBpc0Zsb2F0aW5nKCkgfHwgaXNJbmxpbmUo
KSkgewotICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwotICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZp
ZXcpOwotICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCwgcmVuZGVyVmlldyk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCksIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2Vu
ZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgY29udGFp
bmVyTG9naWNhbFdpZHRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRh
aW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zID0gY29udGFpbmVyTG9naWNhbFdpZHRoOwog
ICAgICAgICBpZiAoYXZvaWRzRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCkBAIC0y
MDQ4LDkgKzIwNDQsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6ZmlsbEF2YWlsYWJsZU1lYXN1
cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbgogCiBMYXlvdXRVbml0IFJl
bmRlckJveDo6ZmlsbEF2YWlsYWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgsIExheW91dFVuaXQmIG1hcmdpblN0YXJ0LCBMYXlvdXRVbml0JiBtYXJnaW5FbmQpIGNv
bnN0CiB7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKLSAgICBtYXJnaW5T
dGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5TdGFydCgpLCBhdmFp
bGFibGVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgIG1hcmdpbkVuZCA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCByZW5kZXJWaWV3KTsKKyAgICBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZSgpLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgIG1hcmdp
bkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKICAgICByZXR1cm4gYXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gbWFy
Z2luU3RhcnQgLSBtYXJnaW5FbmQ7CiB9CiAKQEAgLTIxMDAsNyArMjA5NSw3IEBAIExheW91dFVu
aXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhTaXplVHlwZSB3
aWR0aFR5cGUsIExheW91CiAgICAgCiAgICAgaWYgKCFsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWNP
ckF1dG8oKSkgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgZmxv
dyBpcyBwZXJwZW5kaWN1bGFyIHRvIG91ciBkaXJlY3Rpb24gd2UgbmVlZCB0byB1c2UgdGhlIGF2
YWlsYWJsZSBsb2dpY2FsIGhlaWdodCBpbnN0ZWFkLgotICAgICAgICByZXR1cm4gYWRqdXN0Qm9y
ZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0
aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCB2aWV3KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkanVz
dEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
V2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOwogICAgIH0KIAogICAgIGlmIChsb2dpY2Fs
V2lkdGguaXNJbnRyaW5zaWMoKSkKQEAgLTIxOTYsMTIgKzIxOTEsMTEgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5n
QmxvY2ssIExheW8KICAgICBjb25zdCBSZW5kZXJTdHlsZSogY29udGFpbmluZ0Jsb2NrU3R5bGUg
PSBjb250YWluaW5nQmxvY2stPnN0eWxlKCk7CiAgICAgTGVuZ3RoIG1hcmdpblN0YXJ0TGVuZ3Ro
ID0gc3R5bGUoKS0+bWFyZ2luU3RhcnRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSk7CiAgICAg
TGVuZ3RoIG1hcmdpbkVuZExlbmd0aCA9IHN0eWxlKCktPm1hcmdpbkVuZFVzaW5nKGNvbnRhaW5p
bmdCbG9ja1N0eWxlKTsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogCiAg
ICAgaWYgKGlzRmxvYXRpbmcoKSB8fCBpc0lubGluZSgpKSB7CiAgICAgICAgIC8vIElubGluZSBi
bG9ja3MvdGFibGVzIGFuZCBmbG9hdHMgZG9uJ3QgaGF2ZSB0aGVpciBtYXJnaW5zIGluY3JlYXNl
ZC4KLSAgICAgICAgbWFyZ2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3Rh
cnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbWFyZ2luRW5k
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgs
IHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0
aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgpOworICAgICAgICBtYXJnaW5FbmQg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMDksOCArMjIwMyw4IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9jayogY29udGFp
bmluZ0Jsb2NrLCBMYXlvCiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiBt
YXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKQog
ICAgICAgICB8fCAoIW1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmICFtYXJnaW5FbmRMZW5n
dGguaXNBdXRvKCkgJiYgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT50ZXh0QWxpZ24oKSA9PSBX
RUJLSVRfQ0VOVEVSKSkgewogICAgICAgICAvLyBPdGhlciBicm93c2VycyBjZW50ZXIgdGhlIG1h
cmdpbiBib3ggZm9yIGFsaWduPWNlbnRlciBlbGVtZW50cyBzbyB3ZSBtYXRjaCB0aGVtIGhlcmUu
Ci0gICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnRXaWR0aCA9IG1pbmltdW1WYWx1ZUZvckxl
bmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOwotICAg
ICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZFdpZHRoID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1h
cmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBMYXlv
dXRVbml0IG1hcmdpblN0YXJ0V2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3Rh
cnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmRX
aWR0aCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldp
ZHRoKTsKICAgICAgICAgTGF5b3V0VW5pdCBjZW50ZXJlZE1hcmdpbkJveFN0YXJ0ID0gbWF4PExh
eW91dFVuaXQ+KDAsIChjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5TdGFydFdp
ZHRoIC0gbWFyZ2luRW5kV2lkdGgpIC8gMik7CiAgICAgICAgIG1hcmdpblN0YXJ0ID0gY2VudGVy
ZWRNYXJnaW5Cb3hTdGFydCArIG1hcmdpblN0YXJ0V2lkdGg7CiAgICAgICAgIG1hcmdpbkVuZCA9
IGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kV2lk
dGg7CkBAIC0yMjE5LDcgKzIyMTMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURp
cmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5bwogICAgIAog
ICAgIC8vIENhc2UgVHdvOiBUaGUgb2JqZWN0IGlzIGJlaW5nIHB1c2hlZCB0byB0aGUgc3RhcnQg
b2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBhdmFpbGFibGUgbG9naWNhbCB3aWR0aC4KICAgICBp
ZiAobWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJXaWR0
aCkgewotICAgICAgICBtYXJnaW5TdGFydCA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVu
Z3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpblN0YXJ0ID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKICAgICAg
ICAgbWFyZ2luRW5kID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luU3RhcnQ7
CiAgICAgICAgIHJldHVybjsKICAgICB9IApAQCAtMjIyOCwxNSArMjIyMiwxNSBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRh
aW5pbmdCbG9jaywgTGF5bwogICAgIGJvb2wgcHVzaFRvRW5kRnJvbVRleHRBbGlnbiA9ICFtYXJn
aW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgKCghY29udGFpbmluZ0Jsb2NrU3R5bGUtPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS0+dGV4dEFsaWduKCkgPT0g
V0VCS0lUX0xFRlQpCiAgICAgICAgIHx8IChjb250YWluaW5nQmxvY2tTdHlsZS0+aXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLT50ZXh0QWxpZ24oKSA9PSBX
RUJLSVRfUklHSFQpKTsKICAgICBpZiAoKG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmIGNo
aWxkV2lkdGggPCBjb250YWluZXJXaWR0aCkgfHwgcHVzaFRvRW5kRnJvbVRleHRBbGlnbikgewot
ICAgICAgICBtYXJnaW5FbmQgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRh
aW5lcldpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luRW5kID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CiAgICAgICAgIG1hcmdpblN0YXJ0
ID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luRW5kOwogICAgICAgICByZXR1
cm47CiAgICAgfSAKICAgICAKICAgICAvLyBDYXNlIEZvdXI6IEVpdGhlciBubyBhdXRvIG1hcmdp
bnMsIG9yIG91ciB3aWR0aCBpcyA+PSB0aGUgY29udGFpbmVyIHdpZHRoIChjc3MyLjEsIDEwLjMu
MykuICBJbiB0aGF0IGNhc2UKICAgICAvLyBhdXRvIG1hcmdpbnMgd2lsbCBqdXN0IHR1cm4gaW50
byAwLgotICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0
TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgbWFyZ2luRW5kID0gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRl
clZpZXcpOworICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0
YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CisgICAgbWFyZ2luRW5kID0gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgpOwogfQogCiBSZW5kZXJC
b3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9u
KiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgUmVu
ZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QKQEAgLTI0NzksNyArMjQ3Myw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2lj
YWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnCiAgICAgaWYgKGhlaWdodC5pc1BlcmNlbnQoKSkK
ICAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwog
ICAgIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHZh
bHVlRm9yTGVuZ3RoKGhlaWdodCwgMCwgdmlldygpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9y
TGVuZ3RoKGhlaWdodCwgMCk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0yNjE1LDcgKzI2MDks
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNp
bmcoU2l6ZVR5cGUgc2l6ZVR5cGUsIExlbmd0aAogICAgICAgICBjYXNlIFZpZXdwb3J0UGVyY2Vu
dGFnZUhlaWdodDoKICAgICAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAg
IGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgotICAgICAgICAgICAgcmV0dXJuIGFkanVzdENv
bnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbFdp
ZHRoLCAwLCB2aWV3KCkpKTsKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbFdpZHRoRm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgMCkpOwog
ICAgICAgICBjYXNlIEZpdENvbnRlbnQ6CiAgICAgICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKICAg
ICAgICAgY2FzZSBQZXJjZW50OiAKQEAgLTI3MTYsNyArMjcxMCw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgc2l6ZVR5
cGUsIExlbmd0CiAgICAgICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgogICAgICAg
ICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1pbjoKICAgICAgICAgY2FzZSBWaWV3cG9ydFBlcmNl
bnRhZ2VNYXg6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWln
aHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodCwgMCwgdmlldygpKSk7
CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hT
aXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodCwgMCkpOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKTsKICAgICB9CkBA
IC0yNzgzLDEwICsyNzc3LDkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVCbG9ja0RpcmVjdGlv
bk1hcmdpbnMoY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywKICAgICAvLyBNYXJn
aW5zIGFyZSBjYWxjdWxhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUgbG9naWNhbCB3aWR0aCBvZgog
ICAgIC8vIHRoZSBjb250YWluaW5nIGJsb2NrICg4LjMpCiAgICAgTGF5b3V0VW5pdCBjdyA9IGNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKTsKLSAgICBSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3ID0gdmlldygpOwogICAgIFJlbmRlclN0eWxlKiBjb250YWluaW5nQmxvY2tTdHls
ZSA9IGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKTsKLSAgICBtYXJnaW5CZWZvcmUgPSBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luQmVmb3JlVXNpbmcoY29udGFpbmluZ0Jsb2Nr
U3R5bGUpLCBjdywgcmVuZGVyVmlldyk7Ci0gICAgbWFyZ2luQWZ0ZXIgPSBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luQWZ0ZXJVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSks
IGN3LCByZW5kZXJWaWV3KTsKKyAgICBtYXJnaW5CZWZvcmUgPSBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS0+bWFyZ2luQmVmb3JlVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLCBjdyk7
CisgICAgbWFyZ2luQWZ0ZXIgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2lu
QWZ0ZXJVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSksIGN3KTsKIH0KIAogdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVBbmRTZXRCbG9ja0RpcmVjdGlvbk1hcmdpbnMoY29uc3QgUmVuZGVyQmxvY2sq
IGNvbnRhaW5pbmdCbG9jaykKQEAgLTMxMTIsNyArMzEwNSw2IEBAIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUs
IExlbmd0CiAgICAgYm9vbCBsb2dpY2FsV2lkdGhJc0F1dG8gPSBsb2dpY2FsV2lkdGguaXNJbnRy
aW5zaWNPckF1dG8oKTsKICAgICBib29sIGxvZ2ljYWxMZWZ0SXNBdXRvID0gbG9naWNhbExlZnQu
aXNBdXRvKCk7CiAgICAgYm9vbCBsb2dpY2FsUmlnaHRJc0F1dG8gPSBsb2dpY2FsUmlnaHQuaXNB
dXRvKCk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKICAgICBMYXlvdXRV
bml0JiBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgOiBjb21wdXRlZFZhbHVl
cy5tX21hcmdpbnMubV9lbmQ7CiAgICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFs
dWUgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9lbmQgOiBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydDsKIApAQCAt
MzEzMiwxMCArMzEyNCwxMCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndAogICAgICAgICAvLyBO
T1RFOiAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ3JpZ2h0JyBpbiB0aGUgb3Zl
ciBjb25zdHJhaW5lZAogICAgICAgICAvLyBjYXNlIGJlY2F1c2UgdGhlIHZhbHVlIGlzIG5vdCB1
c2VkIGZvciBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuCiAKLSAgICAgICAgbG9naWNhbExlZnRW
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgs
IHJlbmRlclZpZXcpOwotICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGFkanVzdENv
bnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbFdp
ZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgbG9naWNh
bExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOworICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBj
b250YWluZXJMb2dpY2FsV2lkdGgpKTsKIAotICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWls
YWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBj
b21wdXRlZFZhbHVlcy5tX2V4dGVudCArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29u
dGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7Cisg
ICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2Fs
V2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ICsgdmFs
dWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpICsgYm9yZGVy
c1BsdXNQYWRkaW5nKTsKIAogICAgICAgICAvLyBNYXJnaW5zIGFyZSBub3cgdGhlIG9ubHkgdW5r
bm93bgogICAgICAgICBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRvKCkgJiYgbWFyZ2luTG9n
aWNhbFJpZ2h0LmlzQXV0bygpKSB7CkBAIC0zMTU2LDE2ICszMTQ4LDE2IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6
ZVR5cGUsIExlbmd0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobWFyZ2luTG9n
aWNhbExlZnQuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciBsZWZ0IG1hcmdp
bgotICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aCht
YXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJW
aWV3KTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJn
aW5Mb2dpY2FsUmlnaHRWYWx1ZTsKICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsUmln
aHQuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciByaWdodCBtYXJnaW4KLSAg
ICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5M
b2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwor
ICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdp
bkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAg
ICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2luTG9naWNh
bExlZnRWYWx1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE92ZXItY29uc3Ry
YWluZWQsIHNvbHZlIGZvciBsZWZ0IGlmIGRpcmVjdGlvbiBpcyBSVEwKLSAgICAgICAgICAgIG1h
cmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwg
Y29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAg
bWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsUmln
aHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAg
ICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2Fs
TGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbWFyZ2lu
TG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNv
bnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAgICAgLy8gVXNlIHRoZSBj
b250YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sn
cwogICAgICAgICAgICAgLy8gcGVyIENTUyAyLjEgcmVmZXJlbmNlIHRlc3QgYWJzcG9zLW5vbi1y
ZXBsYWNlZC13aWR0aC1tYXJnaW4tMDAwLgpAQCAtMzIxNSw4ICszMjA3LDggQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhT
aXplVHlwZSwgTGVuZ3QKICAgICAgICAgLy8gYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQg
Zm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAogICAgICAgICAvLyBDYWxjdWxhdGUgbWFy
Z2lucywgJ2F1dG8nIG1hcmdpbnMgYXJlIGlnbm9yZWQuCi0gICAgICAgIG1hcmdpbkxvZ2ljYWxM
ZWZ0VmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbWFyZ2luTG9n
aWNhbFJpZ2h0VmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0
LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1h
cmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNh
bExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9n
aWNhbFJpZ2h0VmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0
LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgY29uc3QgTGF5b3V0
VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIChtYXJnaW5Mb2dp
Y2FsTGVmdFZhbHVlICsgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgKyBib3JkZXJzUGx1c1BhZGRp
bmcpOwogCkBAIC0zMjI0LDcgKzMyMTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndAogICAg
ICAgICAvLyBVc2UgcnVsZS9jYXNlIHRoYXQgYXBwbGllcy4KICAgICAgICAgaWYgKGxvZ2ljYWxM
ZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7
CiAgICAgICAgICAgICAvLyBSVUxFIDE6ICh1c2Ugc2hyaW5rLXRvLWZpdCBmb3Igd2lkdGgsIGFu
ZCBzb2x2ZSBvZiBsZWZ0KQotICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWYWx1
ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBy
ZW5kZXJWaWV3KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0VmFsdWUgPSB2
YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAg
ICAgICAgICAgIC8vIEZJWE1FOiB3b3VsZCBpdCBiZSBiZXR0ZXIgdG8gaGF2ZSBzaHJpbmstdG8t
Zml0IGluIG9uZSBzdGVwPwogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0aCA9
IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwpAQCAtMzIz
NCw3ICszMjI2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlwZSwgTGVuZ3QKICAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAr
IGxvZ2ljYWxSaWdodFZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1
dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmIGxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAg
ICAgICAgLy8gUlVMRSAzOiAodXNlIHNocmluay10by1maXQgZm9yIHdpZHRoLCBhbmQgbm8gbmVl
ZCBzb2x2ZSBvZiByaWdodCkKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsK
KyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVm
dCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IHdvdWxk
IGl0IGJlIGJldHRlciB0byBoYXZlIHNocmluay10by1maXQgaW4gb25lIHN0ZXA/CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IHByZWZlcnJlZFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
KCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7CkBAIC0zMjQzLDE2ICszMjM1LDE2IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRo
U2l6ZVR5cGUsIExlbmd0CiAgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IG1p
bihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVkV2lkdGgp
OwogICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxMZWZ0SXNBdXRvICYmICFsb2dpY2FsV2lkdGhJ
c0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA0OiAo
c29sdmUgZm9yIGxlZnQpCi0gICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9n
aWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChjb21wdXRlZFZhbHVlcy5t
X2V4dGVudCArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdp
ZHRoLCByZW5kZXJWaWV3KSk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9
IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgo
bG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAr
IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0
byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDU6IChzb2x2
ZSBmb3Igd2lkdGgpCi0gICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5n
dGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAg
ICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2lj
YWxMZWZ0VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAg
ICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2Fs
TGVmdFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgIWxvZ2lj
YWxXaWR0aElzQXV0byAmJiBsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJV
TEUgNjogKG5vIG5lZWQgc29sdmUgZm9yIHJpZ2h0KQotICAgICAgICAgICAgbG9naWNhbExlZnRW
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgs
IHJlbmRlclZpZXcpOwotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBhZGp1
c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7CisgICAgICAgICAg
ICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9n
aWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMzQ0NSw3ICszNDM3LDYgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFNpemVUeXBlLCBMZW4KICAgICBib29sIGxv
Z2ljYWxIZWlnaHRJc0F1dG8gPSBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzQXV0bygpOwogICAgIGJv
b2wgbG9naWNhbFRvcElzQXV0byA9IGxvZ2ljYWxUb3AuaXNBdXRvKCk7CiAgICAgYm9vbCBsb2dp
Y2FsQm90dG9tSXNBdXRvID0gbG9naWNhbEJvdHRvbS5pc0F1dG8oKTsKLSAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdmlldygpOwogCiAgICAgLy8gSGVpZ2h0IGlzIG5ldmVyIHVuc29sdmVk
IGZvciB0YWJsZXMuCiAgICAgaWYgKGlzVGFibGUoKSkgewpAQCAtMzQ2NSwxMCArMzQ1NiwxMCBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6
ZVR5cGUgaGVpZ2h0U2l6ZVR5cGUsIExlbgogICAgICAgICAvLyBOT1RFOiAgSXQgaXMgbm90IG5l
Y2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2JvdHRvbScgaW4gdGhlIG92ZXIgY29uc3RyYWluZWQKICAg
ICAgICAgLy8gY2FzZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRo
ZXIgY2FsY3VsYXRpb25zLgogCi0gICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGFkanVzdENv
bnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxI
ZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpKTsKLSAgICAg
ICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVy
TG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7CisgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9
IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAg
bG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9n
aWNhbEhlaWdodCk7CiAKLSAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdo
dFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhl
aWdodCwgcmVuZGVyVmlldykgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICBjb25zdCBM
YXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChsb2dp
Y2FsVG9wVmFsdWUgKyBsb2dpY2FsSGVpZ2h0VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
Qm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAK
ICAgICAgICAgLy8gTWFyZ2lucyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24KICAgICAgICAgaWYg
KG1hcmdpbkJlZm9yZS5pc0F1dG8oKSAmJiBtYXJnaW5BZnRlci5pc0F1dG8oKSkgewpAQCAtMzQ3
OCwxNiArMzQ2OSwxNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
SGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0U2l6ZVR5cGUsIExlbgogICAgICAgICAgICAgY29t
cHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIgPSBhdmFpbGFibGVTcGFjZSAtIGNvbXB1dGVk
VmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZTsgLy8gYWNjb3VudCBmb3Igb2RkIHZhbHVlZCBkaWZm
ZXJlbmNlcwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSkgewogICAg
ICAgICAgICAgLy8gU29sdmUgZm9yIHRvcCBtYXJnaW4KLSAgICAgICAgICAgIGNvbXB1dGVkVmFs
dWVzLm1fbWFyZ2lucy5tX2FmdGVyID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgICAgIGNvbXB1
dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2FmdGVyID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIs
IGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIGNvbXB1dGVkVmFs
dWVzLm1fbWFyZ2lucy5tX2JlZm9yZSA9IGF2YWlsYWJsZVNwYWNlIC0gY29tcHV0ZWRWYWx1ZXMu
bV9tYXJnaW5zLm1fYWZ0ZXI7CiAgICAgICAgIH0gZWxzZSBpZiAobWFyZ2luQWZ0ZXIuaXNBdXRv
KCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciBib3R0b20gbWFyZ2luCi0gICAgICAgICAg
ICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmUgPSB2YWx1ZUZvckxlbmd0aChtYXJn
aW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAg
ICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZSA9IHZhbHVlRm9yTGVu
Z3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOwogICAgICAg
ICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIgPSBhdmFpbGFibGVTcGFjZSAt
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIE92ZXItY29uc3RyYWluZWQsIChubyBuZWVkIHNvbHZlIGZvciBib3R0b20p
Ci0gICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmUgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5k
ZXJWaWV3KTsKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2FmdGVyID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRo
LCByZW5kZXJWaWV3KTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2Jl
Zm9yZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dp
Y2FsV2lkdGgpOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lk
dGgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCkBA
IC0zNTE2LDggKzM1MDcsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0U2l6ZVR5cGUsIExlbgogICAgICAgICAvLyBi
ZWNhdXNlIHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25z
LgogCiAgICAgICAgIC8vIENhbGN1bGF0ZSBtYXJnaW5zLCAnYXV0bycgbWFyZ2lucyBhcmUgaWdu
b3JlZC4KLSAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYmVmb3JlID0gbWluaW11
bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpOwotICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRl
ciA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVM
b2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdp
bnMubV9iZWZvcmUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWlu
ZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lu
cy5tX2FmdGVyID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJS
ZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBhdmFpbGFi
bGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAoY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fYmVmb3JlICsgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIgKyBib3JkZXJz
UGx1c1BhZGRpbmcpOwogCkBAIC0zNTI1LDIzICszNTE2LDIzIEBAIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRTaXplVHlw
ZSwgTGVuCiAgICAgICAgIGlmIChsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1
dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKGhl
aWdodCBpcyBjb250ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2Fs
SGVpZ2h0VmFsdWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAgIGxvZ2ljYWxU
b3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcp
KTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2lj
YWxIZWlnaHRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiBs
b2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAg
IC8vIFJVTEUgMzogKGhlaWdodCBpcyBjb250ZW50IGJhc2VkLCBubyBuZWVkIHNvbHZlIG9mIGJv
dHRvbSkKLSAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAgICAgICAg
bG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9n
aWNhbEhlaWdodCk7CiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb250ZW50TG9n
aWNhbEhlaWdodDsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsVG9wSXNBdXRvICYmICFsb2dp
Y2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAgICAgICAgICAv
LyBSVUxFIDQ6IChzb2x2ZSBvZiB0b3ApCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUg
PSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0
aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3
KSk7Ci0gICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dp
Y2FsSGVpZ2h0VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJM
b2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KSk7CisgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFs
dWUgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxl
bmd0aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAg
ICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsSGVpZ2h0
VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVp
Z2h0KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhl
aWdodElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVM
RSA1OiAoc29sdmUgb2YgaGVpZ2h0KQotICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFs
dWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmll
dyk7Ci0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5pdD4oMCwg
YXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRvcFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNh
bEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldykpKTsKKyAgICAgICAg
ICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gbWF4PExh
eW91dFVuaXQ+KDAsIGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYg
bG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAobm8gbmVlZCBz
b2x2ZSBvZiBib3R0b20pCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBhZGp1c3RD
b250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
SGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KSk7Ci0gICAg
ICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250
YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWln
aHRWYWx1ZSA9IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsK
KyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3As
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICB9CiAgICAgfQogICAgIGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50ID0gbG9naWNhbEhlaWdodFZhbHVlOwpAQCAtMzYxOSwxNCArMzYxMCwx
MyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNl
ZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZQogICAgIFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAg
IExheW91dFVuaXQgbG9naWNhbExlZnRWYWx1ZSA9IDA7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
UmlnaHRWYWx1ZSA9IDA7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKIAog
ICAgIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBtYXJnaW5Mb2dpY2FsUmlnaHQu
aXNBdXRvKCkpIHsKICAgICAgICAgLy8gJ2xlZnQnIGFuZCAncmlnaHQnIGNhbm5vdCBiZSAnYXV0
bycgZHVlIHRvIHN0ZXAgMwogICAgICAgICBBU1NFUlQoIShsb2dpY2FsTGVmdC5pc0F1dG8oKSAm
JiBsb2dpY2FsUmlnaHQuaXNBdXRvKCkpKTsKIAotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVy
Vmlldyk7Ci0gICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNh
bFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIExheW91dFVuaXQg
ZGlmZmVyZW5jZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2Fs
UmlnaHRWYWx1ZSk7CiAgICAgICAgIGlmIChkaWZmZXJlbmNlID4gMCkgewpAQCAtMzY0OSwzOSAr
MzYzOSwzOSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhS
ZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZQogICAgICAqICAgIHRoYXQgdmFsdWUu
CiAgICAgXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgfSBlbHNlIGlmIChsb2dpY2FsTGVmdC5pc0F1
dG8oKSkgewotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJW
aWV3KTsKLSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aCht
YXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJW
aWV3KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
UmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdp
bkxvZ2ljYWxMZWZ0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29u
dGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRB
bGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRp
dmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVu
Z3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAvLyBT
b2x2ZSBmb3IgJ2xlZnQnCiAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFj
ZSAtIChsb2dpY2FsUmlnaHRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgKyBtYXJnaW5M
b2dpY2FsUmlnaHRBbGlhcyk7CiAgICAgfSBlbHNlIGlmIChsb2dpY2FsUmlnaHQuaXNBdXRvKCkp
IHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdp
bkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7
Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2lu
TG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7
Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luTG9naWNh
bExlZnRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJS
ZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2lj
YWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dp
Y2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3Ig
J3JpZ2h0JwogICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxMZWZ0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJp
Z2h0QWxpYXMpOwogICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRvKCkpIHsK
LSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5M
b2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsK
LSAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBj
b250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsUmlnaHRW
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRo
LCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0
LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAg
ICAgICAvLyBTb2x2ZSBmb3IgJ21hcmdpbi1sZWZ0JwogICAgICAgICBtYXJnaW5Mb2dpY2FsTGVm
dEFsaWFzID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdo
dFZhbHVlICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMpOwogICAgIH0gZWxzZSBpZiAobWFyZ2lu
TG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dp
Y2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7
Ci0gICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0
LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5Mb2dp
Y2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5l
clJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBs
b2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ21hcmdpbi1yaWdodCcKICAg
ICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2Fs
TGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RoaW5nIGlzICdhdXRvJywganVzdCBjYWxjdWxh
dGUgdGhlIHZhbHVlcy4KLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IHZhbHVlRm9y
TGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwg
cmVuZGVyVmlldyk7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gdmFsdWVGb3JM
ZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwg
cmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgo
bG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAg
ICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxp
YXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVM
b2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IHZhbHVlRm9y
TGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgp
OworICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdo
dCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAg
ICAvLyBJZiB0aGUgY29udGFpbmluZyBibG9jayBpcyByaWdodC10by1sZWZ0LCB0aGVuIHB1c2gg
dGhlIGxlZnQgcG9zaXRpb24gYXMgZmFyIHRvIHRoZSByaWdodCBhcyBwb3NzaWJsZQogICAgICAg
ICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFJUTCkgewogICAgICAgICAgICAgaW50IHRvdGFs
TG9naWNhbFdpZHRoID0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyBsb2dpY2FsTGVmdFZhbHVl
ICsgbG9naWNhbFJpZ2h0VmFsdWUgKyAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyArIG1hcmdpbkxv
Z2ljYWxSaWdodEFsaWFzOwpAQCAtMzc0Myw3ICszNzMzLDYgQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRl
ZFZhbHUKIAogICAgIExlbmd0aCBsb2dpY2FsVG9wID0gc3R5bGUoKS0+bG9naWNhbFRvcCgpOwog
ICAgIExlbmd0aCBsb2dpY2FsQm90dG9tID0gc3R5bGUoKS0+bG9naWNhbEJvdHRvbSgpOwotICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAKICAgICAvKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KlwKICAgICAgKiAxLiBUaGUgdXNlZCB2YWx1ZSBvZiAnaGVpZ2h0JyBpcyBkZXRlcm1pbmVkIGFz
IGZvciBpbmxpbmUgcmVwbGFjZWQKQEAgLTM3ODcsOCArMzc3Niw4IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29t
cHV0ZWRWYWx1CiAgICAgICAgIC8vICd0b3AnIGFuZCAnYm90dG9tJyBjYW5ub3QgYmUgJ2F1dG8n
IGR1ZSB0byBzdGVwIDIgYW5kIDMgY29tYmluZWQuCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxU
b3AuaXNBdXRvKCkgfHwgbG9naWNhbEJvdHRvbS5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2lj
YWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3
KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCiAg
ICAgICAgIExheW91dFVuaXQgZGlmZmVyZW5jZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxU
b3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSk7CiAgICAgICAgIC8vIE5PVEU6IFRoaXMgbWF5
IHJlc3VsdCBpbiBuZWdhdGl2ZSB2YWx1ZXMuCkBAIC0zODAwLDM5ICszNzg5LDM5IEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1CiAgICAgICogICAgZm9yIHRoYXQgdmFsdWUuCiAgICAgXCotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCiAgICAgfSBlbHNlIGlmIChsb2dpY2FsVG9wLmlzQXV0bygpKSB7Ci0gICAg
ICAgIG1hcmdpbkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250
YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIG1hcmdpbkFm
dGVyQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVM
b2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSB2
YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5k
ZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJn
aW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2lu
QWZ0ZXJBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2
ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZhbHVlRm9yTGVu
Z3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCiAgICAgICAgIC8v
IFNvbHZlIGZvciAndG9wJwogICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFj
ZSAtIChsb2dpY2FsQm90dG9tVmFsdWUgKyBtYXJnaW5CZWZvcmVBbGlhcyArIG1hcmdpbkFmdGVy
QWxpYXMpOwogICAgIH0gZWxzZSBpZiAobG9naWNhbEJvdHRvbS5pc0F1dG8oKSkgewotICAgICAg
ICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFp
bmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBtYXJnaW5BZnRl
ckFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7
CisgICAgICAgIG1hcmdpbkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3Jl
LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkFmdGVyQWxp
YXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2Fs
V2lkdGgpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
VG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ2Jv
dHRvbScKICAgICAgICAgLy8gTk9URTogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3Ig
J2JvdHRvbScgYmVjYXVzZSB3ZSBkb24ndCBldmVyCiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUu
CiAgICAgfSBlbHNlIGlmIChtYXJnaW5CZWZvcmUuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2lu
QWZ0ZXJBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2
ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZp
ZXcpOwotICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
Qm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFy
Z2luQWZ0ZXJBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxh
dGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVu
Z3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2Fs
Qm90dG9tVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ21hcmdpbi10b3AnCiAgICAgICAg
IG1hcmdpbkJlZm9yZUFsaWFzID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRvcFZhbHVlICsg
bG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQWZ0ZXJBbGlhcyk7CiAgICAgfSBlbHNlIGlmICht
YXJnaW5BZnRlci5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJl
bmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dp
Y2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9n
aWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVy
TG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkJlZm9yZUFsaWFzID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0
aCk7CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3As
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSB2
YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAog
ICAgICAgICAvLyBTb2x2ZSBmb3IgJ21hcmdpbi1ib3R0b20nCiAgICAgICAgIG1hcmdpbkFmdGVy
QWxpYXMgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9t
VmFsdWUgKyBtYXJnaW5CZWZvcmVBbGlhcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90
aGluZyBpcyAnYXV0bycsIGp1c3QgY2FsY3VsYXRlIHRoZSB2YWx1ZXMuCi0gICAgICAgIG1hcmdp
bkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxh
dGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIG1hcmdpbkFmdGVyQWxpYXMg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0
aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAg
ICAgbWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IHZh
bHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7
CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAvLyBOT1RFOiBJdCBpcyBub3QgbmVjZXNz
YXJ5IHRvIHNvbHZlIGZvciAnYm90dG9tJyBiZWNhdXNlIHdlIGRvbid0IGV2ZXIKICAgICAgICAg
Ly8gdXNlIHRoZSB2YWx1ZS4KICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMjBjNjE4YmJhMWFhZmM3YTFkZmVhOTY0
ZmMzYmYzNjk5NzFhMTYzZC4uNDQ3MDlhM2YxYmZjZTJiODNjODE4NTQ0MzA2NWY2ODNhYzVlNWMw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCkBAIC00MDUsMTEgKzQwNSwxMSBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QKICAgICAvLyBjYWxsIGF2YWlsYWJs
ZVdpZHRoIG9uIG91ciBjb250YWluaW5nIGJsb2NrLgogICAgIGlmICghc3R5bGUoKS0+bGVmdCgp
LmlzQXV0bygpKSB7CiAgICAgICAgIGlmICghc3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKSAmJiAh
Y29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAg
ICAgICAgICBvZmZzZXQuc2V0V2lkdGgoLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJpZ2h0KCks
IGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlV2lkdGgoKSwgdmlldygpKSk7CisgICAgICAgICAg
ICBvZmZzZXQuc2V0V2lkdGgoLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJpZ2h0KCksIGNvbnRh
aW5pbmdCbG9jay0+YXZhaWxhYmxlV2lkdGgoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBvZmZzZXQuZXhwYW5kKHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxlZnQoKSwgY29udGFpbmlu
Z0Jsb2NrLT5hdmFpbGFibGVXaWR0aCgpLCB2aWV3KCkpLCAwKTsKKyAgICAgICAgICAgIG9mZnNl
dC5leHBhbmQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bGVmdCgpLCBjb250YWluaW5nQmxvY2st
PmF2YWlsYWJsZVdpZHRoKCkpLCAwKTsKICAgICB9IGVsc2UgaWYgKCFzdHlsZSgpLT5yaWdodCgp
LmlzQXV0bygpKSB7Ci0gICAgICAgIG9mZnNldC5leHBhbmQoLXZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPnJpZ2h0KCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlV2lkdGgoKSwgdmlldygpKSwg
MCk7CisgICAgICAgIG9mZnNldC5leHBhbmQoLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJpZ2h0
KCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlV2lkdGgoKSksIDApOwogICAgIH0KIAogICAg
IC8vIElmIHRoZSBjb250YWluaW5nIGJsb2NrIG9mIGEgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGVs
ZW1lbnQgZG9lcyBub3QKQEAgLTQyMiwxMyArNDIyLDEzIEBAIExheW91dFNpemUgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAgICAgICAmJiAo
IWNvbnRhaW5pbmdCbG9jay0+aGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9I
ZWlnaHQoKQogICAgICAgICAgICAgfHwgIXN0eWxlKCktPnRvcCgpLmlzUGVyY2VudCgpCiAgICAg
ICAgICAgICB8fCBjb250YWluaW5nQmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0gICAg
ICAgIG9mZnNldC5leHBhbmQoMCwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+dG9wKCksIGNvbnRh
aW5pbmdCbG9jay0+YXZhaWxhYmxlSGVpZ2h0KCksIHZpZXcoKSkpOworICAgICAgICBvZmZzZXQu
ZXhwYW5kKDAsIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnRvcCgpLCBjb250YWluaW5nQmxvY2st
PmF2YWlsYWJsZUhlaWdodCgpKSk7CiAKICAgICBlbHNlIGlmICghc3R5bGUoKS0+Ym90dG9tKCku
aXNBdXRvKCkKICAgICAgICAgJiYgKCFjb250YWluaW5nQmxvY2stPmhhc0F1dG9IZWlnaHRPckNv
bnRhaW5pbmdCbG9ja1dpdGhBdXRvSGVpZ2h0KCkKICAgICAgICAgICAgIHx8ICFzdHlsZSgpLT5i
b3R0b20oKS5pc1BlcmNlbnQoKQogICAgICAgICAgICAgfHwgY29udGFpbmluZ0Jsb2NrLT5zdHJl
dGNoZXNUb1ZpZXdwb3J0KCkpKQotICAgICAgICBvZmZzZXQuZXhwYW5kKDAsIC12YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT5ib3R0b20oKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVIZWlnaHQo
KSwgdmlldygpKSk7CisgICAgICAgIG9mZnNldC5leHBhbmQoMCwgLXZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPmJvdHRvbSgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpKSk7CiAK
ICAgICByZXR1cm4gb2Zmc2V0OwogfQpAQCAtNDc5LDEwICs0NzksMTAgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMoU3RpY2t5UG9z
aXRpb25WaWV3cG8KIAogICAgIC8vIFN0aWNreSBwb3NpdGlvbmVkIGVsZW1lbnQgaWdub3JlIGFu
eSBvdmVycmlkZSBsb2dpY2FsIHdpZHRoIG9uIHRoZSBjb250YWluaW5nIGJsb2NrIChhcyB0aGV5
IGRvbid0IGNhbGwKICAgICAvLyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KS4gSXQncyB1bmNsZWFyIHdoZXRoZXIgdGhpcyBpcyB0b3RhbGx5IGZpbmUuCi0gICAgTGF5b3V0
Qm94RXh0ZW50IG1pbk1hcmdpbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2lu
VG9wKCksIG1heFdpZHRoLCB2aWV3KCkpLAotICAgICAgICBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgbWF4V2lkdGgsIHZpZXcoKSksCi0gICAgICAgIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSwgbWF4V2lkdGgsIHZpZXco
KSksCi0gICAgICAgIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCks
IG1heFdpZHRoLCB2aWV3KCkpKTsKKyAgICBMYXlvdXRCb3hFeHRlbnQgbWluTWFyZ2luKG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5Ub3AoKSwgbWF4V2lkdGgpLAorICAgICAg
ICBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgbWF4V2lkdGgp
LAorICAgICAgICBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luQm90dG9tKCks
IG1heFdpZHRoKSwKKyAgICAgICAgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdp
bkxlZnQoKSwgbWF4V2lkdGgpKTsKIAogICAgIC8vIENvbXB1dGUgdGhlIGNvbnRhaW5lci1yZWxh
dGl2ZSBhcmVhIHdpdGhpbiB3aGljaCB0aGUgc3RpY2t5IGVsZW1lbnQgaXMgYWxsb3dlZCB0byBt
b3ZlLgogICAgIGNvbnRhaW5lckNvbnRlbnRSZWN0LmNvbnRyYWN0KG1pbk1hcmdpbik7CkBAIC01
MDMsMjIgKzUwMywyMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5
UG9zaXRpb25Db25zdHJhaW50cyhTdGlja3lQb3NpdGlvblZpZXdwbwogICAgIGNvbnN0cmFpbnRz
LnNldEFic29sdXRlU3RpY2t5Qm94UmVjdChhYnNvbHV0ZVN0aWNreUJveFJlY3QpOwogCiAgICAg
aWYgKCFzdHlsZSgpLT5sZWZ0KCkuaXNBdXRvKCkpIHsKLSAgICAgICAgY29uc3RyYWludHMuc2V0
TGVmdE9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5sZWZ0KCksIHZpZXdwb3J0UmVjdC53
aWR0aCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29uc3RyYWludHMuc2V0TGVmdE9mZnNldCh2YWx1
ZUZvckxlbmd0aChzdHlsZSgpLT5sZWZ0KCksIHZpZXdwb3J0UmVjdC53aWR0aCgpKSk7CiAgICAg
ICAgIGNvbnN0cmFpbnRzLmFkZEFuY2hvckVkZ2UoVmlld3BvcnRDb25zdHJhaW50czo6QW5jaG9y
RWRnZUxlZnQpOwogICAgIH0KIAogICAgIGlmICghc3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKSkg
ewotICAgICAgICBjb25zdHJhaW50cy5zZXRSaWdodE9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHls
ZSgpLT5yaWdodCgpLCB2aWV3cG9ydFJlY3Qud2lkdGgoKSwgdmlldygpKSk7CisgICAgICAgIGNv
bnN0cmFpbnRzLnNldFJpZ2h0T2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJpZ2h0KCks
IHZpZXdwb3J0UmVjdC53aWR0aCgpKSk7CiAgICAgICAgIGNvbnN0cmFpbnRzLmFkZEFuY2hvckVk
Z2UoVmlld3BvcnRDb25zdHJhaW50czo6QW5jaG9yRWRnZVJpZ2h0KTsKICAgICB9CiAKICAgICBp
ZiAoIXN0eWxlKCktPnRvcCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIGNvbnN0cmFpbnRzLnNldFRv
cE9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT50b3AoKSwgdmlld3BvcnRSZWN0LmhlaWdo
dCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29uc3RyYWludHMuc2V0VG9wT2Zmc2V0KHZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCktPnRvcCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAg
Y29uc3RyYWludHMuYWRkQW5jaG9yRWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdl
VG9wKTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpKSB7Ci0g
ICAgICAgIGNvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHlsZSgp
LT5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29u
c3RyYWludHMuc2V0Qm90dG9tT2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvdHRvbSgp
LCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgY29uc3RyYWludHMuYWRkQW5jaG9y
RWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlQm90dG9tKTsKICAgICB9CiB9CkBA
IC01OTAsMjEgKzU5MCwxNyBAQCBpbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBpeGVsU25hcHBl
ZE9mZnNldEhlaWdodCgpIGNvbnN0CiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
b21wdXRlZENTU1BhZGRpbmcoTGVuZ3RoIHBhZGRpbmcpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5p
dCB3ID0gMDsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKICAgICBpZiAocGFkZGlu
Zy5pc1BlcmNlbnQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZv
ckNvbnRlbnQoKTsKLSAgICBlbHNlIGlmIChwYWRkaW5nLmlzVmlld3BvcnRQZXJjZW50YWdlKCkp
Ci0gICAgICAgIHJlbmRlclZpZXcgPSB2aWV3KCk7Ci0gICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChwYWRkaW5nLCB3LCByZW5kZXJWaWV3KTsKKyAgICByZXR1cm4gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHBhZGRpbmcsIHcpOwogfQogCiBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJl
Y3QsIElubGluZUZsb3dCb3gqIGJveCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5b3V0
VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewotICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7Ci0gICAgUm91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS0+Z2V0
Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCByZW5kZXJWaWV3LCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3QgYm9yZGVy
ID0gc3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCB0aGlzLCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgaWYgKGJveCAm
JiAoYm94LT5uZXh0TGluZUJveCgpIHx8IGJveC0+cHJldkxpbmVCb3goKSkpIHsKLSAgICAgICAg
Um91bmRlZFJlY3Qgc2VnbWVudEJvcmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3Io
TGF5b3V0UmVjdCgwLCAwLCBpbmxpbmVCb3hXaWR0aCwgaW5saW5lQm94SGVpZ2h0KSwgcmVuZGVy
VmlldywgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwor
ICAgICAgICBSb3VuZGVkUmVjdCBzZWdtZW50Qm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91bmRlZEJv
cmRlckZvcihMYXlvdXRSZWN0KDAsIDAsIGlubGluZUJveFdpZHRoLCBpbmxpbmVCb3hIZWlnaHQp
LCB0aGlzLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAgICAgICAgIGJvcmRlci5zZXRSYWRpaShzZWdtZW50Qm9yZGVyLnJhZGlpKCkpOwogICAgIH0K
IApAQCAtNjY1LDcgKzY2MSw3IEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpi
YWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlCiAgICAgICAgIHJl
dHVybiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3Qoc2hyaW5rUmVjdEJ5T25lUGl4ZWwoY29udGV4
dCwgYm9yZGVyUmVjdCksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQog
ICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRCYWNrZ3JvdW5kT3ZlckJv
cmRlcikKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihi
b3JkZXJSZWN0LCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CisgICAgICAgIHJldHVybiBzdHlsZSgpLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9y
ZGVyUmVjdCwgdGhpcywgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogCiAgICAgcmV0dXJuIGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChib3JkZXJSZWN0
LCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogfQpAQCAtNzYyLDEwICs3NTgsMTAg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICAvLyBDbGlwIHRvIHRoZSBwYWRk
aW5nIG9yIGNvbnRlbnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoYmdMYXllci0+
Y2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7Ci0gICAgICAgICAgICBib3JkZXIgPSBzdHlsZSgp
LT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyLnJlY3QoKSwKKyAgICAgICAgICAgIGJv
cmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXIucmVjdCgpLCB0
aGlzLAogICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRkaW5n
Qm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKSwg
cGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVS
aWdodEVkZ2UpOwogICAgICAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5n
RmlsbEJveCkKLSAgICAgICAgICAgIGJvcmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJv
cmRlckZvcihib3JkZXIucmVjdCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2Up
OworICAgICAgICAgICAgYm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KGJvcmRlci5yZWN0KCksIHRoaXMsIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7
CiAKICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QoY29udGV4dCwgcmVjdCwgYm9yZGVyKTsK
ICAgICB9CkBAIC0xMDM1LDcgKzEwMzEsNiBAQCBJbnRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsCiAKICAg
ICBJbnRTaXplIGltYWdlSW50cmluc2ljU2l6ZSA9IGNhbGN1bGF0ZUltYWdlSW50cmluc2ljRGlt
ZW5zaW9ucyhpbWFnZSwgcG9zaXRpb25pbmdBcmVhU2l6ZSwgU2NhbGVCeUVmZmVjdGl2ZVpvb20p
OwogICAgIGltYWdlSW50cmluc2ljU2l6ZS5zY2FsZSgxIC8gaW1hZ2UtPmltYWdlU2NhbGVGYWN0
b3IoKSwgMSAvIGltYWdlLT5pbWFnZVNjYWxlRmFjdG9yKCkpOwotICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgU2l6
ZUxlbmd0aDogewogICAgICAgICAgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSA9IHBvc2l0aW9uaW5n
QXJlYVNpemU7CkBAIC0xMDQ2LDEyICsxMDQxLDEyIEBAIEludFNpemUgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwK
ICAgICAgICAgICAgIGlmIChsYXllcldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB0
aWxlU2l6ZS5zZXRXaWR0aChsYXllcldpZHRoLnZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobGF5ZXJXaWR0aC5pc1BlcmNlbnQoKSB8fCBsYXllcldpZHRoLmlzVmlld3BvcnRQZXJjZW50
YWdlKCkpCi0gICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0V2lkdGgodmFsdWVGb3JMZW5ndGgo
bGF5ZXJXaWR0aCwgcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpLCByZW5kZXJWaWV3KSk7Cisg
ICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0V2lkdGgodmFsdWVGb3JMZW5ndGgobGF5ZXJXaWR0
aCwgcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChsYXllckhlaWdodC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUu
c2V0SGVpZ2h0KGxheWVySGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5
ZXJIZWlnaHQuaXNQZXJjZW50KCkgfHwgbGF5ZXJIZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRIZWlnaHQodmFsdWVGb3JMZW5ndGgobGF5
ZXJIZWlnaHQsIHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCksIHJlbmRlclZpZXcpKTsKKyAg
ICAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRIZWlnaHQodmFsdWVGb3JMZW5ndGgobGF5ZXJIZWln
aHQsIHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkpKTsKIAogICAgICAgICAgICAgYXBwbHlT
dWJQaXhlbEhldXJpc3RpY0ZvclRpbGVTaXplKHRpbGVTaXplLCBwb3NpdGlvbmluZ0FyZWFTaXpl
KTsKIApAQCAtMTIxMSwxOCArMTIwNiwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
YWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqIGZpbAogCiAg
ICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFggPSBmaWxsTGF5ZXItPnJlcGVhdFgoKTsK
ICAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WSA9IGZpbGxMYXllci0+cmVwZWF0WSgp
OwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAgICAgaW50IGF2YWlsYWJs
ZVdpZHRoID0gcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC0gZ2VvbWV0cnkudGlsZVNpemUo
KS53aWR0aCgpOwogICAgIGludCBhdmFpbGFibGVIZWlnaHQgPSBwb3NpdGlvbmluZ0FyZWFTaXpl
LmhlaWdodCgpIC0gZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKTsKIAotICAgIExheW91dFVu
aXQgY29tcHV0ZWRYUG9zaXRpb24gPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVyLT54
UG9zaXRpb24oKSwgYXZhaWxhYmxlV2lkdGgsIHJlbmRlclZpZXcsIHRydWUpOworICAgIExheW91
dFVuaXQgY29tcHV0ZWRYUG9zaXRpb24gPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVy
LT54UG9zaXRpb24oKSwgYXZhaWxhYmxlV2lkdGgsIHRydWUpOwogICAgIGlmIChiYWNrZ3JvdW5k
UmVwZWF0WCA9PSBSZXBlYXRGaWxsKQogICAgICAgICBnZW9tZXRyeS5zZXRQaGFzZVgoZ2VvbWV0
cnkudGlsZVNpemUoKS53aWR0aCgpID8gZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpIC0gcm91
bmRUb0ludChjb21wdXRlZFhQb3NpdGlvbiArIGxlZnQpICUgZ2VvbWV0cnkudGlsZVNpemUoKS53
aWR0aCgpIDogMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGludCB4T2Zmc2V0ID0gZmlsbExheWVy
LT5iYWNrZ3JvdW5kWE9yaWdpbigpID09IFJpZ2h0RWRnZSA/IGF2YWlsYWJsZVdpZHRoIC0gY29t
cHV0ZWRYUG9zaXRpb24gOiBjb21wdXRlZFhQb3NpdGlvbjsKICAgICAgICAgZ2VvbWV0cnkuc2V0
Tm9SZXBlYXRYKGxlZnQgKyB4T2Zmc2V0KTsKICAgICB9Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRl
ZFlQb3NpdGlvbiA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChmaWxsTGF5ZXItPnlQb3NpdGlvbigp
LCBhdmFpbGFibGVIZWlnaHQsIHJlbmRlclZpZXcsIHRydWUpOworICAgIExheW91dFVuaXQgY29t
cHV0ZWRZUG9zaXRpb24gPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVyLT55UG9zaXRp
b24oKSwgYXZhaWxhYmxlSGVpZ2h0LCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFkg
PT0gUmVwZWF0RmlsbCkKICAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VZKGdlb21ldHJ5LnRpbGVT
aXplKCkuaGVpZ2h0KCkgPyBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIC0gcm91bmRUb0lu
dChjb21wdXRlZFlQb3NpdGlvbiArIHRvcCkgJSBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgp
IDogMCk7CiAgICAgZWxzZSB7CkBAIC0xMjM3LDEzICsxMjMxLDEzIEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IEZpbGxM
YXllciogZmlsCiAgICAgZ2VvbWV0cnkuc2V0RGVzdE9yaWdpbihnZW9tZXRyeS5kZXN0UmVjdCgp
LmxvY2F0aW9uKCkpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlQm9yZGVySW1hZ2VT
aWRlKExlbmd0aCBib3JkZXJTbGljZSwgTGF5b3V0VW5pdCBib3JkZXJTaWRlLCBMYXlvdXRVbml0
IGltYWdlU2lkZSwgTGF5b3V0VW5pdCBib3hFeHRlbnQsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcp
CitzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKExlbmd0aCBib3JkZXJT
bGljZSwgTGF5b3V0VW5pdCBib3JkZXJTaWRlLCBMYXlvdXRVbml0IGltYWdlU2lkZSwgTGF5b3V0
VW5pdCBib3hFeHRlbnQsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYg
KGJvcmRlclNsaWNlLmlzUmVsYXRpdmUoKSkKICAgICAgICAgcmV0dXJuIGJvcmRlclNsaWNlLnZh
bHVlKCkgKiBib3JkZXJTaWRlOwogICAgIGlmIChib3JkZXJTbGljZS5pc0F1dG8oKSkKICAgICAg
ICAgcmV0dXJuIGltYWdlU2lkZTsKLSAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoYm9yZGVyU2xp
Y2UsIGJveEV4dGVudCwgcmVuZGVyVmlldyk7CisgICAgcmV0dXJuIHJlbmRlcmVyLT52YWx1ZUZv
ckxlbmd0aChib3JkZXJTbGljZSwgYm94RXh0ZW50KTsKIH0KIAogYm9vbCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLApA
QCAtMTI3MiwyMSArMTI2NiwyMCBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5p
bmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgaW50
IGltYWdlV2lkdGggPSBpbWFnZVNpemUud2lkdGgoKTsKICAgICBpbnQgaW1hZ2VIZWlnaHQgPSBp
bWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsK
IAogICAgIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IgPSBzdHlsZUltYWdlLT5pbWFnZVNjYWxlRmFj
dG9yKCk7Ci0gICAgaW50IHRvcFNsaWNlID0gbWluPGludD4oaW1hZ2VIZWlnaHQsIHZhbHVlRm9y
TGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkudG9wKCksIGltYWdlSGVpZ2h0LCBy
ZW5kZXJWaWV3KSkgKiBpbWFnZVNjYWxlRmFjdG9yOwotICAgIGludCByaWdodFNsaWNlID0gbWlu
PGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGlj
ZXMoKS5yaWdodCgpLCBpbWFnZVdpZHRoLCByZW5kZXJWaWV3KSkgKiBpbWFnZVNjYWxlRmFjdG9y
OwotICAgIGludCBib3R0b21TbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxl
bmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLmJvdHRvbSgpLCBpbWFnZUhlaWdodCwg
cmVuZGVyVmlldykpICogaW1hZ2VTY2FsZUZhY3RvcjsKLSAgICBpbnQgbGVmdFNsaWNlID0gbWlu
PGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGlj
ZXMoKS5sZWZ0KCksIGltYWdlV2lkdGgsIHJlbmRlclZpZXcpKSAqIGltYWdlU2NhbGVGYWN0b3I7
CisgICAgaW50IHRvcFNsaWNlID0gbWluPGludD4oaW1hZ2VIZWlnaHQsIHZhbHVlRm9yTGVuZ3Ro
KG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkudG9wKCksIGltYWdlSGVpZ2h0KSkgKiBpbWFn
ZVNjYWxlRmFjdG9yOworICAgIGludCByaWdodFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwg
dmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5yaWdodCgpLCBpbWFn
ZVdpZHRoKSkgKiBpbWFnZVNjYWxlRmFjdG9yOworICAgIGludCBib3R0b21TbGljZSA9IG1pbjxp
bnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNl
cygpLmJvdHRvbSgpLCBpbWFnZUhlaWdodCkpICogaW1hZ2VTY2FsZUZhY3RvcjsKKyAgICBpbnQg
bGVmdFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNl
SW1hZ2UuaW1hZ2VTbGljZXMoKS5sZWZ0KCksIGltYWdlV2lkdGgpKSAqIGltYWdlU2NhbGVGYWN0
b3I7CiAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIGhSdWxlID0gbmluZVBpZWNlSW1hZ2UuaG9y
aXpvbnRhbFJ1bGUoKTsKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIHZSdWxlID0gbmluZVBpZWNl
SW1hZ2UudmVydGljYWxSdWxlKCk7CiAKLSAgICBpbnQgdG9wV2lkdGggPSBjb21wdXRlQm9yZGVy
SW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdlLmJvcmRlclNsaWNlcygpLnRvcCgpLCBzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSwgdG9wU2xpY2UsIGJvcmRlckltYWdlUmVjdC5oZWlnaHQoKSwgcmVuZGVy
Vmlldyk7Ci0gICAgaW50IHJpZ2h0V2lkdGggPSBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQ
aWVjZUltYWdlLmJvcmRlclNsaWNlcygpLnJpZ2h0KCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCksIHJpZ2h0U2xpY2UsIGJvcmRlckltYWdlUmVjdC53aWR0aCgpLCByZW5kZXJWaWV3KTsKLSAg
ICBpbnQgYm90dG9tV2lkdGggPSBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdl
LmJvcmRlclNsaWNlcygpLmJvdHRvbSgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgYm90
dG9tU2xpY2UsIGJvcmRlckltYWdlUmVjdC5oZWlnaHQoKSwgcmVuZGVyVmlldyk7Ci0gICAgaW50
IGxlZnRXaWR0aCA9IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUobmluZVBpZWNlSW1hZ2UuYm9yZGVy
U2xpY2VzKCkubGVmdCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGxlZnRTbGljZSwgYm9y
ZGVySW1hZ2VSZWN0LndpZHRoKCksIHJlbmRlclZpZXcpOworICAgIGludCB0b3BXaWR0aCA9IGNv
bXB1dGVCb3JkZXJJbWFnZVNpZGUobmluZVBpZWNlSW1hZ2UuYm9yZGVyU2xpY2VzKCkudG9wKCks
IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0b3BTbGljZSwgYm9yZGVySW1hZ2VSZWN0LmhlaWdo
dCgpLCB0aGlzKTsKKyAgICBpbnQgcmlnaHRXaWR0aCA9IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUo
bmluZVBpZWNlSW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKSwgc3R5bGUtPmJvcmRlclJpZ2h0
V2lkdGgoKSwgcmlnaHRTbGljZSwgYm9yZGVySW1hZ2VSZWN0LndpZHRoKCksIHRoaXMpOworICAg
IGludCBib3R0b21XaWR0aCA9IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUobmluZVBpZWNlSW1hZ2Uu
Ym9yZGVyU2xpY2VzKCkuYm90dG9tKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBib3R0
b21TbGljZSwgYm9yZGVySW1hZ2VSZWN0LmhlaWdodCgpLCB0aGlzKTsKKyAgICBpbnQgbGVmdFdp
ZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMo
KS5sZWZ0KCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgbGVmdFNsaWNlLCBib3JkZXJJbWFn
ZVJlY3Qud2lkdGgoKSwgdGhpcyk7CiAgICAgCiAgICAgLy8gUmVkdWNlIHRoZSB3aWR0aHMgaWYg
dGhleSdyZSB0b28gbGFyZ2UuCiAgICAgLy8gVGhlIHNwZWMgc2F5czogR2l2ZW4gTHdpZHRoIGFz
IHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGltYWdlIGFyZWEsIExoZWlnaHQgYXMgaXRzIGhlaWdo
dCwgYW5kIFdzaWRlIGFzIHRoZSBib3JkZXIgaW1hZ2Ugd2lkdGgKQEAgLTE4MzQsOCArMTgyNyw4
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKIAogICAgIEJvcmRlckVkZ2UgZWRnZXNbNF07CiAg
ICAgZ2V0Qm9yZGVyRWRnZUluZm8oZWRnZXMsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
LCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Ci0gICAgUm91bmRlZFJlY3Qgb3V0ZXJCb3JkZXIg
PSBzdHlsZS0+Z2V0Um91bmRlZEJvcmRlckZvcihyZWN0LCB2aWV3KCksIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBpbm5l
ckJvcmRlciA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVySW5uZXJSZWN0
QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShncmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZv
aWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OworICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJG
b3IocmVjdCwgdGhpcywgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5bGUtPmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGdy
YXBoaWNzQ29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCB0aGlzLCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICBib29sIGhhdmVBbHBo
YUNvbG9yID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlQWxsU29saWRFZGdlcyA9IHRydWU7CkBAIC0x
OTc2LDcgKzE5NjksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAKICAgICAvLyBJZiBvbmx5
IG9uZSBlZGdlIHZpc2libGUgYW50aWFsaWFzaW5nIGRvZXNuJ3QgY3JlYXRlIHNlYW1zCiAgICAg
Ym9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhncmFwaGljc0NvbnRleHQpIHx8
IG51bUVkZ2VzVmlzaWJsZSA9PSAxOwotICAgIFJvdW5kZWRSZWN0IHVuYWRqdXN0ZWRJbm5lckJv
cmRlciA9IChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRCYWNrZ3JvdW5kT3ZlckJv
cmRlcikgPyBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA6IGlubmVyQm9yZGVyOworICAg
IFJvdW5kZWRSZWN0IHVuYWRqdXN0ZWRJbm5lckJvcmRlciA9IChibGVlZEF2b2lkYW5jZSA9PSBC
YWNrZ3JvdW5kQmxlZWRCYWNrZ3JvdW5kT3ZlckJvcmRlcikgPyBzdHlsZS0+Z2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKHJlY3QsIHRoaXMsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKSA6IGlubmVyQm9yZGVyOwogICAgIEludFBvaW50IGlubmVyQm9yZGVy
QWRqdXN0bWVudChpbm5lckJvcmRlci5yZWN0KCkueCgpIC0gdW5hZGp1c3RlZElubmVyQm9yZGVy
LnJlY3QoKS54KCksIGlubmVyQm9yZGVyLnJlY3QoKS55KCkgLSB1bmFkanVzdGVkSW5uZXJCb3Jk
ZXIucmVjdCgpLnkoKSk7CiAgICAgaWYgKGhhdmVBbHBoYUNvbG9yKQogICAgICAgICBwYWludFRy
YW5zbHVjZW50Qm9yZGVyU2lkZXMoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIs
IHVuYWRqdXN0ZWRJbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywgZWRn
ZXNUb0RyYXcsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzKTsKQEAgLTIwNjAsNyArMjA1Myw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIC8vIERyYXcgaW5uZXIgYm9yZGVyIGxpbmUKICAg
ICAgICAgewogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpncmFwaGljc0NvbnRleHQpOwotICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5uZXJDbGlwID0g
c3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXJSZWN0LAorICAgICAgICAgICAg
Um91bmRlZFJlY3QgaW5uZXJDbGlwID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihi
b3JkZXJSZWN0LCB0aGlzLAogICAgICAgICAgICAgICAgIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlu
bmVyQm9yZGVyQm90dG9tV2lkdGgsIGlubmVyQm9yZGVyTGVmdFdpZHRoLCBpbm5lckJvcmRlclJp
Z2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAgICAgCkBAIC0yMDgwLDcgKzIwNzMsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgICAgICsrb3V0ZXJCb3JkZXJSaWdo
dFdpZHRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUm91
bmRlZFJlY3Qgb3V0ZXJDbGlwID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihvdXRl
clJlY3QsCisgICAgICAgICAgICBSb3VuZGVkUmVjdCBvdXRlckNsaXAgPSBzdHlsZS0+Z2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKG91dGVyUmVjdCwgdGhpcywKICAgICAgICAgICAgICAgICBvdXRl
ckJvcmRlclRvcFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRoLCBvdXRlckJvcmRlckxlZnRX
aWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoLAogICAgICAgICAgICAgICAgIGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KG91dGVyQ2xpcCk7CkBAIC0yMTExLDcgKzIx
MDQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBMYXlvdXRVbml0IGxlZnRX
aWR0aCA9IGVkZ2VzW0JTTGVmdF0udXNlZFdpZHRoKCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0
IHJpZ2h0V2lkdGggPSBlZGdlc1tCU1JpZ2h0XS51c2VkV2lkdGgoKSAvIDI7CiAKLSAgICAgICAg
Um91bmRlZFJlY3QgY2xpcFJlY3QgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJv
cmRlclJlY3QsCisgICAgICAgIFJvdW5kZWRSZWN0IGNsaXBSZWN0ID0gc3R5bGUtPmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihib3JkZXJSZWN0LCB0aGlzLAogICAgICAgICAgICAgdG9wV2lkdGgs
IGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsCiAgICAgICAgICAgICBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKQEAgLTI1MDMsOCAr
MjQ5Niw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgaWYgKGNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhcy0+Ym94U2hhZG93KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJvdW5kZWRSZWN0IGJvcmRlciA9IChzaGFkb3dTdHlsZSA9PSBJbnNldCkgPyBzLT5nZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IocGFpbnRSZWN0LCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogcy0+Z2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QsIHZpZXco
KSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAg
IFJvdW5kZWRSZWN0IGJvcmRlciA9IChzaGFkb3dTdHlsZSA9PSBJbnNldCkgPyBzLT5nZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IocGFpbnRSZWN0LCB0aGlzLCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
LCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogcy0+Z2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3Qs
IHRoaXMsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
IAogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzID0gcy0+aGFzQm9yZGVyUmFkaXVzKCk7CiAgICAg
Ym9vbCBpc0hvcml6b250YWwgPSBzLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNGRmMGNl
YmMwY2FiNjhiZmRhM2VmZGI3ZGI4ZDQzNmFhMzBhZmMyMS4uZTg5NDczYWFhYmQ2OGUyM2ZiODM2
MTBiNGE4MDEwM2M5NjZhYWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCwgU2kKICAgICAvLyB0byBmaWd1cmUgb3V0IHRoZSBsb2dpY2FsIGhlaWdodC93aWR0aC4KICAg
ICBpZiAoaXNDb2x1bW5GbG93KCkpCiAgICAgICAgIHJldHVybiBjaGlsZC0+Y29tcHV0ZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KHNpemVUeXBlLCBzaXplKTsKLSAgICByZXR1cm4gY2hpbGQtPmFkanVz
dENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgoc2l6ZSwg
Y29udGVudExvZ2ljYWxXaWR0aCgpLCB2aWV3KCkpKTsKKyAgICByZXR1cm4gY2hpbGQtPmFkanVz
dENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgoc2l6ZSwg
Y29udGVudExvZ2ljYWxXaWR0aCgpKSk7CiB9CiAKIFdyaXRpbmdNb2RlIFJlbmRlckZsZXhpYmxl
Qm94Ojp0cmFuc2Zvcm1lZFdyaXRpbmdNb2RlKCkgY29uc3QKQEAgLTg3NSw3ICs4NzUsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlQ2hpbGRNYXJnaW5WYWx1ZShMZW5n
dGggbWFyZ2luLCBSZW5kZXJWaWV3KgogICAgIC8vIFdoZW4gcmVzb2x2aW5nIHRoZSBtYXJnaW5z
LCB3ZSB1c2UgdGhlIGNvbnRlbnQgc2l6ZSBmb3IgcmVzb2x2aW5nIHBlcmNlbnQgYW5kIGNhbGMg
KGZvciBwZXJjZW50cyBpbiBjYWxjIGV4cHJlc3Npb25zKSBtYXJnaW5zLgogICAgIC8vIEZvcnR1
bmF0ZWx5LCBwZXJjZW50IG1hcmdpbnMgYXJlIGFsd2F5cyBjb21wdXRlZCB3aXRoIHJlc3BlY3Qg
dG8gdGhlIGJsb2NrJ3Mgd2lkdGgsIGV2ZW4gZm9yIG1hcmdpbi10b3AgYW5kIG1hcmdpbi1ib3R0
b20uCiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVTaXplID0gY29udGVudExvZ2ljYWxXaWR0aCgp
OwotICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luLCBhdmFpbGFibGVTaXpl
LCB2aWV3KTsKKyAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgYXZhaWxh
YmxlU2l6ZSk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc1By
ZWZlcnJlZFNpemVzKE9yZGVySGFzaFNldCYgb3JkZXJWYWx1ZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggY2NlNTcxNGE2ZDE4NTg3ZDllMGQzNmZlYzUwMzY2
NDU1YWExYWRiMy4uYjg0OWE3OTFlYWY2NzdiNGQ4ZDIxNzcyNjk2NjNkMTZmNGNhZWUyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMzEzLDcgKzMxMyw3IEBA
IExheW91dFVuaXQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZTcGVjaWZpZWRMZW5n
dGgoVHJhY2tTaXppbmdEaXJlY3Rpb24KIHsKICAgICAvLyBGSVhNRTogV2Ugc3RpbGwgbmVlZCB0
byBzdXBwb3J0IGNhbGMoKSBoZXJlIChodHRwczovL3dlYmtpdC5vcmcvYi8xMDM3NjEpLgogICAg
IEFTU0VSVCh0cmFja0xlbmd0aC5pc0ZpeGVkKCkgfHwgdHJhY2tMZW5ndGguaXNQZXJjZW50KCkg
fHwgdHJhY2tMZW5ndGguaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSk7Ci0gICAgcmV0dXJuIHZhbHVl
Rm9yTGVuZ3RoKHRyYWNrTGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGxvZ2ljYWxX
aWR0aCgpIDogY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUs
IHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSksIHZpZXcoKSk7CisgICAgcmV0dXJuIHZhbHVlRm9y
TGVuZ3RoKHRyYWNrTGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGxvZ2ljYWxXaWR0
aCgpIDogY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0
eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSkpOwogfQogCiBjb25zdCBHcmlkVHJhY2tTaXplJiBSZW5k
ZXJHcmlkOjpncmlkVHJhY2tTaXplKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgc2l6
ZV90IGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDY3
ODgwMDc4NThjY2M2ZjkzYjc1NjZmZWY0NmU5YjBmMDY5MDA0NjQuLjQ5N2Q3NWNiYWVhMjI5N2Qx
NTYwYjBhZjI0ZDI0YmRiZGFhNTcyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCkBAIC02ODgsOSArNjg4LDkgQEAgc3RhdGljIExheW91dFVuaXQgY29tcHV0
ZU1hcmdpbihjb25zdCBSZW5kZXJJbmxpbmUqIHJlbmRlcmVyLCBjb25zdCBMZW5ndGgmIG1hcmcK
ICAgICBpZiAobWFyZ2luLmlzRml4ZWQoKSkKICAgICAgICAgcmV0dXJuIG1hcmdpbi52YWx1ZSgp
OwogICAgIGlmIChtYXJnaW4uaXNQZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgobWFyZ2luLCBtYXg8TGF5b3V0VW5pdD4oMCwgcmVuZGVyZXItPmNvbnRhaW5p
bmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOworICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW4sIG1heDxMYXlvdXRVbml0PigwLCBy
ZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CiAg
ICAgaWYgKG1hcmdpbi5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gdmFs
dWVGb3JMZW5ndGgobWFyZ2luLCAwLCByZW5kZXJlci0+dmlldygpKTsKKyAgICAgICAgcmV0dXJu
IHJlbmRlcmVyLT52YWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOwogICAgIHJldHVybiAwOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1ZTc0Nzc4YzMx
MmU3NWE2YWRjODVmMDU1ZjgyNDI2NmExMmEwZDg0Li5lMzViMTk2ODgzMzAxYzJiMDZjZDdmMDI5
M2M1MTQ3ZmM3YmJiY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0o
KQogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAgICAgICBBU1NFUlQo
Ym94KTsKICAgICAgICAgbV90cmFuc2Zvcm0tPm1ha2VJZGVudGl0eSgpOwotICAgICAgICBib3gt
PnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgYm94LT5waXhlbFNuYXBwZWRC
b3JkZXJCb3hSZWN0KCkuc2l6ZSgpLCBSZW5kZXJTdHlsZTo6SW5jbHVkZVRyYW5zZm9ybU9yaWdp
bik7CisgICAgICAgIGJveC0+c3R5bGUoKS0+YXBwbHlUcmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCBi
b3gtPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCksIHJlbmRlcmVyKCksIFJlbmRl
clN0eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRl
cmFibGUoKm1fdHJhbnNmb3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgfQogCkBA
IC04NjksNyArODY5LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OmN1cnJl
bnRUcmFuc2Zvcm0oUmVuZGVyU3R5bGU6OkFwcGx5VHJhbnNmb3JtT3IKICAgICBpZiAocmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24oKSkgewogICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjdXJyVHJhbnNmb3JtOwogICAgICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlID0gcmVuZGVyZXIoKS0+YW5pbWF0aW9uKCktPmdldEFuaW1hdGVkU3R5
bGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKLSAgICAgICAgc3R5bGUtPmFwcGx5VHJhbnNmb3Jt
KGN1cnJUcmFuc2Zvcm0sIHJlbmRlckJveCgpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCku
c2l6ZSgpLCBhcHBseU9yaWdpbik7CisgICAgICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybShjdXJy
VHJhbnNmb3JtLCByZW5kZXJCb3goKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUo
KSwgcmVuZGVyZXIoKSwgYXBwbHlPcmlnaW4pOwogICAgICAgICBtYWtlTWF0cml4UmVuZGVyYWJs
ZShjdXJyVHJhbnNmb3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgICAgIHJldHVy
biBjdXJyVHJhbnNmb3JtOwogICAgIH0KQEAgLTg3OCw3ICs4NzgsNyBAQCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9ybShSZW5kZXJTdHlsZTo6QXBwbHlU
cmFuc2Zvcm1PcgogICAgIGlmIChhcHBseU9yaWdpbiA9PSBSZW5kZXJTdHlsZTo6RXhjbHVkZVRy
YW5zZm9ybU9yaWdpbikgewogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwog
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjdXJyVHJhbnNmb3JtOwotICAgICAgICBib3gt
PnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKGN1cnJUcmFuc2Zvcm0sIGJveC0+cGl4ZWxTbmFwcGVk
Qm9yZGVyQm94UmVjdCgpLnNpemUoKSwgUmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1Pcmln
aW4pOworICAgICAgICBib3gtPnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKGN1cnJUcmFuc2Zvcm0s
IGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgcmVuZGVyZXIoKSwgUmVu
ZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4pOwogICAgICAgICBtYWtlTWF0cml4UmVu
ZGVyYWJsZShjdXJyVHJhbnNmb3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgICAg
IHJldHVybiBjdXJyVHJhbnNmb3JtOwogICAgIH0KQEAgLTEyODMsOCArMTI4Myw4IEBAIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0
CiAgICAgY29uc3QgZmxvYXQgYm94V2lkdGggPSBib3JkZXJCb3gud2lkdGgoKTsKICAgICBjb25z
dCBmbG9hdCBib3hIZWlnaHQgPSBib3JkZXJCb3guaGVpZ2h0KCk7CiAKLSAgICBmbG9hdCBwZXJz
cGVjdGl2ZU9yaWdpblggPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9y
aWdpblgoKSwgYm94V2lkdGgpOwotICAgIGZsb2F0IHBlcnNwZWN0aXZlT3JpZ2luWSA9IGZsb2F0
VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3hIZWlnaHQpOwor
ICAgIGZsb2F0IHBlcnNwZWN0aXZlT3JpZ2luWCA9IHJlbmRlcmVyKCktPmZsb2F0VmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3hXaWR0aCk7CisgICAgZmxvYXQg
cGVyc3BlY3RpdmVPcmlnaW5ZID0gcmVuZGVyZXIoKS0+ZmxvYXRWYWx1ZUZvckxlbmd0aChzdHls
ZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveEhlaWdodCk7CiAKICAgICAvLyBBIHBlcnNwZWN0
aXZlIG9yaWdpbiBvZiAwLDAgbWFrZXMgdGhlIHZhbmlzaGluZyBwb2ludCBpbiB0aGUgY2VudGVy
IG9mIHRoZSBlbGVtZW50LgogICAgIC8vIFdlIHdhbnQgaXQgdG8gYmUgaW4gdGhlIHRvcC1sZWZ0
LCBzbyBzdWJ0cmFjdCBoYWxmIHRoZSBoZWlnaHQgYW5kIHdpZHRoLgpAQCAtMTMwNyw4ICsxMzA3
LDggQEAgRmxvYXRQb2ludCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmlnaW4oKSBjb25zdAog
ICAgIGNvbnN0IExheW91dFJlY3QgYm9yZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkt
PmJvcmRlckJveFJlY3QoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlcigpLT5z
dHlsZSgpOwogCi0gICAgcmV0dXJuIEZsb2F0UG9pbnQoZmxvYXRWYWx1ZUZvckxlbmd0aChzdHls
ZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIGJvcmRlckJveC53aWR0aCgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblko
KSwgYm9yZGVyQm94LmhlaWdodCgpKSk7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQocmVuZGVyZXIo
KS0+ZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIGJvcmRl
ckJveC53aWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mbG9hdFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm9yZGVyQm94LmhlaWdo
dCgpKSk7CiB9CiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250YWluZXIo
KSBjb25zdApAQCAtMzQ5OCw3ICszNDk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVj
dChSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGMKICAg
ICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllci0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkgJiYgaW5Db250YWluaW5nQmxv
Y2tDaGFpbih0aGlzLCBsYXllcikpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQb2ludCBkZWx0
YTsKICAgICAgICAgICAgICAgICBsYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVy
LCBkZWx0YSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVy
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVj
dChkZWx0YSwgbGF5ZXItPnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QobGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJv
cmRlckZvcihMYXlvdXRSZWN0KGRlbHRhLCBsYXllci0+c2l6ZSgpKSwgcmVuZGVyZXIoKSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGxheWVyID09IHJvb3RMYXllcikKQEAgLTM3MjMsNyAr
MzcyMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgICAgICAgICAgcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBjb250ZXh0LT5jbGlwUGF0aChjbGlwUGF0aC0+cGF0aChyb290UmVsYXRpdmVCb3VuZHMpLCBj
bGlwUGF0aC0+d2luZFJ1bGUoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jbGlwUGF0aChjbGlw
UGF0aC0+cGF0aChyb290UmVsYXRpdmVCb3VuZHMsIHJlbmRlcmVyKCktPnZpZXcoKS0+dmlld3Bv
cnRTaXplKCkpLCBjbGlwUGF0aC0+d2luZFJ1bGUoKSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUo
U1ZHKQogICAgICAgICBlbHNlIGlmIChzdHlsZS0+Y2xpcFBhdGgoKS0+Z2V0T3BlcmF0aW9uVHlw
ZSgpID09IENsaXBQYXRoT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMGMxMjU5ZDJlZGM0OTZj
YzdjOWVjOWNkMTVjMjkyOWY4MGVjOTJlMi4uNTcwOGQ5MjkzMzQ4ZTk0Y2M1Nzk0ZjExY2U4OWY0
NTc3YTA3ZDA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyBiYWtlZCBp
bnRvIGl0LCBhbmQgd2UgZG9uJ3Qgd2FudCB0aGF0LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHQ7CiAgICAgaWYgKG1fb3duaW5nTGF5ZXItPmhhc1RyYW5zZm9ybSgpKSB7Ci0gICAgICAgIHN0
eWxlLT5hcHBseVRyYW5zZm9ybSh0LCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFw
cGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgUmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1P
cmlnaW4pOworICAgICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odCwgdG9SZW5kZXJCb3gocmVu
ZGVyZXIoKSktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCksIHJlbmRlcmVyKCks
IFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJp
eFJlbmRlcmFibGUodCwgY29tcG9zaXRvcigpLT5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAg
ICAgfQogICAgIApAQCAtMTYxNyw5ICsxNjE3LDExIEBAIEZsb2F0UG9pbnQzRCBSZW5kZXJMYXll
ckJhY2tpbmc6OmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgSW50UmVjdCYgYm9yZGVyQm94
CiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKIAorICAg
IGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSA9IHJlbmRlcmVyKCktPnZpZXcoKS0+dmlld3Bv
cnRTaXplKCk7CisKICAgICBGbG9hdFBvaW50M0Qgb3JpZ2luOwotICAgIG9yaWdpbi5zZXRYKGZs
b2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSwgYm9yZGVyQm94Lndp
ZHRoKCkpKTsKLSAgICBvcmlnaW4uc2V0WShmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFu
c2Zvcm1PcmlnaW5ZKCksIGJvcmRlckJveC5oZWlnaHQoKSkpOworICAgIG9yaWdpbi5zZXRYKGZs
b2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSwgYm9yZGVyQm94Lndp
ZHRoKCksIHZpZXdwb3J0U2l6ZSkpOworICAgIG9yaWdpbi5zZXRZKGZsb2F0VmFsdWVGb3JMZW5n
dGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm9yZGVyQm94LmhlaWdodCgpLCB2aWV3cG9y
dFNpemUpKTsKICAgICBvcmlnaW4uc2V0WihzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpKTsKIAog
ICAgIHJldHVybiBvcmlnaW47CkBAIC0xNjMxLDEwICsxNjMzLDExIEBAIEZsb2F0UG9pbnQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29uc3QgSW50UmVjdCYg
Ym9yZGVyQm94CiAKICAgICBmbG9hdCBib3hXaWR0aCA9IGJvcmRlckJveC53aWR0aCgpOwogICAg
IGZsb2F0IGJveEhlaWdodCA9IGJvcmRlckJveC5oZWlnaHQoKTsKKyAgICBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUgPSByZW5kZXJlcigpLT52aWV3KCktPnZpZXdwb3J0U2l6ZSgpOwogCiAg
ICAgRmxvYXRQb2ludCBvcmlnaW47Ci0gICAgb3JpZ2luLnNldFgoZmxvYXRWYWx1ZUZvckxlbmd0
aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIGJveFdpZHRoKSk7Ci0gICAgb3JpZ2luLnNl
dFkoZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveEhl
aWdodCkpOworICAgIG9yaWdpbi5zZXRYKGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNw
ZWN0aXZlT3JpZ2luWCgpLCBib3hXaWR0aCwgdmlld3BvcnRTaXplKSk7CisgICAgb3JpZ2luLnNl
dFkoZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveEhl
aWdodCwgdmlld3BvcnRTaXplKSk7CiAKICAgICByZXR1cm4gb3JpZ2luOwogfQpAQCAtMTk5NSwx
NCArMTk5OCwxNCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91
YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5pbQogICAgIGJvb2wgZGlkQW5pbWF0
ZUZpbHRlciA9IGZhbHNlOwogI2VuZGlmCiAgICAgCi0gICAgaWYgKGhhc1RyYW5zZm9ybSAmJiBt
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94
KHJlbmRlcmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpLCBhbmltLCBr
ZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKKyAgICBpZiAoaGFzVHJhbnNm
b3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3RvciwgdG9S
ZW5kZXJCb3gocmVuZGVyZXIoKSktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCks
IHJlbmRlcmVyKCktPnZpZXcoKS0+dmlld3BvcnRTaXplKCksIGFuaW0sIGtleWZyYW1lcy5hbmlt
YXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAgICAgICBkaWRBbmltYXRlVHJhbnNmb3JtID0g
dHJ1ZTsKIAotICAgIGlmIChoYXNPcGFjaXR5ICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFuaW1hdGlvbk5h
bWUoKSwgdGltZU9mZnNldCkpCisgICAgaWYgKGhhc09wYWNpdHkgJiYgbV9ncmFwaGljc0xheWVy
LT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3RvciwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGFuaW0s
IGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAgICAgICBkaWRBbmlt
YXRlT3BhY2l0eSA9IHRydWU7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgaWYgKGhh
c0ZpbHRlciAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3IsIElu
dFNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCisg
ICAgaWYgKGhhc0ZpbHRlciAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJW
ZWN0b3IsIEludFNpemUoKSwgSW50U2l6ZSgpLCBhbmltLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFt
ZSgpLCB0aW1lT2Zmc2V0KSkKICAgICAgICAgZGlkQW5pbWF0ZUZpbHRlciA9IHRydWU7CiAjZW5k
aWYKIApAQCAtMjA0MCw3ICsyMDQzLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0
VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAg
ICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDAsIGNv
bXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIG9w
YWNpdHlWZWN0b3IuaW5zZXJ0KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDEsIGNvbXBvc2l0aW5n
T3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICAvLyBUaGUgYm94U2l6
ZSBwYXJhbSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmltYXRpb25zICh3aGljaCBjYW4g
b25seSBydW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFuIGVtcHR5IHNpemUgaGVyZS4K
LSAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVj
dG9yLCBJbnRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7Cisg
ICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3Rv
ciwgSW50U2l6ZSgpLCBJbnRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVyOjphbmlt
YXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRpbWVPZmZz
ZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qgb3Bh
Y2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmlu
YWwgb3BhY2l0eS4KICAgICAgICAgICAgICAgICB1cGRhdGVPcGFjaXR5KHRvU3R5bGUpOwogICAg
ICAgICAgICAgICAgIGRpZEFuaW1hdGVPcGFjaXR5ID0gdHJ1ZTsKQEAgLTIwNTQsNyArMjA1Nyw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVP
ZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlz
dCB0cmFuc2Zvcm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiAgICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSgwLCAmZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgdHJhbnNmb3JtVmVj
dG9yLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPnRyYW5z
Zm9ybSgpKSk7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
dHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVkQm9y
ZGVyQm94UmVjdCgpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0
aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRp
bWVPZmZzZXQpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRp
b24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVk
Qm9yZGVyQm94UmVjdCgpLnNpemUoKSwgcmVuZGVyZXIoKS0+dmlldygpLT52aWV3cG9ydFNpemUo
KSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRp
b24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZp
c2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zv
cm0uCiAgICAgICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKHRvU3R5bGUpOwogICAgICAgICAg
ICAgICAgIGRpZEFuaW1hdGVUcmFuc2Zvcm0gPSB0cnVlOwpAQCAtMjA2OSw3ICsyMDcyLDcgQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNl
dCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZp
bHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKTsKICAgICAgICAgICAgIGZp
bHRlclZlY3Rvci5pbnNlcnQobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDAsICZmcm9tU3R5bGUt
PmZpbHRlcigpKSk7CiAgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG5ldyBGaWx0ZXJB
bmltYXRpb25WYWx1ZSgxLCAmdG9TdHlsZS0+ZmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGlmICht
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3IsIEludFNpemUoKSwgZmls
dGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CisgICAgICAgICAgICBpZiAo
bV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBJbnRTaXplKCksIElu
dFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5z
aXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2li
bGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAg
ICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycyh0b1N0eWxlKTsKICAgICAgICAgICAgICAgICBk
aWRBbmltYXRlRmlsdGVyID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNYXJxdWVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcAppbmRleCA4OWIwOTNmNWE0ODQwMTMwNTZiZGJjMmIyMTNiMGU5MGRhNDY4MDBi
Li40YTViNDYzYWY3OTVlZjEwZmMxMWU0YzVmZGZjZTRhN2Q3MjJjY2M5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9p
ZCBSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKFRpbWVyPFJlbmRlck1hcnF1ZWU+KikKICAgICAg
ICAgfQogICAgICAgICBib29sIHBvc2l0aXZlID0gcmFuZ2UgPiAwOwogICAgICAgICBpbnQgY2xp
ZW50U2l6ZSA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXItPnJlbmRlckJveCgpLT5jbGllbnRX
aWR0aCgpIDogbV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKTsKLSAgICAgICAg
aW50IGluY3JlbWVudCA9IGFicyhpbnRWYWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNsaWVudFNpemUpKTsKKyAgICAgICAgaW50
IGluY3JlbWVudCA9IGFicyhtX2xheWVyLT5yZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aCht
X2xheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNsaWVudFNp
emUpKTsKICAgICAgICAgaW50IGN1cnJlbnRQb3MgPSAoaXNIb3Jpem9udGFsKCkgPyBtX2xheWVy
LT5zY3JvbGxYT2Zmc2V0KCkgOiBtX2xheWVyLT5zY3JvbGxZT2Zmc2V0KCkpOwogICAgICAgICBu
ZXdQb3MgPSAgY3VycmVudFBvcyArIChhZGRJbmNyZW1lbnQgPyBpbmNyZW1lbnQgOiAtaW5jcmVt
ZW50KTsKICAgICAgICAgaWYgKHBvc2l0aXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNjZmNjBmOTMxYzZlYTM3NjUzMDRhZjY2ZTM4YjA0ODk4
NGIyMTkwYy4uMWU0NTNlM2UwMTIxYTc4NGJhM2Q5ZTQ4NzM1NWJiOTBkZDhhZGVkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xNzUsNyArMTc1
LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAg
ICAgIC8vIEFkZCBpbiB0aGUgb3B0aW9uJ3MgdGV4dCBpbmRlbnQuICBXZSBjYW4ndCBjYWxjdWxh
dGUgcGVyY2VudGFnZSB2YWx1ZXMgZm9yIG5vdy4KICAgICAgICAgICAgIGZsb2F0IG9wdGlvbldp
ZHRoID0gMDsKICAgICAgICAgICAgIGlmIChSZW5kZXJTdHlsZSogb3B0aW9uU3R5bGUgPSBlbGVt
ZW50LT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLCAwLCB2aWV3KCkpOwor
ICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvcHRp
b25TdHlsZS0+dGV4dEluZGVudCgpLCAwKTsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgb3B0aW9uV2lkdGggKz0gc3R5bGUoKS0+Zm9udCgpLndpZHRo
KHRleHQpOwogICAgICAgICAgICAgbWF4T3B0aW9uV2lkdGggPSBtYXgobWF4T3B0aW9uV2lkdGgs
IG9wdGlvbldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
aW5kZXggYzc2YjAwYTFlNTk0NTNhZjA3ODgxY2M4ZTg2OWQ0ZmY0YTM4N2U2ZC4uYTJlNWM0MmUx
MDMxNDNkMjFhYTZlNTkwYjhhMWJjMjA3NDA4NWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNs
dWRlICJSZW5kZXJDb3VudGVyLmgiCkBAIC0xNDc1LDcgKzE0NzUsNyBAQCBib29sIFJlbmRlck9i
amVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYQogICAgICAgICBpbnQgYm9yZGVyUmlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJC
b3godGhpcyktPmJvcmRlclJpZ2h0KCkgOiAwOwogICAgICAgICBMYXlvdXRVbml0IGJveFdpZHRo
ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT53aWR0aCgpIDogTGF5b3V0VW5pdCgpOwog
ICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQgPSBtaW48TGF5b3V0
VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50LnJpZ2h0KCksIG1pbjxMYXlvdXRVbml0PihuZXdCb3Vu
ZHMud2lkdGgoKSwgb2xkQm91bmRzLndpZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0Pihib3JkZXJSaWdodCwgbWF4PExheW91dFVuaXQ+KHZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94
V2lkdGgsIHYpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1
cygpLndpZHRoKCksIGJveFdpZHRoLCB2KSkpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldp
ZHRoID0gbWF4PExheW91dFVuaXQ+KGJvcmRlclJpZ2h0LCBtYXg8TGF5b3V0VW5pdD4odmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBib3hXaWR0
aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgoKSwgYm94V2lkdGgpKSk7CiAgICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9
IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIGJvcmRlcldp
ZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBtYXg8TGF5b3V0VW5pdD4ob3V0bGlu
ZVdpZHRoLCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFJlY3QgcmlnaHRSZWN0KG5ld091
dGxpbmVCb3gueCgpICsgbWluKG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53
aWR0aCgpKSAtIGRlY29yYXRpb25zV2lkdGgsCiAgICAgICAgICAgICBuZXdPdXRsaW5lQm94Lnko
KSwKQEAgLTE0OTUsNyArMTQ5NSw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJM
YXlvdXRJZk5lZWRlZChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhCiAgICAgICAg
IGludCBib3JkZXJCb3R0b20gPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlckJv
dHRvbSgpIDogMDsKICAgICAgICAgTGF5b3V0VW5pdCBib3hIZWlnaHQgPSBpc0JveCgpID8gdG9S
ZW5kZXJCb3godGhpcyktPmhlaWdodCgpIDogTGF5b3V0VW5pdCgpOwogICAgICAgICBMYXlvdXRV
bml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gbWluPExheW91dFVuaXQ+KC1pbnNldFNo
YWRvd0V4dGVudC5ib3R0b20oKSwgbWluPExheW91dFVuaXQ+KG5ld0JvdW5kcy5oZWlnaHQoKSwg
b2xkQm91bmRzLmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0g
bWF4PExheW91dFVuaXQ+KGJvcmRlckJvdHRvbSwgbWF4PExheW91dFVuaXQ+KHZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCktPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0
LCB2KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5o
ZWlnaHQoKSwgYm94SGVpZ2h0LCB2KSkpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlckhlaWdo
dCA9IG1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20sIG1heDxMYXlvdXRVbml0Pih2YWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIGJveEhl
aWdodCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCku
aGVpZ2h0KCksIGJveEhlaWdodCkpKTsKICAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0aW9uc0hl
aWdodCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIGJv
cmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50KSArIG1heDxMYXlvdXRVbml0
PihvdXRsaW5lV2lkdGgsIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIExheW91dFJlY3QgYm90dG9t
UmVjdChuZXdPdXRsaW5lQm94LngoKSwKICAgICAgICAgICAgIG1pbihuZXdPdXRsaW5lQm94Lm1h
eFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gZGVjb3JhdGlvbnNIZWlnaHQsCkBAIC0zMTM3
LDYgKzMxMzcsNDEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5zZXRDdXN0b21B
bGxvY2F0aW9uKHRydWUpOwogfQogCitzdGF0aWMgSW50U2l6ZSBvcHRpb25hbFZpZXdwb3J0U2l6
ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sK
KyAgICByZXR1cm4gbGVuZ3RoLmlzVmlld3BvcnRQZXJjZW50YWdlKCkgPyByZW5kZXJlci0+dmll
dygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKTsKK30KKworaW50IFJlbmRlck9iamVjdDo6
bWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0
IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBjb25zdAoreworICAgIHJldHVy
biBXZWJDb3JlOjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUs
IG9wdGlvbmFsVmlld3BvcnRTaXplKHRoaXMsIGxlbmd0aCksIHJvdW5kUGVyY2VudGFnZXMpOwor
fQorCitpbnQgUmVuZGVyT2JqZWN0OjppbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykgY29u
c3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6aW50VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhp
bXVtVmFsdWUsIG9wdGlvbmFsVmlld3BvcnRTaXplKHRoaXMsIGxlbmd0aCksIHJvdW5kUGVyY2Vu
dGFnZXMpOworfQorCitMYXlvdXRVbml0IFJlbmRlck9iamVjdDo6bWluaW11bVZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCBy
b3VuZFBlcmNlbnRhZ2VzKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjptaW5pbXVtVmFs
dWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIG9wdGlvbmFsVmlld3BvcnRTaXplKHRo
aXMsIGxlbmd0aCksIHJvdW5kUGVyY2VudGFnZXMpOworfQorCitMYXlvdXRVbml0IFJlbmRlck9i
amVjdDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4
aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OnZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCBvcHRpb25hbFZpZXdw
b3J0U2l6ZSh0aGlzLCBsZW5ndGgpLCByb3VuZFBlcmNlbnRhZ2VzKTsKK30KKworZmxvYXQgUmVu
ZGVyT2JqZWN0OjpmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6dmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIG9wdGlvbmFsVmlld3BvcnRTaXplKHRoaXMs
IGxlbmd0aCkpOworfQorCitmbG9hdCBSZW5kZXJPYmplY3Q6OmZsb2F0VmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6dmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIG9wdGlv
bmFsVmlld3BvcnRTaXplKHRoaXMsIGxlbmd0aCkpOworfQorCiAjaWYgRU5BQkxFKFNWRykKIAog
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIFJlbmRlck9iamVjdDo6dG9SZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5k
ZXggMjMzNWM1ZTAwODc2OWFlZDQyODg5ZDZkYWI3MjY3ODk0ZDk3OTgyNC4uODBiOGNkZDc1N2E4
ZGFkZjgxZjBlNjliMzc1OTVkMjA4OTdmNTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaApAQCAtMjY3LDYgKzI2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAg
aW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1h
eGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0OworICAgIGlu
dCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1
ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0OworICAgIExheW91dFVuaXQg
bWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZh
bHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkgY29uc3Q7CisgICAgTGF5b3V0VW5p
dCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwg
Ym9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0OworICAgIGZsb2F0IGZsb2F0VmFs
dWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpIGNvbnN0
OworICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4
aW11bVZhbHVlKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMuIERhbmdlcm91
cyB0byB1c2UhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApp
bmRleCAxMTk5ZjBlYzkyZDcwZWIwMjkwNzc3M2Q1NmVmODZhYzI1ZDQ0YTZiLi41MmRjNTk3NTll
NzM4ZjdlYWIzOGEyZWUwMWNkMzA1MTgyMjRhYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFJlbmRlclJl
cGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlm
IHdlIGhhdmUgYSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3Jl
Z3JvdW5kIGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCiAgICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgUm91bmRlZFJlY3Qgcm91bmRlZElubmVyUmVj
dCA9IHN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsCisgICAgICAg
ICAgICBSb3VuZGVkUmVjdCByb3VuZGVkSW5uZXJSZWN0ID0gc3R5bGUoKS0+Z2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKHBhaW50UmVjdCwgdGhpcywKICAgICAgICAgICAgICAgICBwYWRkaW5nVG9w
KCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9tKCksIHBhZGRp
bmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKSwg
dHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8u
Y29udGV4dCwgcGFpbnRSZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IGUx
N2I4NTNlNzE3YTAzMDk2ZWVhYTA0ZjFiOTZkZTIzNjdmYTQ4NjkuLjNlOTU2NDZhZWU2M2ZmOTJh
YWZmMzBkY2UxNWMzMjQ3MWY3Y2EzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclBhcnQ6OmxheW91dFZlcnRpY2FsUGFydCgpCiAgICAgfSAKIH0KIAotc3RhdGlj
IGludCBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0
IExlbmd0aCYgbGVuZ3RoLCBpbnQgY29udGFpbmluZ0xlbmd0aCwgUmVuZGVyVmlldyogcmVuZGVy
VmlldykKK3N0YXRpYyBpbnQgY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKFNpemVUeXBlIHNp
emVUeXBlLCBjb25zdCBMZW5ndGgmIGxlbmd0aCwgaW50IGNvbnRhaW5pbmdMZW5ndGgsIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAoIWxlbmd0aC5pc0ludHJpbnNpY09y
QXV0bygpIHx8IChzaXplVHlwZSA9PSBNaW5TaXplICYmIGxlbmd0aC5pc0F1dG8oKSkpCi0gICAg
ICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBjb250YWluaW5nTGVuZ3Ro
LCByZW5kZXJWaWV3KTsKKyAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5n
dGgsIGNvbnRhaW5pbmdMZW5ndGgsIHZpZXdwb3J0U2l6ZSk7CiAgICAgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKTsKIH0KIApAQCAtOTgsMzYgKzk4
LDM2IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkK
IHsKICAgICBpZiAoIW1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpKQogICAgICAgICByZXR1
cm47Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKKyAgICBjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUgPSB2aWV3KCktPnZpZXdwb3J0U2l6ZSgpOwogICAgIC8vIEZJWE1F
OiBXZSBhcmUgcXVlcnlpbmcgbGF5b3V0IGluZm9ybWF0aW9uIGJ1dCBub3RoaW5nIGd1YXJhbnRl
ZXMgdGhhdCBpdCdzIHVwLXRvLWRhdGUsIGVzcGVjaWFsbHkgc2luY2Ugd2UgYXJlIGNhbGxlZCBh
dCBzdHlsZSBjaGFuZ2UuCiAgICAgLy8gRklYTUU6IFF1ZXJ5aW5nIHRoZSBzdHlsZSdzIGJvcmRl
ciBpbmZvcm1hdGlvbiBkb2Vzbid0IHdvcmsgb24gdGFibGUgY2VsbHMgd2l0aCBjb2xsYXBzaW5n
IGJvcmRlcnMuCiAgICAgaW50IHZpc2libGVTaXplID0gbV9zY3JvbGxiYXItPm93bmluZ1JlbmRl
cmVyKCktPndpZHRoKCkgLSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+c3R5bGUoKS0+
Ym9yZGVyTGVmdFdpZHRoKCkgLSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+c3R5bGUo
KS0+Ym9yZGVyUmlnaHRXaWR0aCgpOwotICAgIGludCB3ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVz
c1VzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPndpZHRoKCksIHZpc2libGVTaXpl
LCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWluV2lkdGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNz
VXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bWluV2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZp
ZXcpOwotICAgIGludCBtYXhXaWR0aCA9IHN0eWxlKCktPm1heFdpZHRoKCkuaXNVbmRlZmluZWQo
KSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bWF4
V2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOworICAgIGludCB3ID0gY2FsY1Njcm9s
bGJhclRoaWNrbmVzc1VzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPndpZHRoKCks
IHZpc2libGVTaXplLCB2aWV3cG9ydFNpemUpOworICAgIGludCBtaW5XaWR0aCA9IGNhbGNTY3Jv
bGxiYXJUaGlja25lc3NVc2luZyhNaW5TaXplLCBzdHlsZSgpLT5taW5XaWR0aCgpLCB2aXNpYmxl
U2l6ZSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLT5tYXhXaWR0
aCgpLmlzVW5kZWZpbmVkKCkgPyB3IDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNp
emUsIHN0eWxlKCktPm1heFdpZHRoKCksIHZpc2libGVTaXplLCB2aWV3cG9ydFNpemUpOwogICAg
IHNldFdpZHRoKG1heChtaW5XaWR0aCwgbWluKG1heFdpZHRoLCB3KSkpOwogICAgIAogICAgIC8v
IEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBhbG9uZyB0aGUg
YXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKLSAgICBtX21hcmdpbkJveC5zZXRMZWZ0KG1pbmltdW1W
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIHZpc2libGVTaXplLCByZW5kZXJW
aWV3KSk7Ci0gICAgbV9tYXJnaW5Cb3guc2V0UmlnaHQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPm1hcmdpblJpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KSk7CisgICAgbV9t
YXJnaW5Cb3guc2V0TGVmdChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVm
dCgpLCB2aXNpYmxlU2l6ZSkpOworICAgIG1fbWFyZ2luQm94LnNldFJpZ2h0KG1pbmltdW1WYWx1
ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCB2aXNpYmxlU2l6ZSkpOwogfQogCiB2
b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQoKQogewogICAg
IGlmICghbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOworICAgIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSA9IHZpZXcoKS0+dmlld3BvcnRTaXplKCk7CiAgICAgLy8gRklYTUU6IFdlIGFy
ZSBxdWVyeWluZyBsYXlvdXQgaW5mb3JtYXRpb24gYnV0IG5vdGhpbmcgZ3VhcmFudGVlcyB0aGF0
IGl0J3MgdXAtdG8tZGF0ZSwgZXNwZWNpYWxseSBzaW5jZSB3ZSBhcmUgY2FsbGVkIGF0IHN0eWxl
IGNoYW5nZS4KICAgICAvLyBGSVhNRTogUXVlcnlpbmcgdGhlIHN0eWxlJ3MgYm9yZGVyIGluZm9y
bWF0aW9uIGRvZXNuJ3Qgd29yayBvbiB0YWJsZSBjZWxscyB3aXRoIGNvbGxhcHNpbmcgYm9yZGVy
cy4KICAgICBpbnQgdmlzaWJsZVNpemUgPSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+
aGVpZ2h0KCkgLSAgbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRl
clRvcFdpZHRoKCkgLSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9y
ZGVyQm90dG9tV2lkdGgoKTsKLSAgICBpbnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2lu
ZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5oZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJl
bmRlclZpZXcpOwotICAgIGludCBtaW5IZWlnaHQgPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNp
bmcoTWluU2l6ZSwgc3R5bGUoKS0+bWluSGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3
KTsKLSAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+bWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQo
KSA/IGggOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bWF4
SGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgaCA9IGNhbGNTY3Jv
bGxiYXJUaGlja25lc3NVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5oZWlnaHQo
KSwgdmlzaWJsZVNpemUsIHZpZXdwb3J0U2l6ZSk7CisgICAgaW50IG1pbkhlaWdodCA9IGNhbGNT
Y3JvbGxiYXJUaGlja25lc3NVc2luZyhNaW5TaXplLCBzdHlsZSgpLT5taW5IZWlnaHQoKSwgdmlz
aWJsZVNpemUsIHZpZXdwb3J0U2l6ZSk7CisgICAgaW50IG1heEhlaWdodCA9IHN0eWxlKCktPm1h
eEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoIDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5n
KE1heFNpemUsIHN0eWxlKCktPm1heEhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXpl
KTsKICAgICBzZXRIZWlnaHQobWF4KG1pbkhlaWdodCwgbWluKG1heEhlaWdodCwgaCkpKTsKIAog
ICAgIC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBhbG9u
ZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKLSAgICBtX21hcmdpbkJveC5zZXRUb3AobWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblRvcCgpLCB2aXNpYmxlU2l6ZSwgcmVu
ZGVyVmlldykpOwotICAgIG1fbWFyZ2luQm94LnNldEJvdHRvbShtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS0+bWFyZ2luQm90dG9tKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KSk7Cisg
ICAgbV9tYXJnaW5Cb3guc2V0VG9wKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJn
aW5Ub3AoKSwgdmlzaWJsZVNpemUpKTsKKyAgICBtX21hcmdpbkJveC5zZXRCb3R0b20obWluaW11
bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLCB2aXNpYmxlU2l6ZSkpOwog
fQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDYwODVm
YThhNzVhYWUzMGUxOGE4YzU2Yjc0ZDA1YWMyY2FjM2Q3MWUuLmUwNjY5NGU5Y2ViMjQxYjljZDA0
NGMzNDMzMjlkODY4NTBkYmQxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHZvaWQgUmVuZGVyVGFibGU6OnVwZGF0ZUxvZ2lj
YWxXaWR0aCgpCiAgICAgfQogCiAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2Nr
KCk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKIAogICAgIExheW91dFVu
aXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9y
Q29udGVudCgpOwogICAgIGJvb2wgaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayA9IGNi
LT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IHN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCk7CkBAIC0yNTcsOCArMjU2LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6
dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICAgICAgc2V0TG9naWNhbFdpZHRoKGNvbnZlcnRTdHls
ZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRXaWR0aChzdHlsZUxvZ2ljYWxXaWR0aCwgY29udGFpbmVy
V2lkdGhJbklubGluZURpcmVjdGlvbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBTdWJ0cmFj
dCBvdXQgYW55IGZpeGVkIG1hcmdpbnMgZnJvbSBvdXIgYXZhaWxhYmxlIHdpZHRoIGZvciBhdXRv
IHdpZHRoIHRhYmxlcy4KLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpOwotICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCByZW5kZXJWaWV3KTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgpOworICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0
aChzdHlsZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAg
TGF5b3V0VW5pdCBtYXJnaW5Ub3RhbCA9IG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kOwogCiAgICAg
ICAgIC8vIFN1YnRyYWN0IG91dCBvdXIgbWFyZ2lucyB0byBnZXQgdGhlIGF2YWlsYWJsZSBjb250
ZW50IHdpZHRoLgpAQCAtMzA1LDggKzMwNCw4IEBAIHZvaWQgUmVuZGVyVGFibGU6OnVwZGF0ZUxv
Z2ljYWxXaWR0aCgpCiAgICAgICAgIHNldE1hcmdpblN0YXJ0KG1hcmdpblZhbHVlcy5tX3N0YXJ0
KTsKICAgICAgICAgc2V0TWFyZ2luRW5kKG1hcmdpblZhbHVlcy5tX2VuZCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
Pm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOwotICAg
ICAgICBzZXRNYXJnaW5FbmQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVu
ZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgc2V0TWFy
Z2luU3RhcnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblN0YXJ0KCksIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJnaW5FbmQobWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsK
ICAgICB9CiB9CiAKQEAgLTMxOSw3ICszMTgsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpj
b252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoY29uc3QgTGVuZ3RoJiBzdAog
ICAgIGlmIChpc0NTU1RhYmxlICYmIHN0eWxlTG9naWNhbFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYg
c3R5bGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmIHN0eWxlKCktPmJveFNpemluZygpID09
IENPTlRFTlRfQk9YKQogICAgICAgICAgICAgYm9yZGVycyA9IGJvcmRlclN0YXJ0KCkgKyBib3Jk
ZXJFbmQoKSArIChjb2xsYXBzZUJvcmRlcnMoKSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdTdGFy
dCgpICsgcGFkZGluZ0VuZCgpKTsKIAotICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGVMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoLCB2aWV3KCkpICsgYm9yZGVyczsKKyAg
ICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9naWNhbFdpZHRoLCBhdmFpbGFi
bGVXaWR0aCkgKyBib3JkZXJzOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0
U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmIHN0eWxlTG9n
aWNhbEhlaWdodCkKQEAgLTMzOCw3ICszMzcsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpj
b252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAg
ICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50KCkpCiAgICAgICAgIGNv
bXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHls
ZUxvZ2ljYWxIZWlnaHQpOwogICAgIGVsc2UgaWYgKHN0eWxlTG9naWNhbEhlaWdodC5pc1ZpZXdw
b3J0UGVyY2VudGFnZSgpKQotICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgoc3R5bGVMb2dpY2FsSGVpZ2h0LCAwLCB2aWV3KCkpOworICAgICAgICBj
b21wdXRlZExvZ2ljYWxIZWlnaHQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVMb2dpY2Fs
SGVpZ2h0LCAwKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCBiMWZmNWZjNGQzOTU5
YTU4M2RkYjY3NTZkZjE3YzFmMDcyMDZjN2JiLi44ZDJhMjQ5N2ZmOGM2ZmRjOTRjNGVlMTAzMWJl
YTY0ZTM0ZDI0ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXMgdG9vIG11Y2ggd29yaywgYW5kIGlz
IHZlcnkgaG90IGR1cmluZyB0YWJsZSBsYXlvdXQhCiAgICAgICAgIGludCBhZGp1c3RlZExvZ2lj
YWxIZWlnaHQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsSGVpZ2h0KCkgLSAoaW50cmluc2ljUGFkZGlu
Z0JlZm9yZSgpICsgaW50cmluc2ljUGFkZGluZ0FmdGVyKCkpOwotICAgICAgICBpbnQgc3R5bGVM
b2dpY2FsSGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLCAw
LCB2aWV3KCkpOworICAgICAgICBpbnQgc3R5bGVMb2dpY2FsSGVpZ2h0ID0gdmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLCAwKTsKICAgICAgICAgLy8gSW4gc3RyaWN0IG1v
ZGUsIGJveC1zaXppbmc6IGNvbnRlbnQtYm94IGRvIHRoZSByaWdodCB0aGluZyBhbmQgYWN0dWFs
bHkgYWRkIGluIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuCiAgICAgICAgIC8vIENhbGwgY29tcHV0
ZWRDU1NQYWRkaW5nKiBkaXJlY3RseSB0byBhdm9pZCBpbmNsdWRpbmcgaW1wbGljaXRQYWRkaW5n
LgogICAgICAgICBpZiAoIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpICYmIHN0eWxlKCktPmJv
eFNpemluZygpICE9IEJPUkRFUl9CT1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDQxMTJkM2ZiMjkyMWNiZjNhZWY1NDU4OTllNzRj
OTgwYzJmMTc5MWUuLjk0NWJkZTdlMmFhYmYyZTA3MWM1YzA4YWM2ZTU4ZDFkZDhhMDFmMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBA
IC0yODMsNyArMjgzLDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxI
ZWlnaHQoKQogICAgICAgICBMYXlvdXRVbml0IGJhc2VsaW5lRGVzY2VudCA9IDA7CiAKICAgICAg
ICAgLy8gT3VyIGJhc2Ugc2l6ZSBpcyB0aGUgYmlnZ2VzdCBsb2dpY2FsIGhlaWdodCBmcm9tIG91
ciBjZWxscycgc3R5bGVzIChleGNsdWRpbmcgcm93IHNwYW5uaW5nIGNlbGxzKS4KLSAgICAgICAg
bV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3JdICsgbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LCAwLCB2aWV3UmVuZGVyZXIpLnJvdW5kKCksIDApOwor
ICAgICAgICBtX3Jvd1Bvc1tyICsgMV0gPSBtYXgobV9yb3dQb3Nbcl0gKyBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQsIDApLnJvdW5kKCksIDApOwogCiAgICAg
ICAgIFJvdyYgcm93ID0gbV9ncmlkW3JdLnJvdzsKICAgICAgICAgdW5zaWduZWQgdG90YWxDb2xz
ID0gcm93LnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGUw
ZDJhMDNmN2UxZjM0OWVkMTY1NmI3ZjliNmQwMTRlMWQzNTcxYTcuLmY0OWE3MDE4NTk0YTM4YTZj
ZjNjMmE2NGEzNjgzYjhjMWY2NjYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaApAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQg
Y2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApOwogCi0g
ICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCAwLCB2aWV3KCkpOyB9Ci0gICAg
dmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIDAsIHZpZXcoKSk7IH0KKyAgICB2
aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1
ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIDApOyB9CisgICAgdmlydHVhbCBMYXlv
dXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIDApOyB9CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbQppbmRleCA5NjdjZjlhNWM0ZTEy
MGRmYTJmYWE4YWMwYzA1NGU1YThkYmE1ZjNlLi4yN2M3OTc5MmFhNGFmODgwMDA5NzZlNDY3ZmI4
MTI4MjA3ZTUyZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWNTaGFyZWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjU2hhcmVkLm1tCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFj
U2hhcmVkOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29u
c3QgUAogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7CiAKLSAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBvLT5zdHlsZSgpLT5nZXRS
b3VuZGVkQm9yZGVyRm9yKHIsIG8tPnZpZXcoKSk7CisgICAgUm91bmRlZFJlY3QgYm9yZGVyID0g
by0+c3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihyLCBvKTsKICAgICBpbnQgcmFkaXVzID0g
Ym9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAgICBDR0NvbG9yU3BhY2VSZWYg
Y3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCBjMjBmYmJiMDdhYmM5MjNjY2I0MDYzZDg2YmY4YWY1
MGU5NzIyNTcxLi42YWIzNDUyYjcwMGZmZWI3ZTEyZWU1ZjVjMmRlNjQ0ZTY1M2I2NDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMzA1LDcgKzMwNSw3
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdl
IGhhdmUgYSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3Jv
dW5kIGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5zYXZlKCk7Ci0gICAgICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRJbm5lclJlY3QgPSBzdHlsZSgp
LT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKKyAgICAgICAgUm91bmRlZFJl
Y3Qgcm91bmRlZElubmVyUmVjdCA9IHN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihi
b3JkZXJSZWN0LCB0aGlzLAogICAgICAgICAgICAgcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCks
IHBhZGRpbmdCb3R0b20oKSArIGJvcmRlckJvdHRvbSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVy
TGVmdCgpLCBwYWRkaW5nUmlnaHQoKSArIGJvcmRlclJpZ2h0KCksIHRydWUsIHRydWUpOwogICAg
ICAgICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8uY29udGV4dCwgYm9yZGVyUmVjdCwg
cm91bmRlZElubmVyUmVjdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guY3BwCmluZGV4IDg3OWM5OWJjMzQ3YmVlMGNkMDdkMWI1ZjMwMmIxYzQxZjA1MDc2
ZTUuLjQyY2YyY2E5YjIyYjVhZTRmOTY4MzUxYTk0OTJkODU1ZGE3MWRkZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTkxOCwxMCArOTE4LDEwIEBA
IExheW91dFVuaXQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVC
b3gqIGJveCwgVmVydGljYWxQb3NpdGlvCiAgICAgICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWln
aHQ7CiAgICAgICAgICAgICAvL1BlciBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0
Lmh0bWwjcHJvcGRlZi12ZXJ0aWNhbC1hbGlnbjogJ1BlcmNlbnRhZ2VzOiByZWZlciB0byB0aGUg
J2xpbmUtaGVpZ2h0JyBvZiB0aGUgZWxlbWVudCBpdHNlbGYnLgogICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLT5zdHlsZSgpLT52ZXJ0aWNhbEFsaWduTGVuZ3RoKCkuaXNQZXJjZW50KCkpCi0gICAg
ICAgICAgICAgICAgbGluZUhlaWdodCA9IHJlbmRlcmVyLT5zdHlsZSgpLT5jb21wdXRlZExpbmVI
ZWlnaHQoKTsKKyAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcmVuZGVyZXItPnN0eWxlKCkt
PmNvbXB1dGVkTGluZUhlaWdodChyZW5kZXJlcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgbGluZUhlaWdodCA9IHJlbmRlcmVyLT5saW5lSGVpZ2h0KGZpcnN0TGluZSwgbGlu
ZURpcmVjdGlvbik7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uIC09IHZhbHVlRm9yTGVu
Z3RoKHJlbmRlcmVyLT5zdHlsZSgpLT52ZXJ0aWNhbEFsaWduTGVuZ3RoKCksIGxpbmVIZWlnaHQs
IHJlbmRlcmVyLT52aWV3KCkpOworICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiAtPSByZW5k
ZXJlci0+dmFsdWVGb3JMZW5ndGgocmVuZGVyZXItPnN0eWxlKCktPnZlcnRpY2FsQWxpZ25MZW5n
dGgoKSwgbGluZUhlaWdodCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IGIyMTM1OGZkYzhmYjRmN2Vm
NTUwMDdhZGFlMTk2OWY4MGNkZmE4ZDguLmFhY2I1YzZmYTIwZWUxNDcxNWNmMDc1NTBmOWE2ZGVm
NjI5YTMwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmNwcApAQCAtNTAsMTUgKzUwLDE1IEBAIGJvb2wgQmFzaWNTaGFwZTo6Y2FuQmxlbmQoY29u
c3QgQmFzaWNTaGFwZSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
QmFzaWNTaGFwZVJlY3RhbmdsZTo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94KQordm9pZCBCYXNpY1NoYXBlUmVjdGFuZ2xlOjpwYXRoKFBhdGgmIHBhdGgsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkK
IHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
RmxvYXRSZWN0KGZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCBib3VuZGluZ0JveC53aWR0aCgpKSAr
IGJvdW5kaW5nQm94LngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dFZhbHVlRm9yTGVuZ3RoKG1feSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpICsgYm91bmRpbmdCb3gu
eSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5n
dGgobV93aWR0aCwgYm91bmRpbmdCb3gud2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChtX2hlaWdodCwgYm91bmRpbmdCb3guaGVp
Z2h0KCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZShtX2Nvcm5lclJhZGl1
c1guaXNVbmRlZmluZWQoKSA/IDAgOiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fY29ybmVyUmFkaXVz
WCwgYm91bmRpbmdCb3gud2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9jb3JuZXJSYWRpdXNZLmlzVW5kZWZpbmVkKCkgPyAwIDogZmxvYXRWYWx1ZUZvckxlbmd0
aChtX2Nvcm5lclJhZGl1c1ksIGJvdW5kaW5nQm94LmhlaWdodCgpKSkpOworICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSZWN0KGZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCBib3VuZGluZ0Jv
eC53aWR0aCgpLCB2aWV3cG9ydFNpemUpICsgYm91bmRpbmdCb3gueCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgobV95LCBib3VuZGluZ0Jv
eC5oZWlnaHQoKSwgdmlld3BvcnRTaXplKSArIGJvdW5kaW5nQm94LnkoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fd2lkdGgsIGJvdW5k
aW5nQm94LndpZHRoKCksIHZpZXdwb3J0U2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChtX2hlaWdodCwgYm91bmRpbmdCb3guaGVpZ2h0
KCksIHZpZXdwb3J0U2l6ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplKG1f
Y29ybmVyUmFkaXVzWC5pc1VuZGVmaW5lZCgpID8gMCA6IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9j
b3JuZXJSYWRpdXNYLCBib3VuZGluZ0JveC53aWR0aCgpLCB2aWV3cG9ydFNpemUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29ybmVyUmFkaXVzWS5pc1VuZGVmaW5lZCgp
ID8gMCA6IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9jb3JuZXJSYWRpdXNZLCBib3VuZGluZ0JveC5o
ZWlnaHQoKSwgdmlld3BvcnRTaXplKSkpOwogfQogCiBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IEJh
c2ljU2hhcGVSZWN0YW5nbGU6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqIG90aGVyLCBkb3VibGUg
cHJvZ3Jlc3MpIGNvbnN0CkBAIC03OCwxMyArNzgsMTMgQEAgUGFzc1JlZlB0cjxCYXNpY1NoYXBl
PiBCYXNpY1NoYXBlUmVjdGFuZ2xlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlKiBvdGhlciwgZG91
YmwKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBCYXNpY1NoYXBlQ2ly
Y2xlOjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCit2b2lk
IEJhc2ljU2hhcGVDaXJjbGU6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIEFTU0VSVChwYXRo
LmlzRW1wdHkoKSk7CiAgICAgZmxvYXQgZGlhZ29uYWwgPSBzcXJ0ZigoYm91bmRpbmdCb3gud2lk
dGgoKSAqIGJvdW5kaW5nQm94LndpZHRoKCkgKyBib3VuZGluZ0JveC5oZWlnaHQoKSAqIGJvdW5k
aW5nQm94LmhlaWdodCgpKSAvIDIpOwotICAgIGZsb2F0IGNlbnRlclggPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKG1fY2VudGVyWCwgYm91bmRpbmdCb3gud2lkdGgoKSk7Ci0gICAgZmxvYXQgY2VudGVy
WSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9jZW50ZXJZLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7
Ci0gICAgZmxvYXQgcmFkaXVzID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3JhZGl1cywgZGlhZ29u
YWwpOworICAgIGZsb2F0IGNlbnRlclggPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fY2VudGVyWCwg
Ym91bmRpbmdCb3gud2lkdGgoKSwgdmlld3BvcnRTaXplKTsKKyAgICBmbG9hdCBjZW50ZXJZID0g
ZmxvYXRWYWx1ZUZvckxlbmd0aChtX2NlbnRlclksIGJvdW5kaW5nQm94LmhlaWdodCgpLCB2aWV3
cG9ydFNpemUpOworICAgIGZsb2F0IHJhZGl1cyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9yYWRp
dXMsIGRpYWdvbmFsLCB2aWV3cG9ydFNpemUpOwogICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJl
Y3QoY2VudGVyWCAtIHJhZGl1cyArIGJvdW5kaW5nQm94LngoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlbnRlclkgLSByYWRpdXMgKyBib3VuZGluZ0JveC55KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYWRpdXMgKiAyLApAQCAtMTAzLDEzICsxMDMsMTMgQEAg
UGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlQ2lyY2xlOjpibGVuZChjb25zdCBCYXNp
Y1NoYXBlKiBvdGhlciwgZG91YmxlIHAKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
IAotdm9pZCBCYXNpY1NoYXBlRWxsaXBzZTo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94KQordm9pZCBCYXNpY1NoYXBlRWxsaXBzZTo6cGF0aChQYXRoJiBwYXRo
LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKLSAgICBmbG9hdCBjZW50ZXJYID0g
ZmxvYXRWYWx1ZUZvckxlbmd0aChtX2NlbnRlclgsIGJvdW5kaW5nQm94LndpZHRoKCkpOwotICAg
IGZsb2F0IGNlbnRlclkgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fY2VudGVyWSwgYm91bmRpbmdC
b3guaGVpZ2h0KCkpOwotICAgIGZsb2F0IHJhZGl1c1ggPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1f
cmFkaXVzWCwgYm91bmRpbmdCb3gud2lkdGgoKSk7Ci0gICAgZmxvYXQgcmFkaXVzWSA9IGZsb2F0
VmFsdWVGb3JMZW5ndGgobV9yYWRpdXNZLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7CisgICAgZmxv
YXQgY2VudGVyWCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9jZW50ZXJYLCBib3VuZGluZ0JveC53
aWR0aCgpLCB2aWV3cG9ydFNpemUpOworICAgIGZsb2F0IGNlbnRlclkgPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKG1fY2VudGVyWSwgYm91bmRpbmdCb3guaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSk7Cisg
ICAgZmxvYXQgcmFkaXVzWCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobV9yYWRpdXNYLCBib3VuZGlu
Z0JveC53aWR0aCgpLCB2aWV3cG9ydFNpemUpOworICAgIGZsb2F0IHJhZGl1c1kgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKG1fcmFkaXVzWSwgYm91bmRpbmdCb3guaGVpZ2h0KCksIHZpZXdwb3J0U2l6
ZSk7CiAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChjZW50ZXJYIC0gcmFkaXVzWCArIGJv
dW5kaW5nQm94LngoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgLSBy
YWRpdXNZICsgYm91bmRpbmdCb3gueSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmFkaXVzWCAqIDIsCkBAIC0xMjksNyArMTI5LDcgQEAgUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBC
YXNpY1NoYXBlRWxsaXBzZTo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSogb3RoZXIsIGRvdWJsZQog
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi12b2lkIEJhc2ljU2hhcGVQb2x5Z29u
OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCit2b2lkIEJh
c2ljU2hhcGVQb2x5Z29uOjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBBU1NFUlQocGF0aC5p
c0VtcHR5KCkpOwogICAgIEFTU0VSVCghKG1fdmFsdWVzLnNpemUoKSAlIDIpKTsKQEAgLTEzOCwx
MSArMTM4LDExIEBAIHZvaWQgQmFzaWNTaGFwZVBvbHlnb246OnBhdGgoUGF0aCYgcGF0aCwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChmbG9hdFZhbHVlRm9yTGVuZ3RoKG1f
dmFsdWVzLmF0KDApLCBib3VuZGluZ0JveC53aWR0aCgpKSArIGJvdW5kaW5nQm94LngoKSwKLSAg
ICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ZhbHVlcy5hdCgxKSwgYm91bmRpbmdCb3guaGVp
Z2h0KCkpICsgYm91bmRpbmdCb3gueSgpKSk7CisgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChm
bG9hdFZhbHVlRm9yTGVuZ3RoKG1fdmFsdWVzLmF0KDApLCBib3VuZGluZ0JveC53aWR0aCgpLCB2
aWV3cG9ydFNpemUpICsgYm91bmRpbmdCb3gueCgpLAorICAgICAgICBmbG9hdFZhbHVlRm9yTGVu
Z3RoKG1fdmFsdWVzLmF0KDEpLCBib3VuZGluZ0JveC5oZWlnaHQoKSwgdmlld3BvcnRTaXplKSAr
IGJvdW5kaW5nQm94LnkoKSkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAyOyBpIDwgbGVuZ3RoOyBp
ID0gaSArIDIpIHsKLSAgICAgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChmbG9hdFZhbHVl
Rm9yTGVuZ3RoKG1fdmFsdWVzLmF0KGkpLCBib3VuZGluZ0JveC53aWR0aCgpKSArIGJvdW5kaW5n
Qm94LngoKSwKLSAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgobV92YWx1ZXMuYXQoaSAr
IDEpLCBib3VuZGluZ0JveC5oZWlnaHQoKSkgKyBib3VuZGluZ0JveC55KCkpKTsKKyAgICAgICAg
cGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fdmFsdWVzLmF0
KGkpLCBib3VuZGluZ0JveC53aWR0aCgpLCB2aWV3cG9ydFNpemUpICsgYm91bmRpbmdCb3gueCgp
LAorICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ZhbHVlcy5hdChpICsgMSksIGJv
dW5kaW5nQm94LmhlaWdodCgpLCB2aWV3cG9ydFNpemUpICsgYm91bmRpbmdCb3gueSgpKSk7CiAg
ICAgfQogICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IDE3MWQ5YzFmNmNjOWI0MGMwODg5YzRlN2Ew
NTY0ZmNhYjc5M2FkMGIuLjRlNWU2YzE4M2E1YjYxNWFhYzhiMzZjNWYxNzQwMmVhMTY1NDgzYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuQmxlbmQoY29uc3QgQmFzaWNTaGFw
ZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0UmVj
dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSA9IDA7CiAgICAgdmlydHVhbCBXaW5kUnVsZSB3
aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIFJVTEVfTk9OWkVSTzsgfQogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlKiwgZG91YmxlKSBjb25z
dCA9IDA7CiAKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29ybmVyUmFk
aXVzWChMZW5ndGggcmFkaXVzWCkgeyBtX2Nvcm5lclJhZGl1c1ggPSByYWRpdXNYOyB9CiAgICAg
dm9pZCBzZXRDb3JuZXJSYWRpdXNZKExlbmd0aCByYWRpdXNZKSB7IG1fY29ybmVyUmFkaXVzWSA9
IHJhZGl1c1k7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJl
Y3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSosIGRvdWJsZSkg
Y29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IEJBU0lDX1NIQVBFX1JFQ1RBTkdMRTsgfQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENlbnRlclkoTGVuZ3RoIGNlbnRlclkpIHsgbV9jZW50ZXJZID0gY2VudGVyWTsg
fQogICAgIHZvaWQgc2V0UmFkaXVzKExlbmd0aCByYWRpdXMpIHsgbV9yYWRpdXMgPSByYWRpdXM7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSosIGRvdWJsZSkgY29uc3QgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEJBU0lDX1NI
QVBFX0NJUkNMRTsgfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJh
ZGl1c1goTGVuZ3RoIHJhZGl1c1gpIHsgbV9yYWRpdXNYID0gcmFkaXVzWDsgfQogICAgIHZvaWQg
c2V0UmFkaXVzWShMZW5ndGggcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJhc2lj
U2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBCQVNJQ19TSEFQRV9FTExJ
UFNFOyB9IApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpbmRSdWxl
KFdpbmRSdWxlIHdpbmRSdWxlKSB7IG1fd2luZFJ1bGUgPSB3aW5kUnVsZTsgfQogICAgIHZvaWQg
YXBwZW5kUG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KSB7IG1fdmFsdWVzLmFwcGVuZCh4KTsgbV92
YWx1ZXMuYXBwZW5kKHkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3Qg
RmxvYXRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqLCBk
b3VibGUpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDFlMjQ5YjdlNDk4Mjk1ZjQzNTA2NTVjZjBm
ODVmNDRjY2NiNGU1YTkuLjQwMWUwMTU0ODUxMjZhMzA5MmUyM2MxZjFmYjg5OTQwZGVmYjg5ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZW5k
ZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNo
YWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCkBAIC04NTUsNyArODU2LDcgQEAg
aW5saW5lIGJvb2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRy
YW5zZm9ybU9wZXJhdGlvbj4gPiYgdHIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVu
ZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0s
IGNvbnN0IExheW91dFNpemUmIGJvcmRlckJveFNpemUsIEFwcGx5VHJhbnNmb3JtT3JpZ2luIGFw
cGx5T3JpZ2luKSBjb25zdAordm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgTGF5b3V0U2l6ZSYgYm9yZGVyQm94U2l6
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgQXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBw
bHlPcmlnaW4pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlz
IHN1cHBvcnRlZCAoYnVnIDcxMTQzKSB0aGUgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIGNvdWxkIGJl
IHJlcGxhY2VkIGJ5CiAgICAgLy8gYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBib3JkZXJCb3hTaXplKSwgYXBwbHlPcmlnaW4pOwpAQCAtODY0LDE3ICs4
NjUsMTkgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgTGF5b3V0U2kKICAgICBib29sIGFwcGx5VHJhbnNmb3Jt
T3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm1PcGVyYXRpb25zLCBhcHBs
eU9yaWdpbik7CiAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pCi0gICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUzZChmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblgoKSwg
Ym9yZGVyQm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1Pcmln
aW5ZKCksIGJvcmRlckJveFNpemUuaGVpZ2h0KCkpLCB0cmFuc2Zvcm1PcmlnaW5aKCkpOworICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QocmVuZGVyZXItPmZsb2F0VmFsdWVGb3JMZW5ndGgo
dHJhbnNmb3JtT3JpZ2luWCgpLCBib3JkZXJCb3hTaXplLndpZHRoKCkpLCByZW5kZXJlci0+Zmxv
YXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1PcmlnaW5ZKCksIGJvcmRlckJveFNpemUuaGVpZ2h0
KCkpLCB0cmFuc2Zvcm1PcmlnaW5aKCkpOworCisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplID0gcmVuZGVyZXItPnZpZXcoKS0+dmlld3BvcnRTaXplKCk7CiAKICAgICB1bnNpZ25lZCBz
aXplID0gdHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9uc1tpXS0+YXBwbHko
dHJhbnNmb3JtLCBib3JkZXJCb3hTaXplKTsKKyAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9uc1tp
XS0+YXBwbHkodHJhbnNmb3JtLCBib3JkZXJCb3hTaXplLCB2aWV3cG9ydFNpemUpOwogCiAgICAg
aWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKQotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qo
LWZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWCgpLCBib3JkZXJCb3hTaXplLndp
ZHRoKCkpLCAtZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1PcmlnaW5ZKCksIGJvcmRlckJv
eFNpemUuaGVpZ2h0KCkpLCAtdHJhbnNmb3JtT3JpZ2luWigpKTsgCisgICAgICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUzZCgtcmVuZGVyZXItPmZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3Jp
Z2luWCgpLCBib3JkZXJCb3hTaXplLndpZHRoKCkpLCAtcmVuZGVyZXItPmZsb2F0VmFsdWVGb3JM
ZW5ndGgodHJhbnNmb3JtT3JpZ2luWSgpLCBib3JkZXJCb3hTaXplLmhlaWdodCgpKSwgLXRyYW5z
Zm9ybU9yaWdpblooKSk7IAogfQogCi12b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94LCBBcHBseVRyYW5zZm9ybU9yaWdpbiBhcHBseU9yaWdpbikgY29uc3QKK3ZvaWQgUmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IEFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKSBjb25zdAogewogICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiA+JiB0cmFuc2Zvcm1PcGVyYXRpb25zID0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0aW9u
cygpOwogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSByZXF1aXJlVHJhbnNmb3JtT3Jp
Z2luKHRyYW5zZm9ybU9wZXJhdGlvbnMsIGFwcGx5T3JpZ2luKTsKQEAgLTg4MywxOCArODg2LDIw
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgZmxvYXQgb2Zmc2V0WSA9IHRyYW5zZm9y
bU9yaWdpblkoKS50eXBlKCkgPT0gUGVyY2VudCA/IGJvdW5kaW5nQm94LnkoKSA6IDA7CiAgICAg
CiAgICAgaWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKSB7Ci0gICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUzZChmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRpbmdC
b3gud2lkdGgoKSkgKyBvZmZzZXRYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1PcmlnaW5ZKCksIGJvdW5kaW5nQm94LmhlaWdodCgp
KSArIG9mZnNldFksCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChyZW5kZXJlci0+Zmxv
YXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1PcmlnaW5YKCksIGJvdW5kaW5nQm94LndpZHRoKCkp
ICsgb2Zmc2V0WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5mbG9h
dFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblkoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkp
ICsgb2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdp
blooKSk7CiAgICAgfQotICAgIAorCisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplID0g
cmVuZGVyZXItPnZpZXcoKS0+dmlld3BvcnRTaXplKCk7CisKICAgICB1bnNpZ25lZCBzaXplID0g
dHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9uc1tpXS0+YXBwbHkodHJhbnNm
b3JtLCBib3VuZGluZ0JveC5zaXplKCkpOworICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zW2ld
LT5hcHBseSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LnNpemUoKSwgdmlld3BvcnRTaXplKTsKICAg
ICAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZTNkKC1mbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRp
bmdCb3gud2lkdGgoKSkgLSBvZmZzZXRYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LWZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWSgpLCBib3VuZGluZ0JveC5oZWln
aHQoKSkgLSBvZmZzZXRZLAorICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoLXJlbmRlcmVy
LT5mbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRpbmdCb3gud2lk
dGgoKSkgLSBvZmZzZXRYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlbmRlcmVy
LT5mbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblkoKSwgYm91bmRpbmdCb3guaGVp
Z2h0KCkpIC0gb2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC10cmFuc2Zv
cm1PcmlnaW5aKCkpOwogICAgIH0KIH0KQEAgLTkzNiwxNyArOTQxLDE3IEBAIHZvaWQgUmVuZGVy
U3R5bGU6OnNldEJveFNoYWRvdyhQYXNzT3duUHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEsIGJv
b2wgYWRkKQogICAgIHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IHNoYWRvd0RhdGE7CiB9CiAKLXN0
YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRlckRhdGEmIGJv
cmRlciwgSW50U2l6ZSBzaXplLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIFJvdW5k
ZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBJbnRT
aXplIHNpemUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIFJv
dW5kZWRSZWN0OjpSYWRpaSgKLSAgICAgICAgSW50U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIu
dG9wTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSwgcmVuZGVyVmlldyksIAotICAgICAgICAg
ICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVp
Z2h0KCksIHJlbmRlclZpZXcpKSwKLSAgICAgICAgSW50U2l6ZSh2YWx1ZUZvckxlbmd0aChib3Jk
ZXIudG9wUmlnaHQoKS53aWR0aCgpLCBzaXplLndpZHRoKCksIHJlbmRlclZpZXcpLAotICAgICAg
ICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCBzaXpl
LmhlaWdodCgpLCByZW5kZXJWaWV3KSksCi0gICAgICAgIEludFNpemUodmFsdWVGb3JMZW5ndGgo
Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLCBzaXplLndpZHRoKCksIHJlbmRlclZpZXcpLCAK
LSAgICAgICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdo
dCgpLCBzaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSksCi0gICAgICAgIEludFNpemUodmFsdWVG
b3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCByZW5k
ZXJWaWV3KSwgCi0gICAgICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJp
Z2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHJlbmRlclZpZXcpKSk7CisgICAgICAgIElu
dFNpemUocmVuZGVyZXItPnZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSwg
c2l6ZS53aWR0aCgpKSwgCisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnZhbHVlRm9yTGVuZ3Ro
KGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKKyAgICAgICAgSW50
U2l6ZShyZW5kZXJlci0+dmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSwg
c2l6ZS53aWR0aCgpKSwKKyAgICAgICAgICAgICAgICByZW5kZXJlci0+dmFsdWVGb3JMZW5ndGgo
Ym9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKKyAgICAgICAgSW50
U2l6ZShyZW5kZXJlci0+dmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgp
LCBzaXplLndpZHRoKCkpLCAKKyAgICAgICAgICAgICAgICByZW5kZXJlci0+dmFsdWVGb3JMZW5n
dGgoYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAorICAgICAg
ICBJbnRTaXplKHJlbmRlcmVyLT52YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS53
aWR0aCgpLCBzaXplLndpZHRoKCkpLCAKKyAgICAgICAgICAgICAgICByZW5kZXJlci0+dmFsdWVG
b3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSk7
CiB9CiAKIHN0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCkBAIC05OTgsMTkgKzEwMDMs
MTkgQEAgc2hvcnQgUmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0IHsg
cmV0dXJuIGluaGVyaXRlZC0+dmVydGljYWxfYm8KIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhvcml6
b250YWxCb3JkZXJTcGFjaW5nKHNob3J0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGhvcml6b250
YWxfYm9yZGVyX3NwYWNpbmcsIHYpOyB9CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0aWNhbEJv
cmRlclNwYWNpbmcoc2hvcnQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmVydGljYWxfYm9yZGVy
X3NwYWNpbmcsIHYpOyB9CiAKLVJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9y
ZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkgY29uc3QKK1JvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9y
KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkgY29uc3QKIHsKICAgICBJbnRSZWN0IHNuYXBwZWRCb3JkZXJSZWN0KHBpeGVsU25hcHBl
ZEludFJlY3QoYm9yZGVyUmVjdCkpOwogICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0KHNuYXBw
ZWRCb3JkZXJSZWN0KTsKICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgUm91
bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1JhZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIHNu
YXBwZWRCb3JkZXJSZWN0LnNpemUoKSwgcmVuZGVyVmlldyk7CisgICAgICAgIFJvdW5kZWRSZWN0
OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBzbmFwcGVkQm9y
ZGVyUmVjdC5zaXplKCksIHJlbmRlcmVyKTsKICAgICAgICAgcmFkaWkuc2NhbGUoY2FsY0NvbnN0
cmFpbnRTY2FsZUZvcihzbmFwcGVkQm9yZGVyUmVjdCwgcmFkaWkpKTsKICAgICAgICAgcm91bmRl
ZFJlY3QuaW5jbHVkZUxvZ2ljYWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAg
IH0KICAgICByZXR1cm4gcm91bmRlZFJlY3Q7CiB9CiAKLVJvdW5kZWRSZWN0IFJlbmRlclN0eWxl
OjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KSBjb25zdAorUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZv
cihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpIGNvbnN0CiB7CiAgICAgYm9vbCBob3Jpem9udGFsID0gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKTsKIApAQCAtMTAxOSwxMCArMTAyNCwxMCBAQCBSb3VuZGVkUmVjdCBSZW5kZXJTdHls
ZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3Qs
CiAgICAgaW50IHRvcFdpZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSkgPyBib3JkZXJUb3BXaWR0aCgpIDogMDsKICAgICBpbnQgYm90dG9tV2lkdGggPSAoaG9yaXpv
bnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBib3JkZXJCb3R0b21XaWR0aCgpIDog
MDsKIAotICAgIHJldHVybiBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdG9w
V2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICByZXR1cm4gZ2V0Um91bmRl
ZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsIHJlbmRlcmVyLCB0b3BXaWR0aCwgYm90dG9tV2lk
dGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwogfQogCi1Sb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsCitSb3VuZGVk
UmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJl
Y3QmIGJvcmRlclJlY3QsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsCiAgICAgaW50IHRv
cFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoLCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
IGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBpbm5lclJlY3QoYm9yZGVyUmVjdC54KCkgKyBsZWZ0
V2lkdGgsIApAQCAtMTAzMyw3ICsxMDM4LDcgQEAgUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6Omdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LAogICAg
IFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoaW5uZXJSZWN0KSk7
CiAKICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgUm91bmRlZFJlY3Q6OlJh
ZGlpIHJhZGlpID0gZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0KS5yYWRpaSgpOworICAg
ICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBnZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRl
clJlY3QsIHJlbmRlcmVyKS5yYWRpaSgpOwogICAgICAgICByYWRpaS5zaHJpbmsodG9wV2lkdGgs
IGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpOwogICAgICAgICByb3VuZGVkUmVj
dC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpA
QCAtMTI3OCw3ICsxMjgzLDcgQEAgTGVuZ3RoIFJlbmRlclN0eWxlOjpsaW5lSGVpZ2h0KCkgY29u
c3QKIH0KIHZvaWQgUmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQoTGVuZ3RoIHNwZWNpZmllZExp
bmVIZWlnaHQpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGxpbmVfaGVpZ2h0LCBzcGVjaWZpZWRMaW5l
SGVpZ2h0KTsgfQogCi1pbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3KSBjb25zdAoraW50IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWln
aHQoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBjb25zdCBMZW5n
dGgmIGxoID0gbGluZUhlaWdodCgpOwogCkBAIC0xMjg3LDEwICsxMjkyLDEwIEBAIGludCBSZW5k
ZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KFJlbmRlclZpZXcqIHJlbmRlclZpZXcpIGNvbnN0
CiAgICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CiAKICAgICBpZiAo
bGguaXNQZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGgs
IGZvbnRTaXplKCkpOworICAgICAgICByZXR1cm4gcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxl
bmd0aChsaCwgZm9udFNpemUoKSk7CiAKICAgICBpZiAobGguaXNWaWV3cG9ydFBlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGxoLCAwLCByZW5kZXJWaWV3KTsKKyAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyLT52YWx1ZUZvckxlbmd0aChsaCwgMCk7CiAKICAgICByZXR1
cm4gbGgudmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKaW5kZXggMjNhYzc5MmRhZDMzYTI0NDFjZjM0ZGYzYTUwOTAwM2FiYzU0ZGI2OC4u
MjBhZjg3Yzg4NTcyOWUzZDFhYzI5NzNhZjg0YWUwNjJkM2U4ZDM1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTU4OSw3ICs1ODksNyBAQCBw
dWJsaWM6CiAKICAgICBMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwogICAgIExl
bmd0aCBsaW5lSGVpZ2h0KCkgY29uc3Q7Ci0gICAgaW50IGNvbXB1dGVkTGluZUhlaWdodChSZW5k
ZXJWaWV3KiA9IDApIGNvbnN0OworICAgIGludCBjb21wdXRlZExpbmVIZWlnaHQoY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3Q7CiAKICAgICBFV2hpdGVTcGFjZSB3aGl0ZVNwYWNl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdoaXRlU3BhY2U+KGluaGVyaXRlZF9mbGFn
cy5fd2hpdGVfc3BhY2UpOyB9CiAgICAgc3RhdGljIGJvb2wgYXV0b1dyYXAoRVdoaXRlU3BhY2Ug
d3MpCkBAIC04NjMsOCArODYzLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVs
YXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtKCkgfHwgcHJlc2VydmVz
M0QoKSB8fCBoYXNQZXJzcGVjdGl2ZSgpOyB9CiAKICAgICBlbnVtIEFwcGx5VHJhbnNmb3JtT3Jp
Z2luIHsgSW5jbHVkZVRyYW5zZm9ybU9yaWdpbiwgRXhjbHVkZVRyYW5zZm9ybU9yaWdpbiB9Owot
ICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBMYXlv
dXRTaXplJiBib3JkZXJCb3hTaXplLCBBcHBseVRyYW5zZm9ybU9yaWdpbiA9IEluY2x1ZGVUcmFu
c2Zvcm1PcmlnaW4pIGNvbnN0OwotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBBcHBseVRyYW5zZm9ybU9y
aWdpbiA9IEluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBMYXlvdXRTaXplJiBib3JkZXJCb3hT
aXplLCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBBcHBseVRyYW5zZm9ybU9yaWdpbiA9
IEluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBBcHBseVRyYW5zZm9ybU9yaWdpbiA9IEluY2x1ZGVU
cmFuc2Zvcm1PcmlnaW4pIGNvbnN0OwogICAgIHZvaWQgc2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZs
b2F0KTsKIAogICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX21hc2suaGFzSW1hZ2UoKSB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNr
Qm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQpAQCAtMTA1NCwxMCArMTA1NCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVk
KSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KICAgICAKLSAgICBSb3VuZGVk
UmVjdCBnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJl
bmRlclZpZXcqID0gMCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OwotICAgIFJvdW5kZWRSZWN0IGdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29s
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlID0gdHJ1ZSkgY29uc3Q7CisgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZEJvcmRlckZvcihj
b25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CisgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZElubmVy
Qm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKIAotICAgIFJvdW5kZWRSZWN0IGdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LAorICAg
IFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBi
b3JkZXJSZWN0LCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLAogICAgICAgICBpbnQgdG9w
V2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdik7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDc0NTE4NjFkZDdmZDI3
OTcwYmY4Nzk5NDhmMWZmNTMwOTczYTg3MzYuLjRjOTZlOTAzODVmMDA0N2E0ZDUwNzU3MGEwMDUy
YTIyYWNlZmU2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcApAQCAtMTU0LDkgKzE1NCw5IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJl
ZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
TGF5b3V0VW5pdCByZXNvbHZlTGVuZ3RoQXR0cmlidXRlRm9yU1ZHKGNvbnN0IExlbmd0aCYgbGVu
Z3RoLCBmbG9hdCBzY2FsZSwgZmxvYXQgbWF4U2l6ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykK
K3N0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCByZXNvbHZlTGVuZ3RoQXR0cmlidXRlRm9yU1ZHKGNv
bnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBzY2FsZSwgZmxvYXQgbWF4U2l6ZSwgY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0
Pih2YWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heFNpemUsIHJlbmRlclZpZXcpICogKGxlbmd0aC5p
c0ZpeGVkKCkgPyBzY2FsZSA6IDEpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5p
dD4odmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhTaXplLCB2aWV3cG9ydFNpemUpICogKGxlbmd0
aC5pc0ZpeGVkKCkgPyBzY2FsZSA6IDEpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290
Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBzaG91
bGRDb21wdXRlUHJlZmVycmVkKSBjb25zdApAQCAtMTcyLDcgKzE3Miw3IEBAIExheW91dFVuaXQg
UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQ
cmVmZXJyZWQgc2hvCiAgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbFdpZHRoKHNob3VsZENvbXB1dGVQcmVmZXJyZWQpOwogCiAgICAgaWYgKHN2Zy0+
d2lkdGhBdHRyaWJ1dGVFc3RhYmxpc2hlc1ZpZXdwb3J0KCkpCi0gICAgICAgIHJldHVybiByZXNv
bHZlTGVuZ3RoQXR0cmlidXRlRm9yU1ZHKHN2Zy0+aW50cmluc2ljV2lkdGgoU1ZHU1ZHRWxlbWVu
dDo6SWdub3JlQ1NTUHJvcGVydGllcyksIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSwgY29udGFp
bmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpLCB2aWV3KCkpOworICAgICAgICBy
ZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhzdmctPmludHJpbnNpY1dpZHRoKFNW
R1NWR0VsZW1lbnQ6Oklnbm9yZUNTU1Byb3BlcnRpZXMpLCBzdHlsZSgpLT5lZmZlY3RpdmVab29t
KCksIGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSwgdmlldygpLT52
aWV3cG9ydFNpemUoKSk7CiAKICAgICAvLyBTVkcgZW1iZWRkZWQgdGhyb3VnaCBvYmplY3QvZW1i
ZWQvaWZyYW1lLgogICAgIGlmIChpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0Rv
Y3VtZW50KCkpCkBAIC0yMDYsNyArMjA2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290Ojpj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBSZW5kZXJCbG9jazo6cmVtb3ZlUGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3Rf
Y2FzdDxSZW5kZXJTVkdSb290Kj4odGhpcykpOwogCi0gICAgICAgIHJldHVybiByZXNvbHZlTGVu
Z3RoQXR0cmlidXRlRm9yU1ZHKGhlaWdodCwgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpLCBjb250
YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVy
UGFkZGluZyksIHZpZXcoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlTGVuZ3RoQXR0cmlidXRl
Rm9yU1ZHKGhlaWdodCwgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2so
KS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyksIHZp
ZXcoKS0+dmlld3BvcnRTaXplKCkpOwogICAgIH0KIAogICAgIC8vIFNWRyBlbWJlZGRlZCB0aHJv
dWdoIG9iamVjdC9lbWJlZC9pZnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMjc1OTMyZTc1NWI1MWMyMDBk
MjNjNzhlMmQxOWYyNDkzMjM2OTQ0Li40ZjU1MTBiN2ZjNjNmYjQ0NTgyMzA0OTNlNzNmYTljNjBi
ZTQ2ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFza2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0Nh
Y2hlLmgiCiAKQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnBy
ZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFBhaW50SQogICAg
IENsaXBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aE9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgp
OwogICAgIGlmIChjbGlwUGF0aE9wZXJhdGlvbiAmJiBjbGlwUGF0aE9wZXJhdGlvbi0+Z2V0T3Bl
cmF0aW9uVHlwZSgpID09IENsaXBQYXRoT3BlcmF0aW9uOjpTSEFQRSkgewogICAgICAgICBTaGFw
ZUNsaXBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aCA9IHN0YXRpY19jYXN0PFNoYXBlQ2xpcFBhdGhP
cGVyYXRpb24qPihjbGlwUGF0aE9wZXJhdGlvbik7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250
ZXh0LT5jbGlwUGF0aChjbGlwUGF0aC0+cGF0aChvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCkp
LCBjbGlwUGF0aC0+d2luZFJ1bGUoKSk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5j
bGlwUGF0aChjbGlwUGF0aC0+cGF0aChvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCksIG1fb2Jq
ZWN0LT52aWV3KCktPnZpZXdwb3J0U2l6ZSgpKSwgY2xpcFBhdGgtPndpbmRSdWxlKCkpOwogICAg
IH0KIAogICAgIFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNh
Y2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdChtX29iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKaW5kZXggMWRmNDc2YWNiNTk1ZGM2NjY4ZTBlMDI0Y2Y5OGQ0MDE3YWZk
YzU4MS4uNzFlOGU3MDg0MTRkNzI5OWJhMjIzYWVjYTQ0ZjM0ZmM3YWNlNDlmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtNTc5LDcgKzU3OSw3IEBAIEZsb2F0UmVjdCBT
VkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld0JveFJlY3QoKSBjb25zdAogCiAgICAgLy8gSWYgbm8g
dmlld0JveCBpcyBzcGVjaWZpZWQgYnV0IG5vbi1yZWxhdGl2ZSB3aWR0aC9oZWlnaHQgdmFsdWVz
LCB0aGVuIHdlCiAgICAgLy8gc2hvdWxkIGFsd2F5cyBzeW50aGVzaXplIGEgdmlld0JveCBpZiB3
ZSdyZSBlbWJlZGRlZCB0aHJvdWdoIGEgU1ZHSW1hZ2UuICAgIAotICAgIHJldHVybiBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5zaWNX
aWR0aCwgMCksIGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljSGVpZ2h0LCAwKSkpOworICAg
IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxl
bmd0aChpbnRyaW5zaWNXaWR0aCwgMCwgSW50U2l6ZSgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChp
bnRyaW5zaWNIZWlnaHQsIDAsIEludFNpemUoKSkpKTsKIH0KIAogRmxvYXRTaXplIFNWR1NWR0Vs
ZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydFNpemUoKSBjb25zdApAQCAtNTg3LDcgKzU4Nyw3IEBAIEZs
b2F0U2l6ZSBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld3BvcnRTaXplKCkgY29uc3QKICAgICBM
ZW5ndGggaW50cmluc2ljV2lkdGggPSB0aGlzLT5pbnRyaW5zaWNXaWR0aCgpOwogICAgIExlbmd0
aCBpbnRyaW5zaWNIZWlnaHQgPSB0aGlzLT5pbnRyaW5zaWNIZWlnaHQoKTsKICAgICBpZiAoaW50
cmluc2ljV2lkdGguaXNGaXhlZCgpICYmIGludHJpbnNpY0hlaWdodC5pc0ZpeGVkKCkpCi0gICAg
ICAgIHJldHVybiBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5zaWNXaWR0aCwg
MCksIGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljSGVpZ2h0LCAwKSk7CisgICAgICAgIHJl
dHVybiBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5zaWNXaWR0aCwgMCwgSW50
U2l6ZSgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5zaWNIZWlnaHQsIDAsIEludFNpemUo
KSkpOwogCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmNwcAppbmRleCBkOGVhNmRmN2Q1YjhiYWQ2ZjIyMWNiNjgyNTM5MDdhOWMyMTc3NThmLi5k
ZGUxMGQ2NTdmMGYwNWVjNTIyZmJjZWJmNzkwN2VjZDExYmZjYTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKICAgICAgICAgLy8gTm90ZTogb2JqZWN0
Qm91bmRpbmdCb3ggaXMgYW4gZW1wdHlSZWN0IGZvciBlbGVtZW50cyBsaWtlIHBhdHRlcm4gb3Ig
Y2xpcFBhdGguCiAgICAgICAgIC8vIFNlZSB0aGUgIk9iamVjdCBib3VuZGluZyBib3ggdW5pdHMi
IHNlY3Rpb24gb2YgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy10cmFuc2Zvcm1zLwogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgIHN0eWxlLT5hcHBs
eVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHJlbmRlcmVyKCktPm9iamVjdEJvdW5kaW5nQm94KCkpOwor
ICAgICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCByZW5kZXJlcigpLT5vYmpl
Y3RCb3VuZGluZ0JveCgpLCByZW5kZXJlcigpKTsKIAogICAgICAgICAvLyBGbGF0dGVuIGFueSAz
RCB0cmFuc2Zvcm0uCiAgICAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9y
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKaW5kZXggNzU5Y2M1NGJkZDVh
MmRjMzZjOGJhM2I0ODcyYTA1ZmI3NmU5MmI1Yi4uNGI2MjkzYzVjODhjZWUxZGI5YzAyOTJjZGFh
MGIzZWFmMTRjYjhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCkBAIC0x
MTcsNyArMTE3LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjphbmltYXRlZExv
Y2FsVHJhbnNmb3JtKCkgY29uc3QKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAg
ICAgICAgLy8gRm9yIG5vdywgdGhlIHRyYW5zZm9ybS1vcmlnaW4gaXMgbm90IHRha2VuIGludG8g
YWNjb3VudAogICAgICAgICAvLyBBbHNvLCBhbnkgcGVyY2VudGFnZSB2YWx1ZXMgd2lsbCBub3Qg
YmUgdGFrZW4gaW50byBhY2NvdW50Ci0gICAgICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0LCBJ
bnRTaXplKDAsIDApLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CisgICAg
ICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0LCBJbnRTaXplKCksIHJlbmRlcmVyKCksIFJlbmRl
clN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgLy8gRmxhdHRlbiBhbnkg
M0QgdHJhbnNmb3JtCiAgICAgICAgIG1hdHJpeCA9IHQudG9BZmZpbmVUcmFuc2Zvcm0oKTsKICAg
ICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQw
MTM0ODQ1MzE2NmVhN2Y0NDk0MmVjOGQ0YjAyZTI3YTM3MzdiMGEuLjRjMzIyMjFkZGE3NWZhOTI2
ZGQwMGY3NTZkZDE2NmFmZmMyMTA0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluCiAK
ICAgICBpbnRyaW5zaWNSYXRpbyA9IHJvb3RFbGVtZW50LT52aWV3Qm94KCkuc2l6ZSgpOwogICAg
IGlmIChpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkgJiYgaW50cmluc2ljV2lkdGguaXNGaXhlZCgp
ICYmIGludHJpbnNpY0hlaWdodC5pc0ZpeGVkKCkpCi0gICAgICAgIGludHJpbnNpY1JhdGlvID0g
RmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljV2lkdGgsIDApLCBmbG9hdFZh
bHVlRm9yTGVuZ3RoKGludHJpbnNpY0hlaWdodCwgMCkpOworICAgICAgICBpbnRyaW5zaWNSYXRp
byA9IEZsb2F0U2l6ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGludHJpbnNpY1dpZHRoLCAwLCBJbnRT
aXplKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGludHJpbnNpY0hlaWdodCwgMCwgSW50U2l6ZSgp
KSk7CiB9CiAKIC8vIEZJWE1FOiBzdXBwb3J0IGNhdGNoVXBJZk5lY2Vzc2FyeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGls
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0FuaW1hdGlvblRyYW5zbGF0
aW9uVXRpbFRlc3QuY3BwCmluZGV4IDdiMTg0ZmEzNDNiZTEzOGRhNTY4NDBiN2RhYzRmMTcyMTg0
NDAzYWEuLjYzNTYyMWJkNDMzYTYyZmNhNGZkMWI4YzdhOTBkMjBkMTdiNDM3NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGls
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9BbmltYXRpb25UcmFu
c2xhdGlvblV0aWxUZXN0LmNwcApAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2UgewogCiBib29s
IGFuaW1hdGlvbkNhbkJlVHJhbnNsYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVz
LCBBbmltYXRpb24qIGFuaW1hdGlvbikKIHsKLSAgICBJbnRTaXplIGJveFNpemU7Ci0gICAgcmV0
dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgMCwgMCwgYm94U2l6ZSk7
CisgICAgSW50U2l6ZSBib3hTaXplLCB2aWV3cG9ydFNpemU7CisgICAgcmV0dXJuIGNyZWF0ZVdl
YkFuaW1hdGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgMCwgMCwgYm94U2l6ZSwgdmlld3BvcnRTaXpl
KTsKIH0KIAogVEVTVChBbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LCBjcmVhdGVPcGFjaXR5
QW5pbWF0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDU2MzM4MDRmYzI0OWMxZDkzNmEzNmM2MjJjOWEyYjQyNjM2ZTlm
NWEuLmY1ODkyNDA5ZGQ0OWQyNGMyMWE2YmM3ZDEzZDNjNmJhYWZhY2IzMjggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMy0wMy0xMSAgVGltb3RoeSBMb2ggIDx0aW1sb2hAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIHZpZXdwb3J0IHVuaXRzICh2dywgdmgpIGRvbid0IHdvcmsgaW4gQ1NTIHRy
YW5zZm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0lQCisKKyAgICAgICAgKiBjc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBjc3MzL2NhbGMvc2ltcGxlLWNhbGNzLXByZWZpeGVkLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBjc3MzL2NhbGMvc2ltcGxlLWNhbGNzLXByZWZpeGVkLmh0bWw6CisgICAgICAgICog
Y3NzMy9jYWxjL3NpbXBsZS1jYWxjcy5odG1sOgorICAgICAgICAqIHRyYW5zZm9ybXMvMmQvdHJh
bnNmb3JtLTJkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0cmFuc2Zvcm1zLzJkL3RyYW5zZm9y
bS0yZC5odG1sOgorCiAyMDEzLTAzLTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ1Mjk5Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dAppbmRl
eCA5N2Q2ZDNhM2I2YWUzM2ZmYzY0YmNjYzY0M2E4MTg1MjExMmZiNDU3Li43Y2Q3YmRhOWNjOGQ5
MzBjMzJmYWRjMGJhNWRmYWE4MDFmYmRlNjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3Mz
L2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Nh
bGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dApAQCAtNDQsMyArNDQsOCBAQCBjb250cm9sID0+
IFBBU1MKICgoKCgoKCgxMDBweCkpKSkpKSkgPT4gUEFTUwogMTAwcHggPT4gUEFTUwogMTAwJSAq
IDIgPT4gUEFTUworMTIuNXZ3ID0+IFBBU1MKKzIwdmggLSAyMHB4ID0+IFBBU1MKKzEwdm1heCAr
IDIwcHggPT4gUEFTUworNTB2bWluIC8gMyA9PiBQQVNTCisoNHZ3ICsgM3ZoKSoyID0+IFBBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtcHJlZml4ZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1wcmVmaXhl
ZC1leHBlY3RlZC50eHQKaW5kZXggODExNzY3NWUyNjdmYjdiY2NlNDFjM2ZkOTU4NzZmOTZkM2Ey
Yjk4YS4uYjZhZmE1MzliZTJkZWYzOWVmNmJkYjYyY2RjYWY0YjJkZDNiNGQ1OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1wcmVmaXhlZC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1wcmVmaXhlZC1leHBl
Y3RlZC50eHQKQEAgLTQ2LDMgKzQ2LDggQEAgY29udHJvbCA9PiBQQVNTCiAoKCgoKCgoMTAwcHgp
KSkpKSkpID0+IFBBU1MKIDEwMHB4ID0+IFBBU1MKIDEwMCUgKiAyID0+IFBBU1MKKzEyLjV2dyA9
PiBQQVNTCisyMHZoIC0gMjBweCA9PiBQQVNTCisxMHZtYXggKyAyMHB4ID0+IFBBU1MKKzUwdm1p
biAvIDMgPT4gUEFTUworKDR2dyArIDN2aCkqMiA9PiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLXByZWZpeGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9j
c3MzL2NhbGMvc2ltcGxlLWNhbGNzLXByZWZpeGVkLmh0bWwKaW5kZXggMzM1ZTNjYWM1OTYzMGNl
MGRlZTZhZjFjODc5YTEwMjhlNmU0NWYzNy4uOTYwZTc3YWI5ZWE2MTMyMTkxMTQ0M2IwZWQzYTMy
MzA1YzQ5MmY2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxj
cy1wcmVmaXhlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3Mt
cHJlZml4ZWQuaHRtbApAQCAtODUsNiArODUsMTEgQEAKIDxkaXYgc3R5bGU9ImhlaWdodDogNTBw
eDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IiBjbGFzcz0id3JhcHBlciI+DQogICA8ZGl2IGNs
YXNzPSJoZWlnaHQtdGVzdCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1jYWxjKDEwMCUgKiAyKTsi
PjEwMCUgKiAyPC9kaXY+DQogPC9kaXY+DQorPGRpdiBjbGFzcz0id2lkdGgtdGVzdCIgc3R5bGU9
IndpZHRoOiAtd2Via2l0LWNhbGMoMTIuNXZ3KTsiPjEyLjV2dzwvZGl2Pg0KKzxkaXYgY2xhc3M9
IndpZHRoLXRlc3QiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1jYWxjKDIwdmggLSAyMHB4KTsiPjIw
dmggLSAyMHB4PC9kaXY+DQorPGRpdiBjbGFzcz0id2lkdGgtdGVzdCIgc3R5bGU9IndpZHRoOiAt
d2Via2l0LWNhbGMoMTB2bWF4ICsgMjBweCk7Ij4xMHZtYXggKyAyMHB4PC9kaXY+DQorPGRpdiBj
bGFzcz0id2lkdGgtdGVzdCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWNhbGMoNTB2bWluIC8gMyk7
Ij41MHZtaW4gLyAzPC9kaXY+DQorPGRpdiBjbGFzcz0id2lkdGgtdGVzdCIgc3R5bGU9IndpZHRo
OiAtd2Via2l0LWNhbGMoKDR2dyArIDN2aCkqMik7Ij4oNHZ3ICsgM3ZoKSoyPC9kaXY+DQogPC9k
aXY+DQogDQogPHNjcmlwdD4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2lt
cGxlLWNhbGNzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLmh0bWwK
aW5kZXggNmU4NDJmMzY4ZmVlNWM4ZWI3ZTY1M2FkOTY2ZjUzNTliYzQ4N2Q0My4uOGUwZDE0ZDhk
OWM2Njc5NzM2YTY1ZTE2ZTQwMWIzYjVmNzk0ZjQ1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzMy9jYWxjL3NpbXBsZS1jYWxjcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9z
aW1wbGUtY2FsY3MuaHRtbApAQCAtODIsNiArODIsMTEgQEAKIDxkaXYgc3R5bGU9ImhlaWdodDog
NTBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IiBjbGFzcz0id3JhcHBlciI+DQogICA8ZGl2
IGNsYXNzPSJoZWlnaHQtdGVzdCIgc3R5bGU9ImhlaWdodDogY2FsYygxMDAlICogMik7Ij4xMDAl
ICogMjwvZGl2Pg0KIDwvZGl2Pg0KKzxkaXYgY2xhc3M9IndpZHRoLXRlc3QiIHN0eWxlPSJ3aWR0
aDogLXdlYmtpdC1jYWxjKDEyLjV2dyk7Ij4xMi41dnc8L2Rpdj4NCis8ZGl2IGNsYXNzPSJ3aWR0
aC10ZXN0IiBzdHlsZT0id2lkdGg6IC13ZWJraXQtY2FsYygyMHZoIC0gMjBweCk7Ij4yMHZoIC0g
MjBweDwvZGl2Pg0KKzxkaXYgY2xhc3M9IndpZHRoLXRlc3QiIHN0eWxlPSJ3aWR0aDogLXdlYmtp
dC1jYWxjKDEwdm1heCArIDIwcHgpOyI+MTB2bWF4ICsgMjBweDwvZGl2Pg0KKzxkaXYgY2xhc3M9
IndpZHRoLXRlc3QiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1jYWxjKDUwdm1pbiAvIDMpOyI+NTB2
bWluIC8gMzwvZGl2Pg0KKzxkaXYgY2xhc3M9IndpZHRoLXRlc3QiIHN0eWxlPSJ3aWR0aDogLXdl
YmtpdC1jYWxjKCg0dncgKyAzdmgpKjIpOyI+KDR2dyArIDN2aCkqMjwvZGl2Pg0KIDwvZGl2Pg0K
IA0KIDxzY3JpcHQ+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8yZC90cmFu
c2Zvcm0tMmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8yZC90cmFuc2Zv
cm0tMmQtZXhwZWN0ZWQudHh0CmluZGV4IDFmYmVhNDdjNjJjMDI3ZWZlZjNkMzNhNDQxZTkwMTk5
OWU0YWZiOWIuLjFmODM5MWQyMmMwNmYxMjVkOWMyYTNjNmIzOGMzMDg4NWM4NWQzYjIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvMmQvdHJhbnNmb3JtLTJkLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzJkL3RyYW5zZm9ybS0yZC1leHBlY3RlZC50
eHQKQEAgLTMsMTEgKzMsMTQgQEAgdHJhbnNmb3JtICIiIGV4cGVjdGVkICJtYXRyaXgoNS45NjA0
NmUtMDgsIDEsIC0xLCA1Ljk2MDQ2ZS0wOCwgMCwgMCkiIDogUEFTUwogdHJhbnNmb3JtICJpbmhl
cml0IiBleHBlY3RlZCAibm9uZSIgOiBQQVNTCiB0cmFuc2Zvcm0gInRyYW5zbGF0ZSg4MHB4LCA5
MHB4KSIgZXhwZWN0ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCA4MCwgOTApIiA6IFBBU1MKIHRyYW5z
Zm9ybSAidHJhbnNsYXRlKDEwMCUsIDNlbSkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwgMCwgMSwg
MjAwLCA0OCkiIDogUEFTUwordHJhbnNmb3JtICJ0cmFuc2xhdGUoMzB2dywgLTYwdmgpIiBleHBl
Y3RlZCAibWF0cml4KDEsIDAsIDAsIDEsIDI0MCwgLTM2MCkiIDogUEFTUwogdHJhbnNmb3JtICJ0
cmFuc2xhdGUoNTBweCkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwgMCwgMSwgNTAsIDApIiA6IFBB
U1MKIHRyYW5zZm9ybSAidHJhbnNsYXRleCgtMjBweCkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwg
MCwgMSwgLTIwLCAwKSIgOiBQQVNTCiB0cmFuc2Zvcm0gInRyYW5zbGF0ZVgoLTIwcHgpIiBleHBl
Y3RlZCAibWF0cml4KDEsIDAsIDAsIDEsIC0yMCwgMCkiIDogUEFTUwordHJhbnNmb3JtICJ0cmFu
c2xhdGVYKDIwdm1heCkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwgMCwgMSwgMTYwLCAwKSIgOiBQ
QVNTCiB0cmFuc2Zvcm0gInRyYW5zbGF0ZXkoMjNweCkiIGV4cGVjdGVkICJtYXRyaXgoMSwgMCwg
MCwgMSwgMCwgMjMpIiA6IFBBU1MKIHRyYW5zZm9ybSAidHJhbnNsYXRlWSgtM2VtKSIgZXhwZWN0
ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAtNDgpIiA6IFBBU1MKK3RyYW5zZm9ybSAidHJhbnNs
YXRlWSgyMHZtaW4pIiBleHBlY3RlZCAibWF0cml4KDEsIDAsIDAsIDEsIDAsIDEyMCkiIDogUEFT
UwogdHJhbnNmb3JtICJzY2FsZSgxLjIpIiBleHBlY3RlZCAibWF0cml4KDEuMiwgMCwgMCwgMS4y
LCAwLCAwKSIgOiBQQVNTCiB0cmFuc2Zvcm0gInNjYWxleCgxLjUpIiBleHBlY3RlZCAibWF0cml4
KDEuNSwgMCwgMCwgMSwgMCwgMCkiIDogUEFTUwogdHJhbnNmb3JtICJzY2FsZVgoMS41KSIgZXhw
ZWN0ZWQgIm1hdHJpeCgxLjUsIDAsIDAsIDEsIDAsIDApIiA6IFBBU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RyYW5zZm9ybXMvMmQvdHJhbnNmb3JtLTJkLmh0bWwgYi9MYXlvdXRUZXN0cy90
cmFuc2Zvcm1zLzJkL3RyYW5zZm9ybS0yZC5odG1sCmluZGV4IGFmN2VjYmY3ZjMwYTk5YTBhNGE2
NjM0N2VjM2YzNTQzYjI2ZmUzNTAuLmIxYTkyYmI3NWUzMTEzN2M3YzFmYzRhOWU0NDg3NTRmNzgw
NjNmNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvMmQvdHJhbnNmb3JtLTJk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8yZC90cmFuc2Zvcm0tMmQuaHRtbApA
QCAtMzgsMTEgKzM4LDE0IEBACiAgICAgICAvLyB0cmFuc2xhdGUKICAgICAgIHsgJ3RyYW5zZm9y
bScgOiAndHJhbnNsYXRlKDgwcHgsIDkwcHgpJywgICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAw
LCAxLCA4MCwgOTApJyB9LAogICAgICAgeyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGUoMTAwJSwg
M2VtKScsICAgJ3Jlc3VsdCcgOiAnbWF0cml4KDEsIDAsIDAsIDEsIDIwMCwgNDgpJyB9LCAgLy8g
ZGVwZW5kcyBvbiBmb250IHNpemUKKyAgICAgIHsgJ3RyYW5zZm9ybScgOiAndHJhbnNsYXRlKDMw
dncsIC02MHZoKScsICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAwLCAxLCAyNDAsIC0zNjApJyB9
LAogICAgICAgeyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGUoNTBweCknLCAgICAgICAgJ3Jlc3Vs
dCcgOiAnbWF0cml4KDEsIDAsIDAsIDEsIDUwLCAwKScgfSwKICAgICAgIHsgJ3RyYW5zZm9ybScg
OiAndHJhbnNsYXRleCgtMjBweCknLCAgICAgICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAwLCAx
LCAtMjAsIDApJyB9LAogICAgICAgeyAndHJhbnNmb3JtJyA6ICd0cmFuc2xhdGVYKC0yMHB4KScs
ICAgICAgJ3Jlc3VsdCcgOiAnbWF0cml4KDEsIDAsIDAsIDEsIC0yMCwgMCknIH0sCisgICAgICB7
ICd0cmFuc2Zvcm0nIDogJ3RyYW5zbGF0ZVgoMjB2bWF4KScsICAgICAncmVzdWx0JyA6ICdtYXRy
aXgoMSwgMCwgMCwgMSwgMTYwLCAwKScgfSwKICAgICAgIHsgJ3RyYW5zZm9ybScgOiAndHJhbnNs
YXRleSgyM3B4KScsICAgICAgICdyZXN1bHQnIDogJ21hdHJpeCgxLCAwLCAwLCAxLCAwLCAyMykn
IH0sCiAgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3RyYW5zbGF0ZVkoLTNlbSknLCAgICAgICAncmVz
dWx0JyA6ICdtYXRyaXgoMSwgMCwgMCwgMSwgMCwgLTQ4KScgfSwgIC8vIGRlcGVuZHMgb24gZm9u
dCBzaXplCisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3RyYW5zbGF0ZVkoMjB2bWluKScsICAgICAn
cmVzdWx0JyA6ICdtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMTIwKScgfSwKIAogICAgICAgLy8gc2Nh
bGUKICAgICAgIHsgJ3RyYW5zZm9ybScgOiAnc2NhbGUoMS4yKScsICAgICAgICAgICAgICdyZXN1
bHQnIDogJ21hdHJpeCgxLjIsIDAsIDAsIDEuMiwgMCwgMCknIH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>