<?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>178401</bug_id>
          
          <creation_ts>2017-10-17 11:20:01 -0700</creation_ts>
          <short_desc>[FrameView::layout cleanup] Subtree should read subtreeLayout.</short_desc>
          <delta_ts>2017-10-17 13:09:20 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1361321</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-10-17 11:20:01 -0700</bug_when>
    <thetext>and m_layoutRoot -&gt; m_subtreeLayoutRoot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361323</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-17 11:21:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/35033431&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361338</commentid>
    <comment_count>2</comment_count>
      <attachid>324033</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-10-17 11:41:15 -0700</bug_when>
    <thetext>Created attachment 324033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361340</commentid>
    <comment_count>3</comment_count>
      <attachid>324033</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-10-17 11:44:15 -0700</bug_when>
    <thetext>Comment on attachment 324033
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:1359
&gt; +        if (!layoutRoot || !layoutRoot-&gt;needsLayout())

Kinda weird that we can have a m_subtreeLayoutRoot with needsLayout() == false (if that happens).

&gt; Source/WebCore/page/FrameView.cpp:1392
&gt; +    bool performingSubtreeLayout = false;

or isSubtreeLayout?

&gt; Source/WebCore/page/FrameView.cpp:1505
&gt; +        ASSERT(allowSubtreeLayout || !performingSubtreeLayout);

Said added ASSERT_IMPLIES which would be appropriate here: ASSERT_IMPLIES(performingSubtreeLayout, allowSubtreeLayout)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361366</commentid>
    <comment_count>4</comment_count>
      <attachid>324043</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-10-17 12:41:59 -0700</bug_when>
    <thetext>Created attachment 324043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361377</commentid>
    <comment_count>5</comment_count>
      <attachid>324043</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-17 13:09:19 -0700</bug_when>
    <thetext>Comment on attachment 324043
Patch

Clearing flags on attachment: 324043

Committed r223569: &lt;https://trac.webkit.org/changeset/223569&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361378</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-17 13:09:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324033</attachid>
            <date>2017-10-17 11:41:15 -0700</date>
            <delta_ts>2017-10-17 12:41:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178401-20171017114114.patch</filename>
            <type>text/plain</type>
            <size>22035</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRjODE1MjQ0NmJmMTgx
