<?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>161865</bug_id>
          
          <creation_ts>2016-09-12 10:06:28 -0700</creation_ts>
          <short_desc>Switch remaining users of Document::inPageCache() to pageCacheState()</short_desc>
          <delta_ts>2016-10-12 09:23:50 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1228771</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-12 10:06:28 -0700</bug_when>
    <thetext>Switch remaining users of Document::inPageCache() to pageCacheState() as the former one is confusing (given that it returns true while the pagehide event is being fired).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228773</commentid>
    <comment_count>1</comment_count>
      <attachid>288576</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-12 10:08:59 -0700</bug_when>
    <thetext>Created attachment 288576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228862</commentid>
    <comment_count>2</comment_count>
      <attachid>288576</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 12:52:55 -0700</bug_when>
    <thetext>Comment on attachment 288576
Patch

Clearing flags on attachment: 288576

Committed r205818: &lt;http://trac.webkit.org/changeset/205818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228863</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 12:53:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238897</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-11 09:45:36 -0700</bug_when>
    <thetext>I don&apos;t think 
  frameView.frame().document()-&gt;pageCacheState() != Document::NotInPageCache
is clearer than:
  frameView.frame().document()-&gt;inPageCache()
particularly because of the double negative. Can you add back inPageCache() as a helper?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238903</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-11 10:03:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I don&apos;t think 
&gt;   frameView.frame().document()-&gt;pageCacheState() != Document::NotInPageCache
&gt; is clearer than:
&gt;   frameView.frame().document()-&gt;inPageCache()
&gt; particularly because of the double negative. Can you add back inPageCache()
&gt; as a helper?

Well, clearly it was not clear because it was not used properly and introduced security bugs.

You&apos;d like inPageCache() as a helper for what?
frameView.frame().document()-&gt;pageCacheState() != Document::NotInPageCache means it could be either:
- about to enter page cache (a)
- in page cache (b)

previously, inPageCache() was a helper for returning true for both (a) and (b). We could re-introduce it for (b) only, which would be equivalent to:
frameView.frame().document()-&gt;pageCacheState() == Document::InPageCache

not
frameView.frame().document()-&gt;pageCacheState() != Document::NotInPageCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239295</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-12 09:11:04 -0700</bug_when>
    <thetext>I understand the need to clearly distinguish the three different cases and not have this be a simple &quot;in&quot; vs. &quot;out&quot; of page cache. But I also agree that boolean expressions with pageCacheState are not easy to read; not really clear unless you know what the three states are, and even then pretty wording.

Maybe we can name two or three boolean-returning functions with clear unambiguous names, even if they are longer names, and use them. I think that would be better than what we currently have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239308</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-12 09:23:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I understand the need to clearly distinguish the three different cases and
&gt; not have this be a simple &quot;in&quot; vs. &quot;out&quot; of page cache. But I also agree
&gt; that boolean expressions with pageCacheState are not easy to read; not
&gt; really clear unless you know what the three states are, and even then pretty
&gt; wording.
&gt; 
&gt; Maybe we can name two or three boolean-returning functions with clear
&gt; unambiguous names, even if they are longer names, and use them. I think that
&gt; would be better than what we currently have.

Yes, I think this would be nice.

It looks like the checks we&apos;re using currently are:
- pageCacheState() != NotInPageCache
-&gt; could become aboutToEnterOrInPageCache()

- pageCacheState() == NotInPageCache
-&gt; could become !aboutToEnterOrInPageCache()

- pageCacheState() == Document::InPageCache
-&gt; could become enteredPageCache() or inPageCache()

- pageCacheState() == Document::AboutToEnterPageCache
-&gt; could become aboutToEnterPageCache()

Let me know what you think.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288576</attachid>
            <date>2016-09-12 10:08:59 -0700</date>
            <delta_ts>2016-09-12 12:52:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161865-20160912100626.patch</filename>
            <type>text/plain</type>
            <size>30039</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVkYTM3OTk4N2ZjZDdl
