<?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>39928</bug_id>
          
          <creation_ts>2010-05-29 22:21:01 -0700</creation_ts>
          <short_desc>Add a convenient helper getter for Frame* to RenderObject</short_desc>
          <delta_ts>2010-06-05 08:39:32 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232168</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-29 22:21:01 -0700</bug_when>
    <thetext>I think RenderObject and derivated classes are calling document()-&gt;frame() enough so it worth to add a shortcut: frame().

See RenderObject-based classes doing document()-&gt;frame() here http://pastebin.com/nzKxaSPM

ps: I only grep&apos;ed for files that match *Render* and inside WebCore/rendering/  , so there are possible more call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232169</commentid>
    <comment_count>1</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-29 22:25:45 -0700</bug_when>
    <thetext>Darin, if you think it is a good idea, I can do the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232198</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 11:17:59 -0700</bug_when>
    <thetext>I can’t think of a good argument against this, except that we don’t want to have getters for everything everywhere. We can make it an inline function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232238</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-30 20:29:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I can’t think of a good argument against this, except that we don’t want to have getters for everything everywhere. We can make it an inline function.

Right. It&apos;d be just another convenience method like Frame::settings instead of the full real path, Frame::Page::settings().

Patch coming ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232239</commentid>
    <comment_count>4</comment_count>
      <attachid>57429</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-30 20:31:09 -0700</bug_when>
    <thetext>Created attachment 57429
patch v1

Added &quot;Frame*&quot; getter to RenderObject, and changed call sites previously going through document()-&gt;frame() to just use the newly introduced frame() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232243</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 20:55:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Right. It&apos;d be just another convenience method like Frame::settings instead of the full real path, Frame::Page::settings().

Generally speaking I&apos;m not sure how many of these convenience functions we want, which is what I meant by &quot;we don&apos;t want to have getters for everything everywhere&quot;.

Frame::settings is not an inline function, so it&apos;s actually slower than calling Frame::page and then Page::settings. But further, if we add too man of these then we create too many alternate ways to do the same thing.

Neither of these are arguments against RenderObject::frame, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232245</commentid>
    <comment_count>6</comment_count>
      <attachid>57429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 20:57:57 -0700</bug_when>
    <thetext>Comment on attachment 57429
patch v1

&gt; -    Frame* frame = document()-&gt;frame();
&gt; +    Frame* frame = frame();

I don&apos;t think this will work correctly, and I&apos;m surprised it compiles successfully. It needs to be:

    Frame* frame = this-&gt;frame();

review- because of this, and as I said, I am surprised this compiles! Otherwise, looks great and would be r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232260</commentid>
    <comment_count>7</comment_count>
      <attachid>57434</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-30 22:23:56 -0700</bug_when>
    <thetext>Created attachment 57434
(committed with r60753, reviewed by Darin Adler) patch v2