NjRlNzc4ZThmOGY2OTE3MDVjOTk1ZDY5My4uZGNkYjE2ZWM4NzU2MjE4NmE0YzkwMWY3MmMyOGNk
NDMzNzAzMWZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE3LTEwLTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgW0ZyYW1lVmlldzo6bGF5b3V0
IGNsZWFudXBdIFN1YnRyZWUgc2hvdWxkIHJlYWQgc3VidHJlZUxheW91dC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBzb21lIHZhcmlhYmxl
cyB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcjo6U3VidHJlZUxheW91dFN0YXRlTWFpbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJ0cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyOjp+
U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJ0cmVl
TGF5b3V0U3RhdGVNYWludGFpbmVyOjpzaG91bGREaXNhYmxlTGF5b3V0U3RhdGVGb3JTdWJ0cmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3Ojp3aWxsRGVzdHJveVJlbmRlclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpkaWREZXN0cm95UmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29u
dmVydFN1YnRyZWVMYXlvdXRUb0Z1bGxMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY2hlZHVsZVJlbGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2No
ZWR1bGVSZWxheW91dE9mU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om5l
ZWRzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXV0b1NpemVJ
ZkVuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisKKzIwMTctMTAtMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwogICAgICAgICBbRnJhbWVWaWV3OjpsYXlv
dXQgY2xlYW51cF0gTW92ZSB0ZXh0IGF1dG8gc2l6aW5nIGxvZ2ljIHRvIGEgc2VwYXJhdGUgZnVu
Y3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODM5MQogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUwMzAyNjQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBlMzIxMDYyZTkwY2E0NTA3Mjk0Y2NhOGIxM2VkYzE4NTEzMzkzYTI2Li40M2M0
ZmQ3YjVjMjYyNWNlZDhhODE3NWI5MTE3M2M5YjQ1YzIzNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTIwNjgsNyArMjA2OCw3IEBAIGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElm
RGltZW5zaW9uc091dE9mRGF0ZShFbGVtZW50JiBlbGVtZW50LCBEaW1lbnNpb25zQ2hlCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmIChjdXJyUmVuZGVyZXIgPT0gZnJhbWVWaWV3LT5sYXlvdXRSb290KCkpCisgICAgICAg
ICAgICBpZiAoY3VyclJlbmRlcmVyID09IGZyYW1lVmlldy0+c3VidHJlZUxheW91dFJvb3QoKSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCBkOTc5MmZhMjBiYmVkZDA0ODA5NDQwY2I5YjJkYTQ2YjQ1NDYzNWVj
Li4wOGE0NjU3MTEyZmMxYTFjNDJiY2FiYjE4OTFmMjE3Njg4ZWZlZDlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0xNjYsMTEgKzE2NiwxMSBAQCBQYWdpbmF0aW9uOjpNb2RlIHBh
Z2luYXRpb25Nb2RlRm9yUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogY2xh
c3MgU3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lciB7CiBwdWJsaWM6CiAgICAgU3VidHJlZUxh
eW91dFN0YXRlTWFpbnRhaW5lcihSZW5kZXJFbGVtZW50KiBzdWJ0cmVlTGF5b3V0Um9vdCkKLSAg
ICAgICAgOiBtX2xheW91dFJvb3Qoc3VidHJlZUxheW91dFJvb3QpCisgICAgICAgIDogbV9zdWJ0
cmVlTGF5b3V0Um9vdChzdWJ0cmVlTGF5b3V0Um9vdCkKICAgICB7Ci0gICAgICAgIGlmIChtX2xh
eW91dFJvb3QpIHsKLSAgICAgICAgICAgIFJlbmRlclZpZXcmIHZpZXcgPSBtX2xheW91dFJvb3Qt
PnZpZXcoKTsKLSAgICAgICAgICAgIHZpZXcucHVzaExheW91dFN0YXRlKCptX2xheW91dFJvb3Qp
OworICAgICAgICBpZiAobV9zdWJ0cmVlTGF5b3V0Um9vdCkgeworICAgICAgICAgICAgUmVuZGVy
VmlldyYgdmlldyA9IG1fc3VidHJlZUxheW91dFJvb3QtPnZpZXcoKTsKKyAgICAgICAgICAgIHZp
ZXcucHVzaExheW91dFN0YXRlKCptX3N1YnRyZWVMYXlvdXRSb290KTsKICAgICAgICAgICAgIGlm
IChzaG91bGREaXNhYmxlTGF5b3V0U3RhdGVGb3JTdWJ0cmVlKCkpIHsKICAgICAgICAgICAgICAg
ICB2aWV3LmRpc2FibGVMYXlvdXRTdGF0ZSgpOwogICAgICAgICAgICAgICAgIG1fZGlkRGlzYWJs
ZUxheW91dFN0YXRlID0gdHJ1ZTsKQEAgLTE4MCw5ICsxODAsOSBAQCBwdWJsaWM6CiAKICAgICB+
U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcigpCiAgICAgewotICAgICAgICBpZiAobV9sYXlv
dXRSb290KSB7Ci0gICAgICAgICAgICBSZW5kZXJWaWV3JiB2aWV3ID0gbV9sYXlvdXRSb290LT52
aWV3KCk7Ci0gICAgICAgICAgICB2aWV3LnBvcExheW91dFN0YXRlKCptX2xheW91dFJvb3QpOwor
ICAgICAgICBpZiAobV9zdWJ0cmVlTGF5b3V0Um9vdCkgeworICAgICAgICAgICAgUmVuZGVyVmll
dyYgdmlldyA9IG1fc3VidHJlZUxheW91dFJvb3QtPnZpZXcoKTsKKyAgICAgICAgICAgIHZpZXcu
cG9wTGF5b3V0U3RhdGUoKm1fc3VidHJlZUxheW91dFJvb3QpOwogICAgICAgICAgICAgaWYgKG1f
ZGlkRGlzYWJsZUxheW91dFN0YXRlKQogICAgICAgICAgICAgICAgIHZpZXcuZW5hYmxlTGF5b3V0
U3RhdGUoKTsKICAgICAgICAgfQpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgc2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9yU3VidHJlZSgpCiAgICAgewotICAgICAgICBm
b3IgKGF1dG8qIHJlbmRlcmVyID0gbV9sYXlvdXRSb290OyByZW5kZXJlcjsgcmVuZGVyZXIgPSBy
ZW5kZXJlci0+Y29udGFpbmVyKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJlciA9IG1f
c3VidHJlZUxheW91dFJvb3Q7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5jb250YWlu
ZXIoKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNUcmFuc2Zvcm0oKSB8fCByZW5k
ZXJlci0+aGFzUmVmbGVjdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByaXZhdGU6
Ci0gICAgUmVuZGVyRWxlbWVudCogbV9sYXlvdXRSb290IHsgbnVsbHB0ciB9OworICAgIFJlbmRl
ckVsZW1lbnQqIG1fc3VidHJlZUxheW91dFJvb3QgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX2Rp
ZERpc2FibGVMYXlvdXRTdGF0ZSB7IGZhbHNlIH07CiB9OwogCkBAIC0zMzYsNyArMzM2LDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnJlc2V0KCkKICAgICBtX2lzT3ZlcmxhcHBlZCA9IGZhbHNlOwogICAg
IG1fY29udGVudElzT3BhcXVlID0gZmFsc2U7CiAgICAgbV9sYXlvdXRUaW1lci5zdG9wKCk7Ci0g
ICAgbV9sYXlvdXRSb290ID0gbnVsbHB0cjsKKyAgICBtX3N1YnRyZWVMYXlvdXRSb290ID0gbnVs
bHB0cjsKICAgICBtX2RlbGF5ZWRMYXlvdXQgPSBmYWxzZTsKICAgICBtX25lZWRzRnVsbFJlcGFp
bnQgPSB0cnVlOwogICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSB0cnVlOwpAQCAtNjU1
LDEyICs2NTUsMTIgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkK
IHZvaWQgRnJhbWVWaWV3Ojp3aWxsRGVzdHJveVJlbmRlclRyZWUoKQogewogICAgIGRldGFjaEN1
c3RvbVNjcm9sbGJhcnMoKTsKLSAgICBtX2xheW91dFJvb3QgPSBudWxscHRyOworICAgIG1fc3Vi
dHJlZUxheW91dFJvb3QgPSBudWxscHRyOwogfQogCiB2b2lkIEZyYW1lVmlldzo6ZGlkRGVzdHJv
eVJlbmRlclRyZWUoKQogewotICAgIEFTU0VSVCghbV9sYXlvdXRSb290KTsKKyAgICBBU1NFUlQo
IW1fc3VidHJlZUxheW91dFJvb3QpOwogICAgIEFTU0VSVChtX3dpZGdldHNJblJlbmRlclRyZWUu
aXNFbXB0eSgpKTsKIAogICAgIC8vIElmIHRoZSByZW5kZXIgdHJlZSBpcyBkZXN0cm95ZWQgYmVs
b3cgRnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKSwgdGhlcmUgd2lsbCBzdGlsbCBi
ZSBhIG51bGwgc2VudGluZWwgaW4gdGhlIHNldC4KQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIEZy
YW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Nyb2xsYmFyTW9kZSYg
aE1vZGUsIFNjcm9sbGJhcgogICAgICAgICB2TW9kZSA9IFNjcm9sbGJhckFsd2F5c09mZjsKICAg
ICB9CiAgICAgCi0gICAgaWYgKG1fbGF5b3V0Um9vdCkKKyAgICBpZiAobV9zdWJ0cmVlTGF5b3V0
Um9vdCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUo
KS5kb2N1bWVudCgpOwpAQCAtMTMyMiwxMSArMTMyMiwxMSBAQCBzdGF0aWMgdm9pZCBhcHBseVRl
eHRTaXppbmdJZk5lZWRlZChSZW5kZXJFbGVtZW50JiBsYXlvdXRSb290KQogfQogI2VuZGlmCiAK
LXZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCit2b2lkIEZyYW1lVmll
dzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlTGF5b3V0KQogewogICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCFmcmFtZSgpLmRvY3VtZW50KCktPmluUmVuZGVyVHJlZVVwZGF0
ZSgpKTsKIAotICAgIExPRyhMYXlvdXQsICJGcmFtZVZpZXcgJXAgKCVkeCVkKSBsYXlvdXQsIG1h
aW4gZnJhbWV2aWV3ICVkLCBhbGxvd1N1YnRyZWU9JWQiLCB0aGlzLCBzaXplKCkud2lkdGgoKSwg
c2l6ZSgpLmhlaWdodCgpLCBmcmFtZSgpLmlzTWFpbkZyYW1lKCksIGFsbG93U3VidHJlZSk7Cisg
ICAgTE9HKExheW91dCwgIkZyYW1lVmlldyAlcCAoJWR4JWQpIGxheW91dCwgbWFpbiBmcmFtZXZp
ZXcgJWQsIGFsbG93U3VidHJlZUxheW91dD0lZCIsIHRoaXMsIHNpemUoKS53aWR0aCgpLCBzaXpl
KCkuaGVpZ2h0KCksIGZyYW1lKCkuaXNNYWluRnJhbWUoKSwgYWxsb3dTdWJ0cmVlTGF5b3V0KTsK
ICAgICBpZiAoaXNJblJlbmRlclRyZWVMYXlvdXQoKSkgewogICAgICAgICBMT0coTGF5b3V0LCAi
ICBpbiBsYXlvdXQsIGJhaWxpbmciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1NCw5ICsxMzU0
LDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShNZWRpYVF1ZXJpZXMsIHN0cmVhbSA8PCAiRnJhbWVWaWV3ICIg
PDwgdGhpcyA8PCAiIHNuYXBzaG90dGluZyBzaXplICIgPDwgIFNjcm9sbFZpZXc6OmxheW91dFNp
emUoKSA8PCAiIGZvciBtZWRpYSBxdWVyaWVzIik7CiAgICAgICAgICAgICBtX2ZyYW1lRmxhdHRl
bmluZ1ZpZXdTaXplRm9yTWVkaWFRdWVyeSA9IFNjcm9sbFZpZXc6OmxheW91dFNpemUoKTsKICAg
ICAgICAgfQotICAgICAgICBzdGFydExheW91dEF0TWFpbkZyYW1lVmlld0lmTmVlZGVkKGFsbG93
U3VidHJlZSk7Ci0gICAgICAgIFJlbmRlckVsZW1lbnQqIHJvb3QgPSBtX2xheW91dFJvb3QgPyBt
X2xheW91dFJvb3QgOiBmcmFtZSgpLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKLSAgICAgICAg
aWYgKCFyb290IHx8ICFyb290LT5uZWVkc0xheW91dCgpKQorICAgICAgICBzdGFydExheW91dEF0
TWFpbkZyYW1lVmlld0lmTmVlZGVkKGFsbG93U3VidHJlZUxheW91dCk7CisgICAgICAgIGF1dG8q
IGxheW91dFJvb3QgPSBtX3N1YnRyZWVMYXlvdXRSb290ID8gbV9zdWJ0cmVlTGF5b3V0Um9vdCA6
IGZyYW1lKCkuZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgICAgICBpZiAoIWxheW91dFJv
b3QgfHwgIWxheW91dFJvb3QtPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIApAQCAtMTM2NCw3ICsxMzY0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChi
b29sIGFsbG93U3VidHJlZSkKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAodXBkYXRlRml4
ZWRQb3NpdGlvbkxheW91dFJlY3QoKSkKLSAgICAgICAgYWxsb3dTdWJ0cmVlID0gZmFsc2U7Cisg
ICAgICAgIGFsbG93U3VidHJlZUxheW91dCA9IGZhbHNlOwogI2VuZGlmCiAKICAgICBtX2xheW91
dFRpbWVyLnN0b3AoKTsKQEAgLTEzNzksNyArMTM3OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlv
dXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dChmcmFtZSgpKTsK
ICAgICBBbmltYXRpb25VcGRhdGVCbG9jayBhbmltYXRpb25VcGRhdGVCbG9jaygmZnJhbWUoKS5h
bmltYXRpb24oKSk7CiAgICAgCi0gICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYgbV9sYXlvdXRSb290
KQorICAgIGlmICghYWxsb3dTdWJ0cmVlTGF5b3V0ICYmIG1fc3VidHJlZUxheW91dFJvb3QpCiAg
ICAgICAgIGNvbnZlcnRTdWJ0cmVlTGF5b3V0VG9GdWxsTGF5b3V0KCk7CiAKICAgICBBU1NFUlQo
ZnJhbWUoKS52aWV3KCkgPT0gdGhpcyk7CkBAIC0xMzg3LDkgKzEzODcsOSBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
ID0gKmZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZUNhY2hlU3Rh
dGUoKSA9PSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpOwotICAgIFJlbmRlckVsZW1lbnQqIHJv
b3QgPSBudWxscHRyOworICAgIFJlbmRlckVsZW1lbnQqIGxheW91dFJvb3QgPSBudWxscHRyOwog
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IG51bGxwdHI7Ci0gICAgYm9vbCBzdWJ0cmVlID0gZmFs
c2U7CisgICAgYm9vbCBwZXJmb3JtaW5nU3VidHJlZUxheW91dCA9IGZhbHNlOwogCiAgICAgewog
ICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2VTY2hlZHVsaW5nRW5hYmxlZChtX2xheW91
dFNjaGVkdWxpbmdFbmFibGVkLCBmYWxzZSk7CkBAIC0xNDI5LDEyICsxNDI5LDEyIEBAIHZvaWQg
RnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgYXV0b1NpemVJ
ZkVuYWJsZWQoKTsKIAotICAgICAgICByb290ID0gbV9sYXlvdXRSb290ID8gbV9sYXlvdXRSb290
IDogZG9jdW1lbnQucmVuZGVyVmlldygpOwotICAgICAgICBpZiAoIXJvb3QpCisgICAgICAgIGxh
eW91dFJvb3QgPSBtX3N1YnRyZWVMYXlvdXRSb290ID8gbV9zdWJ0cmVlTGF5b3V0Um9vdCA6IGRv
Y3VtZW50LnJlbmRlclZpZXcoKTsKKyAgICAgICAgaWYgKCFsYXlvdXRSb290KQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBzdWJ0cmVlID0gbV9sYXlvdXRSb290OworICAgICAgICBwZXJm
b3JtaW5nU3VidHJlZUxheW91dCA9IG1fc3VidHJlZUxheW91dFJvb3Q7CiAKLSAgICAgICAgaWYg
KCFtX2xheW91dFJvb3QpIHsKKyAgICAgICAgaWYgKCFwZXJmb3JtaW5nU3VidHJlZUxheW91dCkg
ewogICAgICAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCk7CiAg
ICAgICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzPEhUTUxGcmFtZVNldEVsZW1lbnQ+KCpib2R5KSAmJiAhZnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCgpKSB7CkBAIC0xNDUxLDkgKzE0NTEsOSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0
KGJvb2wgYWxsb3dTdWJ0cmVlKQogI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBtX25lZWRz
RnVsbFJlcGFpbnQgPSAhc3VidHJlZSAmJiAobV9maXJzdExheW91dCB8fCBkb3duY2FzdDxSZW5k
ZXJWaWV3Pigqcm9vdCkucHJpbnRpbmcoKSk7CisgICAgICAgIG1fbmVlZHNGdWxsUmVwYWludCA9
ICFwZXJmb3JtaW5nU3VidHJlZUxheW91dCAmJiAobV9maXJzdExheW91dCB8fCBkb3duY2FzdDxS
ZW5kZXJWaWV3PigqbGF5b3V0Um9vdCkucHJpbnRpbmcoKSk7CiAKLSAgICAgICAgaWYgKCFzdWJ0
cmVlKSB7CisgICAgICAgIGlmICghcGVyZm9ybWluZ1N1YnRyZWVMYXlvdXQpIHsKICAgICAgICAg
ICAgIFNjcm9sbGJhck1vZGUgaE1vZGU7CiAgICAgICAgICAgICBTY3JvbGxiYXJNb2RlIHZNb2Rl
OyAgICAKICAgICAgICAgICAgIGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KGhNb2Rl
LCB2TW9kZSk7CkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJv
b2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICAgICAgICAgICAgICBtX2ZpcnN0TGF5b3V0ID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgICAgIG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSBzaXplRm9yUmVz
aXplRXZlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9sYXN0Wm9vbUZhY3RvciA9IHJvb3Qt
PnN0eWxlKCkuem9vbSgpOworICAgICAgICAgICAgICAgICAgICBtX2xhc3Rab29tRmFjdG9yID0g
bGF5b3V0Um9vdC0+c3R5bGUoKS56b29tKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gU2V0
IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8uCiAgICAgICAgICAg
ICAgICAgICAgIGlmICh2TW9kZSA9PSBTY3JvbGxiYXJBdXRvKQpAQCAtMTUwMiwxMCArMTUwMiwx
MSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICAg
ICAgbV9sYXlvdXRQaGFzZSA9IEluUHJlTGF5b3V0OwogICAgICAgICB9CiAKLSAgICAgICAgbGF5
ZXIgPSByb290LT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICBTdWJ0cmVlTGF5b3V0U3RhdGVN
YWludGFpbmVyIHN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIobV9sYXlvdXRSb290KTsKKyAg
ICAgICAgQVNTRVJUKGFsbG93U3VidHJlZUxheW91dCB8fCAhcGVyZm9ybWluZ1N1YnRyZWVMYXlv
dXQpOworICAgICAgICBsYXllciA9IGxheW91dFJvb3QtPmVuY2xvc2luZ0xheWVyKCk7CisgICAg
ICAgIFN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIgc3VidHJlZUxheW91dFN0YXRlTWFpbnRh
aW5lcihtX3N1YnRyZWVMYXlvdXRSb290KTsKIAotICAgICAgICBSZW5kZXJWaWV3OjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3IgcmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKCZyb290LT52aWV3KCkp
OworICAgICAgICBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IgcmVwYWludFJl
Z2lvbkFjY3VtdWxhdG9yKCZsYXlvdXRSb290LT52aWV3KCkpOwogCiAgICAgICAgIEFTU0VSVCht
X2xheW91dFBoYXNlID09IEluUHJlTGF5b3V0KTsKICAgICAgICAgbV9sYXlvdXRQaGFzZSA9IElu
UmVuZGVyVHJlZUxheW91dDsKQEAgLTE1MTQsMTYgKzE1MTUsMTYgQEAgdm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZSkKIAogICAgICAgICBBU1NFUlQobV9sYXlvdXRQaGFz
ZSA9PSBJblJlbmRlclRyZWVMYXlvdXQpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgUmVuZGVy
VHJlZU5lZWRzTGF5b3V0Q2hlY2tlciBjaGVja2VyKCpyb290KTsKKyAgICAgICAgUmVuZGVyVHJl
ZU5lZWRzTGF5b3V0Q2hlY2tlciBjaGVja2VyKCpsYXlvdXRSb290KTsKICNlbmRpZgotICAgICAg
ICByb290LT5sYXlvdXQoKTsKKyAgICAgICAgbGF5b3V0Um9vdC0+bGF5b3V0KCk7CiAKICNpZiBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICAgICBhcHBseVRleHRTaXppbmdJZk5lZWRlZCgq
cm9vdCk7CisgICAgICAgIGFwcGx5VGV4dFNpemluZ0lmTmVlZGVkKCpsYXlvdXRSb290KTsKICNl
bmRpZgogCiAgICAgICAgIEFTU0VSVChtX2xheW91dFBoYXNlID09IEluUmVuZGVyVHJlZUxheW91
dCk7Ci0gICAgICAgIG1fbGF5b3V0Um9vdCA9IG51bGxwdHI7CisgICAgICAgIG1fc3VidHJlZUxh
eW91dFJvb3QgPSBudWxscHRyOwogICAgICAgICAvLyBDbG9zZSBibG9jayBoZXJlIHRvIGVuZCB0
aGUgc2NvcGUgb2YgY2hhbmdlU2NoZWR1bGluZ0VuYWJsZWQgYW5kIFN1YnRyZWVMYXlvdXRTdGF0
ZU1haW50YWluZXIuCiAgICAgfQogCkBAIC0xNTMxLDcgKzE1MzIsNyBAQCB2b2lkIEZyYW1lVmll
dzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogCiAgICAgYm9vbCBuZWVkZWRGdWxsUmVwYWlu
dCA9IG1fbmVlZHNGdWxsUmVwYWludDsKIAotICAgIGlmICghc3VidHJlZSAmJiAhZG93bmNhc3Q8
UmVuZGVyVmlldz4oKnJvb3QpLnByaW50aW5nKCkpIHsKKyAgICBpZiAoIXBlcmZvcm1pbmdTdWJ0
cmVlTGF5b3V0ICYmICFkb3duY2FzdDxSZW5kZXJWaWV3PigqbGF5b3V0Um9vdCkucHJpbnRpbmco
KSkgewogICAgICAgICBhZGp1c3RWaWV3U2l6ZSgpOwogICAgICAgICAvLyBGSVhNRTogRmlyaW5n
IG1lZGlhIHF1ZXJ5IGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5IG9uIG5lc3RlZCBmcmFtZXMgY291
bGQgcHJvZHVjZWQgYSBkZXRhY2hlZCBGcmFtZVZpZXcgaGVyZSBieQogICAgICAgICAvLyBuYXZp
Z2F0aW5nIGF3YXkgZnJvbSB0aGUgY3VycmVudCBkb2N1bWVudCAoc2VlIHdlYmtpdC5vcmcvYi8x
NzMzMjkpLgpAQCAtMTU0NSwxMyArMTU0NiwxMyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJv
b2wgYWxsb3dTdWJ0cmVlKQogCiAgICAgLy8gTm93IHVwZGF0ZSB0aGUgcG9zaXRpb25zIG9mIGFs
bCBsYXllcnMuCiAgICAgaWYgKG1fbmVlZHNGdWxsUmVwYWludCkKLSAgICAgICAgcm9vdC0+dmll
dygpLnJlcGFpbnRSb290Q29udGVudHMoKTsKKyAgICAgICAgbGF5b3V0Um9vdC0+dmlldygpLnJl
cGFpbnRSb290Q29udGVudHMoKTsKIAotICAgIHJvb3QtPnZpZXcoKS5yZWxlYXNlUHJvdGVjdGVk
UmVuZGVyV2lkZ2V0cygpOworICAgIGxheW91dFJvb3QtPnZpZXcoKS5yZWxlYXNlUHJvdGVjdGVk
UmVuZGVyV2lkZ2V0cygpOwogCi0gICAgQVNTRVJUKCFyb290LT5uZWVkc0xheW91dCgpKTsKKyAg
ICBBU1NFUlQoIWxheW91dFJvb3QtPm5lZWRzTGF5b3V0KCkpOwogCi0gICAgbGF5ZXItPnVwZGF0
ZUxheWVyUG9zaXRpb25zQWZ0ZXJMYXlvdXQocmVuZGVyVmlldygpLT5sYXllcigpLCB1cGRhdGVM
YXllclBvc2l0aW9uRmxhZ3MobGF5ZXIsIHN1YnRyZWUsIG1fbmVlZHNGdWxsUmVwYWludCkpOwor
ICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyTGF5b3V0KHJlbmRlclZpZXcoKS0+
bGF5ZXIoKSwgdXBkYXRlTGF5ZXJQb3NpdGlvbkZsYWdzKGxheWVyLCBwZXJmb3JtaW5nU3VidHJl
ZUxheW91dCwgbV9uZWVkc0Z1bGxSZXBhaW50KSk7CiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xh
eWVyc0FmdGVyTGF5b3V0KCk7CiAKQEAgLTE1NjAsOCArMTU2MSw4IEBAIHZvaWQgRnJhbWVWaWV3
OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgbV9sYXlvdXRDb3VudCsrOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKQotICAgIGlm
IChBWE9iamVjdENhY2hlKiBjYWNoZSA9IHJvb3QtPmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVj
dENhY2hlKCkpCi0gICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHJvb3QsIEFYT2JqZWN0
Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUpOworICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGxheW91dFJvb3QtPmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAg
IGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGxheW91dFJvb3QsIEFYT2JqZWN0Q2FjaGU6OkFYTGF5
b3V0Q29tcGxldGUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBA
IC0xNjA0LDcgKzE2MDUsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0
cmVlKQogICAgICAgICAgICAgbGF5b3V0KCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRMYXlvdXQoY29va2llLCAqcm9vdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRMYXlvdXQoY29va2llLCAqbGF5b3V0Um9vdCk7CiAgICAgRGVidWdQYWdl
T3ZlcmxheXM6OmRpZExheW91dChmcmFtZSgpKTsKIAogICAgIC0tbV9uZXN0ZWRMYXlvdXRDb3Vu
dDsKQEAgLTMwMzksOSArMzA0MCw5IEBAIHZvaWQgRnJhbWVWaWV3OjpoaWRlKCkKIAogdm9pZCBG
cmFtZVZpZXc6OmNvbnZlcnRTdWJ0cmVlTGF5b3V0VG9GdWxsTGF5b3V0KCkKIHsKLSAgICBBU1NF
UlQobV9sYXlvdXRSb290KTsKLSAgICBtX2xheW91dFJvb3QtPm1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQ6Ok5vKTsKLSAgICBtX2xheW91dFJvb3QgPSBudWxs
cHRyOworICAgIEFTU0VSVChtX3N1YnRyZWVMYXlvdXRSb290KTsKKyAgICBtX3N1YnRyZWVMYXlv
dXRSb290LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0OjpO
byk7CisgICAgbV9zdWJ0cmVlTGF5b3V0Um9vdCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRnJhbWVW
aWV3OjpsYXlvdXRUaW1lckZpcmVkKCkKQEAgLTMwNTksNyArMzA2MCw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpzY2hlZHVsZVJlbGF5b3V0KCkKICAgICAvLyB0b28gbWFueSBmYWxzZSBhc3NlcnRpb25z
LiAgU2VlIDxyZGFyOi8vcHJvYmxlbS83MjE4MTE4Pi4KICAgICBBU1NFUlQoZnJhbWUoKS52aWV3
KCkgPT0gdGhpcyk7CiAKLSAgICBpZiAobV9sYXlvdXRSb290KQorICAgIGlmIChtX3N1YnRyZWVM
YXlvdXRSb290KQogICAgICAgICBjb252ZXJ0U3VidHJlZUxheW91dFRvRnVsbExheW91dCgpOwog
ICAgIGlmICghbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzEwOCwxMCArMzEwOSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dE9mU3Vi
dHJlZShSZW5kZXJFbGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAgICAgQVNTRVJUKCFyZW5kZXJW
aWV3LnJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKTsKICAgICBBU1NFUlQoZnJhbWUoKS52aWV3
KCkgPT0gdGhpcyk7CiAKLSAgICAvLyBXaGVuIG1fbGF5b3V0Um9vdCBpcyBhbHJlYWR5IHNldCwg
aWdub3JlIHRoZSByZW5kZXJWaWV3J3MgbmVlZHNMYXlvdXQgYml0Ci0gICAgLy8gc2luY2Ugd2Ug
bmVlZCB0byByZXNvbHZlIHRoZSBjb25mbGljdCBiZXR3ZWVuIHRoZSBtX2xheW91dFJvb3QgYW5k
IG5ld1JlbGF5b3V0Um9vdCBsYXlvdXRzLgotICAgIGlmIChyZW5kZXJWaWV3Lm5lZWRzTGF5b3V0
KCkgJiYgIW1fbGF5b3V0Um9vdCkgewotICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlv
dXRSb290OworICAgIC8vIFdoZW4gbV9zdWJ0cmVlTGF5b3V0Um9vdCBpcyBhbHJlYWR5IHNldCwg
aWdub3JlIHRoZSByZW5kZXJWaWV3J3MgbmVlZHNMYXlvdXQgYml0CisgICAgLy8gc2luY2Ugd2Ug
bmVlZCB0byByZXNvbHZlIHRoZSBjb25mbGljdCBiZXR3ZWVuIHRoZSBtX3N1YnRyZWVMYXlvdXRS
b290IGFuZCBuZXdSZWxheW91dFJvb3QgbGF5b3V0cy4KKyAgICBpZiAocmVuZGVyVmlldy5uZWVk
c0xheW91dCgpICYmICFtX3N1YnRyZWVMYXlvdXRSb290KSB7CisgICAgICAgIG1fc3VidHJlZUxh
eW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290OwogICAgICAgICBjb252ZXJ0U3VidHJlZUxheW91
dFRvRnVsbExheW91dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzExOSwzNSArMzEy
MCwzNSBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShSZW5kZXJF
bGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAgICAgaWYgKCFsYXlvdXRQZW5kaW5nKCkgJiYgbV9s
YXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkgewogICAgICAgICBTZWNvbmRzIGRlbGF5ID0gcmVuZGVy
Vmlldy5kb2N1bWVudCgpLm1pbmltdW1MYXlvdXREZWxheSgpOwogICAgICAgICBBU1NFUlQoIW5l
d1JlbGF5b3V0Um9vdC5jb250YWluZXIoKSB8fCBpczxSZW5kZXJWaWV3PihuZXdSZWxheW91dFJv
b3QuY29udGFpbmVyKCkpIHx8ICFuZXdSZWxheW91dFJvb3QuY29udGFpbmVyKCktPm5lZWRzTGF5
b3V0KCkpOwotICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290OworICAgICAg
ICBtX3N1YnRyZWVMYXlvdXRSb290ID0gJm5ld1JlbGF5b3V0Um9vdDsKICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1lKCkpOwogICAgICAg
ICBtX2RlbGF5ZWRMYXlvdXQgPSBkZWxheS52YWx1ZSgpOwogICAgICAgICBtX2xheW91dFRpbWVy
LnN0YXJ0T25lU2hvdChkZWxheSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
bV9sYXlvdXRSb290ID09ICZuZXdSZWxheW91dFJvb3QpCisgICAgaWYgKG1fc3VidHJlZUxheW91
dFJvb3QgPT0gJm5ld1JlbGF5b3V0Um9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2xheW91dFJvb3QpIHsKKyAgICBpZiAoIW1fc3VidHJlZUxheW91dFJvb3QpIHsKICAgICAgICAg
Ly8gV2UgYWxyZWFkeSBoYXZlIGEgcGVuZGluZyAoZnVsbCkgbGF5b3V0LiBKdXN0IG1hcmsgdGhl
IHN1YnRyZWUgZm9yIGxheW91dC4KICAgICAgICAgbmV3UmVsYXlvdXRSb290Lm1hcmtDb250YWlu
aW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQ6Ok5vKTsKICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1lKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzT2JqZWN0QW5jZXN0b3JDb250YWluZXJPZiht
X2xheW91dFJvb3QsICZuZXdSZWxheW91dFJvb3QpKSB7CisgICAgaWYgKGlzT2JqZWN0QW5jZXN0
b3JDb250YWluZXJPZihtX3N1YnRyZWVMYXlvdXRSb290LCAmbmV3UmVsYXlvdXRSb290KSkgewog
ICAgICAgICAvLyBLZWVwIHRoZSBjdXJyZW50IHJvb3QuCi0gICAgICAgIG5ld1JlbGF5b3V0Um9v
dC5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0OjpObywgbV9s
YXlvdXRSb290KTsKLSAgICAgICAgQVNTRVJUKCFtX2xheW91dFJvb3QtPmNvbnRhaW5lcigpIHx8
IGlzPFJlbmRlclZpZXc+KG1fbGF5b3V0Um9vdC0+Y29udGFpbmVyKCkpIHx8ICFtX2xheW91dFJv
b3QtPmNvbnRhaW5lcigpLT5uZWVkc0xheW91dCgpKTsKKyAgICAgICAgbmV3UmVsYXlvdXRSb290
Lm1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQ6Ok5vLCBtX3N1
YnRyZWVMYXlvdXRSb290KTsKKyAgICAgICAgQVNTRVJUKCFtX3N1YnRyZWVMYXlvdXRSb290LT5j
b250YWluZXIoKSB8fCBpczxSZW5kZXJWaWV3PihtX3N1YnRyZWVMYXlvdXRSb290LT5jb250YWlu
ZXIoKSkgfHwgIW1fc3VidHJlZUxheW91dFJvb3QtPmNvbnRhaW5lcigpLT5uZWVkc0xheW91dCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc09iamVjdEFuY2VzdG9yQ29u
dGFpbmVyT2YoJm5ld1JlbGF5b3V0Um9vdCwgbV9sYXlvdXRSb290KSkgeworICAgIGlmIChpc09i
amVjdEFuY2VzdG9yQ29udGFpbmVyT2YoJm5ld1JlbGF5b3V0Um9vdCwgbV9zdWJ0cmVlTGF5b3V0
Um9vdCkpIHsKICAgICAgICAgLy8gUmUtcm9vdCBhdCBuZXdSZWxheW91dFJvb3QuCi0gICAgICAg
IG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoU2NoZWR1bGVSZWxh
eW91dDo6Tm8sICZuZXdSZWxheW91dFJvb3QpOwotICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3
UmVsYXlvdXRSb290OwotICAgICAgICBBU1NFUlQoIW1fbGF5b3V0Um9vdC0+Y29udGFpbmVyKCkg
fHwgaXM8UmVuZGVyVmlldz4obV9sYXlvdXRSb290LT5jb250YWluZXIoKSkgfHwgIW1fbGF5b3V0
Um9vdC0+Y29udGFpbmVyKCktPm5lZWRzTGF5b3V0KCkpOworICAgICAgICBtX3N1YnRyZWVMYXlv
dXRSb290LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0OjpO
bywgJm5ld1JlbGF5b3V0Um9vdCk7CisgICAgICAgIG1fc3VidHJlZUxheW91dFJvb3QgPSAmbmV3
UmVsYXlvdXRSb290OworICAgICAgICBBU1NFUlQoIW1fc3VidHJlZUxheW91dFJvb3QtPmNvbnRh
aW5lcigpIHx8IGlzPFJlbmRlclZpZXc+KG1fc3VidHJlZUxheW91dFJvb3QtPmNvbnRhaW5lcigp
KSB8fCAhbV9zdWJ0cmVlTGF5b3V0Um9vdC0+Y29udGFpbmVyKCktPm5lZWRzTGF5b3V0KCkpOwog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoZnJh
bWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTcwLDcgKzMxNzEsNyBAQCBib29s
IEZyYW1lVmlldzo6bmVlZHNMYXlvdXQoKSBjb25zdAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgcmV0dXJuIGxheW91dFBlbmRpbmcoKQogICAg
ICAgICB8fCAocmVuZGVyVmlldyAmJiByZW5kZXJWaWV3LT5uZWVkc0xheW91dCgpKQotICAgICAg
ICB8fCBtX2xheW91dFJvb3QKKyAgICAgICAgfHwgbV9zdWJ0cmVlTGF5b3V0Um9vdAogICAgICAg
ICB8fCAobV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQgJiYgbV9zZXROZWVkc0xheW91dFdhc0Rl
ZmVycmVkKTsKIH0KIApAQCAtMzY4OCw3ICszNjg5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmF1dG9T
aXplSWZFbmFibGVkKCkKIAogICAgIExPRyhMYXlvdXQsICJGcmFtZVZpZXcgJXAgYXV0b1NpemVJ
ZkVuYWJsZWQiLCB0aGlzKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2VJbkF1dG9TaXpl
KG1faW5BdXRvU2l6ZSwgdHJ1ZSk7Ci0gICAgaWYgKG1fbGF5b3V0Um9vdCkKKyAgICBpZiAobV9z
dWJ0cmVlTGF5b3V0Um9vdCkKICAgICAgICAgY29udmVydFN1YnRyZWVMYXlvdXRUb0Z1bGxMYXlv
dXQoKTsKICAgICAvLyBTdGFydCBmcm9tIHRoZSBtaW5pbXVtIHNpemUgYW5kIGFsbG93IGl0IHRv
IGdyb3cuCiAgICAgcmVzaXplKG1fbWluQXV0b1NpemUud2lkdGgoKSwgbV9taW5BdXRvU2l6ZS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiNDBkMmIyZTA0Mzk2NzgyYjFm
ZDQ3ODgwMjQzMmIzMzIzNTMwMjJiLi5mNjI1OTM3MDQ1ZWNjYTllYWU4NGYzZWU2OWI1NzllNTc0
NzgzZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0luUmVuZGVyVHJlZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
b3V0UGhhc2UgPT0gSW5SZW5kZXJUcmVlTGF5b3V0OyB9CiAgICAgYm9vbCBpblBhaW50YWJsZVN0
YXRlKCkgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSAhPSBJblJlbmRlclRyZWVMYXlvdXQgJiYgbV9s
YXlvdXRQaGFzZSAhPSBJblZpZXdTaXplQWRqdXN0ICYmIG1fbGF5b3V0UGhhc2UgIT0gSW5Qb3N0
TGF5b3V0OyB9CiAKLSAgICBSZW5kZXJFbGVtZW50KiBsYXlvdXRSb290KCkgY29uc3QgeyByZXR1
cm4gbV9sYXlvdXRSb290OyB9Ci0gICAgdm9pZCBjbGVhckxheW91dFJvb3QoKSB7IG1fbGF5b3V0
Um9vdCA9IG51bGxwdHI7IH0KKyAgICBSZW5kZXJFbGVtZW50KiBzdWJ0cmVlTGF5b3V0Um9vdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3VidHJlZUxheW91dFJvb3Q7IH0KKyAgICB2b2lkIGNsZWFyU3Vi
dHJlZUxheW91dFJvb3QoKSB7IG1fc3VidHJlZUxheW91dFJvb3QgPSBudWxscHRyOyB9CiAgICAg
aW50IGxheW91dENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRDb3VudDsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc0xheW91dCgpIGNvbnN0OwpAQCAtNzk5LDcgKzc5OSw3
IEBAIHByaXZhdGU6CiAKICAgICBUaW1lciBtX2xheW91dFRpbWVyOwogICAgIGJvb2wgbV9kZWxh
eWVkTGF5b3V0OwotICAgIFJlbmRlckVsZW1lbnQqIG1fbGF5b3V0Um9vdCB7IG51bGxwdHIgfTsK
KyAgICBSZW5kZXJFbGVtZW50KiBtX3N1YnRyZWVMYXlvdXRSb290IHsgbnVsbHB0ciB9OwogCiAg
ICAgTGF5b3V0UGhhc2UgbV9sYXlvdXRQaGFzZTsKICAgICBib29sIG1fbGF5b3V0U2NoZWR1bGlu
Z0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGQxODRk
OThjYmM3NzRhOGU2MTMxMzBjN2U5MWRlMjdiZjllYTk5OTMuLjA4MWUyZWE0YmVhMWQ3NDBlZGZk
YmVlMDQwM2I4ZjQwZjYwNGZmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0yMjk2LDcgKzIyOTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxX
aWR0aEluRnJhZ21lbnQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdQogICAgIH0K
IAogICAgIC8vIElmIGxheW91dCBpcyBsaW1pdGVkIHRvIGEgc3VidHJlZSwgdGhlIHN1YnRyZWUg
cm9vdCdzIGxvZ2ljYWwgd2lkdGggZG9lcyBub3QgY2hhbmdlLgotICAgIGlmIChlbGVtZW50KCkg
JiYgIXZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRQZW5kaW5nKCkgJiYgdmlldygpLmZyYW1lVmll
dygpLmxheW91dFJvb3QoKSA9PSB0aGlzKQorICAgIGlmIChlbGVtZW50KCkgJiYgIXZpZXcoKS5m
cmFtZVZpZXcoKS5sYXlvdXRQZW5kaW5nKCkgJiYgdmlldygpLmZyYW1lVmlldygpLnN1YnRyZWVM
YXlvdXRSb290KCkgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIHBhcmVu
dCBib3ggaXMgZmxleGluZyB1cywgc28gaXQgaGFzIGluY3JlYXNlZCBvciBkZWNyZWFzZWQgb3Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYmMzODQz
MWQ0NjMwYTYwMmM0YWRlYzdiN2MyZWU3MmI3NzJjM2NhNC4uNDVhNWI0Nzk5ODIwYmIxMTFlMmZh
NDEyMjI2MWMyZjkyMWY1YzRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcApAQCAtMTA5NiwxMiArMTA5NiwxMiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Ondp
bGxCZVJlbW92ZWRGcm9tVHJlZSgpCiAgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVSZW1vdmVkRnJv
bVRyZWUoKTsKIH0KIAotaW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6Y2xlYXJMYXlvdXRSb290
SWZOZWVkZWQoKSBjb25zdAoraW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6Y2xlYXJTdWJ0cmVl
TGF5b3V0Um9vdElmTmVlZGVkKCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVz
dHJveWVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2aWV3KCkuZnJhbWVWaWV3KCku
bGF5b3V0Um9vdCgpICE9IHRoaXMpCisgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5zdWJ0cmVl
TGF5b3V0Um9vdCgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vcm1hbGx5
IHdoZW4gYSByZW5kZXJlciBpcyBkZXRhY2hlZCBmcm9tIHRoZSB0cmVlLCB0aGUgYXBwcm9wcmlh
dGUgZGlydHkgYml0cyBnZXQgc2V0CkBAIC0xMTExLDcgKzExMTEsNyBAQCBpbmxpbmUgdm9pZCBS
ZW5kZXJFbGVtZW50OjpjbGVhckxheW91dFJvb3RJZk5lZWRlZCgpIGNvbnN0CiAgICAgLy8gVGhp
cyBpbmRpY2F0ZXMgYSBmYWlsdXJlIHRvIGxheW91dCB0aGUgY2hpbGQsIHdoaWNoIGlzIHdoeQog
ICAgIC8vIHRoZSBsYXlvdXQgcm9vdCBpcyBzdGlsbCBzZXQgdG8gfHRoaXN8LiBNYWtlIHN1cmUg
dG8gY2xlYXIgaXQKICAgICAvLyBzaW5jZSB3ZSBhcmUgZ2V0dGluZyBkZXN0cm95ZWQuCi0gICAg
dmlldygpLmZyYW1lVmlldygpLmNsZWFyTGF5b3V0Um9vdCgpOworICAgIHZpZXcoKS5mcmFtZVZp
ZXcoKS5jbGVhclN1YnRyZWVMYXlvdXRSb290KCk7CiB9CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6
d2lsbEJlRGVzdHJveWVkKCkKQEAgLTExMjgsNyArMTEyOCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVu
dDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVk
KCk7CiAKLSAgICBjbGVhckxheW91dFJvb3RJZk5lZWRlZCgpOworICAgIGNsZWFyU3VidHJlZUxh
eW91dFJvb3RJZk5lZWRlZCgpOwogCiAgICAgaWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewog
ICAgICAgICBmb3IgKGF1dG8qIGJnTGF5ZXIgPSAmbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7
IGJnTGF5ZXI7IGJnTGF5ZXIgPSBiZ0xheWVyLT5uZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGQ4YmE2ZTJhYmRmNDJkZmNjMjM2NmY0ODgzNmY4
MzUzMGJmM2Q4YzMuLmZlYTBlYjM4ZThlNzhkOGYxOTZhYzQxNGI5ZjdjNTg1YzBlYzcyZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMzIzLDcgKzMyMyw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1
dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0OwogICAgIGJvb2wgZ2V0VHJhaWxpbmdDb3JuZXIo
RmxvYXRQb2ludCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3Q7CiAKLSAgICB2b2lk
IGNsZWFyTGF5b3V0Um9vdElmTmVlZGVkKCkgY29uc3Q7CisgICAgdm9pZCBjbGVhclN1YnRyZWVM
YXlvdXRSb290SWZOZWVkZWQoKSBjb25zdDsKICAgICAKICAgICBib29sIHNob3VsZFdpbGxDaGFu
Z2VDcmVhdGVTdGFja2luZ0NvbnRleHQoKSBjb25zdDsKICAgICB2b2lkIGlzc3VlUmVwYWludEZv
ck91dGxpbmVBdXRvKGZsb2F0IG91dGxpbmVTaXplKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324043</attachid>
            <date>2017-10-17 12:41:59 -0700</date>
            <delta_ts>2017-10-17 13:09:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178401-20171017124159.patch</filename>
            <type>text/plain</type>
            <size>21969</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRjODE1MjQ0NmJmMTgx