NmVhMjQ4ODIyZTY0NDE4NDNhNTAzOTcwYi4uMmZmNDRiYjExZGRkMjMyMmM5YjMzYTVmMGEzYWIw
YmUzMmZlMWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE2LTA5LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHJlbWFpbmluZyB1
c2VycyBvZiBEb2N1bWVudDo6aW5QYWdlQ2FjaGUoKSB0byBwYWdlQ2FjaGVTdGF0ZSgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4NjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggcmVtYWlu
aW5nIHVzZXJzIG9mIERvY3VtZW50OjppblBhZ2VDYWNoZSgpIHRvIHBhZ2VDYWNoZVN0YXRlKCkg
YXMKKyAgICAgICAgdGhlIGZvcm1lciBvbmUgaXMgY29uZnVzaW5nIChnaXZlbiB0aGF0IGl0IHJl
dHVybnMgdHJ1ZSB3aGlsZSB0aGUKKyAgICAgICAgcGFnZWhpZGUgZXZlbnQgaXMgYmVpbmcgZmly
ZWQpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzY2hlZHVsZVN0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpmb250c05lZWRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUZv
Y3VzZWROb2RlT2ZTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1
c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGFrZURPTVdpbmRvd0Zy
b20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRvcERvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RGlk
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpuZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppblBhZ2VDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogaGlzdG9y
eS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVk
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpkZXN0cm95KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFFbGVtZW50SXNBbGxvd2VkVG9B
dXRvcGxheSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgICog
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGVj
cmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uQmFzZTo6c2V0TmVlZHNTdHlsZVJlY2FsYyk6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5pbWF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25z
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVudCk6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnNlbmRBbmltYXRpb25FdmVudCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRp
b25VcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3VsZFJlcGFpbnRGb3JJbWFnZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpuZXdJbWFnZUFuaW1hdGlvbkZyYW1lQXZhaWxhYmxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6d2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyV2l0aEJhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRBZGRTY3JvbGxpbmdMYXll
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcmludFJlbmRlclRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF6eVJlcGFpbnRU
aW1lckZpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0Tm9uRW1wdHlMZWFmUmVu
ZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKToKKwogMjAxNi0wOS0xMiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIC13ZWJraXQtdHJhbnNp
dGlvbi0qIGFuZCAtd2Via2l0LWFuaW1hdGlvbi0qIHByb3BlcnRpZXMgYmUgcHVyZSBhbGlhc2Vz
IG9mIHRoZSB1bnByZWZpeGVkIG9uZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1MTQ3ZmVmYmZmODZm
MTlmZDY3ZGVlNjUyMmZlYTg1YWEyNWM3Y2E5Li4xODY1MTM5ZjNiMzgyYjQzZWFiM2M1YjBjZmUy
MGZlZGJkZDNmNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDkt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggcmVt
YWluaW5nIHVzZXJzIG9mIERvY3VtZW50OjppblBhZ2VDYWNoZSgpIHRvIHBhZ2VDYWNoZVN0YXRl
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTg2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRj
aCByZW1haW5pbmcgdXNlcnMgb2YgRG9jdW1lbnQ6OmluUGFnZUNhY2hlKCkgdG8gcGFnZUNhY2hl
U3RhdGUoKSBhcworICAgICAgICB0aGUgZm9ybWVyIG9uZSBpcyBjb25mdXNpbmcgKGdpdmVuIHRo
YXQgaXQgcmV0dXJucyB0cnVlIHdoaWxlIHRoZQorICAgICAgICBwYWdlaGlkZSBldmVudCBpcyBi
ZWluZyBmaXJlZCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBsYXlvdXRUb01pbmltdW1QYWdlV2lkdGg6aGVpZ2h0Om9yaWdpbmFs
UGFnZVdpZHRoOm9yaWdpbmFsUGFnZUhlaWdodDptYXhpbXVtU2hyaW5rUmF0aW86YWRqdXN0aW5n
Vmlld1NpemU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE5lZWRzTGF5b3V0Ol0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXROZWVkc1RvQXBwbHlTdHlsZXM6XSk6CisKIDIwMTYt
MDktMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VGV4dCByZXBsYWNlbWVudCBjYW5kaWRhdGVzIGRvbid0IGFsd2F5cyBvdmVyd3JpdGUgdGhlIGVu
dGlyZSBvcmlnaW5hbCBzdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQzMTkzZGM2
ZWU2NTU2OTZkN2FmY2RhZTkxMDM4MWE1ZjUyYzQzMTkuLjhkOTMzOGE0NTBiODBlOWVhYjUwZGYy
ZTVjZTM0YTQzNGY3NTU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTgxMiw3ICsx
ODEyLDcgQEAgdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpCiAKIHZv
aWQgRG9jdW1lbnQ6OnNjaGVkdWxlU3R5bGVSZWNhbGMoKQogewotICAgIGlmIChtX3N0eWxlUmVj
YWxjVGltZXIuaXNBY3RpdmUoKSB8fCBpblBhZ2VDYWNoZSgpKQorICAgIGlmIChtX3N0eWxlUmVj
YWxjVGltZXIuaXNBY3RpdmUoKSB8fCBwYWdlQ2FjaGVTdGF0ZSgpICE9IE5vdEluUGFnZUNhY2hl
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkg
fHwgbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZSk7CkBAIC0yMjIwLDcgKzIyMjAsNyBA
QCB2b2lkIERvY3VtZW50Ojpmb250c05lZWRVcGRhdGUoRm9udFNlbGVjdG9yJikKIHsKICAgICBp
ZiAobV9zdHlsZVJlc29sdmVyKQogICAgICAgICBtX3N0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVN
YXRjaGVkUHJvcGVydGllc0NhY2hlKCk7Ci0gICAgaWYgKGluUGFnZUNhY2hlKCkgfHwgIXJlbmRl
clZpZXcoKSkKKyAgICBpZiAocGFnZUNhY2hlU3RhdGUoKSAhPSBOb3RJblBhZ2VDYWNoZSB8fCAh
cmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm47CiAgICAgc2NoZWR1bGVGb3JjZWRTdHlsZVJl
Y2FsYygpOwogfQpAQCAtMzcyNCw3ICszNzI0LDcgQEAgc3RhdGljIGJvb2wgaXNOb2RlSW5TdWJ0
cmVlKE5vZGUqIG5vZGUsIE5vZGUqIGNvbnRhaW5lciwgYm9vbCBhbW9uZ0NoaWxkcmVuT25seSkK
IAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUoTm9kZSogbm9kZSwg
Ym9vbCBhbW9uZ0NoaWxkcmVuT25seSkKIHsKLSAgICBpZiAoIW1fZm9jdXNlZEVsZW1lbnQgfHwg
dGhpcy0+aW5QYWdlQ2FjaGUoKSkgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNh
Y2hlLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIgb3V0IHRoZSBmb2N1c2VkIG5vZGUuCisg
ICAgaWYgKCFtX2ZvY3VzZWRFbGVtZW50IHx8IHBhZ2VDYWNoZVN0YXRlKCkgIT0gTm90SW5QYWdl
Q2FjaGUpIC8vIElmIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZSwgdGhlbiB3ZSBk
b24ndCBuZWVkIHRvIGNsZWFyIG91dCB0aGUgZm9jdXNlZCBub2RlLgogICAgICAgICByZXR1cm47
CiAKICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IG5vZGUtPnRyZWVTY29wZSgpLmZvY3Vz
ZWRFbGVtZW50KCk7CkBAIC0zNzg2LDcgKzM3ODYsNyBAQCBib29sIERvY3VtZW50OjpzZXRGb2N1
c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEZv
YwogICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50ID09IG5ld0ZvY3VzZWRFbGVtZW50KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpblBhZ2VDYWNoZSgpKQorICAgIGlmIChwYWdlQ2Fj
aGVTdGF0ZSgpICE9IE5vdEluUGFnZUNhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IGZhbHNlOwpAQCAtNDE5OCw3ICs0MTk4LDcgQEAg
dm9pZCBEb2N1bWVudDo6dGFrZURPTVdpbmRvd0Zyb20oRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IEFTU0VSVCghbV9kb21XaW5kb3cpOwogICAgIEFTU0VSVChkb2N1bWVudC0+bV9kb21XaW5kb3cp
OwogICAgIC8vIEEgdmFsaWQgRE9NV2luZG93IGlzIG5lZWRlZCBieSBDYWNoZWRGcmFtZSBmb3Ig
aXRzIGRvY3VtZW50cy4KLSAgICBBU1NFUlQoIWRvY3VtZW50LT5pblBhZ2VDYWNoZSgpKTsKKyAg
ICBBU1NFUlQocGFnZUNhY2hlU3RhdGUoKSA9PSBOb3RJblBhZ2VDYWNoZSk7CiAKICAgICBtX2Rv
bVdpbmRvdyA9IFdURk1vdmUoZG9jdW1lbnQtPm1fZG9tV2luZG93KTsKICAgICBtX2RvbVdpbmRv
dy0+ZGlkU2VjdXJlVHJhbnNpdGlvblRvKHRoaXMpOwpAQCAtNTA3MCw3ICs1MDcwLDcgQEAgRG9j
dW1lbnQmIERvY3VtZW50Ojp0b3BEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgc3BlY2lhbC1jYXNpbmcgYXZvaWRzIGluY29ycmVjdGx5IGRldGVybWluZWQgdG9wIGRvY3Vt
ZW50cyBkdXJpbmcgdGhlIHByb2Nlc3MKICAgICAvLyBvZiBBWE9iamVjdENhY2hlIHRlYXJkb3du
IG9yIG5vdGlmaWNhdGlvbiBwb3N0aW5nIGZvciBjYWNoZWQgb3IgYmVpbmctZGVzdHJveWVkIGRv
Y3VtZW50cy4KLSAgICBpZiAoIWluUGFnZUNhY2hlKCkgJiYgIW1fcmVuZGVyVHJlZUJlaW5nRGVz
dHJveWVkKSB7CisgICAgaWYgKHBhZ2VDYWNoZVN0YXRlKCkgPT0gTm90SW5QYWdlQ2FjaGUgJiYg
IW1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKSB7CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAg
ICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4oKnRoaXMpOwogICAgICAgICAv
LyBUaGlzIHNob3VsZCBhbHdheXMgYmUgbm9uLW51bGwuCkBAIC01OTc3LDcgKzU5NzcsNyBAQCBz
dGF0aWMgdm9pZCB1bndyYXBGdWxsU2NyZWVuUmVuZGVyZXIoUmVuZGVyRnVsbFNjcmVlbiogZnVs
bFNjcmVlblJlbmRlcmVyLCBFbGVtZQogCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmICghaGFzTGl2
aW5nUmVuZGVyVHJlZSgpIHx8IGluUGFnZUNhY2hlKCkpCisgICAgaWYgKCFoYXNMaXZpbmdSZW5k
ZXJUcmVlKCkgfHwgcGFnZUNhY2hlU3RhdGUoKSAhPSBOb3RJblBhZ2VDYWNoZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKGVsZW1lbnQpOwpAQCAtNjAyNCw3ICs2MDI0LDcgQEAgdm9p
ZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikK
ICAgICBpZiAoIW1fZnVsbFNjcmVlbkVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghaGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8IGluUGFnZUNhY2hlKCkpCisgICAgaWYgKCFoYXNM
aXZpbmdSZW5kZXJUcmVlKCkgfHwgcGFnZUNhY2hlU3RhdGUoKSAhPSBOb3RJblBhZ2VDYWNoZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlkQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKTsKQEAgLTYwMzcsNyArNjAzNyw3IEBAIHZvaWQgRG9jdW1lbnQ6Ondl
YmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCiAgICAgaWYgKCFtX2Z1
bGxTY3JlZW5FbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWhhc0xpdmluZ1Jl
bmRlclRyZWUoKSB8fCBpblBhZ2VDYWNoZSgpKQorICAgIGlmICghaGFzTGl2aW5nUmVuZGVyVHJl
ZSgpIHx8IHBhZ2VDYWNoZVN0YXRlKCkgIT0gTm90SW5QYWdlQ2FjaGUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPndpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxl
bWVudCgpOwpAQCAtNjA0OCw3ICs2MDQ4LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQogICAgIGlmICghbV9mdWxsU2NyZWVuRWxl
bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFoYXNMaXZpbmdSZW5kZXJUcmVlKCkg
fHwgaW5QYWdlQ2FjaGUoKSkKKyAgICBpZiAoIWhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBwYWdl
Q2FjaGVTdGF0ZSgpICE9IE5vdEluUGFnZUNhY2hlKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2Z1bGxTY3JlZW5FbGVtZW50LT5zZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3Rv
cnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDU0MDdmMzI3Y2EyNjVlZTBiZTIyM2FjMzkxNWRiMjE0OWM4M2E1OTMuLjE0NWY4MTgxNDMzODll
M2I3MTRkZThjODdkNDNhNmRhY2ZhMDIxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC01NjEs
NyArNTYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdl
ID0gU3R5bGU6Ok5vQ2hhbmdlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKLSAgICBib29sIG5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiAh
aW5QYWdlQ2FjaGUoKSAmJiAobV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZSB8fCBjaGls
ZE5lZWRzU3R5bGVSZWNhbGMoKSB8fCBtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lci5p
c0FjdGl2ZSgpKTsgfQorICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJu
IHBhZ2VDYWNoZVN0YXRlKCkgPT0gTm90SW5QYWdlQ2FjaGUgJiYgKG1fcGVuZGluZ1N0eWxlUmVj
YWxjU2hvdWxkRm9yY2UgfHwgY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgfHwgbV9vcHRpbWl6ZWRT
dHlsZVNoZWV0VXBkYXRlVGltZXIuaXNBY3RpdmUoKSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlTGF5b3V0KCk7CiAgICAgCkBAIC0xMDA2LDkgKzEwMDYsNiBAQCBwdWJsaWM6
CiAgICAgUGFnZUNhY2hlU3RhdGUgcGFnZUNhY2hlU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VDYWNoZVN0YXRlOyB9CiAgICAgdm9pZCBzZXRQYWdlQ2FjaGVTdGF0ZShQYWdlQ2FjaGVTdGF0
ZSk7CiAKLSAgICAvLyBGSVhNRTogVXBkYXRlIGNhbGxlcnMgdG8gdXNlIHBhZ2VDYWNoZVN0YXRl
KCkgaW5zdGVhZC4KLSAgICBib29sIGluUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
Q2FjaGVTdGF0ZSAhPSBOb3RJblBhZ2VDYWNoZTsgfQotCiAgICAgLy8gRWxlbWVudHMgY2FuIHJl
Z2lzdGVyIHRoZW1zZWx2ZXMgZm9yIHRoZSAic3VzcGVuZCgpIiBhbmQKICAgICAvLyAicmVzdW1l
KCkiIGNhbGxiYWNrcwogICAgIHZvaWQgcmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxs
YmFja3MoRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRl
eCA0YjY4NmQzMjQ5YWY4ZjIwNTUwNjQ4YTI1NmIwYzhhMjQyNzI0ZTQ5Li42YTY2NjhjOGRiZGI4
ODhkZmNkY2I1NDYwYTYyZDc1ODgwYjRjMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShG
cmFtZSYgZnJhbWUpCiAgICAgLy8gQ3VzdG9tIHNjcm9sbGJhciByZW5kZXJlcnMgd2lsbCBnZXQg
cmVhdHRhY2hlZCB3aGVuIHRoZSBkb2N1bWVudCBjb21lcyBvdXQgb2YgdGhlIHBhZ2UgY2FjaGUK
ICAgICBtX3ZpZXctPmRldGFjaEN1c3RvbVNjcm9sbGJhcnMoKTsKIAotICAgIEFTU0VSVChtX2Rv
Y3VtZW50LT5pblBhZ2VDYWNoZSgpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+cGFnZUNhY2hl
U3RhdGUoKSA9PSBEb2N1bWVudDo6SW5QYWdlQ2FjaGUpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBD
YWNoZWRGcmFtZXMgZm9yIGFsbCBGcmFtZXMgaW4gdGhlIEZyYW1lVHJlZS4KICAgICBmb3IgKEZy
YW1lKiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENhY2hl
ZEZyYW1lOjpjbGVhcigpCiAgICAgLy8gVGhpcyBtZWFucyB0aGUgQ2FjaGVkRnJhbWUgaGFzIGJl
ZW46CiAgICAgLy8gMSAtIFN1Y2Nlc3NmdWxseSByZXN0b3JlKCknZCBieSBnb2luZyBiYWNrL2Zv
cndhcmQuCiAgICAgLy8gMiAtIGRlc3Ryb3koKSdlZCBiZWNhdXNlIHRoZSBQYWdlQ2FjaGUgaXMg
cHJ1bmluZyBvciB0aGUgV2ViVmlldyB3YXMgY2xvc2VkLgotICAgIEFTU0VSVCghbV9kb2N1bWVu
dC0+aW5QYWdlQ2FjaGUoKSk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRl
KCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKICAgICBBU1NFUlQobV92aWV3KTsKICAg
ICBBU1NFUlQoIW1fZG9jdW1lbnQtPmZyYW1lKCkgfHwgbV9kb2N1bWVudC0+ZnJhbWUoKSA9PSAm
bV92aWV3LT5mcmFtZSgpKTsKIApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgQ2FjaGVkRnJhbWU6
OmRlc3Ryb3koKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gT25seSBDYWNoZWRGcmFt
ZXMgdGhhdCBhcmUgc3RpbGwgaW4gdGhlIFBhZ2VDYWNoZSBzaG91bGQgYmUgZGVzdHJveWVkIGlu
IHRoaXMgbWFubmVyCi0gICAgQVNTRVJUKG1fZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkpOworICAg
IEFTU0VSVChtX2RvY3VtZW50LT5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpJblBhZ2VD
YWNoZSk7CiAgICAgQVNTRVJUKG1fdmlldyk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1l
KCkgPT0gJm1fdmlldy0+ZnJhbWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDE3ZmI4OGJhNWE4ZWU0MzQ2NmZlZjExMzYxNjNhOGIwMjdjMDljMDMu
Ljc4MDRjM2JjMjc0ZGNlNWU3NTlkNDJjMmEwMjg1N2VhYmIxNjE2OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzIyMSw3ICs3MjIxLDcgQEAgYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojppc1ZpZGVvVG9vU21hbGxGb3JJbmxpbmVQbGF5YmFjaygpCiBzdGF0
aWMgYm9vbCBtZWRpYUVsZW1lbnRJc0FsbG93ZWRUb0F1dG9wbGF5KGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVu
dC5kb2N1bWVudCgpOwotICAgIGlmIChkb2N1bWVudC5pblBhZ2VDYWNoZSgpKQorICAgIGlmIChk
b2N1bWVudC5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpOb3RJblBhZ2VDYWNoZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChkb2N1bWVudC5hY3RpdmVET01PYmplY3RzQXJl
U3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDJhODAzNzRjYWU0MTkzNWZlOTk4
ZmI0M2VlNDU4Y2VkNTAwNTZlODkuLjFjYmMzZTUyY2RjOTBjZmI0NDc5NTRjODMyNjdmMjZiYzc3
ZjA3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291
bGRMb2FkQXNQbHVnSW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKIAogUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGlu
c2VydGlvblBvc2l0aW9uKQogewotICAgIEFTU0VSVCghZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgp
KTsKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpO
b3RJblBhZ2VDYWNoZSk7CiAKICAgICBpZiAoZGlzcGxheVN0YXRlKCkgPj0gUHJlcGFyaW5nUGx1
Z2luUmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzNDg0YzNkNWE0NjhiY2Rm
YTU2OTRkNGIxZTVjNmUyN2Y1NzQ2NzQ1Li5kZThjZTMxMmJlNTc0ZTc4NWI1ZDc5MDgxNmFhNTc1
YWI0OTNmM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAg
LTE0MDYsOCArMTQwNiw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZFN1YnJlc291cmNlTG9h
ZGVyKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiAgICAgQVNTRVJUKCFtX3N1YnJlc291cmNlTG9h
ZGVycy5jb250YWlucyhsb2FkZXItPmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVCghbWFpblJl
c291cmNlTG9hZGVyKCkgfHwgbWFpblJlc291cmNlTG9hZGVyKCkgIT0gbG9hZGVyKTsKIAotICAg
IC8vIEEgcGFnZSBpbiB0aGUgUGFnZUNhY2hlIHNob3VsZCBub3QgYmUgYWJsZSB0byBzdGFydCBs
b2Fkcy4KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQoKSB8
fCAhZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSk7CisgICAgLy8gQSBwYWdlIGluIHRoZSBQYWdl
Q2FjaGUgb3IgYWJvdXQgdG8gZW50ZXIgUGFnZUNhY2hlIHNob3VsZCBub3QgYmUgYWJsZSB0byBz
dGFydCBsb2Fkcy4KKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1l
bnQoKSB8fCBkb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpOb3RJblBh
Z2VDYWNoZSk7CiAKICAgICBtX3N1YnJlc291cmNlTG9hZGVycy5hZGQobG9hZGVyLT5pZGVudGlm
aWVyKCksIGxvYWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAppbmRleCBhMmM2MjM0ZGNiZTJhODhlMDYzYjNiNDQ0YzU3OGYzZWZiZWIzMjI2Li5j
ZjZlMTljYTFlYmQ2MTRkYzZiMDk2MDZiZDE4MmUzM2MyZjFlM2YyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhp
c3RvcnlJdGVtKiBpdGVtKQogICAgIGlmICghaXRlbSB8fCAhZnJhbWVWaWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAg
IGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5v
dEluUGFnZUNhY2hlKQogICAgICAgICBpdGVtLT5zZXRTY3JvbGxQb3NpdGlvbihmcmFtZVZpZXct
PmNhY2hlZFNjcm9sbFBvc2l0aW9uKCkpOwogICAgIGVsc2UKICAgICAgICAgaXRlbS0+c2V0U2Ny
b2xsUG9zaXRpb24oZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCAzNmNkYmNhZDE4YTJhNGMxODc4MmIwNTYyZTgxMTM0NTZlOThkYzUy
Li41NmVhOWFiYWJiMDRkNTdiMzgyYTQwOTE3NWE0YThjNGY0YWM2M2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCkBAIC0xODAzLDcgKzE4MDMsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGVj
cmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIS0tbV9zY3JvbGxFdmVudExpc3RlbmVyQ291
bnQgJiYgZG9jdW1lbnQgPT0gJmRvY3VtZW50LT50b3BEb2N1bWVudCgpKSB7CiAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
cGFnZSgpICYmICFkb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgaWYgKGZyYW1lICYm
IGZyYW1lLT5wYWdlKCkgJiYgZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6
Ok5vdEluUGFnZUNhY2hlKQogICAgICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkuc2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25zKGZyYW1lLCBmYWxzZSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDgzMzFmYzhjYmQ0NTFlN2ZlMmZhY2Uy
MzY2MTRjNzM5NjE1MjQ5MmIuLjJjNmQ4NjBiMzdmNmYyNmEyNjAzN2E2MDE5MjZlZjJjNGFmMzE5
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTYsNyArMTI5Niw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgQVNTRVJUKGZyYW1l
KCkuZG9jdW1lbnQoKSk7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqZnJhbWUoKS5kb2N1
bWVudCgpOwotICAgIEFTU0VSVCghZG9jdW1lbnQuaW5QYWdlQ2FjaGUoKSk7CisgICAgQVNTRVJU
KGRvY3VtZW50LnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsK
IAogICAgIHsKICAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZVNjaGVkdWxpbmdF
bmFibGVkKG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggNWMxYjNhOGIyY2Nl
MTk5ZGYzZDdhNjNjYmY5YTFiYjQ2MDZjMzY2Yy4uMjhkNDk5YzBhZWM0MTVjMTFiNDdlMjAxN2Y2
ZTA1ZjI4ZTJmNmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9u
QmFzZShjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIK
IAogdm9pZCBBbmltYXRpb25CYXNlOjpzZXROZWVkc1N0eWxlUmVjYWxjKEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgQVNTRVJUKCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLmluUGFn
ZUNhY2hlKCkpOworICAgIEFTU0VSVCghZWxlbWVudCB8fCBlbGVtZW50LT5kb2N1bWVudCgpLnBh
Z2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKICAgICBpZiAoZWxl
bWVudCkKICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHls
ZUNoYW5nZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGMzZWZiNWQzOWRjNzcxNGE3N2M0OWVlMzFkMGVk
NTE2YzBlNTI0NzMuLjJhMDIxOGZkMDUyNDk4YmFiYWNiYWY1N2QxYzUwYTJlNDUxOTUxNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgZG91YmxlIEFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjp1cGRhdGVBbmltYXRpb25zKFNldENoYW5nZWQgY2FsbFNldENoYW5nZWQvKgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gY29tcG9zaXRlQW5pbWF0aW9uLmtleS0+ZWxlbWVudCgpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChlbGVtZW50KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQtPmRvY3VtZW50
KCkuaW5QYWdlQ2FjaGUoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmRvY3Vt
ZW50KCkucGFnZUNhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpOwogICAg
ICAgICAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVD
aGFuZ2UpOwogICAgICAgICAgICAgICAgIGNhbGxlZFNldENoYW5nZWQgPSB0cnVlOwogICAgICAg
ICAgICAgfQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGU6OmFkZEV2ZW50VG9EaXNwYXRjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsCiB2b2lk
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaChS
ZWY8RWxlbWVudD4mJiBlbGVtZW50KQogewogICAgIG1fZWxlbWVudENoYW5nZXNUb0Rpc3BhdGNo
LmFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKLSAgICBBU1NFUlQoIW1fZWxlbWVudENoYW5nZXNU
b0Rpc3BhdGNoLmxhc3QoKS0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKTsKKyAgICBBU1NFUlQo
bV9lbGVtZW50Q2hhbmdlc1RvRGlzcGF0Y2gubGFzdCgpLT5kb2N1bWVudCgpLnBhZ2VDYWNoZVN0
YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKICAgICBzdGFydFVwZGF0ZVN0eWxl
SWZOZWVkZWREaXNwYXRjaGVyKCk7CiB9CiAKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIEFuaW1h
dGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlci5lbGVt
ZW50KCk7Ci0gICAgQVNTRVJUKCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLmluUGFn
ZUNhY2hlKCkpOworICAgIEFTU0VSVCghZWxlbWVudCB8fCBlbGVtZW50LT5kb2N1bWVudCgpLnBh
Z2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKICAgICBpZiAoZWxl
bWVudCkKICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHls
ZUNoYW5nZSk7CiB9CkBAIC01OTksNyArNTk5LDcgQEAgYm9vbCBBbmltYXRpb25Db250cm9sbGVy
Ojp1cGRhdGVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXIK
ICAgICBpZiAoKCFvbGRTdHlsZSB8fCAoIW9sZFN0eWxlLT5hbmltYXRpb25zKCkgJiYgIW9sZFN0
eWxlLT50cmFuc2l0aW9ucygpKSkgJiYgKCFuZXdTdHlsZS5hbmltYXRpb25zKCkgJiYgIW5ld1N0
eWxlLnRyYW5zaXRpb25zKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVu
ZGVyZXIuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQorICAgIGlmIChyZW5kZXJlci5kb2N1bWVu
dCgpLnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEb24ndCBydW4gdHJhbnNpdGlvbnMgd2hlbiBwcmlu
dGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5p
bWF0aW9uLmNwcAppbmRleCBjNzAwNTNlZThlMDgwMTZhNzEyZWRlNDlmYWNmMGM5ODY2YWY2ZTI4
Li44NzUyZGQyMmNjMjYwNGZlMDI0MWU2OGE1ZGYxY2RlMTM0ZGY5NWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0x
ODgsNyArMTg4LDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgZG91YmwKICAgICAgICAgICAgIC8vIERp
c3BhdGNoIHRoZSBldmVudAogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBt
X29iamVjdC0+ZWxlbWVudCgpOwogCi0gICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgIWVs
ZW1lbnQtPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWVs
ZW1lbnQgfHwgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50
OjpOb3RJblBhZ2VDYWNoZSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKaW5kZXggNmU5ZTVjYzdmY2NiYTEyYjA3NzAzNDgx
ODYwMjg1YWJjYjEyNjY4ZC4uYWM4YWIwMWI0MWRjNWNiZjNmMmQ5NWVjNGIxNmQ2N2EwZTEwZjRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmlt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcApAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OnNl
bmRBbmltYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlCiAg
ICAgICAgIC8vIERpc3BhdGNoIHRoZSBldmVudAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudCA9IG1fb2JqZWN0LT5lbGVtZW50KCk7CiAKLSAgICAgICAgQVNTRVJUKCFlbGVtZW50IHx8
ICFlbGVtZW50LT5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpOworICAgICAgICBBU1NFUlQoIWVs
ZW1lbnQgfHwgZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50
OjpOb3RJblBhZ2VDYWNoZSk7CiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAzNGE3NGM4YmQ0YjMzZDc0
MjBhN2RlMTc5NmFhMDliMTJiZDZhYTg2Li45NDM3N2JkMjQ2Njk1ZTg5ZGMxYzQxYmIwYjI5Mzdm
MTUwOTcwOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjEyLDEyICsyMTIsMTIgQEAg
Ym9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRh
dGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9v
bCBpc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1lVmlldy5pblByb2dyYW1tYXRpY1Njcm9sbCgp
OwotICAgIGlmIChpc1Byb2dyYW1tYXRpY1Njcm9sbCB8fCBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1
bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgIGlmIChpc1Byb2dyYW1tYXRpY1Njcm9sbCB8fCBm
cmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50
OjpOb3RJblBhZ2VDYWNoZSkKICAgICAgICAgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCksIHNjcm9sbFBvc2l0aW9uLCBpc1Byb2dy
YW1tYXRpY1Njcm9sbCwgU2V0U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CiAKICAgICAvLyBJZiB0
aGlzIGZyYW1lIHZpZXcncyBkb2N1bWVudCBpcyBiZWluZyBwdXQgaW50byB0aGUgcGFnZSBjYWNo
ZSwgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgb3VyCiAgICAgLy8gbWFpbiBmcmFtZSBzY3JvbGwg
cG9zaXRpb24uIEp1c3QgbGV0IHRoZSBGcmFtZVZpZXcgdGhpbmsgdGhhdCB3ZSBkaWQuCi0gICAg
aWYgKGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgaWYg
KGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1l
bnQ6Ok5vdEluUGFnZUNhY2hlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZSogc3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVW
aWV3LnNjcm9sbExheWVySUQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IDgwOTA3ODhmZGQ3MDI1ZDcyMWZhODg0NmYxYjdkMDVmY2E5MTc0Y2Mu
LmM1MDk3ZjdjZmM1NWY4NjIzY2M2MzhkZWFhMmNiM2M4M2ExZDM1NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTE0MzUsNyArMTQzNSw3IEBAIGJv
b2wgUmVuZGVyRWxlbWVudDo6bWF5Q2F1c2VSZXBhaW50SW5zaWRlVmlld3BvcnQoY29uc3QgSW50
UmVjdCogb3B0aW9uYWxWaWV3cG9yCiBzdGF0aWMgYm9vbCBzaG91bGRSZXBhaW50Rm9ySW1hZ2VB
bmltYXRpb24oY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEludFJlY3QmIHZp
c2libGVSZWN0KQogewogICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCA9IHJlbmRlcmVyLmRv
Y3VtZW50KCk7Ci0gICAgaWYgKGRvY3VtZW50LmluUGFnZUNhY2hlKCkpCisgICAgaWYgKGRvY3Vt
ZW50LnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50Ojp2aXNpYmxlSW5WaWV3cG9ydFN0YXRlQ2hhbmdlZChWaXNpYmxlSW5W
aWV3cG9ydFN0YXRlIHN0YXRlKQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6Om5ld0ltYWdlQW5pbWF0
aW9uRnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmIGltYWdlKQogewotICAgIGlmIChkb2N1bWVu
dCgpLmluUGFnZUNhY2hlKCkpCisgICAgaWYgKGRvY3VtZW50KCkucGFnZUNhY2hlU3RhdGUoKSAh
PSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBm
cmFtZVZpZXcgPSB2aWV3KCkuZnJhbWVWaWV3KCk7CiAgICAgYXV0byB2aXNpYmxlUmVjdCA9IGZy
YW1lVmlldy53aW5kb3dUb0NvbnRlbnRzKGZyYW1lVmlldy53aW5kb3dDbGlwUmVjdCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDhjN2Y0NzZlN2NlYmNk
MjI4ODkwZjY1YTNmMmExNGQzZTVhNzhkZWYuLjJjODM0MGU1ZmJhZDNiMWEzZjMyMTdiMWJiNDY0
YjM2ZDE1YTkxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVk
SW1hZ2VQdHIgbmV3SW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiAgICAgLy8gRklYTUUgKDg2
NjY5KTogSW5zdGVhZCBvZiB0aGUgUmVuZGVySW1hZ2UgZGV0ZXJtaW5pbmcgd2hldGhlciBpdHMg
ZG9jdW1lbnQgaXMgaW4gdGhlIHBhZ2UKICAgICAvLyBjYWNoZSwgdGhlIFJlbmRlckltYWdlIHNo
b3VsZCByZW1vdmUgaXRzZWxmIGFzIGEgY2xpZW50IHdoZW4gaXRzIGRvY3VtZW50IGlzIHB1dCBp
bnRvIHRoZQogICAgIC8vIHBhZ2UgY2FjaGUuCi0gICAgaWYgKGRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSB8fCBkb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpCisgICAgaWYgKGRvY3VtZW50QmVpbmdE
ZXN0cm95ZWQoKSB8fCBkb2N1bWVudCgpLnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5v
dEluUGFnZUNhY2hlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzVmlzaWJsZUJveERl
Y29yYXRpb25zKCkgfHwgaGFzTWFzaygpIHx8IGhhc1NoYXBlT3V0c2lkZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAw
ZjEyZjkzNzkyYzYxZWQxNDhlYjcxZjRiMmUxOTA3ZTYyZGRhYjZmLi4wOGMzMmNhOWI4MDc4OTJi
MGIwNzE1N2ZkZDRkODM5OTNjZGI3YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNjYxLDcgKzY2MSw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGlu
Z1VwZGF0ZVR5cGUgdXBkYXRlCiAKICAgICBtX3VwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzVGltZXIu
c3RvcCgpOwogCi0gICAgQVNTRVJUKCFtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5pblBhZ2VDYWNo
ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJWaWV3LmRvY3VtZW50KCkucGFnZUNhY2hlU3RhdGUo
KSA9PSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpOwogICAgIAogICAgIC8vIENvbXBvc2l0aW5n
IGxheWVycyB3aWxsIGJlIHVwZGF0ZWQgaW4gRG9jdW1lbnQ6OnNldFZpc3VhbFVwZGF0ZXNBbGxv
d2VkKGJvb2wpIGlmIHN1cHByZXNzZWQgaGVyZS4KICAgICBpZiAoIW1fcmVuZGVyVmlldy5kb2N1
bWVudCgpLnZpc3VhbFVwZGF0ZXNBbGxvd2VkKCkpCkBAIC00MDk3LDcgKzQwOTcsNyBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6d2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyV2l0aEJhY2tp
bmcoUmVuZGVyTGF5ZXImIGxheQogICAgIG1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5y
ZW1vdmUoJmxheWVyKTsKICAgICBtX3Njcm9sbGluZ0xheWVycy5yZW1vdmUoJmxheWVyKTsKIAot
ICAgIGlmIChtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQorICAgIGlmICht
X3JlbmRlclZpZXcuZG9jdW1lbnQoKS5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpOb3RJ
blBhZ2VDYWNoZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKENocm9tZUNsaWVudCogY2xp
ZW50ID0gdGhpcy0+Y2hyb21lQ2xpZW50KCkpIHsKQEAgLTQxMTksNyArNDExOSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRBZGRTY3JvbGxpbmdMYXllcihSZW5kZXJMYXllciYg
bGF5ZXIpCiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEFTU0VSVCghbV9yZW5kZXJW
aWV3LmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CisgICAgQVNTRVJUKG1fcmVuZGVyVmlldy5k
b2N1bWVudCgpLnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsK
ICAgICBtX3Njcm9sbGluZ0xheWVycy5hZGQoJmxheWVyKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNzNhY2U4NWZkMWE5OWEzYjJh
ZWVjMjU5MmEzZDZmY2YyYjc2MjRmLi40MTM2OGQ0ZWMyODUyOTZmZWIwNGExOTEyYmQxZDA2MmY1
ODE4NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAt
MjE1Myw3ICsyMTUzLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKIHZv
aWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB7CiAgICAgZm9yIChjb25zdCBh
dXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBpZiAo
IWRvY3VtZW50LT5yZW5kZXJWaWV3KCkgfHwgZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkpCisgICAg
ICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hlU3Rh
dGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01h
aW5GcmFtZSgpKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tbWFpbiBmcmFtZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKQEAgLTIxNjUs
NyArMjE2NSw3IEBAIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB2b2lk
IHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB7CiAgICAgZm9yIChjb25zdCBhdXRv
KiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBpZiAoIWRv
Y3VtZW50LT5yZW5kZXJWaWV3KCkgfHwgZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkpCisgICAgICAg
IGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUo
KSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01haW5G
cmFtZSgpKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tbWFpbiBmcmFtZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAxZTdlMmVjYzBiYWMwMTY1ZDE3MGNhZTZj
MmU0MmI5M2RmMWNmMWYwLi5mNTI5NjhmMjJmOTg3NWUyNWRiM2VhZTA1YzgxMTg0ZmI1NWMwYTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBSZW5kZXJWaWV3Ojp1bnNjaGVkdWxlTGF6eVJlcGFpbnQoUmVuZGVyQm94JiBy
ZW5kZXJlcikKIAogdm9pZCBSZW5kZXJWaWV3OjpsYXp5UmVwYWludFRpbWVyRmlyZWQoKQogewot
ICAgIGJvb2wgc2hvdWxkUmVwYWludCA9ICFkb2N1bWVudCgpLmluUGFnZUNhY2hlKCk7CisgICAg
Ym9vbCBzaG91bGRSZXBhaW50ID0gZG9jdW1lbnQoKS5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3Vt
ZW50OjpOb3RJblBhZ2VDYWNoZTsKIAogICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBtX3JlbmRl
cmVyc05lZWRpbmdMYXp5UmVwYWludCkgewogICAgICAgICBpZiAoc2hvdWxkUmVwYWludCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA0MDk1
NGQ0NTcwNzlhYTBhZWI3YzMzMjIwNWE4OWY2OTMwYjYyYTY3Li45YTIzMjA5NzNjM2Q2MjhjYmZm
NjJlNTNmOTAyYmY0N2VjNjcyYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBzdGF0aWMgdm9pZCBjb2xs
ZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBIYQogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NG
b3JDdXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVy
ZXJzKQogewogICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9j
dW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpIHx8IGRvY3Vt
ZW50LT5pblBhZ2VDYWNoZSgpKQorICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkg
fHwgZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hl
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPmlzSFRNTERv
Y3VtZW50KCkgJiYgIWRvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggMWIw
ZjA4YjE3NzA3MDE0ODBkMWUzMjQ3ZGYwODI2OTkyNWI1N2NiNC4uMTg3ZmI3MzQwN2E2NGIwOTc5
MTBiMGY2MGY0NTQ3YjI3YmI5YTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0zNjI3LDcgKzM2MjcsNyBAQCAtICh2b2lkKWxheW91dFRvTWluaW11bVBh
Z2VXaWR0aDooZmxvYXQpbWluUGFnZUxvZ2ljYWxXaWR0aCBoZWlnaHQ6KGZsb2F0KW1pblBhZwog
ICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGNvcmVGcmFtZS0+
ZG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VD
YWNoZSgpKQorICAgICAgICBpZiAoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0
ZSgpICE9IERvY3VtZW50OjpOb3RJblBhZ2VDYWNoZSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAg
fQpAQCAtNDEyNyw3ICs0MTI3LDcgQEAgLSAodm9pZClzZXROZWVkc0xheW91dDogKEJPT0wpZmxh
ZwogICAgIGlmICghZmxhZykKICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIG5vIHdheSB0byBz
YXkgeW91IGRvbid0IG5lZWQgYSBsYXlvdXQuCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1l
LT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50
KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5v
dEluUGFnZUNhY2hlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoRnJhbWVWaWV3
KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkKICAgICAgICAgICAgIHZpZXctPnNldE5lZWRzTGF5b3V0
KCk7CkBAIC00MTQwLDcgKzQxNDAsNyBAQCAtICh2b2lkKXNldE5lZWRzVG9BcHBseVN0eWxlczog
KEJPT0wpZmxhZwogICAgIGlmICghZmxhZykKICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIG5v
IHdheSB0byBzYXkgeW91IGRvbid0IG5lZWQgYSBzdHlsZSByZWNhbGMuCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5kb2N1
bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgICAgICBpZiAo
ZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkg
IT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>