(In reply to comment #6)
&gt; (From update of attachment 57429 [details])
&gt; &gt; -    Frame* frame = document()-&gt;frame();
&gt; &gt; +    Frame* frame = frame();
&gt; 
&gt; I don&apos;t think this will work correctly, and I&apos;m surprised it compiles successfully. It needs to be:
&gt;     Frame* frame = this-&gt;frame();

Good catch, I&apos;ve missed that one. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232479</commentid>
    <comment_count>8</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-31 11:35:50 -0700</bug_when>
    <thetext>Ping review.

The upcoming patch in bug 39854 will likely count on this one landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234393</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-04 14:45:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ping review.
&gt; 
&gt; The upcoming patch in bug 39854 will likely count on this one landed.

Re-ping review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234616</commentid>
    <comment_count>10</comment_count>
      <attachid>57434</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-05 08:38:37 -0700</bug_when>
    <thetext>Comment on attachment 57434
(committed with r60753, reviewed by Darin Adler) patch v2

Clearing flags on attachment: 57434

Committed r60753: &lt;http://trac.webkit.org/changeset/60753&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57429</attachid>
            <date>2010-05-30 20:31:09 -0700</date>
            <delta_ts>2010-05-30 22:23:56 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>0001-2010-05-30-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>27541</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwOTZlZmRlYTRhMDUyOTFlYzY5OWY3OTA4ZDY1NzcxMGQ1YTg2OWJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU3VuLCAzMCBNYXkgMjAxMCAxMjo0OToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDUtMzAgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFkZCBhIGNvbnZlbmllbnQgaGVs
cGVyIGdldHRlciBmb3IgRnJhbWUqIHRvIFJlbmRlck9iamVjdAogICAgICAgIGRvY3VtZW50KCkt
PmZyYW1lKCkgaXMgYmVpbmcgY2FsbGVkIGVub3VnaCBmcm9tIFJlbmRlck9iamVjdCBkZXJpdmF0
ZWQgY2xhc3NlcwogICAgICAgIHRoYXQgaXQgd29ydGggYWRkaW5nIGEgaGVscGVyIEZyYW1lIGdl
dHRlciBhcyBhIHNob3J0Y3V0LgoKICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UsIHNvIG5vIG5l
dyB0ZXN0cy4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgogICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09m
ZlNjcmVlbik6CiAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0
cmluZ1ZhbHVlKToKICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2VsZWN0aW9uKToKICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSk6CiAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmNhbkF1dG9zY3JvbGwpOgogICAgICAgICogcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgogICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludCk6CiAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50Q3VzdG9tSGln
aGxpZ2h0KToKICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hN
YXJrZXIpOgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q2FyZXQpOgogICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRDdXN0b21IaWdobGln
aHQpOgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRhdGFHcmlkLmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRGF0YUdyaWQ6OmlzQWN0aXZlKToKICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpmbGF0dGVu
RnJhbWVTZXQpOgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50Rm9jdXNSaW5ncyk6CiAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRE
YXNoYm9hcmRSZWdpb25zKToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CiAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIpOgogICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFuU2Nyb2xsRnJvbVBvaW50KToKICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkpOgogICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6c2Nyb2xsVG9PZmZzZXQpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
YXV0b3Njcm9sbCk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc0FjdGl2ZSk6CiAg
ICAgICAgKHNob3dMYXllclRyZWUpOgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHA6CiAgICAgICAgKFdlYkNvcmU6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgogICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhblNjcm9sbCk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9z
Y3JvbGwpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojppc0FjdGl2ZSk6CiAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpz
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6ZGVzdHJveSk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJk
UmVnaW9ucyk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YW5pbWF0aW9uKToKICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojpkb2N1bWVudCk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZnJhbWUp
OgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA2MiArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAgICAgfCAgIDEwICsrLS0KIFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgICAgICAgICAgICAgICAgfCAgIDE0ICsrLS0KIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAgICAgICAgICAgfCAgICAyICst
CiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCAgICAgICAgICAgICAg
IHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgICAgICAg
ICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwICAgICAg
ICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAg
ICAgICAgICAgICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwICAgICAgICAgICAgICAgIHwgICAxMCArKy0tCiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAgICAgICAgICB8ICAgMTggKysrLS0tCiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIDE1
IGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxOTRj
N2MuLmZmOGU4MjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTAtMDUtMzAgIEFudG9uaW8gR29tZXMgIDx0
b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBjb252ZW5pZW50IGhlbHBlciBnZXR0ZXIgZm9yIEZyYW1lKiB0
byBSZW5kZXJPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5OTI4CisKKyAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKSBpcyBiZWluZyBjYWxs
ZWQgZW5vdWdoIGZyb20gUmVuZGVyT2JqZWN0IGRlcml2YXRlZCBjbGFzc2VzCisgICAgICAgIHRo
YXQgaXQgd29ydGggYWRkaW5nIGEgaGVscGVyIEZyYW1lIGdldHRlciBhcyBhIHNob3J0Y3V0Lgor
CisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFZp
c2libGVQb3NpdGlvblJhbmdlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5BdXRvc2Nyb2xsKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludEN1c3RvbUhpZ2hsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJEYXRhR3JpZDo6aXNBY3RpdmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6ZmxhdHRl
bkZyYW1lU2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50Rm9jdXNSaW5ncyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmFkZERhc2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjphdXRvc2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpp
c0FjdGl2ZSk6CisgICAgICAgIChzaG93TGF5ZXJUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc3BlY3RvclRpbWVs
aW5lQWdlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6YXV0b3Njcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94Ojppc0FjdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFuaW1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpkb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZyYW1lKToKKwogMjAxMC0wNS0yNyAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggNjA3N2FhZS4uM2Q5YzdiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjQ5LDcgKzY0OSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdAogewog
ICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gbV9yZW5k
ZXJlci0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7Ci0gICAgRnJhbWVWaWV3KiB2aWV3
ID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpOworICAgIEZyYW1lVmll
dyogdmlldyA9IG1fcmVuZGVyZXItPmZyYW1lKCktPnZpZXcoKTsKICAgICBGbG9hdFJlY3Qgdmll
d1JlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICB2aWV3UmVjdC5pbnRlcnNl
Y3QoY29udGVudFJlY3QpOwogICAgIHJldHVybiB2aWV3UmVjdC5pc0VtcHR5KCk7CkBAIC0xMTI2
LDcgKzExMjYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFs
dWUoKSBjb25zdAogICAgICAgICByZXR1cm4gdG9SZW5kZXJCdXR0b24obV9yZW5kZXJlciktPnRl
eHQoKTsKIAogICAgIGlmIChpc1dlYkFyZWEoKSkgewotICAgICAgICBpZiAobV9yZW5kZXJlci0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgaWYgKG1fcmVuZGVyZXItPmZyYW1lKCkpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTog
c2hvdWxkIHVzZSBzdGFydE9mRG9jdW1lbnQgYW5kIGVuZE9mRG9jdW1lbnQgKG9yIHJhbmdlRm9y
RG9jdW1lbnQ/KSBoZXJlCkBAIC0xOTY4LDcgKzE5NjgsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc0tleSgpIGNvbnN0CiAKIFZpc2libGVT
ZWxlY3Rpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnNlbGVjdGlvbigpOworICAgIHJldHVybiBtX3JlbmRlcmVyLT5mcmFtZSgpLT5zZWxlY3Rpb24o
KS0+c2VsZWN0aW9uKCk7CiB9CiAKIFBsYWluVGV4dFJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3QKQEAgLTI1MjEsMTAgKzI1MjEsMTAgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3MKICAgICAKICAgICAvLyBtYWtlIHNlbGVjdGlvbiBhbmQg
dGVsbCB0aGUgZG9jdW1lbnQgdG8gdXNlIGl0LiBpZiBpdCdzIHplcm8gbGVuZ3RoLCB0aGVuIG1v
dmUgdG8gdGhhdCBwb3NpdGlvbgogICAgIGlmIChyYW5nZS5zdGFydCA9PSByYW5nZS5lbmQpCi0g
ICAgICAgIG1fcmVuZGVyZXItPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5tb3Zl
VG8ocmFuZ2Uuc3RhcnQsIHRydWUpOworICAgICAgICBtX3JlbmRlcmVyLT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+bW92ZVRvKHJhbmdlLnN0YXJ0LCB0cnVlKTsKICAgICBlbHNlIHsKICAgICAgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLnN0
YXJ0LCByYW5nZS5lbmQpOwotICAgICAgICBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5mcmFtZSgp
LT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CisgICAgICAgIG1fcmVu
ZGVyZXItPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsK
ICAgICB9ICAgIAogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg1MjU4YzIuLjViMDNlZjIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00ODksNyArNDg5LDcgQEAgc3RhdGljIGJvb2wgY2Fu
QXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIC8vIFRoZSBjb2RlIGZvciB0
aGlzIGlzIGluIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlLgogICAgIGlmIChyZW5k
ZXJlci0+bm9kZSgpICE9IHJlbmRlcmVyLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXItPmRvY3VtZW50KCktPmZyYW1lKCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXItPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBkNThmYjRlLi5mOTRiYTk0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMzcwLDggKzM3MCw4IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4
LCBpbnQgdHkpCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7CiAKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UgaGF2ZSBjb21wb3NpdGlv
biB1bmRlcmxpbmVzIHRvIGRyYXcuCi0gICAgYm9vbCBjb250YWluc0NvbXBvc2l0aW9uID0gcmVu
ZGVyZXIoKS0+bm9kZSgpICYmIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgYm9vbCB1
c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21wb3NpdGlvbiAmJiByZW5kZXJlcigpLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25Vc2VzQ3VzdG9tVW5kZXJs
aW5lcygpOworICAgIGJvb2wgY29udGFpbnNDb21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUo
KSAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25Ob2RlKCkgPT0g
cmVuZGVyZXIoKS0+bm9kZSgpOworICAgIGJvb2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRh
aW5zQ29tcG9zaXRpb24gJiYgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0
aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsKIAogICAgIC8vIFNldCBvdXIgZm9udC4KICAgICBS
ZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHJlbmRlcmVyKCktPnN0eWxlKG1fZmlyc3RMaW5lKTsK
QEAgLTM4OSw4ICszODksOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiAgICAgICAgIGlmIChj
b250YWluc0NvbXBvc2l0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzKQogICAgICAgICAgICAg
cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoY29udGV4dCwgdHgsIHR5LCBzdHlsZVRvVXNlLCBm
b250LAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT5jb21wb3NpdGlvblN0YXJ0KCksCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAg
ICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlvblN0YXJ0
KCksCisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBv
c2l0aW9uRW5kKCkpOwogCiAgICAgICAgIHBhaW50RG9jdW1lbnRNYXJrZXJzKGNvbnRleHQsIHR4
LCB0eSwgc3R5bGVUb1VzZSwgZm9udCwgdHJ1ZSk7CiAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8s
IGludCB0eCwgaW50IHR5KQogICAgICAgICBwYWludERvY3VtZW50TWFya2Vycyhjb250ZXh0LCB0
eCwgdHksIHN0eWxlVG9Vc2UsIGZvbnQsIGZhbHNlKTsKIAogICAgICAgICBpZiAodXNlQ3VzdG9t
VW5kZXJsaW5lcykgewotICAgICAgICAgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJs
aW5lPiYgdW5kZXJsaW5lcyA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXMoKTsKKyAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMgPSByZW5kZXJlcigpLT5mcmFt
ZSgpLT5lZGl0b3IoKS0+Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCk7CiAgICAgICAgICAg
ICBzaXplX3QgbnVtVW5kZXJsaW5lcyA9IHVuZGVybGluZXMuc2l6ZSgpOwogCiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5kZXJsaW5lczsgKytpbmRleCkg
ewpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlv
bkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsCiAKIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoaW50IHR4LCBpbnQgdHksIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5kb2N1
bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpOwpAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgaW50IHR4LCBpbnQgdHksIGNvCiAg
ICAgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0UmVuZGVyZWRSZWN0Rm9yTWFya2VyKHJlbmRl
cmVyKCktPm5vZGUoKSwgbWFya2VyLCBtYXJrZXJSZWN0KTsKICAgICAgCiAgICAgLy8gT3B0aW9u
YWxseSBoaWdobGlnaHQgdGhlIHRleHQKLSAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+bWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CisgICAgaWYgKHJl
bmRlcmVyKCktPmZyYW1lKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewog
ICAgICAgICBDb2xvciBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCA/CiAgICAgICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xv
cigpIDoKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVU
ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRl
eCA5YzZiMzUzLi43ODY2Y2NjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xODk3
LDEwICsxODk3LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q2hpbGRyZW4oUGFpbnRJbmZv
JiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiB2b2lkIFJlbmRlckJsb2NrOjpwYWludENh
cmV0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgQ2FyZXRUeXBlIHR5cGUp
CiB7Ci0gICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gdHlwZSA9PSBDdXJzb3JD
YXJldCA/IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpIDogZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpOworICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIHNl
bGVjdGlvbiA9IHR5cGUgPT0gQ3Vyc29yQ2FyZXQgPyBmcmFtZSgpLT5zZWxlY3Rpb24oKSA6IGZy
YW1lKCktPmRyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIC8vIFBhaW50IHRoZSBjYXJldCBp
ZiB0aGUgU2VsZWN0aW9uQ29udHJvbGxlciBzYXlzIHNvIG9yIGlmIGNhcmV0IGJyb3dzaW5nIGlz
IGVuYWJsZWQKLSAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5z
ZXR0aW5ncygpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCktPmNhcmV0QnJvd3Np
bmdFbmFibGVkKCk7CisgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gZnJhbWUoKS0+c2V0dGluZ3Mo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogICAgIFJl
bmRlck9iamVjdCogY2FyZXRQYWludGVyID0gc2VsZWN0aW9uLT5jYXJldFJlbmRlcmVyKCk7CiAg
ICAgaWYgKGNhcmV0UGFpbnRlciA9PSB0aGlzICYmIChzZWxlY3Rpb24tPmlzQ29udGVudEVkaXRh
YmxlKCkgfHwgY2FyZXRCcm93c2luZykpIHsKICAgICAgICAgLy8gQ29udmVydCB0aGUgcGFpbnRp
bmcgb2Zmc2V0IGludG8gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoaXMgcmVuZGVy
ZXIsCkBAIC0xOTA4LDkgKzE5MDgsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENhcmV0KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgQ2FyZXRUeXBlIHR5cAogICAgICAg
ICBvZmZzZXRGb3JDb250ZW50cyh0eCwgdHkpOwogCiAgICAgICAgIGlmICh0eXBlID09IEN1cnNv
ckNhcmV0KQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnBh
aW50Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgcGFpbnRJbmZvLnJlY3QpOworICAg
ICAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnBhaW50Q2FyZXQocGFpbnRJbmZvLmNvbnRl
eHQsIHR4LCB0eSwgcGFpbnRJbmZvLnJlY3QpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5wYWludERyYWdDYXJldChwYWludEluZm8uY29udGV4dCwgdHgs
IHR5LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLT5wYWludERyYWdDYXJl
dChwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCBwYWludEluZm8ucmVjdCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAyNGZmNjY0Li4xNTYzYWUyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTgzNiw3ICs4MzYsNyBAQCBib29sIFJlbmRlckJveDo6cmVwYWlu
dExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXll
cgogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoaW50IHR4LCBpbnQgdHks
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBiZWhpbmRUZXh0KQogewotICAgIEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gZnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgUGFnZSogcGFnZSA9IGZy
YW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3Jp
ZC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHAKaW5kZXggMDBjYmQ3
Yy4uOTE2ZDI1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGF0YUdyaWQu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRhdGFHcmlkLmNwcApAQCAtMTgyLDcg
KzE4Miw3IEBAIHZvaWQgUmVuZGVyRGF0YUdyaWQ6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNj
cm9sbGJhciosIGNvbnN0IEludFJlY3QmKQogCiBib29sIFJlbmRlckRhdGFHcmlkOjppc0FjdGl2
ZSgpIGNvbnN0CiB7Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2Uo
KTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS0+cGFnZSgpOwogICAgIHJldHVybiBwYWdlICYm
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5pc0FjdGl2ZSgpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggYWZlMTk1NC4uNDYwMzJmNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVuZGVyRnJhbWVT
ZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZsYXR0ZW5pbmcoKQogCiBib29sIFJlbmRlckZyYW1lU2V0
OjpmbGF0dGVuRnJhbWVTZXQoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLT5mcmFt
ZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCktPmZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5mcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkKCk7CiB9CiAKIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnN0YXJ0UmVz
aXppbmcoR3JpZEF4aXMmIGF4aXMsIGludCBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAppbmRleCBhMGZiYTk2Li5jNDI1MDdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGludCB0eCwgaW50IHR5KQogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRGb2N1c1Jp
bmdzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAg
ICAgLy8gRG9uJ3QgZHJhdyBmb2N1cyByaW5ncyBpZiBwcmludGluZy4KLSAgICBpZiAoZG9jdW1l
bnQoKS0+cHJpbnRpbmcoKSB8fCAhZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlz
Rm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgIGlmIChkb2N1bWVudCgpLT5wcmludGluZygpIHx8ICFm
cmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSAm
JiAhcGFpbnRJbmZvLmNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAppbmRleCA3NTMxZjkzLi4zNWZjMzI0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKQEAgLTExMTQsOCArMTExNCw4IEBAIHZvaWQgUmVuZGVySW5saW5lOjph
ZGREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMp
CiAgICAgICAgIHJlZ2lvbi5ib3VuZHMuc2V0WChhYnNQb3MueCgpICsgcmVnaW9uLmJvdW5kcy54
KCkpOwogICAgICAgICByZWdpb24uYm91bmRzLnNldFkoYWJzUG9zLnkoKSArIHJlZ2lvbi5ib3Vu
ZHMueSgpKTsKIAotICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAg
ICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5j
aHJvbWUoKS0+c2NhbGVGYWN0b3IoKTsKKyAgICAgICAgaWYgKGZyYW1lKCkpIHsKKyAgICAgICAg
ICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IGZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnNj
YWxlRmFjdG9yKCk7CiAgICAgICAgICAgICBpZiAocGFnZVNjYWxlRmFjdG9yICE9IDEuMGYpIHsK
ICAgICAgICAgICAgICAgICByZWdpb24uYm91bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3Rvcik7CiAg
ICAgICAgICAgICAgICAgcmVnaW9uLmNsaXAuc2NhbGUocGFnZVNjYWxlRmFjdG9yKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjOTdkNjY2Li40MWY0YWNhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxh
eWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcikKIFJlbmRlckxheWVyOjp+UmVuZGVy
TGF5ZXIoKQogewogICAgIGlmIChpblJlc2l6ZU1vZGUoKSAmJiAhcmVuZGVyZXIoKS0+ZG9jdW1l
bnRCZWluZ0Rlc3Ryb3llZCgpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSByZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVu
ZGVyZXIoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cmVz
aXplTGF5ZXJEZXN0cm95ZWQoKTsKICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHN0YXRp
YyBpbmxpbmUgaW50IGFkanVzdGVkU2Nyb2xsRGVsdGEoaW50IGJlZ2lubmluZ0RlbHRhKSB7CiAK
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgc291
cmNlUG9pbnQpIAogewotICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGludCB4RGVsdGEsIGludCB5RGVs
dGEpCiAgICAgICAgICAgICAgICAgbmV4dFJlbmRlcmVyID0gbmV4dFJlbmRlcmVyLT5wYXJlbnQo
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIo
KS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRl
cmVyKCktPmZyYW1lKCk7CiAgICAgICAgICAgICBpZiAoZnJhbWUpCiAgICAgICAgICAgICAgICAg
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKICAgICAg
ICAgfQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG9PZmZz
ZXQoaW50IHgsIGludCB5LCBib29sIHVwZGF0ZVNjcm9sbGJhcnMsIGJvb2wgcmVwYWkKICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRh
aW5lckZvclJlcGFpbnQoKTsKICAgICBJbnRSZWN0IHJlY3RGb3JSZXBhaW50ID0gcmVuZGVyZXIo
KS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiAKLSAg
ICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZy
YW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAg
ICAgIC8vIFRoZSBjYXJldCByZWN0IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIGFmdGVyIHNjcm9s
bGluZwogICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldE5lZWRzTGF5b3V0KCk7CkBAIC0x
NTI4LDcgKzE1MjgsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29u
c3QgSW50UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QgJgogCiB2b2lkIFJlbmRlckxh
eWVyOjphdXRvc2Nyb2xsKCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5kb2N1
bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjM1LDcgKzE2MzUsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKikKIAogYm9vbCBSZW5k
ZXJMYXllcjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigp
LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IHJlbmRlcmVy
KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+aXNBY3RpdmUoKTsKIH0KIApAQCAtMzg0MCw3ICszODQwLDcgQEAgdm9pZCBzaG93
TGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlckxheWVyKiBsYXllcikKICAgICBpZiAoIWxh
eWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0g
bGF5ZXItPnJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICBpZiAoV2ViQ29y
ZTo6RnJhbWUqIGZyYW1lID0gbGF5ZXItPnJlbmRlcmVyKCktPmZyYW1lKCkpIHsKICAgICAgICAg
V2ViQ29yZTo6U3RyaW5nIG91dHB1dCA9IGV4dGVybmFsUmVwcmVzZW50YXRpb24oZnJhbWUsIFdl
YkNvcmU6OlJlbmRlckFzVGV4dFNob3dBbGxMYXllcnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRT
aG93TGF5ZXJOZXN0aW5nIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0NvbXBvc2l0ZWRMYXll
cnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93QWRkcmVzc2VzKTsKICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIlc1xuIiwgb3V0cHV0LnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDk3YzU1NDQuLjYwOTM2YWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVy
KiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCoKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogc3Rh
dGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMWMyMWFmNC4uMmVj
YzJkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGludCB0eCwgaW50IHR5LCBpbgogICAgIAogICAgIENvbG9yIHRleHRDb2xvciA9IGVs
ZW1lbnQtPnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgOiBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9u
RWxlbWVudC0+c2VsZWN0ZWQoKSkgewotICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCktPmZvY3VzZWRO
b2RlKCkgPT0gbm9kZSgpKQorICAgICAgICBpZiAoZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlzRm9j
dXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgPT0gbm9kZSgpKQog
ICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpOwogICAgICAgICAvLyBIb25vciB0aGUgZm9yZWdyb3VuZCBjb2xvciBm
b3IgZGlzYWJsZWQgaXRlbXMKICAgICAgICAgZWxzZSBpZiAoIWVsZW1lbnQtPmRpc2FibGVkKCkp
CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3Jv
dW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgaW4KIAogICAgIENvbG9y
IGJhY2tDb2xvcjsKICAgICBpZiAob3B0aW9uRWxlbWVudCAmJiBvcHRpb25FbGVtZW50LT5zZWxl
Y3RlZCgpKSB7Ci0gICAgICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+
aXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSBub2Rl
KCkpCisgICAgICAgIGlmIChmcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZl
KCkgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSBub2RlKCkpCiAgICAgICAgICAgICBi
YWNrQ29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1lKCktPmluYWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwpAQCAtNDA4LDcgKzQwOCw3IEBA
IHZvaWQgUmVuZGVyTGlzdEJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBwYW5TdGFydE1v
dXNlUG9zaXRpb24pCiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3
aXRoIHRyYW5zZm9ybXMuCiAgICAgRmxvYXRQb2ludCBhYnNPZmZzZXQgPSBsb2NhbFRvQWJzb2x1
dGUoKTsKIAotICAgIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCk7CisgICAgSW50
UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24gPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y3Vy
cmVudE1vdXNlUG9zaXRpb24oKTsKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjdXJy
ZW50IG1vdXNlIHBvc2l0aW9uIGlzIG91dCBvZiB0aGUgd2luZG93LiBXaGVuIHRoZSBtb3VzZSBp
cyBvdXQgb2YgdGhlIHdpbmRvdywgdGhlIHBvc2l0aW9uIGlzIGluY29oZXJlbnQKICAgICBzdGF0
aWMgSW50UG9pbnQgcHJldmlvdXNNb3VzZVBvc2l0aW9uOwogICAgIGlmIChjdXJyZW50TW91c2VQ
b3NpdGlvbi55KCkgPCAwKQpAQCAtNDY2LDcgKzQ2Niw3IEBAIGludCBSZW5kZXJMaXN0Qm94Ojpz
Y3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uKQogCiB2b2lkIFJlbmRlckxp
c3RCb3g6OmF1dG9zY3JvbGwoKQogewotICAgIEludFBvaW50IHBvcyA9IGRvY3VtZW50KCktPmZy
YW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7CisgICAgSW50UG9pbnQgcG9zID0g
ZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5jdXJyZW50TW91c2VQb3NpdGlvbigpKTsKIAogICAgIGludCBlbmRJbmRleCA9IHNjcm9sbFRv
d2FyZChwb3MpOwogICAgIGlmIChlbmRJbmRleCA+PSAwKSB7CkBAIC02MTMsNyArNjEzLDcgQEAg
SW50UmVjdCBSZW5kZXJMaXN0Qm94Ojpjb250cm9sQ2xpcFJlY3QoaW50IHR4LCBpbnQgdHkpIGNv
bnN0CiAKIGJvb2wgUmVuZGVyTGlzdEJveDo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IGZy
YW1lKCktPnBhZ2UoKTsKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+aXNBY3RpdmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOGEz
NWUxOC4uMjY0NmIzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMTksNyAr
MjE5LDcgQEAgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3QoTm9kZSogbm9kZSkKIAogUmVuZGVy
T2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKIHsKLSAgICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVu
dEJlaW5nRGVzdHJveWVkKCkgfHwgIWRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSB8fCBkb2N1
bWVudCgpLT5mcmFtZSgpLT52aWV3KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKKyAgICBBU1NF
UlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgfHwgIWZyYW1lKCktPnZpZXco
KSB8fCBmcmFtZSgpLT52aWV3KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKCFtX2hhc0FYT2JqZWN0KTsKICAgICByZW5kZXJPYmplY3RDb3VudGVy
LmRlY3JlbWVudCgpOwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgQ29sb3IgUmVuZGVyT2JqZWN0Ojpz
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgICAgICBpZiAocHNldWRvU3R5bGUg
JiYgcHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikuaXNWYWxpZCgpKQogICAgICAgICAgICAgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5ibGVuZFdpdGhX
aGl0ZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2xvciA9IGRvY3VtZW50KCktPmZy
YW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSA/CisgICAgICAgICAgICBj
b2xvciA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSA/CiAgICAg
ICAgICAgICAgICAgICAgIHRoZW1lKCktPmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IDoKICAgICAgICAgICAgICAgICAgICAgdGhlbWUoKS0+aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKTsKICAgICB9CkBAIC0xNDA1LDcgKzE0MDUsNyBAQCBDb2xvciBSZW5kZXJPYmpl
Y3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiAgICAgICAgIGlmICghY29sb3Iu
aXNWYWxpZCgpKQogICAgICAgICAgICAgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIH0gZWxzZQotICAgICAgICBjb2xvciA9
IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSA/
CisgICAgICAgIGNvbG9yID0gZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2
ZSgpID8KICAgICAgICAgICAgICAgICB0aGVtZSgpLT5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSA6CiAgICAgICAgICAgICAgICAgdGhlbWUoKS0+aW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKTsKIApAQCAtMTk0NSw5ICsxOTQ1LDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmRlc3Ryb3koKQogICAgIC8vIEZJWE1FOiBSZW5kZXJPYmplY3Q6OmRlc3Ryb3kgc2hvdWxkIG5v
dCBnZXQgY2FsbGVkIHdpdGggYSByZW5kZXJlciB3aG9zZSBkb2N1bWVudAogICAgIC8vIGhhcyBh
IG51bGwgZnJhbWUsIHNvIHdlIGFzc2VydCB0aGlzLiBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHJl
bGVhc2UgYnVpbGRzIHRvIGNyYXNoIHdoaWNoIGlzIHdoeSB3ZQogICAgIC8vIGNoZWNrIHRoYXQg
dGhlIGZyYW1lIGlzIG5vdCBudWxsLgotICAgIEFTU0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsK
LSAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+YXV0b3Njcm9sbFJlbmRlcmVyKCkgPT0gdGhpcykKLSAgICAgICAgZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnN0b3BBdXRvc2Nyb2xsVGltZXIodHJ1ZSk7
CisgICAgQVNTRVJUKGZyYW1lKCkpOworICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5hdXRvc2Nyb2xsUmVuZGVyZXIoKSA9PSB0aGlzKQorICAgICAgICBmcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3JvbGxUaW1lcih0cnVlKTsKIAogICAgIGlmICht
X2hhc0NvdW50ZXJOb2RlTWFwKQogICAgICAgICBSZW5kZXJDb3VudGVyOjpkZXN0cm95Q291bnRl
ck5vZGVzKHRoaXMpOwpAQCAtMjI3Myw4ICsyMjczLDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFk
ZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykK
ICAgICAgICAgcmVnaW9uLmJvdW5kcy5zZXRYKGFic1Bvcy54KCkgKyBzdHlsZVJlZ2lvbi5vZmZz
ZXQubGVmdCgpLnZhbHVlKCkpOwogICAgICAgICByZWdpb24uYm91bmRzLnNldFkoYWJzUG9zLnko
KSArIHN0eWxlUmVnaW9uLm9mZnNldC50b3AoKS52YWx1ZSgpKTsKIAotICAgICAgICBpZiAoZG9j
dW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+c2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgaWYgKGZyYW1lKCkpIHsKKyAgICAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9
IGZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnNjYWxlRmFjdG9yKCk7CiAgICAgICAgICAgICBp
ZiAocGFnZVNjYWxlRmFjdG9yICE9IDEuMGYpIHsKICAgICAgICAgICAgICAgICByZWdpb24uYm91
bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgcmVnaW9uLmNsaXAu
c2NhbGUocGFnZVNjYWxlRmFjdG9yKTsKQEAgLTIzNzksNyArMjM3OSw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjphZGp1c3RSZWN0Rm9yT3V0bGluZUFuZFNoYWRvdyhJbnRSZWN0JiByZWN0KSBjb25z
dAogCiBBbmltYXRpb25Db250cm9sbGVyKiBSZW5kZXJPYmplY3Q6OmFuaW1hdGlvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmZyYW1lKCktPmFuaW1hdGlvbigpOworICAgIHJl
dHVybiBmcmFtZSgpLT5hbmltYXRpb24oKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmltYWdl
Q2hhbmdlZChDYWNoZWRJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCmluZGV4IDNmZjM4YWIuLmYyYjMxMzkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC00NTAsOSArNDUwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzUm9vdGVk
KFJlbmRlclZpZXcqKiA9IDApOwogCiAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBbm9ueW1vdXMgPyAwIDogbV9ub2RlOyB9Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CiAgICAgdm9pZCBzZXROb2RlKE5vZGUq
IG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQogCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CisgICAgRnJhbWUqIGZyYW1lKCkgY29u
c3QgeyByZXR1cm4gZG9jdW1lbnQoKS0+ZnJhbWUoKTsgfQorCiAgICAgYm9vbCBoYXNPdXRsaW5l
QW5ub3RhdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaGFzT3V0bGluZSgpIGNvbnN0IHsgcmV0dXJu
IHN0eWxlKCktPmhhc091dGxpbmUoKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9CiAKLS0g
CjEuNy4wLjQKCg==
</data>
<flag name="review"
          id="42009"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57434</attachid>
            <date>2010-05-30 22:23:56 -0700</date>
            <delta_ts>2010-06-05 08:38:37 -0700</delta_ts>
            <desc>(committed with r60753, reviewed by Darin Adler) patch v2</desc>
            <filename>0001-2010-05-30-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>32833</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAyNzdjNjQ3MWJjM2VlYTIyZGU1YTA3MDg2NmE4Y2ZjYmY0MmFmNTVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU3VuLCAzMCBNYXkgMjAxMCAxMjo0OToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDUtMzAgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFkZCBhIGNvbnZlbmllbnQgaGVs
cGVyIGdldHRlciBmb3IgRnJhbWUqIHRvIFJlbmRlck9iamVjdAogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTkyOAoKICAgICAgICBkb2N1bWVudCgpLT5m
cmFtZSgpIGlzIGJlaW5nIGNhbGxlZCBlbm91Z2ggZnJvbSBSZW5kZXJPYmplY3QgZGVyaXZhdGVk
IGNsYXNzZXMKICAgICAgICB0aGF0IGl0IHdvcnRoIGFkZGluZyBhIGhlbHBlciBGcmFtZSBnZXR0
ZXIgYXMgYSBzaG9ydGN1dC4KCiAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLCBzbyBubyBuZXcg
dGVzdHMuCgogICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcDoKICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZT
Y3JlZW4pOgogICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJp
bmdWYWx1ZSk6CiAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNl
bGVjdGlvbik6CiAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNl
dFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UpOgogICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpjYW5BdXRvc2Nyb2xsKToKICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
cGFpbnQpOgogICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludEN1c3RvbUhpZ2hs
aWdodCk6CiAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFy
a2VyKToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpwYWludENhcmV0KToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0
KToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckRhdGFHcmlkOjppc0FjdGl2ZSk6CiAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6ZmxhdHRlbkZy
YW1lU2V0KToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CiAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MpOgogICAgICAgICogcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWRkRGFz
aGJvYXJkUmVnaW9ucyk6CiAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgogICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2ludCk6CiAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnNjcm9sbFRvT2Zmc2V0KToKICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmF1
dG9zY3JvbGwpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNBY3RpdmUpOgogICAg
ICAgIChzaG93TGF5ZXJUcmVlKToKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgogICAgICAgIChXZWJDb3JlOjppbnNwZWN0b3JUaW1lbGluZUFnZW50KToKICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYW5TY3JvbGwpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphdXRvc2Ny
b2xsKToKICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6aXNBY3RpdmUpOgogICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6flJlbmRlck9iamVjdCk6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKToKICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpz
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmRlc3Ryb3kpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZERhc2hib2FyZFJl
Z2lvbnMpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFuaW1hdGlvbik6CiAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6ZG9jdW1lbnQpOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZyYW1lKToK
LS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgNjIgKysrKysrKysrKysrKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwICAgIHwgICAxMCArKy0tCiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwICAgICAgICAgICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgOCArLQog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAgICAgICAgICAgfCAgICAy
ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHAgICAgICAgICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCAgICAgICAgICAg
ICAgIHwgICAgNCArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgICAg
ICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwICAg
ICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCAgICAgICAgICAgICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwICAgICAgICAgICAgICAgIHwgICAxMCArKy0tCiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAgICAgICAgICB8ICAgMTggKysrLS0tCiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCAgICAgICAgICAgIHwgICAx
MCArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAg
ICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgICAg
ICAgICAgICAgICAgfCAgICA0ICstCiAyMCBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygr
KSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAyMTk0YzdjLi5mZjhlODIzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEw
LTA1LTMwICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY29udmVuaWVudCBo
ZWxwZXIgZ2V0dGVyIGZvciBGcmFtZSogdG8gUmVuZGVyT2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTkyOAorCisgICAgICAgIGRvY3VtZW50
KCktPmZyYW1lKCkgaXMgYmVpbmcgY2FsbGVkIGVub3VnaCBmcm9tIFJlbmRlck9iamVjdCBkZXJp
dmF0ZWQgY2xhc3NlcworICAgICAgICB0aGF0IGl0IHdvcnRoIGFkZGluZyBhIGhlbHBlciBGcmFt
ZSBnZXR0ZXIgYXMgYSBzaG9ydGN1dC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UsIHNv
IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc09mZlNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FuQXV0b3Njcm9sbCk6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6cGFpbnRDdXN0b21IaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRDYXJldCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGF0
YUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGF0YUdyaWQ6OmlzQWN0aXZlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRnJhbWVTZXQ6OmZsYXR0ZW5GcmFtZVNldCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEZv
Y3VzUmluZ3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGREYXNoYm9hcmRSZWdpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFuU2Ny
b2xsRnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxCeVJl
Y3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxUb09mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNBY3RpdmUpOgorICAgICAgICAoc2hvd0xheWVyVHJl
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFuU2Ny
b2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6aXNBY3RpdmUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp+
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZGVz
dHJveSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZERhc2hib2FyZFJlZ2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphbmltYXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpmcmFtZSk6
CisKIDIwMTAtMDUtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDYwNzdhYWUuLjNkOWM3YjAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKQEAgLTY0OSw3ICs2NDksNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7CiAgICAgSW50
UmVjdCBjb250ZW50UmVjdCA9IG1fcmVuZGVyZXItPmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dCgpOwotICAgIEZyYW1lVmlldyogdmlldyA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCktPmZyYW1l
KCktPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3JlbmRlcmVyLT5mcmFtZSgpLT52
aWV3KCk7CiAgICAgRmxvYXRSZWN0IHZpZXdSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAgICAgdmlld1JlY3QuaW50ZXJzZWN0KGNvbnRlbnRSZWN0KTsKICAgICByZXR1cm4gdmll
d1JlY3QuaXNFbXB0eSgpOwpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRvUmVu
ZGVyQnV0dG9uKG1fcmVuZGVyZXIpLT50ZXh0KCk7CiAKICAgICBpZiAoaXNXZWJBcmVhKCkpIHsK
LSAgICAgICAgaWYgKG1fcmVuZGVyZXItPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGlm
IChtX3JlbmRlcmVyLT5mcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
ICAgICAKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB1c2Ugc3RhcnRPZkRvY3VtZW50IGFuZCBl
bmRPZkRvY3VtZW50IChvciByYW5nZUZvckRvY3VtZW50PykgaGVyZQpAQCAtMTk2OCw3ICsxOTY4
LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nl
c3NLZXkoKSBjb25zdAogCiBWaXNpYmxlU2VsZWN0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNlbGVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXItPmRvY3VtZW50
KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKKyAgICByZXR1cm4gbV9yZW5k
ZXJlci0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogfQogCiBQbGFpblRleHRS
YW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0
CkBAIC0yNTIxLDEwICsyNTIxLDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zCiAgICAgCiAg
ICAgLy8gbWFrZSBzZWxlY3Rpb24gYW5kIHRlbGwgdGhlIGRvY3VtZW50IHRvIHVzZSBpdC4gaWYg
aXQncyB6ZXJvIGxlbmd0aCwgdGhlbiBtb3ZlIHRvIHRoYXQgcG9zaXRpb24KICAgICBpZiAocmFu
Z2Uuc3RhcnQgPT0gcmFuZ2UuZW5kKQotICAgICAgICBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5zZWxlY3Rpb24oKS0+bW92ZVRvKHJhbmdlLnN0YXJ0LCB0cnVlKTsKKyAgICAgICAg
bV9yZW5kZXJlci0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vdmVUbyhyYW5nZS5zdGFydCwgdHJ1
ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0g
VmlzaWJsZVNlbGVjdGlvbihyYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKLSAgICAgICAgbV9yZW5k
ZXJlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdT
ZWxlY3Rpb24pOworICAgICAgICBtX3JlbmRlcmVyLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CiAgICAgfSAgICAKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCA4NTI1OGMyLi41YjAzZWYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNDg5LDcg
KzQ4OSw3IEBAIHN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKICAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5kZXJMYXllcjo6c2Nyb2xsUmVj
dFRvVmlzaWJsZS4KICAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAhPSByZW5kZXJlci0+ZG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVy
LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyLT5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBQYWdlKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXgg
ZDU4ZmI0ZS4uZjk0YmE5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTM3
MCw4ICszNzAsOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwogCiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIg
b3Igbm90IHdlIGhhdmUgY29tcG9zaXRpb24gdW5kZXJsaW5lcyB0byBkcmF3LgotICAgIGJvb2wg
Y29udGFpbnNDb21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiByZW5kZXJlcigpLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVy
ZXIoKS0+bm9kZSgpOwotICAgIGJvb2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29t
cG9zaXRpb24gJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNv
bXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsKKyAgICBib29sIGNvbnRhaW5zQ29tcG9z
aXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCktPmNvbXBvc2l0aW9uTm9kZSgpID09IHJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICBib29sIHVz
ZUN1c3RvbVVuZGVybGluZXMgPSBjb250YWluc0NvbXBvc2l0aW9uICYmIHJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlvblVzZXNDdXN0b21VbmRlcmxpbmVzKCk7CiAKICAg
ICAvLyBTZXQgb3VyIGZvbnQuCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJl
cigpLT5zdHlsZShtX2ZpcnN0TGluZSk7CkBAIC0zODksOCArMzg5LDggQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSkKIAogICAgICAgICBpZiAoY29udGFpbnNDb21wb3NpdGlvbiAmJiAhdXNlQ3VzdG9t
VW5kZXJsaW5lcykKICAgICAgICAgICAgIHBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKGNvbnRl
eHQsIHR4LCB0eSwgc3R5bGVUb1VzZSwgZm9udCwKLSAgICAgICAgICAgICAgICByZW5kZXJlcigp
LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25TdGFydCgpLAotICAg
ICAgICAgICAgICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5j
b21wb3NpdGlvbkVuZCgpKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25TdGFydCgpLAorICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkt
PmZyYW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlvbkVuZCgpKTsKIAogICAgICAgICBwYWludERv
Y3VtZW50TWFya2Vycyhjb250ZXh0LCB0eCwgdHksIHN0eWxlVG9Vc2UsIGZvbnQsIHRydWUpOwog
CkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgcGFpbnRE
b2N1bWVudE1hcmtlcnMoY29udGV4dCwgdHgsIHR5LCBzdHlsZVRvVXNlLCBmb250LCBmYWxzZSk7
CiAKICAgICAgICAgaWYgKHVzZUN1c3RvbVVuZGVybGluZXMpIHsKLSAgICAgICAgICAgIGNvbnN0
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMgPSByZW5kZXJlcigpLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVz
KCk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRl
cmxpbmVzID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmN1c3RvbUNvbXBvc2l0aW9u
VW5kZXJsaW5lcygpOwogICAgICAgICAgICAgc2l6ZV90IG51bVVuZGVybGluZXMgPSB1bmRlcmxp
bmVzLnNpemUoKTsKIAogICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG51bVVuZGVybGluZXM7ICsraW5kZXgpIHsKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgaW50IHR4LAogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0
KGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiB7Ci0gICAgRnJhbWUq
IGZyYW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKQEAgLTgwNiw3ICs4MDYsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
cHQsIGludCB0eCwgaW50IHR5LCBjbwogICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnNldFJl
bmRlcmVkUmVjdEZvck1hcmtlcihyZW5kZXJlcigpLT5ub2RlKCksIG1hcmtlciwgbWFya2VyUmVj
dCk7CiAgICAgIAogICAgIC8vIE9wdGlvbmFsbHkgaGlnaGxpZ2h0IHRoZSB0ZXh0Ci0gICAgaWYg
KHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQoKSkgeworICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5tYXJrZWRUZXh0TWF0
Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKICAgICAgICAgQ29sb3IgY29sb3IgPSBtYXJrZXIuYWN0
aXZlTWF0Y2ggPwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxhdGZvcm1BY3Rp
dmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CiAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAppbmRleCA3NDExYzU0Li5hMTY4OWE1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckFwcGxldC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW5kZXJBcHBsZXQ6
OmNyZWF0ZVdpZGdldElmTmVjZXNzYXJ5KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIHNldFdpZGdldChmcmFtZS0+bG9hZGVy
KCktPmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoSW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRI
ZWlnaHQpLCBlbGVtZW50LCBtX2FyZ3MpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCA5YzZiMzUzLi43ODY2Y2NjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0x
ODk3LDEwICsxODk3LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q2hpbGRyZW4oUGFpbnRJ
bmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dENhcmV0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgQ2FyZXRUeXBlIHR5
cGUpCiB7Ci0gICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gdHlwZSA9PSBDdXJz
b3JDYXJldCA/IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpIDogZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpOworICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIq
IHNlbGVjdGlvbiA9IHR5cGUgPT0gQ3Vyc29yQ2FyZXQgPyBmcmFtZSgpLT5zZWxlY3Rpb24oKSA6
IGZyYW1lKCktPmRyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIC8vIFBhaW50IHRoZSBjYXJl
dCBpZiB0aGUgU2VsZWN0aW9uQ29udHJvbGxlciBzYXlzIHNvIG9yIGlmIGNhcmV0IGJyb3dzaW5n
IGlzIGVuYWJsZWQKLSAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBkb2N1bWVudCgpLT5mcmFtZSgp
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCktPmNhcmV0QnJv
d3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gZnJhbWUoKS0+c2V0dGlu
Z3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogICAg
IFJlbmRlck9iamVjdCogY2FyZXRQYWludGVyID0gc2VsZWN0aW9uLT5jYXJldFJlbmRlcmVyKCk7
CiAgICAgaWYgKGNhcmV0UGFpbnRlciA9PSB0aGlzICYmIChzZWxlY3Rpb24tPmlzQ29udGVudEVk
aXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpIHsKICAgICAgICAgLy8gQ29udmVydCB0aGUgcGFp
bnRpbmcgb2Zmc2V0IGludG8gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoaXMgcmVu
ZGVyZXIsCkBAIC0xOTA4LDkgKzE5MDgsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENhcmV0
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgQ2FyZXRUeXBlIHR5cAogICAg
ICAgICBvZmZzZXRGb3JDb250ZW50cyh0eCwgdHkpOwogCiAgICAgICAgIGlmICh0eXBlID09IEN1
cnNvckNhcmV0KQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnBhaW50Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgcGFpbnRJbmZvLnJlY3QpOwor
ICAgICAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnBhaW50Q2FyZXQocGFpbnRJbmZvLmNv
bnRleHQsIHR4LCB0eSwgcGFpbnRJbmZvLnJlY3QpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWludERyYWdDYXJldChwYWludEluZm8uY29udGV4dCwg
dHgsIHR5LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLT5wYWludERyYWdD
YXJldChwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCBwYWludEluZm8ucmVjdCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAyNGZmNjY0Li5jY2RiYmM3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTgzNiw3ICs4MzYsNyBAQCBib29sIFJlbmRlckJveDo6cmVw
YWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxM
YXllcgogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoaW50IHR4LCBpbnQg
dHksIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBiZWhpbmRUZXh0KQogewotICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhp
cy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEYXRhR3JpZC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHAKaW5k
ZXggMDBjYmQ3Yy4uOTE2ZDI1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGF0YUdyaWQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRhdGFHcmlkLmNwcApA
QCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVuZGVyRGF0YUdyaWQ6OmludmFsaWRhdGVTY3JvbGxi
YXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKQogCiBib29sIFJlbmRlckRhdGFHcmlk
Ojppc0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPmZyYW1l
KCktPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS0+cGFnZSgpOwogICAgIHJldHVy
biBwYWdlICYmIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5pc0FjdGl2ZSgpOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggYWZlMTk1NC4uNTJjNGNkZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZsYXR0ZW5pbmcoKQogCiBib29sIFJlbmRl
ckZyYW1lU2V0OjpmbGF0dGVuRnJhbWVTZXQoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVu
dCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCktPmZyYW1lRmxh
dHRlbmluZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5n
cygpLT5mcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCk7CiB9CiAKIHZvaWQgUmVuZGVyRnJhbWVTZXQ6
OnN0YXJ0UmVzaXppbmcoR3JpZEF4aXMmIGF4aXMsIGludCBwb3NpdGlvbikKQEAgLTcxNCw3ICs3
MTQsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpzZXRJc1Jlc2l6aW5nKGJvb2wgaXNSZXNpemlu
ZykKICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgICAgICB0b1Jl
bmRlckZyYW1lU2V0KGFuY2VzdG9yKS0+bV9pc0NoaWxkUmVzaXppbmcgPSBpc1Jlc2l6aW5nOwog
ICAgIH0KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRSZXNpemluZ0ZyYW1lU2V0KGlzUmVzaXppbmcgPyBmcmFtZVNldCgpIDogMCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBhMGZiYTk2Li5jNDI1MDdhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRGb2N1c1JpbmdzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgLy8gRG9uJ3QgZHJhdyBmb2N1cyByaW5ncyBp
ZiBwcmludGluZy4KLSAgICBpZiAoZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSB8fCAhZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgIGlmIChk
b2N1bWVudCgpLT5wcmludGluZygpIHx8ICFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2Vk
QW5kQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnVwZGF0aW5n
Q29udHJvbFRpbnRzKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA3NTMxZjkz
Li4zNWZjMzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTExMTQsOCArMTEx
NCw4IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNo
Ym9hcmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCiAgICAgICAgIHJlZ2lvbi5ib3VuZHMuc2V0WChh
YnNQb3MueCgpICsgcmVnaW9uLmJvdW5kcy54KCkpOwogICAgICAgICByZWdpb24uYm91bmRzLnNl
dFkoYWJzUG9zLnkoKSArIHJlZ2lvbi5ib3VuZHMueSgpKTsKIAotICAgICAgICBpZiAoZG9jdW1l
bnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+c2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgaWYgKGZyYW1lKCkpIHsKKyAgICAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IGZy
YW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnNjYWxlRmFjdG9yKCk7CiAgICAgICAgICAgICBpZiAo
cGFnZVNjYWxlRmFjdG9yICE9IDEuMGYpIHsKICAgICAgICAgICAgICAgICByZWdpb24uYm91bmRz
LnNjYWxlKHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgcmVnaW9uLmNsaXAuc2Nh
bGUocGFnZVNjYWxlRmFjdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjOTdk
NjY2Li40MWY0YWNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xODksNyArMTg5
LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5k
ZXJlcikKIFJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIoKQogewogICAgIGlmIChpblJlc2l6ZU1v
ZGUoKSAmJiAhcmVuZGVyZXIoKS0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKSB7Ci0gICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKSkKICAgICAgICAgICAg
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cmVzaXplTGF5ZXJEZXN0cm95ZWQoKTsKICAgICB9CiAK
QEAgLTEyMDYsNyArMTIwNiw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFkanVzdGVkU2Nyb2xsRGVs
dGEoaW50IGJlZ2lubmluZ0RlbHRhKSB7CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZy
b21Qb2ludChjb25zdCBJbnRQb2ludCYgc291cmNlUG9pbnQpIAogewotICAgIEZyYW1lKiBmcmFt
ZSA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0g
cmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAg
ICAgCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vy
c2l2ZWx5KGludCB4RGVsdGEsIGludCB5RGVsdGEpCiAgICAgICAgICAgICAgICAgbmV4dFJlbmRl
cmVyID0gbmV4dFJlbmRlcmVyLT5wYXJlbnQoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICAg
ICAgICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CiAgICAgICAgICAgICBp
ZiAoZnJhbWUpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVB
dXRvc2Nyb2xsUmVuZGVyZXIoKTsKICAgICAgICAgfQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG9PZmZzZXQoaW50IHgsIGludCB5LCBib29sIHVwZGF0ZVNj
cm9sbGJhcnMsIGJvb2wgcmVwYWkKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBJbnRSZWN0
IHJlY3RGb3JSZXBhaW50ID0gcmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lcik7CiAKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5k
b2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1l
KCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIC8vIFRoZSBjYXJldCByZWN0IG5lZWRzIHRv
IGJlIGludmFsaWRhdGVkIGFmdGVyIHNjcm9sbGluZwogICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPnNldE5lZWRzTGF5b3V0KCk7CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBJbnRSZWN0IFJlbmRl
ckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0
IEludFJlY3QgJgogCiB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKCkKIHsKLSAgICBGcmFt
ZSogZnJhbWUgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBm
cmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNjM1LDcgKzE2MzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp2YWx1ZUNoYW5n
ZWQoU2Nyb2xsYmFyKikKIAogYm9vbCBSZW5kZXJMYXllcjo6aXNBY3RpdmUoKSBjb25zdAogewot
ICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7
CisgICAgUGFnZSogcGFnZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICByZXR1
cm4gcGFnZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+aXNBY3RpdmUoKTsKIH0KIApAQCAt
Mzg0MCw3ICszODQwLDcgQEAgdm9pZCBzaG93TGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRl
ckxheWVyKiBsYXllcikKICAgICBpZiAoIWxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbGF5ZXItPnJlbmRlcmVyKCktPmRvY3VtZW50KCkt
PmZyYW1lKCkpIHsKKyAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbGF5ZXItPnJlbmRl
cmVyKCktPmZyYW1lKCkpIHsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG91dHB1dCA9IGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oZnJhbWUsIFdlYkNvcmU6OlJlbmRlckFzVGV4dFNob3dBbGxMYXll
cnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93TGF5ZXJOZXN0aW5nIHwgV2ViQ29yZTo6UmVu
ZGVyQXNUZXh0U2hvd0NvbXBvc2l0ZWRMYXllcnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93
QWRkcmVzc2VzKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgb3V0cHV0LnV0Zjgo
KS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDk3YzU1NDQuLjYwOTM2YWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcApAQCAtMTAyOSw3ICsxMDI5LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCoK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIGlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBGcmFt
ZSogZnJhbWUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSByZW5kZXJlci0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
MDsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKaW5kZXggMWMyMWFmNC4uMmVjYzJkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRl
bUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5LCBpbgogICAg
IAogICAgIENvbG9yIHRleHRDb2xvciA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkgPyBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikg
OiBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAg
aWYgKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSkgewotICAgICAg
ICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2
ZSgpICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgPT0gbm9kZSgpKQorICAgICAgICBpZiAo
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCkgPT0gbm9kZSgpKQogICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUo
KS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgICAgICAvLyBI
b25vciB0aGUgZm9yZWdyb3VuZCBjb2xvciBmb3IgZGlzYWJsZWQgaXRlbXMKICAgICAgICAgZWxz
ZSBpZiAoIWVsZW1lbnQtPmRpc2FibGVkKCkpCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQg
dHgsIGludCB0eSwgaW4KIAogICAgIENvbG9yIGJhY2tDb2xvcjsKICAgICBpZiAob3B0aW9uRWxl
bWVudCAmJiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKSB7Ci0gICAgICAgIGlmIChkb2N1bWVu
dCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSBub2RlKCkpCisgICAgICAgIGlmIChmcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KSA9PSBub2RlKCkpCiAgICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJhY2tDb2xvciA9IHRoZW1lKCktPmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFuU2Nyb2xs
KGNvbnN0IEludFBvaW50JiBwYW5TdGFydE1vdXNlUG9zaXRpb24pCiAgICAgLy8gRklYTUU6IFRo
aXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgRmxvYXRQb2lu
dCBhYnNPZmZzZXQgPSBsb2NhbFRvQWJzb2x1dGUoKTsKIAotICAgIEludFBvaW50IGN1cnJlbnRN
b3VzZVBvc2l0aW9uID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJl
bnRNb3VzZVBvc2l0aW9uKCk7CisgICAgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24gPSBm
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKTsKICAgICAvLyBX
ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9uIGlzIG91dCBvZiB0
aGUgd2luZG93LiBXaGVuIHRoZSBtb3VzZSBpcyBvdXQgb2YgdGhlIHdpbmRvdywgdGhlIHBvc2l0
aW9uIGlzIGluY29oZXJlbnQKICAgICBzdGF0aWMgSW50UG9pbnQgcHJldmlvdXNNb3VzZVBvc2l0
aW9uOwogICAgIGlmIChjdXJyZW50TW91c2VQb3NpdGlvbi55KCkgPCAwKQpAQCAtNDY2LDcgKzQ2
Niw3IEBAIGludCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmIGRl
c3RpbmF0aW9uKQogCiB2b2lkIFJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwoKQogewotICAgIElu
dFBvaW50IHBvcyA9IGRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRp
b24oKSk7CisgICAgSW50UG9pbnQgcG9zID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpKTsKIAog
ICAgIGludCBlbmRJbmRleCA9IHNjcm9sbFRvd2FyZChwb3MpOwogICAgIGlmIChlbmRJbmRleCA+
PSAwKSB7CkBAIC02MTMsNyArNjEzLDcgQEAgSW50UmVjdCBSZW5kZXJMaXN0Qm94Ojpjb250cm9s
Q2xpcFJlY3QoaW50IHR4LCBpbnQgdHkpIGNvbnN0CiAKIGJvb2wgUmVuZGVyTGlzdEJveDo6aXNB
Y3RpdmUoKSBjb25zdAogewotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5w
YWdlKCk7CisgICAgUGFnZSogcGFnZSA9IGZyYW1lKCktPnBhZ2UoKTsKICAgICByZXR1cm4gcGFn
ZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+aXNBY3RpdmUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggOGEzNWUxOC4uMjY0NmIzZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgUmVuZGVyT2JqZWN0OjpSZW5kZXJP
YmplY3QoTm9kZSogbm9kZSkKIAogUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKIHsKLSAg
ICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgfHwgIWRvY3VtZW50
KCktPmZyYW1lKCktPnZpZXcoKSB8fCBkb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3KCktPmxheW91
dFJvb3QoKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5nRGVz
dHJveWVkKCkgfHwgIWZyYW1lKCktPnZpZXcoKSB8fCBmcmFtZSgpLT52aWV3KCktPmxheW91dFJv
b3QoKSAhPSB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2hhc0FYT2JqZWN0
KTsKICAgICByZW5kZXJPYmplY3RDb3VudGVyLmRlY3JlbWVudCgpOwpAQCAtMTM4Niw3ICsxMzg2
LDcgQEAgQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAogICAgICAgICBpZiAocHNldWRvU3R5bGUgJiYgcHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKS5ibGVuZFdpdGhXaGl0ZSgpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjb2xvciA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRB
bmRBY3RpdmUoKSA/CisgICAgICAgICAgICBjb2xvciA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5p
c0ZvY3VzZWRBbmRBY3RpdmUoKSA/CiAgICAgICAgICAgICAgICAgICAgIHRoZW1lKCktPmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIDoKICAgICAgICAgICAgICAgICAgICAgdGhlbWUo
KS0+aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CkBAIC0xNDA1LDcg
KzE0MDUsNyBAQCBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0CiAgICAgICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgY29sb3Ig
PSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwog
ICAgIH0gZWxzZQotICAgICAgICBjb2xvciA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlv
bigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSA/CisgICAgICAgIGNvbG9yID0gZnJhbWUoKS0+c2Vs
ZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpID8KICAgICAgICAgICAgICAgICB0aGVtZSgp
LT5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSA6CiAgICAgICAgICAgICAgICAgdGhl
bWUoKS0+aW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKIApAQCAtMTk0NSw5ICsx
OTQ1LDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIC8vIEZJWE1FOiBSZW5k
ZXJPYmplY3Q6OmRlc3Ryb3kgc2hvdWxkIG5vdCBnZXQgY2FsbGVkIHdpdGggYSByZW5kZXJlciB3
aG9zZSBkb2N1bWVudAogICAgIC8vIGhhcyBhIG51bGwgZnJhbWUsIHNvIHdlIGFzc2VydCB0aGlz
LiBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHJlbGVhc2UgYnVpbGRzIHRvIGNyYXNoIHdoaWNoIGlz
IHdoeSB3ZQogICAgIC8vIGNoZWNrIHRoYXQgdGhlIGZyYW1lIGlzIG5vdCBudWxsLgotICAgIEFT
U0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAm
JiBkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+YXV0b3Njcm9sbFJlbmRlcmVy
KCkgPT0gdGhpcykKLSAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PnN0b3BBdXRvc2Nyb2xsVGltZXIodHJ1ZSk7CisgICAgQVNTRVJUKGZyYW1lKCkpOworICAgIGlm
IChmcmFtZSgpICYmIGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5hdXRvc2Nyb2xsUmVuZGVyZXIo
KSA9PSB0aGlzKQorICAgICAgICBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3Jv
bGxUaW1lcih0cnVlKTsKIAogICAgIGlmIChtX2hhc0NvdW50ZXJOb2RlTWFwKQogICAgICAgICBS
ZW5kZXJDb3VudGVyOjpkZXN0cm95Q291bnRlck5vZGVzKHRoaXMpOwpAQCAtMjI3Myw4ICsyMjcz
LDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hi
b2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKICAgICAgICAgcmVnaW9uLmJvdW5kcy5zZXRYKGFi
c1Bvcy54KCkgKyBzdHlsZVJlZ2lvbi5vZmZzZXQubGVmdCgpLnZhbHVlKCkpOwogICAgICAgICBy
ZWdpb24uYm91bmRzLnNldFkoYWJzUG9zLnkoKSArIHN0eWxlUmVnaW9uLm9mZnNldC50b3AoKS52
YWx1ZSgpKTsKIAotICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAg
ICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5j
aHJvbWUoKS0+c2NhbGVGYWN0b3IoKTsKKyAgICAgICAgaWYgKGZyYW1lKCkpIHsKKyAgICAgICAg
ICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IGZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnNj
YWxlRmFjdG9yKCk7CiAgICAgICAgICAgICBpZiAocGFnZVNjYWxlRmFjdG9yICE9IDEuMGYpIHsK
ICAgICAgICAgICAgICAgICByZWdpb24uYm91bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3Rvcik7CiAg
ICAgICAgICAgICAgICAgcmVnaW9uLmNsaXAuc2NhbGUocGFnZVNjYWxlRmFjdG9yKTsKQEAgLTIz
NzksNyArMjM3OSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGp1c3RSZWN0Rm9yT3V0bGluZUFu
ZFNoYWRvdyhJbnRSZWN0JiByZWN0KSBjb25zdAogCiBBbmltYXRpb25Db250cm9sbGVyKiBSZW5k
ZXJPYmplY3Q6OmFuaW1hdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmZy
YW1lKCktPmFuaW1hdGlvbigpOworICAgIHJldHVybiBmcmFtZSgpLT5hbmltYXRpb24oKTsKIH0K
IAogdm9pZCBSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSogaW1hZ2UsIGNv
bnN0IEludFJlY3QqIHJlY3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDNmZjM4YWIu
LmYyYjMxMzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC00NTAsOSArNDUwLDExIEBA
IHB1YmxpYzoKICAgICBib29sIGlzUm9vdGVkKFJlbmRlclZpZXcqKiA9IDApOwogCiAgICAgTm9k
ZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbm9ueW1vdXMgPyAwIDogbV9ub2RlOyB9Ci0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgp
OyB9CiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQogCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgp
OyB9CisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKS0+ZnJhbWUo
KTsgfQorCiAgICAgYm9vbCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0OwogICAgIGJvb2wg
aGFzT3V0bGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmhhc091dGxpbmUoKSB8fCBoYXNP
dXRsaW5lQW5ub3RhdGlvbigpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcAppbmRleCA2ZTliZjU3Li43MDA5MzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6
c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiBpbm5lclRleHRWYWx1ZSkKICAgICBTdHJp
bmcgdmFsdWUgPSBpbm5lclRleHRWYWx1ZTsKICAgICBpZiAodmFsdWUgIT0gdGV4dCgpIHx8ICFt
X2lubmVyVGV4dC0+aGFzQ2hpbGROb2RlcygpKSB7CiAgICAgICAgIGlmICh2YWx1ZSAhPSB0ZXh0
KCkpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
KSB7CisgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewogICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNj
ZXNzaWJpbGl0eUVuYWJsZWQoKSkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFJlbmRlclRleHRD
b250cm9sOjpzZXRMYXN0Q2hhbmdlV2FzVXNlckVkaXQoYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVk
aXQpCiAKIGludCBSZW5kZXJUZXh0Q29udHJvbDo6c2VsZWN0aW9uU3RhcnQoKQogewotICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhp
cy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpKTsK
QEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnNlbGVjdGlvblN0YXJ0
KCkKIAogaW50IFJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25FbmQoKQogewotICAgIEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7CkBAIC0y
NTUsNyArMjU1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIH0KICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVj
dGlvbiA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogCi0g
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25DaGFuZ2VkKGJvb2wgdXNlclRyaWdnZXJlZCkKIHsK
ICAgICBjYWNoZVNlbGVjdGlvbihzZWxlY3Rpb25TdGFydCgpLCBzZWxlY3Rpb25FbmQoKSk7CiAK
LSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAgIGlmIChG
cmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0
aW9uKCktPmlzUmFuZ2UoKSAmJiB1c2VyVHJpZ2dlcmVkKQogICAgICAgICAgICAgbm9kZSgpLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50LCB0cnVl
LCBmYWxzZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmNwcAppbmRleCA5YWU0YmZjLi5mODljYjNmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkK
IAogICAgIG5vZGUoKS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5p
bnB1dEV2ZW50LCB0cnVlLCBmYWxzZSkpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCiAg
ICAgICAgIGZyYW1lLT50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0ZXh0QXJlYSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmlu
ZGV4IDdmNDA5NDQuLjAzYjFmZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCiAgICAgICAgIHN0YXJ0
U2VhcmNoRXZlbnRUaW1lcigpOwogCiAgICAgaWYgKCF3YXNDaGFuZ2VkICYmIG5vZGUoKS0+Zm9j
dXNlZCgpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
KQorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKICAgICAgICAgICAg
IGZyYW1lLT50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5v
ZGUoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCA2OTEx
NzlkLi4yNGU0OWM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI2LDcg
KzEyNiw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnRFbGxpcHNpc0JveChSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsCiAKIHZvaWQgUm9vdElubGluZUJveDo6
YWRkSGlnaGxpZ2h0T3ZlcmZsb3coKQogewotICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCkt
PmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSb290SW5saW5lQm94Ojpw
YWludEN1c3RvbUhpZ2hsaWdodChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQKICAgICBpZiAoIXJlbmRlcmVyKCktPnNob3VsZFBhaW50V2l0aGluUm9vdChwYWludEluZm8p
IHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBG
cmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLS0gCjEuNy4wLjQK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>