NjRlNzc4ZThmOGY2OTE3MDVjOTk1ZDY5My4uYmE5MjZlMTNjMGUzODU1OWE3MGVjNzQ1MGQ0YTll
YWNlOTAxNjc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE3LTEwLTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgW0ZyYW1lVmlldzo6bGF5b3V0
IGNsZWFudXBdIFN1YnRyZWUgc2hvdWxkIHJlYWQgc3VidHJlZUxheW91dC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBSZW5hbWUgc29tZSB2YXJpYWJsZXMg
dG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXI6OlN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcjo6flN1
YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VidHJlZUxh
eW91dFN0YXRlTWFpbnRhaW5lcjo6c2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9yU3VidHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6d2lsbERlc3Ryb3lSZW5kZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6ZGlkRGVzdHJveVJlbmRlclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnZl
cnRTdWJ0cmVlTGF5b3V0VG9GdWxsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVk
dWxlUmVsYXlvdXRPZlN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpuZWVk
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmF1dG9TaXplSWZF
bmFibGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorCisyMDE3LTEwLTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAgW0ZyYW1lVmlldzo6bGF5b3V0
IGNsZWFudXBdIE1vdmUgdGV4dCBhdXRvIHNpemluZyBsb2dpYyB0byBhIHNlcGFyYXRlIGZ1bmN0
aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgz
OTEKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MDMwMjY0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZTMyMTA2MmU5MGNhNDUwNzI5NGNjYThiMTNlZGMxODUxMzM5M2EyNi4uNDNjNGZk
N2I1YzI2MjVjZWQ4YTgxNzViOTExNzNjOWI0NWMyMzRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRp
bWVuc2lvbnNPdXRPZkRhdGUoRWxlbWVudCYgZWxlbWVudCwgRGltZW5zaW9uc0NoZQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoY3VyclJlbmRlcmVyID09IGZyYW1lVmlldy0+bGF5b3V0Um9vdCgpKQorICAgICAgICAg
ICAgaWYgKGN1cnJSZW5kZXJlciA9PSBmcmFtZVZpZXctPnN1YnRyZWVMYXlvdXRSb290KCkpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggZDk3OTJmYTIwYmJlZGQwNDgwOTQ0MGNiOWIyZGE0NmI0NTQ2MzVlYy4u
ODJkYmNjYjVkMzg4ZmY3MGQxM2EwMWM2MTQ5YzliMWE4ZTljYTE4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMTY2LDExICsxNjYsMTEgQEAgUGFnaW5hdGlvbjo6TW9kZSBwYWdp
bmF0aW9uTW9kZUZvclJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIGNsYXNz
IFN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIgewogcHVibGljOgogICAgIFN1YnRyZWVMYXlv
dXRTdGF0ZU1haW50YWluZXIoUmVuZGVyRWxlbWVudCogc3VidHJlZUxheW91dFJvb3QpCi0gICAg
ICAgIDogbV9sYXlvdXRSb290KHN1YnRyZWVMYXlvdXRSb290KQorICAgICAgICA6IG1fc3VidHJl
ZUxheW91dFJvb3Qoc3VidHJlZUxheW91dFJvb3QpCiAgICAgewotICAgICAgICBpZiAobV9sYXlv
dXRSb290KSB7Ci0gICAgICAgICAgICBSZW5kZXJWaWV3JiB2aWV3ID0gbV9sYXlvdXRSb290LT52
aWV3KCk7Ci0gICAgICAgICAgICB2aWV3LnB1c2hMYXlvdXRTdGF0ZSgqbV9sYXlvdXRSb290KTsK
KyAgICAgICAgaWYgKG1fc3VidHJlZUxheW91dFJvb3QpIHsKKyAgICAgICAgICAgIFJlbmRlclZp
ZXcmIHZpZXcgPSBtX3N1YnRyZWVMYXlvdXRSb290LT52aWV3KCk7CisgICAgICAgICAgICB2aWV3
LnB1c2hMYXlvdXRTdGF0ZSgqbV9zdWJ0cmVlTGF5b3V0Um9vdCk7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9yU3VidHJlZSgpKSB7CiAgICAgICAgICAgICAgICAg
dmlldy5kaXNhYmxlTGF5b3V0U3RhdGUoKTsKICAgICAgICAgICAgICAgICBtX2RpZERpc2FibGVM
YXlvdXRTdGF0ZSA9IHRydWU7CkBAIC0xODAsOSArMTgwLDkgQEAgcHVibGljOgogCiAgICAgflN1
YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIoKQogICAgIHsKLSAgICAgICAgaWYgKG1fbGF5b3V0
Um9vdCkgewotICAgICAgICAgICAgUmVuZGVyVmlldyYgdmlldyA9IG1fbGF5b3V0Um9vdC0+dmll
dygpOwotICAgICAgICAgICAgdmlldy5wb3BMYXlvdXRTdGF0ZSgqbV9sYXlvdXRSb290KTsKKyAg
ICAgICAgaWYgKG1fc3VidHJlZUxheW91dFJvb3QpIHsKKyAgICAgICAgICAgIFJlbmRlclZpZXcm
IHZpZXcgPSBtX3N1YnRyZWVMYXlvdXRSb290LT52aWV3KCk7CisgICAgICAgICAgICB2aWV3LnBv
cExheW91dFN0YXRlKCptX3N1YnRyZWVMYXlvdXRSb290KTsKICAgICAgICAgICAgIGlmIChtX2Rp
ZERpc2FibGVMYXlvdXRTdGF0ZSkKICAgICAgICAgICAgICAgICB2aWV3LmVuYWJsZUxheW91dFN0
YXRlKCk7CiAgICAgICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHNob3VsZERpc2FibGVMYXlvdXRTdGF0ZUZvclN1YnRyZWUoKQogICAgIHsKLSAgICAgICAgZm9y
IChhdXRvKiByZW5kZXJlciA9IG1fbGF5b3V0Um9vdDsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVu
ZGVyZXItPmNvbnRhaW5lcigpKSB7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSBtX3N1
YnRyZWVMYXlvdXRSb290OyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+Y29udGFpbmVy
KCkpIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aGFzVHJhbnNmb3JtKCkgfHwgcmVuZGVy
ZXItPmhhc1JlZmxlY3Rpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgot
ICAgIFJlbmRlckVsZW1lbnQqIG1fbGF5b3V0Um9vdCB7IG51bGxwdHIgfTsKKyAgICBSZW5kZXJF
bGVtZW50KiBtX3N1YnRyZWVMYXlvdXRSb290IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9kaWRE
aXNhYmxlTGF5b3V0U3RhdGUgeyBmYWxzZSB9OwogfTsKIApAQCAtMzM2LDcgKzMzNiw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9pc092ZXJsYXBwZWQgPSBmYWxzZTsKICAgICBt
X2NvbnRlbnRJc09wYXF1ZSA9IGZhbHNlOwogICAgIG1fbGF5b3V0VGltZXIuc3RvcCgpOwotICAg
IG1fbGF5b3V0Um9vdCA9IG51bGxwdHI7CisgICAgbV9zdWJ0cmVlTGF5b3V0Um9vdCA9IG51bGxw
dHI7CiAgICAgbV9kZWxheWVkTGF5b3V0ID0gZmFsc2U7CiAgICAgbV9uZWVkc0Z1bGxSZXBhaW50
ID0gdHJ1ZTsKICAgICBtX2xheW91dFNjaGVkdWxpbmdFbmFibGVkID0gdHJ1ZTsKQEAgLTY1NSwx
MiArNjU1LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCiB2
b2lkIEZyYW1lVmlldzo6d2lsbERlc3Ryb3lSZW5kZXJUcmVlKCkKIHsKICAgICBkZXRhY2hDdXN0
b21TY3JvbGxiYXJzKCk7Ci0gICAgbV9sYXlvdXRSb290ID0gbnVsbHB0cjsKKyAgICBtX3N1YnRy
ZWVMYXlvdXRSb290ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmRpZERlc3Ryb3lS
ZW5kZXJUcmVlKCkKIHsKLSAgICBBU1NFUlQoIW1fbGF5b3V0Um9vdCk7CisgICAgQVNTRVJUKCFt
X3N1YnRyZWVMYXlvdXRSb290KTsKICAgICBBU1NFUlQobV93aWRnZXRzSW5SZW5kZXJUcmVlLmlz
RW1wdHkoKSk7CiAKICAgICAvLyBJZiB0aGUgcmVuZGVyIHRyZWUgaXMgZGVzdHJveWVkIGJlbG93
IEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCksIHRoZXJlIHdpbGwgc3RpbGwgYmUg
YSBudWxsIHNlbnRpbmVsIGluIHRoZSBzZXQuCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXIKICAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CiAgICAg
fQogICAgIAotICAgIGlmIChtX2xheW91dFJvb3QpCisgICAgaWYgKG1fc3VidHJlZUxheW91dFJv
b3QpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCku
ZG9jdW1lbnQoKTsKQEAgLTEzMjIsMTEgKzEzMjIsMTEgQEAgc3RhdGljIHZvaWQgYXBwbHlUZXh0
U2l6aW5nSWZOZWVkZWQoUmVuZGVyRWxlbWVudCYgbGF5b3V0Um9vdCkKIH0KICNlbmRpZgogCi12
b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQordm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZUxheW91dCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighZnJhbWUoKS5kb2N1bWVudCgpLT5pblJlbmRlclRyZWVVcGRhdGUo
KSk7CiAKLSAgICBMT0coTGF5b3V0LCAiRnJhbWVWaWV3ICVwICglZHglZCkgbGF5b3V0LCBtYWlu
IGZyYW1ldmlldyAlZCwgYWxsb3dTdWJ0cmVlPSVkIiwgdGhpcywgc2l6ZSgpLndpZHRoKCksIHNp
emUoKS5oZWlnaHQoKSwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCBhbGxvd1N1YnRyZWUpOworICAg
IExPRyhMYXlvdXQsICJGcmFtZVZpZXcgJXAgKCVkeCVkKSBsYXlvdXQsIG1haW4gZnJhbWV2aWV3
ICVkLCBhbGxvd1N1YnRyZWVMYXlvdXQ9JWQiLCB0aGlzLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgp
LmhlaWdodCgpLCBmcmFtZSgpLmlzTWFpbkZyYW1lKCksIGFsbG93U3VidHJlZUxheW91dCk7CiAg
ICAgaWYgKGlzSW5SZW5kZXJUcmVlTGF5b3V0KCkpIHsKICAgICAgICAgTE9HKExheW91dCwgIiAg
aW4gbGF5b3V0LCBiYWlsaW5nIik7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNTQsOSArMTM1NCw5
IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIkZyYW1lVmlldyAiIDw8
IHRoaXMgPDwgIiBzbmFwc2hvdHRpbmcgc2l6ZSAiIDw8ICBTY3JvbGxWaWV3OjpsYXlvdXRTaXpl
KCkgPDwgIiBmb3IgbWVkaWEgcXVlcmllcyIpOwogICAgICAgICAgICAgbV9mcmFtZUZsYXR0ZW5p
bmdWaWV3U2l6ZUZvck1lZGlhUXVlcnkgPSBTY3JvbGxWaWV3OjpsYXlvdXRTaXplKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgc3RhcnRMYXlvdXRBdE1haW5GcmFtZVZpZXdJZk5lZWRlZChhbGxvd1N1
YnRyZWUpOwotICAgICAgICBSZW5kZXJFbGVtZW50KiByb290ID0gbV9sYXlvdXRSb290ID8gbV9s
YXlvdXRSb290IDogZnJhbWUoKS5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7Ci0gICAgICAgIGlm
ICghcm9vdCB8fCAhcm9vdC0+bmVlZHNMYXlvdXQoKSkKKyAgICAgICAgc3RhcnRMYXlvdXRBdE1h
aW5GcmFtZVZpZXdJZk5lZWRlZChhbGxvd1N1YnRyZWVMYXlvdXQpOworICAgICAgICBhdXRvKiBs
YXlvdXRSb290ID0gbV9zdWJ0cmVlTGF5b3V0Um9vdCA/IG1fc3VidHJlZUxheW91dFJvb3QgOiBm
cmFtZSgpLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKKyAgICAgICAgaWYgKCFsYXlvdXRSb290
IHx8ICFsYXlvdXRSb290LT5uZWVkc0xheW91dCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTEzNjQsNyArMTM2NCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9v
bCBhbGxvd1N1YnRyZWUpCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKHVwZGF0ZUZpeGVk
UG9zaXRpb25MYXlvdXRSZWN0KCkpCi0gICAgICAgIGFsbG93U3VidHJlZSA9IGZhbHNlOworICAg
ICAgICBhbGxvd1N1YnRyZWVMYXlvdXQgPSBmYWxzZTsKICNlbmRpZgogCiAgICAgbV9sYXlvdXRU
aW1lci5zdG9wKCk7CkBAIC0xMzc5LDcgKzEzNzksNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0
KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoZnJhbWUoKSk7CiAg
ICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2soJmZyYW1lKCkuYW5p
bWF0aW9uKCkpOwogICAgIAotICAgIGlmICghYWxsb3dTdWJ0cmVlICYmIG1fbGF5b3V0Um9vdCkK
KyAgICBpZiAoIWFsbG93U3VidHJlZUxheW91dCAmJiBtX3N1YnRyZWVMYXlvdXRSb290KQogICAg
ICAgICBjb252ZXJ0U3VidHJlZUxheW91dFRvRnVsbExheW91dCgpOwogCiAgICAgQVNTRVJUKGZy
YW1lKCkudmlldygpID09IHRoaXMpOwpAQCAtMTM4Nyw5ICsxMzg3LDkgQEAgdm9pZCBGcmFtZVZp
ZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9
ICpmcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2VDYWNoZVN0YXRl
KCkgPT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKLSAgICBSZW5kZXJFbGVtZW50KiByb290
ID0gbnVsbHB0cjsKKyAgICBSZW5kZXJFbGVtZW50KiBsYXlvdXRSb290ID0gbnVsbHB0cjsKICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSBudWxscHRyOwotICAgIGJvb2wgc3VidHJlZSA9IGZhbHNl
OworICAgIGJvb2wgaXNTdWJ0cmVlTGF5b3V0ID0gZmFsc2U7CiAKICAgICB7CiAgICAgICAgIFNl
dEZvclNjb3BlPGJvb2w+IGNoYW5nZVNjaGVkdWxpbmdFbmFibGVkKG1fbGF5b3V0U2NoZWR1bGlu
Z0VuYWJsZWQsIGZhbHNlKTsKQEAgLTE0MjksMTIgKzE0MjksMTIgQEAgdm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZSkKIAogICAgICAgICBhdXRvU2l6ZUlmRW5hYmxlZCgp
OwogCi0gICAgICAgIHJvb3QgPSBtX2xheW91dFJvb3QgPyBtX2xheW91dFJvb3QgOiBkb2N1bWVu
dC5yZW5kZXJWaWV3KCk7Ci0gICAgICAgIGlmICghcm9vdCkKKyAgICAgICAgbGF5b3V0Um9vdCA9
IG1fc3VidHJlZUxheW91dFJvb3QgPyBtX3N1YnRyZWVMYXlvdXRSb290IDogZG9jdW1lbnQucmVu
ZGVyVmlldygpOworICAgICAgICBpZiAoIWxheW91dFJvb3QpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHN1YnRyZWUgPSBtX2xheW91dFJvb3Q7CisgICAgICAgIGlzU3VidHJlZUxheW91
dCA9IG1fc3VidHJlZUxheW91dFJvb3Q7CiAKLSAgICAgICAgaWYgKCFtX2xheW91dFJvb3QpIHsK
KyAgICAgICAgaWYgKCFpc1N1YnRyZWVMYXlvdXQpIHsKICAgICAgICAgICAgIGF1dG8qIGJvZHkg
PSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpOwogICAgICAgICAgICAgaWYgKGJvZHkgJiYgYm9k
eS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxIVE1MRnJhbWVTZXRFbGVt
ZW50PigqYm9keSkgJiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgewpAQCAtMTQ1MSw5ICsx
NDUxLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICNlbmRp
ZgogICAgICAgICB9CiAKLSAgICAgICAgbV9uZWVkc0Z1bGxSZXBhaW50ID0gIXN1YnRyZWUgJiYg
KG1fZmlyc3RMYXlvdXQgfHwgZG93bmNhc3Q8UmVuZGVyVmlldz4oKnJvb3QpLnByaW50aW5nKCkp
OworICAgICAgICBtX25lZWRzRnVsbFJlcGFpbnQgPSAhaXNTdWJ0cmVlTGF5b3V0ICYmIChtX2Zp
cnN0TGF5b3V0IHx8IGRvd25jYXN0PFJlbmRlclZpZXc+KCpsYXlvdXRSb290KS5wcmludGluZygp
KTsKIAotICAgICAgICBpZiAoIXN1YnRyZWUpIHsKKyAgICAgICAgaWYgKCFpc1N1YnRyZWVMYXlv
dXQpIHsKICAgICAgICAgICAgIFNjcm9sbGJhck1vZGUgaE1vZGU7CiAgICAgICAgICAgICBTY3Jv
bGxiYXJNb2RlIHZNb2RlOyAgICAKICAgICAgICAgICAgIGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVz
Rm9yTGF5b3V0KGhNb2RlLCB2TW9kZSk7CkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICAgICAgICAgICAgICBtX2Zp
cnN0TGF5b3V0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIG1fZmlyc3RMYXlvdXRDYWxs
YmFja1BlbmRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBtX2xhc3RWaWV3cG9ydFNp
emUgPSBzaXplRm9yUmVzaXplRXZlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9sYXN0Wm9v
bUZhY3RvciA9IHJvb3QtPnN0eWxlKCkuem9vbSgpOworICAgICAgICAgICAgICAgICAgICBtX2xh
c3Rab29tRmFjdG9yID0gbGF5b3V0Um9vdC0+c3R5bGUoKS56b29tKCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1
dG8uCiAgICAgICAgICAgICAgICAgICAgIGlmICh2TW9kZSA9PSBTY3JvbGxiYXJBdXRvKQpAQCAt
MTUwMiwxMCArMTUwMiwxMSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0
cmVlKQogICAgICAgICAgICAgbV9sYXlvdXRQaGFzZSA9IEluUHJlTGF5b3V0OwogICAgICAgICB9
CiAKLSAgICAgICAgbGF5ZXIgPSByb290LT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICBTdWJ0
cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyIHN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIobV9s
YXlvdXRSb290KTsKKyAgICAgICAgQVNTRVJUKGFsbG93U3VidHJlZUxheW91dCB8fCAhaXNTdWJ0
cmVlTGF5b3V0KTsKKyAgICAgICAgbGF5ZXIgPSBsYXlvdXRSb290LT5lbmNsb3NpbmdMYXllcigp
OworICAgICAgICBTdWJ0cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyIHN1YnRyZWVMYXlvdXRTdGF0
ZU1haW50YWluZXIobV9zdWJ0cmVlTGF5b3V0Um9vdCk7CiAKLSAgICAgICAgUmVuZGVyVmlldzo6
UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yIHJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcigmcm9vdC0+
dmlldygpKTsKKyAgICAgICAgUmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yIHJl
cGFpbnRSZWdpb25BY2N1bXVsYXRvcigmbGF5b3V0Um9vdC0+dmlldygpKTsKIAogICAgICAgICBB
U1NFUlQobV9sYXlvdXRQaGFzZSA9PSBJblByZUxheW91dCk7CiAgICAgICAgIG1fbGF5b3V0UGhh
c2UgPSBJblJlbmRlclRyZWVMYXlvdXQ7CkBAIC0xNTE0LDE2ICsxNTE1LDE2IEBAIHZvaWQgRnJh
bWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgQVNTRVJUKG1fbGF5
b3V0UGhhc2UgPT0gSW5SZW5kZXJUcmVlTGF5b3V0KTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAg
IFJlbmRlclRyZWVOZWVkc0xheW91dENoZWNrZXIgY2hlY2tlcigqcm9vdCk7CisgICAgICAgIFJl
bmRlclRyZWVOZWVkc0xheW91dENoZWNrZXIgY2hlY2tlcigqbGF5b3V0Um9vdCk7CiAjZW5kaWYK
LSAgICAgICAgcm9vdC0+bGF5b3V0KCk7CisgICAgICAgIGxheW91dFJvb3QtPmxheW91dCgpOwog
CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgYXBwbHlUZXh0U2l6aW5nSWZO
ZWVkZWQoKnJvb3QpOworICAgICAgICBhcHBseVRleHRTaXppbmdJZk5lZWRlZCgqbGF5b3V0Um9v
dCk7CiAjZW5kaWYKIAogICAgICAgICBBU1NFUlQobV9sYXlvdXRQaGFzZSA9PSBJblJlbmRlclRy
ZWVMYXlvdXQpOwotICAgICAgICBtX2xheW91dFJvb3QgPSBudWxscHRyOworICAgICAgICBtX3N1
YnRyZWVMYXlvdXRSb290ID0gbnVsbHB0cjsKICAgICAgICAgLy8gQ2xvc2UgYmxvY2sgaGVyZSB0
byBlbmQgdGhlIHNjb3BlIG9mIGNoYW5nZVNjaGVkdWxpbmdFbmFibGVkIGFuZCBTdWJ0cmVlTGF5
b3V0U3RhdGVNYWludGFpbmVyLgogICAgIH0KIApAQCAtMTUzMSw3ICsxNTMyLDcgQEAgdm9pZCBG
cmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKIAogICAgIGJvb2wgbmVlZGVkRnVs
bFJlcGFpbnQgPSBtX25lZWRzRnVsbFJlcGFpbnQ7CiAKLSAgICBpZiAoIXN1YnRyZWUgJiYgIWRv
d25jYXN0PFJlbmRlclZpZXc+KCpyb290KS5wcmludGluZygpKSB7CisgICAgaWYgKCFpc1N1YnRy
ZWVMYXlvdXQgJiYgIWRvd25jYXN0PFJlbmRlclZpZXc+KCpsYXlvdXRSb290KS5wcmludGluZygp
KSB7CiAgICAgICAgIGFkanVzdFZpZXdTaXplKCk7CiAgICAgICAgIC8vIEZJWE1FOiBGaXJpbmcg
bWVkaWEgcXVlcnkgY2FsbGJhY2tzIHN5bmNocm9ub3VzbHkgb24gbmVzdGVkIGZyYW1lcyBjb3Vs
ZCBwcm9kdWNlZCBhIGRldGFjaGVkIEZyYW1lVmlldyBoZXJlIGJ5CiAgICAgICAgIC8vIG5hdmln
YXRpbmcgYXdheSBmcm9tIHRoZSBjdXJyZW50IGRvY3VtZW50IChzZWUgd2Via2l0Lm9yZy9iLzE3
MzMyOSkuCkBAIC0xNTQ1LDEzICsxNTQ2LDEzIEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9v
bCBhbGxvd1N1YnRyZWUpCiAKICAgICAvLyBOb3cgdXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgYWxs
IGxheWVycy4KICAgICBpZiAobV9uZWVkc0Z1bGxSZXBhaW50KQotICAgICAgICByb290LT52aWV3
KCkucmVwYWludFJvb3RDb250ZW50cygpOworICAgICAgICBsYXlvdXRSb290LT52aWV3KCkucmVw
YWludFJvb3RDb250ZW50cygpOwogCi0gICAgcm9vdC0+dmlldygpLnJlbGVhc2VQcm90ZWN0ZWRS
ZW5kZXJXaWRnZXRzKCk7CisgICAgbGF5b3V0Um9vdC0+dmlldygpLnJlbGVhc2VQcm90ZWN0ZWRS
ZW5kZXJXaWRnZXRzKCk7CiAKLSAgICBBU1NFUlQoIXJvb3QtPm5lZWRzTGF5b3V0KCkpOworICAg
IEFTU0VSVCghbGF5b3V0Um9vdC0+bmVlZHNMYXlvdXQoKSk7CiAKLSAgICBsYXllci0+dXBkYXRl
TGF5ZXJQb3NpdGlvbnNBZnRlckxheW91dChyZW5kZXJWaWV3KCktPmxheWVyKCksIHVwZGF0ZUxh
eWVyUG9zaXRpb25GbGFncyhsYXllciwgc3VidHJlZSwgbV9uZWVkc0Z1bGxSZXBhaW50KSk7Cisg
ICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJMYXlvdXQocmVuZGVyVmlldygpLT5s
YXllcigpLCB1cGRhdGVMYXllclBvc2l0aW9uRmxhZ3MobGF5ZXIsIGlzU3VidHJlZUxheW91dCwg
bV9uZWVkc0Z1bGxSZXBhaW50KSk7CiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVy
TGF5b3V0KCk7CiAKQEAgLTE1NjAsOCArMTU2MSw4IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQo
Ym9vbCBhbGxvd1N1YnRyZWUpCiAgICAgbV9sYXlvdXRDb3VudCsrOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKQotICAgIGlmIChBWE9iamVj
dENhY2hlKiBjYWNoZSA9IHJvb3QtPmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkp
Ci0gICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHJvb3QsIEFYT2JqZWN0Q2FjaGU6OkFY
TGF5b3V0Q29tcGxldGUpOworICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGxheW91dFJv
b3QtPmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgIGNhY2hlLT5w
b3N0Tm90aWZpY2F0aW9uKGxheW91dFJvb3QsIEFYT2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxl
dGUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0xNjA0LDcg
KzE2MDUsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAg
ICAgICAgICAgbGF5b3V0KCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXQoY29va2llLCAqcm9vdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXQoY29va2llLCAqbGF5b3V0Um9vdCk7CiAgICAgRGVidWdQYWdlT3ZlcmxheXM6
OmRpZExheW91dChmcmFtZSgpKTsKIAogICAgIC0tbV9uZXN0ZWRMYXlvdXRDb3VudDsKQEAgLTMw
MzksOSArMzA0MCw5IEBAIHZvaWQgRnJhbWVWaWV3OjpoaWRlKCkKIAogdm9pZCBGcmFtZVZpZXc6
OmNvbnZlcnRTdWJ0cmVlTGF5b3V0VG9GdWxsTGF5b3V0KCkKIHsKLSAgICBBU1NFUlQobV9sYXlv
dXRSb290KTsKLSAgICBtX2xheW91dFJvb3QtPm1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0
KFNjaGVkdWxlUmVsYXlvdXQ6Ok5vKTsKLSAgICBtX2xheW91dFJvb3QgPSBudWxscHRyOworICAg
IEFTU0VSVChtX3N1YnRyZWVMYXlvdXRSb290KTsKKyAgICBtX3N1YnRyZWVMYXlvdXRSb290LT5t
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0OjpObyk7CisgICAg
bV9zdWJ0cmVlTGF5b3V0Um9vdCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpsYXlv
dXRUaW1lckZpcmVkKCkKQEAgLTMwNTksNyArMzA2MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hl
ZHVsZVJlbGF5b3V0KCkKICAgICAvLyB0b28gbWFueSBmYWxzZSBhc3NlcnRpb25zLiAgU2VlIDxy
ZGFyOi8vcHJvYmxlbS83MjE4MTE4Pi4KICAgICBBU1NFUlQoZnJhbWUoKS52aWV3KCkgPT0gdGhp
cyk7CiAKLSAgICBpZiAobV9sYXlvdXRSb290KQorICAgIGlmIChtX3N1YnRyZWVMYXlvdXRSb290
KQogICAgICAgICBjb252ZXJ0U3VidHJlZUxheW91dFRvRnVsbExheW91dCgpOwogICAgIGlmICgh
bV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwOCwxMCAr
MzEwOSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShSZW5k
ZXJFbGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3LnJlbmRl
clRyZWVCZWluZ0Rlc3Ryb3llZCgpKTsKICAgICBBU1NFUlQoZnJhbWUoKS52aWV3KCkgPT0gdGhp
cyk7CiAKLSAgICAvLyBXaGVuIG1fbGF5b3V0Um9vdCBpcyBhbHJlYWR5IHNldCwgaWdub3JlIHRo
ZSByZW5kZXJWaWV3J3MgbmVlZHNMYXlvdXQgYml0Ci0gICAgLy8gc2luY2Ugd2UgbmVlZCB0byBy
ZXNvbHZlIHRoZSBjb25mbGljdCBiZXR3ZWVuIHRoZSBtX2xheW91dFJvb3QgYW5kIG5ld1JlbGF5
b3V0Um9vdCBsYXlvdXRzLgotICAgIGlmIChyZW5kZXJWaWV3Lm5lZWRzTGF5b3V0KCkgJiYgIW1f
bGF5b3V0Um9vdCkgewotICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290Owor
ICAgIC8vIFdoZW4gbV9zdWJ0cmVlTGF5b3V0Um9vdCBpcyBhbHJlYWR5IHNldCwgaWdub3JlIHRo
ZSByZW5kZXJWaWV3J3MgbmVlZHNMYXlvdXQgYml0CisgICAgLy8gc2luY2Ugd2UgbmVlZCB0byBy
ZXNvbHZlIHRoZSBjb25mbGljdCBiZXR3ZWVuIHRoZSBtX3N1YnRyZWVMYXlvdXRSb290IGFuZCBu
ZXdSZWxheW91dFJvb3QgbGF5b3V0cy4KKyAgICBpZiAocmVuZGVyVmlldy5uZWVkc0xheW91dCgp
ICYmICFtX3N1YnRyZWVMYXlvdXRSb290KSB7CisgICAgICAgIG1fc3VidHJlZUxheW91dFJvb3Qg
PSAmbmV3UmVsYXlvdXRSb290OwogICAgICAgICBjb252ZXJ0U3VidHJlZUxheW91dFRvRnVsbExh
eW91dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzExOSwzNSArMzEyMCwzNSBAQCB2
b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShSZW5kZXJFbGVtZW50JiBu
ZXdSZWxheW91dFJvb3QpCiAgICAgaWYgKCFsYXlvdXRQZW5kaW5nKCkgJiYgbV9sYXlvdXRTY2hl
ZHVsaW5nRW5hYmxlZCkgewogICAgICAgICBTZWNvbmRzIGRlbGF5ID0gcmVuZGVyVmlldy5kb2N1
bWVudCgpLm1pbmltdW1MYXlvdXREZWxheSgpOwogICAgICAgICBBU1NFUlQoIW5ld1JlbGF5b3V0
Um9vdC5jb250YWluZXIoKSB8fCBpczxSZW5kZXJWaWV3PihuZXdSZWxheW91dFJvb3QuY29udGFp
bmVyKCkpIHx8ICFuZXdSZWxheW91dFJvb3QuY29udGFpbmVyKCktPm5lZWRzTGF5b3V0KCkpOwot
ICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290OworICAgICAgICBtX3N1YnRy
ZWVMYXlvdXRSb290ID0gJm5ld1JlbGF5b3V0Um9vdDsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1lKCkpOwogICAgICAgICBtX2RlbGF5
ZWRMYXlvdXQgPSBkZWxheS52YWx1ZSgpOwogICAgICAgICBtX2xheW91dFRpbWVyLnN0YXJ0T25l
U2hvdChkZWxheSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9sYXlvdXRS
b290ID09ICZuZXdSZWxheW91dFJvb3QpCisgICAgaWYgKG1fc3VidHJlZUxheW91dFJvb3QgPT0g
Jm5ld1JlbGF5b3V0Um9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2xheW91dFJv
b3QpIHsKKyAgICBpZiAoIW1fc3VidHJlZUxheW91dFJvb3QpIHsKICAgICAgICAgLy8gV2UgYWxy
ZWFkeSBoYXZlIGEgcGVuZGluZyAoZnVsbCkgbGF5b3V0LiBKdXN0IG1hcmsgdGhlIHN1YnRyZWUg
Zm9yIGxheW91dC4KICAgICAgICAgbmV3UmVsYXlvdXRSb290Lm1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQ6Ok5vKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1lKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGlzT2JqZWN0QW5jZXN0b3JDb250YWluZXJPZihtX2xheW91dFJv
b3QsICZuZXdSZWxheW91dFJvb3QpKSB7CisgICAgaWYgKGlzT2JqZWN0QW5jZXN0b3JDb250YWlu
ZXJPZihtX3N1YnRyZWVMYXlvdXRSb290LCAmbmV3UmVsYXlvdXRSb290KSkgewogICAgICAgICAv
LyBLZWVwIHRoZSBjdXJyZW50IHJvb3QuCi0gICAgICAgIG5ld1JlbGF5b3V0Um9vdC5tYXJrQ29u
dGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0OjpObywgbV9sYXlvdXRSb290
KTsKLSAgICAgICAgQVNTRVJUKCFtX2xheW91dFJvb3QtPmNvbnRhaW5lcigpIHx8IGlzPFJlbmRl
clZpZXc+KG1fbGF5b3V0Um9vdC0+Y29udGFpbmVyKCkpIHx8ICFtX2xheW91dFJvb3QtPmNvbnRh
aW5lcigpLT5uZWVkc0xheW91dCgpKTsKKyAgICAgICAgbmV3UmVsYXlvdXRSb290Lm1hcmtDb250
YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQ6Ok5vLCBtX3N1YnRyZWVMYXlv
dXRSb290KTsKKyAgICAgICAgQVNTRVJUKCFtX3N1YnRyZWVMYXlvdXRSb290LT5jb250YWluZXIo
KSB8fCBpczxSZW5kZXJWaWV3PihtX3N1YnRyZWVMYXlvdXRSb290LT5jb250YWluZXIoKSkgfHwg
IW1fc3VidHJlZUxheW91dFJvb3QtPmNvbnRhaW5lcigpLT5uZWVkc0xheW91dCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc09iamVjdEFuY2VzdG9yQ29udGFpbmVyT2Yo
Jm5ld1JlbGF5b3V0Um9vdCwgbV9sYXlvdXRSb290KSkgeworICAgIGlmIChpc09iamVjdEFuY2Vz
dG9yQ29udGFpbmVyT2YoJm5ld1JlbGF5b3V0Um9vdCwgbV9zdWJ0cmVlTGF5b3V0Um9vdCkpIHsK
ICAgICAgICAgLy8gUmUtcm9vdCBhdCBuZXdSZWxheW91dFJvb3QuCi0gICAgICAgIG1fbGF5b3V0
Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoU2NoZWR1bGVSZWxheW91dDo6Tm8s
ICZuZXdSZWxheW91dFJvb3QpOwotICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRS
b290OwotICAgICAgICBBU1NFUlQoIW1fbGF5b3V0Um9vdC0+Y29udGFpbmVyKCkgfHwgaXM8UmVu
ZGVyVmlldz4obV9sYXlvdXRSb290LT5jb250YWluZXIoKSkgfHwgIW1fbGF5b3V0Um9vdC0+Y29u
dGFpbmVyKCktPm5lZWRzTGF5b3V0KCkpOworICAgICAgICBtX3N1YnRyZWVMYXlvdXRSb290LT5t
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0OjpObywgJm5ld1Jl
bGF5b3V0Um9vdCk7CisgICAgICAgIG1fc3VidHJlZUxheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRS
b290OworICAgICAgICBBU1NFUlQoIW1fc3VidHJlZUxheW91dFJvb3QtPmNvbnRhaW5lcigpIHx8
IGlzPFJlbmRlclZpZXc+KG1fc3VidHJlZUxheW91dFJvb3QtPmNvbnRhaW5lcigpKSB8fCAhbV9z
dWJ0cmVlTGF5b3V0Um9vdC0+Y29udGFpbmVyKCktPm5lZWRzTGF5b3V0KCkpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoZnJhbWUoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTcwLDcgKzMxNzEsNyBAQCBib29sIEZyYW1lVmll
dzo6bmVlZHNMYXlvdXQoKSBjb25zdAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlz
LT5yZW5kZXJWaWV3KCk7CiAgICAgcmV0dXJuIGxheW91dFBlbmRpbmcoKQogICAgICAgICB8fCAo
cmVuZGVyVmlldyAmJiByZW5kZXJWaWV3LT5uZWVkc0xheW91dCgpKQotICAgICAgICB8fCBtX2xh
eW91dFJvb3QKKyAgICAgICAgfHwgbV9zdWJ0cmVlTGF5b3V0Um9vdAogICAgICAgICB8fCAobV9k
ZWZlclNldE5lZWRzTGF5b3V0Q291bnQgJiYgbV9zZXROZWVkc0xheW91dFdhc0RlZmVycmVkKTsK
IH0KIApAQCAtMzY4OCw3ICszNjg5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmF1dG9TaXplSWZFbmFi
bGVkKCkKIAogICAgIExPRyhMYXlvdXQsICJGcmFtZVZpZXcgJXAgYXV0b1NpemVJZkVuYWJsZWQi
LCB0aGlzKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2VJbkF1dG9TaXplKG1faW5BdXRv
U2l6ZSwgdHJ1ZSk7Ci0gICAgaWYgKG1fbGF5b3V0Um9vdCkKKyAgICBpZiAobV9zdWJ0cmVlTGF5
b3V0Um9vdCkKICAgICAgICAgY29udmVydFN1YnRyZWVMYXlvdXRUb0Z1bGxMYXlvdXQoKTsKICAg
ICAvLyBTdGFydCBmcm9tIHRoZSBtaW5pbXVtIHNpemUgYW5kIGFsbG93IGl0IHRvIGdyb3cuCiAg
ICAgcmVzaXplKG1fbWluQXV0b1NpemUud2lkdGgoKSwgbV9taW5BdXRvU2l6ZS5oZWlnaHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiNDBkMmIyZTA0Mzk2NzgyYjFmZDQ3ODgwMjQz
MmIzMzIzNTMwMjJiLi5mNjI1OTM3MDQ1ZWNjYTllYWU4NGYzZWU2OWI1NzllNTc0NzgzZjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0luUmVuZGVyVHJlZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UGhhc2Ug
PT0gSW5SZW5kZXJUcmVlTGF5b3V0OyB9CiAgICAgYm9vbCBpblBhaW50YWJsZVN0YXRlKCkgeyBy
ZXR1cm4gbV9sYXlvdXRQaGFzZSAhPSBJblJlbmRlclRyZWVMYXlvdXQgJiYgbV9sYXlvdXRQaGFz
ZSAhPSBJblZpZXdTaXplQWRqdXN0ICYmIG1fbGF5b3V0UGhhc2UgIT0gSW5Qb3N0TGF5b3V0OyB9
CiAKLSAgICBSZW5kZXJFbGVtZW50KiBsYXlvdXRSb290KCkgY29uc3QgeyByZXR1cm4gbV9sYXlv
dXRSb290OyB9Ci0gICAgdm9pZCBjbGVhckxheW91dFJvb3QoKSB7IG1fbGF5b3V0Um9vdCA9IG51
bGxwdHI7IH0KKyAgICBSZW5kZXJFbGVtZW50KiBzdWJ0cmVlTGF5b3V0Um9vdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3VidHJlZUxheW91dFJvb3Q7IH0KKyAgICB2b2lkIGNsZWFyU3VidHJlZUxheW91
dFJvb3QoKSB7IG1fc3VidHJlZUxheW91dFJvb3QgPSBudWxscHRyOyB9CiAgICAgaW50IGxheW91
dENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRDb3VudDsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBuZWVkc0xheW91dCgpIGNvbnN0OwpAQCAtNzk5LDcgKzc5OSw3IEBAIHByaXZh
dGU6CiAKICAgICBUaW1lciBtX2xheW91dFRpbWVyOwogICAgIGJvb2wgbV9kZWxheWVkTGF5b3V0
OwotICAgIFJlbmRlckVsZW1lbnQqIG1fbGF5b3V0Um9vdCB7IG51bGxwdHIgfTsKKyAgICBSZW5k
ZXJFbGVtZW50KiBtX3N1YnRyZWVMYXlvdXRSb290IHsgbnVsbHB0ciB9OwogCiAgICAgTGF5b3V0
UGhhc2UgbV9sYXlvdXRQaGFzZTsKICAgICBib29sIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGQxODRkOThjYmM3NzRh
OGU2MTMxMzBjN2U5MWRlMjdiZjllYTk5OTMuLjA4MWUyZWE0YmVhMWQ3NDBlZGZkYmVlMDQwM2I4
ZjQwZjYwNGZmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0y
Mjk2LDcgKzIyOTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJh
Z21lbnQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdQogICAgIH0KIAogICAgIC8v
IElmIGxheW91dCBpcyBsaW1pdGVkIHRvIGEgc3VidHJlZSwgdGhlIHN1YnRyZWUgcm9vdCdzIGxv
Z2ljYWwgd2lkdGggZG9lcyBub3QgY2hhbmdlLgotICAgIGlmIChlbGVtZW50KCkgJiYgIXZpZXco
KS5mcmFtZVZpZXcoKS5sYXlvdXRQZW5kaW5nKCkgJiYgdmlldygpLmZyYW1lVmlldygpLmxheW91
dFJvb3QoKSA9PSB0aGlzKQorICAgIGlmIChlbGVtZW50KCkgJiYgIXZpZXcoKS5mcmFtZVZpZXco
KS5sYXlvdXRQZW5kaW5nKCkgJiYgdmlldygpLmZyYW1lVmlldygpLnN1YnRyZWVMYXlvdXRSb290
KCkgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIHBhcmVudCBib3ggaXMg
ZmxleGluZyB1cywgc28gaXQgaGFzIGluY3JlYXNlZCBvciBkZWNyZWFzZWQgb3VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYmMzODQzMWQ0NjMwYTYw
MmM0YWRlYzdiN2MyZWU3MmI3NzJjM2NhNC4uNDVhNWI0Nzk5ODIwYmIxMTFlMmZhNDEyMjI2MWMy
ZjkyMWY1YzRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cApAQCAtMTA5NiwxMiArMTA5NiwxMiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpCiAgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKTsK
IH0KIAotaW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6Y2xlYXJMYXlvdXRSb290SWZOZWVkZWQo
KSBjb25zdAoraW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6Y2xlYXJTdWJ0cmVlTGF5b3V0Um9v
dElmTmVlZGVkKCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Um9v
dCgpICE9IHRoaXMpCisgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5zdWJ0cmVlTGF5b3V0Um9v
dCgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vcm1hbGx5IHdoZW4gYSBy
ZW5kZXJlciBpcyBkZXRhY2hlZCBmcm9tIHRoZSB0cmVlLCB0aGUgYXBwcm9wcmlhdGUgZGlydHkg
Yml0cyBnZXQgc2V0CkBAIC0xMTExLDcgKzExMTEsNyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJFbGVt
ZW50OjpjbGVhckxheW91dFJvb3RJZk5lZWRlZCgpIGNvbnN0CiAgICAgLy8gVGhpcyBpbmRpY2F0
ZXMgYSBmYWlsdXJlIHRvIGxheW91dCB0aGUgY2hpbGQsIHdoaWNoIGlzIHdoeQogICAgIC8vIHRo
ZSBsYXlvdXQgcm9vdCBpcyBzdGlsbCBzZXQgdG8gfHRoaXN8LiBNYWtlIHN1cmUgdG8gY2xlYXIg
aXQKICAgICAvLyBzaW5jZSB3ZSBhcmUgZ2V0dGluZyBkZXN0cm95ZWQuCi0gICAgdmlldygpLmZy
YW1lVmlldygpLmNsZWFyTGF5b3V0Um9vdCgpOworICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5jbGVh
clN1YnRyZWVMYXlvdXRSb290KCk7CiB9CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJlRGVz
dHJveWVkKCkKQEAgLTExMjgsNyArMTEyOCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJl
RGVzdHJveWVkKCkKIAogICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7CiAKLSAg
ICBjbGVhckxheW91dFJvb3RJZk5lZWRlZCgpOworICAgIGNsZWFyU3VidHJlZUxheW91dFJvb3RJ
Zk5lZWRlZCgpOwogCiAgICAgaWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewogICAgICAgICBm
b3IgKGF1dG8qIGJnTGF5ZXIgPSAmbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJnTGF5ZXI7
IGJnTGF5ZXIgPSBiZ0xheWVyLT5uZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCmluZGV4IGQ4YmE2ZTJhYmRmNDJkZmNjMjM2NmY0ODgzNmY4MzUzMGJmM2Q4
YzMuLmZlYTBlYjM4ZThlNzhkOGYxOTZhYzQxNGI5ZjdjNTg1YzBlYzcyZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMzIzLDcgKzMyMyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1dCwgYm9vbCYg
aW5zaWRlRml4ZWQpIGNvbnN0OwogICAgIGJvb2wgZ2V0VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2lu
dCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3Q7CiAKLSAgICB2b2lkIGNsZWFyTGF5
b3V0Um9vdElmTmVlZGVkKCkgY29uc3Q7CisgICAgdm9pZCBjbGVhclN1YnRyZWVMYXlvdXRSb290
SWZOZWVkZWQoKSBjb25zdDsKICAgICAKICAgICBib29sIHNob3VsZFdpbGxDaGFuZ2VDcmVhdGVT
dGFja2luZ0NvbnRleHQoKSBjb25zdDsKICAgICB2b2lkIGlzc3VlUmVwYWludEZvck91dGxpbmVB
dXRvKGZsb2F0IG91dGxpbmVTaXplKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>