<?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>163360</bug_id>
          
          <creation_ts>2016-10-12 14:55:07 -0700</creation_ts>
          <short_desc>Copy BackForwardList from WebCore to WebKit/win</short_desc>
          <delta_ts>2016-10-13 14:38:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239516</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-12 14:55:07 -0700</bug_when>
    <thetext>Copy BackForwardList from WebCore to WebKit/win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239519</commentid>
    <comment_count>1</comment_count>
      <attachid>291399</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-12 14:57:20 -0700</bug_when>
    <thetext>Created attachment 291399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239530</commentid>
    <comment_count>2</comment_count>
      <attachid>291404</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-12 15:07:53 -0700</bug_when>
    <thetext>Created attachment 291404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239531</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 15:10:42 -0700</bug_when>
    <thetext>Attachment 291404 did not pass style-queue:


ERROR: Source/WebKit/win/BackForwardList.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:92:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:100:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:105:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:108:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/win/BackForwardList.cpp:109:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:152:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:181:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:216:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239551</commentid>
    <comment_count>4</comment_count>
      <attachid>291411</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-12 15:55:15 -0700</bug_when>
    <thetext>Created attachment 291411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239552</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 15:56:43 -0700</bug_when>
    <thetext>Attachment 291411 did not pass style-queue:


ERROR: Source/WebKit/win/BackForwardList.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:92:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:100:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:105:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:108:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/win/BackForwardList.cpp:109:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:152:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:181:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:216:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239584</commentid>
    <comment_count>6</comment_count>
      <attachid>291425</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-12 16:58:26 -0700</bug_when>
    <thetext>Created attachment 291425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239588</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 17:00:54 -0700</bug_when>
    <thetext>Attachment 291425 did not pass style-queue:


ERROR: Source/WebKit/win/BackForwardList.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:92:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:100:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:105:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:108:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/win/BackForwardList.cpp:109:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:152:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:181:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:216:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239776</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-13 08:29:04 -0700</bug_when>
    <thetext>Copying something we want to get rid of seems like a bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239902</commentid>
    <comment_count>9</comment_count>
      <attachid>291505</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 12:28:09 -0700</bug_when>
    <thetext>Created attachment 291505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239906</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 12:31:23 -0700</bug_when>
    <thetext>Attachment 291505 did not pass style-queue:


ERROR: Source/WebKit/win/BackForwardList.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:92:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:100:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:105:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:108:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/win/BackForwardList.cpp:109:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:152:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:181:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/win/BackForwardList.cpp:216:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239916</commentid>
    <comment_count>11</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 12:48:32 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Copying something we want to get rid of seems like a bad idea.

The Mac and Windows implementations of these classes are going to diverge in the near future, and a lot of code is going to be removed from both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239919</commentid>
    <comment_count>12</comment_count>
      <attachid>291505</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-13 12:56:15 -0700</bug_when>
    <thetext>Comment on attachment 291505
Patch

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

&gt; Source/WebKit/win/BackForwardList.cpp:227
&gt; +#if PLATFORM(IOS)

This isn&apos;t needed any more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239958</commentid>
    <comment_count>13</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 14:38:45 -0700</bug_when>
    <thetext>Committed r207308: &lt;http://trac.webkit.org/changeset/207308&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291399</attachid>
            <date>2016-10-12 14:57:20 -0700</date>
            <delta_ts>2016-10-12 15:07:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163360-20161012145355.patch</filename>
            <type>text/plain</type>
            <size>4869</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZjRlNWYwZjY1NDE1NTZm
MTU3ODM1MWRlZjcxMDJmMTFhYWU4ZGYuLjAxNWNjOTFiNmFiMzg2MzhlNTEwY2UxODk1MzdkOGJi
NWI4ZDY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5IEJhY2tGb3J3YXJk
TGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGdl
dHRpbmcgcmlkIG9mIEJhY2tGb3J3YXJkTGlzdCBpbiBXZWJDb3JlLgorCisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTYtMTAtMTEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxNDNlOTA1MThiNzZi
NjNhZjI2YWNhMTU5ODhiYzBlM2ViMjk2ZTY5Li5jMjlkYjRlYjQ0Yzk3NGI1N2U1MDhiOTk3NzY1
MDZhNGZmYjhkY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTAt
MTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5
IEJhY2tGb3J3YXJkTGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBsb2NhbCBCYWNrRm9y
d2FyZExpc3QgY2xhc3MgaW5zdGVhZCBvZiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QuCisKKyAg
ICAgICAgKiBXZWJCYWNrRm9yd2FyZExpc3QuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCk6CisKIDIwMTYtMTAtMTIgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCBi
dWlsZCBmaXggYWZ0ZXIgcjIwNzIxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGExNDc5
NjU2YjQ5YTljY2M1NDdlYTk3NzZmNzVkNDBkMDQ2MWQyYTIuLjcwNzkxNTIxMmNkMjIxMzAyNDQ0
MmQxMWEyM2RmMTVlZGMxNjEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTQ0LDYg
KzE0NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTX0NsYXNzZXMKICAgICB3aW4vQWNj
ZXNzaWJsZURvY3VtZW50LmNwcAogICAgIHdpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCiAgICAgd2lu
L0FjY2Vzc2libGVUZXh0SW1wbC5jcHAKKyAgICB3aW4vQmFja0ZvcndhcmRMaXN0LmNwcAogICAg
IHdpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKICAgICB3aW4vRE9NQ1NTQ2xhc3Nlcy5j
cHAKICAgICB3aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3
YXJkTGlzdC5oCmluZGV4IDAyNTRmODU5YjJlZjI3NTUxYjNmYWFjMGIzYzhiMzM2M2I2MGFkZTku
LjlkZTY4YjM5ZGYwZmI2ZTEyNTNkOThhZjg0MTVkODZjZGM2ZjAzMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaWZuZGVmIFdlYkJhY2tGb3J3YXJkTGlzdF9ICi0jZGVmaW5lIFdlYkJhY2tG
b3J3YXJkTGlzdF9ICisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogCkBAIC0z
MywxNiArMzIsMTQgQEAKICNpbmNsdWRlIDxXVEYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPFdU
Ri9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEJhY2tGb3J3YXJk
TGlzdDsKLX0KK2NsYXNzIEJhY2tGb3J3YXJkTGlzdDsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRM
aXN0IDogcHVibGljIElXZWJCYWNrRm9yd2FyZExpc3QsIElXZWJCYWNrRm9yd2FyZExpc3RQcml2
YXRlCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdCogY3JlYXRlSW5z
dGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q+KTsKKyAgICBzdGF0aWMg
V2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJhY2tGb3J3YXJk
TGlzdD4pOwogcHJvdGVjdGVkOgotICAgIFdlYkJhY2tGb3J3YXJkTGlzdChQYXNzUmVmUHRyPFdl
YkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4pOworICAgIFdlYkJhY2tGb3J3YXJkTGlzdChQYXNzUmVm
UHRyPEJhY2tGb3J3YXJkTGlzdD4pOwogICAgIH5XZWJCYWNrRm9yd2FyZExpc3QoKTsKIAogcHVi
bGljOgpAQCAtNzMsNyArNzAsNSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVTE9ORyBt
X3JlZkNvdW50IHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q+IG1f
YmFja0ZvcndhcmRMaXN0OworICAgIFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0Zvcndh
cmRMaXN0OwogfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNkYTRlZjBlZGYw
OTljM2IwODI3NjExOWVhYmY4MGQwODNhYTdlM2QuLmMxMGMyZGM4ZDY0MDgzMjY4MGNjOWI5Yjcy
ODZkNmM3N2RiZjZiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKLSNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJDT01WYXJpYW50U2V0
dGVyLmgiCiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgiCkBAIC04NCw3ICs4NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9CYWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnUuaD4KQEAgLTMwOTksNiArMzA5OCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFt
ZShSRUNUIGZyYW1lLCBfSW5fIEJTVFIgZnJhbWVOYW1lLCBfSW5fIEJTVFIgZ3JvdXBOCiAgICAg
bV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogCiAgICAg
UGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbihtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNs
aWVudD4odGhpcyksIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSk7CisgICAgY29uZmlndXJhdGlv
bi5iYWNrRm9yd2FyZExpc3QgPSBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgpOwogICAgIGNvbmZp
Z3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICAgICBj
b25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50
KHRoaXMpOwogICAgIGNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50
KHRoaXMpOwpAQCAtMzQzMCw3ICszNDMwLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpiYWNrRm9yd2Fy
ZExpc3QoX0NPTV9PdXRwdHJfb3B0XyBJV2ViQmFja0ZvcndhcmRMaXN0KiogbGlzdCkKICAgICBp
ZiAoIW1fdXNlQmFja0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogIAotICAg
ICpsaXN0ID0gV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqPihtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkp
KTsKKyAgICAqbGlzdCA9IFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2Uoc3RhdGlj
X2Nhc3Q8QmFja0ZvcndhcmRMaXN0Kj4obV9wYWdlLT5iYWNrRm9yd2FyZCgpLmNsaWVudCgpKSk7
CiAKICAgICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291404</attachid>
            <date>2016-10-12 15:07:53 -0700</date>
            <delta_ts>2016-10-12 15:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163360-20161012150429.patch</filename>
            <type>text/plain</type>
            <size>16528</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZjRlNWYwZjY1NDE1NTZm
MTU3ODM1MWRlZjcxMDJmMTFhYWU4ZGYuLjAxNWNjOTFiNmFiMzg2MzhlNTEwY2UxODk1MzdkOGJi
NWI4ZDY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5IEJhY2tGb3J3YXJk
TGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGdl
dHRpbmcgcmlkIG9mIEJhY2tGb3J3YXJkTGlzdCBpbiBXZWJDb3JlLgorCisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTYtMTAtMTEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxNDNlOTA1MThiNzZi
NjNhZjI2YWNhMTU5ODhiYzBlM2ViMjk2ZTY5Li5hNmU1ODkyYTYwYmY2OTRhZDhkYWU1ZGJmY2Nh
ZjI1NTJkNzljOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5
IEJhY2tGb3J3YXJkTGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBsb2NhbCBCYWNrRm9y
d2FyZExpc3QgY2xhc3MgaW5zdGVhZCBvZiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QuCisKKyAg
ICAgICAgKiBCYWNrRm9yd2FyZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBCYWNrRm9yd2Fy
ZExpc3QuaDogQWRkZWQuCisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAg
ICAgKFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCk6CisKIDIwMTYtMTAtMTIgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjIwNzIxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGExNDc5NjU2
YjQ5YTljY2M1NDdlYTk3NzZmNzVkNDBkMDQ2MWQyYTIuLjcwNzkxNTIxMmNkMjIxMzAyNDQ0MmQx
MWEyM2RmMTVlZGMxNjEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTQ0LDYgKzE0
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTX0NsYXNzZXMKICAgICB3aW4vQWNjZXNz
aWJsZURvY3VtZW50LmNwcAogICAgIHdpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCiAgICAgd2luL0Fj
Y2Vzc2libGVUZXh0SW1wbC5jcHAKKyAgICB3aW4vQmFja0ZvcndhcmRMaXN0LmNwcAogICAgIHdp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKICAgICB3aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAK
ICAgICB3aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YjRmMjA0NGY2NjNlYzZlNzFjYmViZTQ4MTgyYzU0YjE0ZDA2NzFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0LmNw
cApAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiV2ViS2l0RExMLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorCitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVu
dEl0ZW1JbmRleCA9IFVJTlRfTUFYOworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQmFj
a0ZvcndhcmRMaXN0OjpCYWNrRm9yd2FyZExpc3QoKQorICAgIDogbV9jdXJyZW50KE5vQ3VycmVu
dEl0ZW1JbmRleCkKKyAgICAsIG1fY2FwYWNpdHkoRGVmYXVsdENhcGFjaXR5KQorICAgICwgbV9j
bG9zZWQodHJ1ZSkKKyAgICAsIG1fZW5hYmxlZCh0cnVlKQoreworfQorCitCYWNrRm9yd2FyZExp
c3Q6On5CYWNrRm9yd2FyZExpc3QoKQoreworICAgIEFTU0VSVChtX2Nsb3NlZCk7Cit9CisKK3Zv
aWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBuZXdJdGVtKQor
eworICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9yd2FyZCBsaXN0ICAgIAorICAgIGlm
IChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIHRh
cmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOworICAgICAgICB3aGlsZSAobV9lbnRyaWVzLnNpemUo
KSA+IHRhcmdldFNpemUpIHsKKyAgICAgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1f
ZW50cmllcy50YWtlTGFzdCgpOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0u
cHRyKCkpOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBs
aXN0IGlzIGdldHRpbmcgdG9vIGJpZywgYXMgbG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQKKyAg
ICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5KS4KKyAgICBp
ZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtX2NhcGFjaXR5ICYmIChtX2N1cnJlbnQgfHwgbV9jYXBh
Y2l0eSA9PSAxKSkgeworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBXVEZNb3ZlKG1f
ZW50cmllc1swXSk7CisgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7CisgICAgICAgIG1fZW50
cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmUoaXRlbSk7CisgICAgICAgIC0tbV9jdXJyZW50OworICAgIH0KKworICAgIG1fZW50
cnlIYXNoLmFkZChuZXdJdGVtLnB0cigpKTsKKyAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVu
dCArIDEsIFdURk1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OworfQorCit2b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50ID4gMCk7Cisg
ICAgaWYgKG1fY3VycmVudCA+IDApIHsKKyAgICAgICAgbV9jdXJyZW50LS07CisgICAgfQorfQor
Cit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Gb3J3YXJkKCkKK3sKKyAgICBBU1NFUlQobV9jdXJy
ZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpOworICAgIGlmIChtX2N1cnJlbnQgPCBtX2VudHJp
ZXMuc2l6ZSgpIC0gMSkgeworICAgICAgICBtX2N1cnJlbnQrKzsKKyAgICB9Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBpZiAo
IW1fZW50cmllcy5zaXplKCkgfHwgIWl0ZW0pCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKDsgaW5kZXggPCBtX2VudHJpZXMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBpZiAobV9lbnRyaWVzW2luZGV4XS5wdHIoKSA9PSBp
dGVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KSkgeworICAgICAgICBtX2N1cnJlbnQgPSBpbmRleDsKKyAgICB9Cit9CisKK0hpc3RvcnlJdGVt
KiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50ICYmIG1f
Y3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNb
bV9jdXJyZW50IC0gMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0hpc3RvcnlJ
dGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50
ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJl
bnRdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitIaXN0b3J5SXRlbSogQmFja0Zv
cndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCit7CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYg
bV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpCisgICAgICAgIHJldHVybiBtX2VudHJp
ZXNbbV9jdXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVt
VmVjdG9yJiBsaXN0KQoreworICAgIGxpc3QuY2xlYXIoKTsKKyAgICBpZiAobV9jdXJyZW50ICE9
IE5vQ3VycmVudEl0ZW1JbmRleCkgeworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKKyAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQorICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XS5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6
Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkK
K3sKKyAgICBBU1NFUlQobGltaXQgPiAtMSk7CisgICAgbGlzdC5jbGVhcigpOworICAgIGlmICgh
bV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICB1bnNpZ25l
ZCBsYXN0RW50cnkgPSBtX2VudHJpZXMuc2l6ZSgpIC0gMTsKKyAgICBpZiAobV9jdXJyZW50IDwg
bGFzdEVudHJ5KSB7CisgICAgICAgIGludCBsYXN0ID0gc3RkOjptaW4obV9jdXJyZW50ICsgbGlt
aXQsIGxhc3RFbnRyeSk7CisgICAgICAgIGxpbWl0ID0gbV9jdXJyZW50ICsgMTsKKyAgICAgICAg
Zm9yICg7IGxpbWl0IDw9IGxhc3Q7ICsrbGltaXQpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCht
X2VudHJpZXNbbGltaXRdLmdldCgpKTsKKyAgICB9Cit9CisKK2ludCBCYWNrRm9yd2FyZExpc3Q6
OmNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbV9jYXBhY2l0eTsKK30KKwordm9pZCBCYWNrRm9y
d2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaXplKQoreyAgICAKKyAgICB3aGlsZSAoc2l6ZSA8
IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAgICAgUmVmPEhpc3Rv
cnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7CisgICAgICAgIG1fZW50cnlIYXNo
LnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1v
dmUoaXRlbSk7CisgICAgfQorCisgICAgaWYgKCFzaXplKQorICAgICAgICBtX2N1cnJlbnQgPSBO
b0N1cnJlbnRJdGVtSW5kZXg7CisgICAgZWxzZSBpZiAobV9jdXJyZW50ID4gbV9lbnRyaWVzLnNp
emUoKSAtIDEpIHsKKyAgICAgICAgbV9jdXJyZW50ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7Cisg
ICAgfQorICAgIG1fY2FwYWNpdHkgPSBzaXplOworfQorCitib29sIEJhY2tGb3J3YXJkTGlzdDo6
ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fZW5hYmxlZDsKK30KKwordm9pZCBCYWNrRm9yd2Fy
ZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fZW5hYmxlZCA9IGVuYWJs
ZWQ7CisgICAgaWYgKCFlbmFibGVkKSB7CisgICAgICAgIGludCBjYXBhY2l0eSA9IG1fY2FwYWNp
dHk7CisgICAgICAgIHNldENhcGFjaXR5KDApOworICAgICAgICBzZXRDYXBhY2l0eShjYXBhY2l0
eSk7CisgICAgfQorfQorCitpbnQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkKK3sK
KyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBtX2N1cnJl
bnQ7Cit9CisKK2ludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQoreworICAg
IHJldHVybiBtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IChpbnQpbV9lbnRy
aWVzLnNpemUoKSAtIChtX2N1cnJlbnQgKyAxKTsKK30KKworSGlzdG9yeUl0ZW0qIEJhY2tGb3J3
YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQoreworICAgIC8vIERvIHJhbmdlIGNoZWNr
cyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCisgICAgaWYg
KGluZGV4IDwgLXN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgCisgICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgCisgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCAr
IG1fY3VycmVudF0ucHRyKCk7Cit9CisKK0hpc3RvcnlJdGVtVmVjdG9yJiBCYWNrRm9yd2FyZExp
c3Q6OmVudHJpZXMoKQoreworICAgIHJldHVybiBtX2VudHJpZXM7Cit9CisKKyNpZiBQTEFURk9S
TShJT1MpCit1bnNpZ25lZCBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnQoKQoreworICAgIHJldHVy
biBtX2N1cnJlbnQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDdXJyZW50KHVuc2ln
bmVkIG5ld0N1cnJlbnQpCit7CisgICAgbV9jdXJyZW50ID0gbmV3Q3VycmVudDsKK30KKworYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCit7CisgICAgYm9vbCBkaWRS
ZW1vdmVBdExlYXN0T25lSXRlbSA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50
cmllcykgeworICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CisgICAgICAgICAg
ICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7CisgICAgICAgICAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
ZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW07Cit9CisjZW5kaWYKKwordm9pZCBCYWNrRm9yd2FyZExp
c3Q6OmNsb3NlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCisgICAgICAg
IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgIG1fZW50cmllcy5jbGVh
cigpOworICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CisgICAgbV9jbG9zZWQgPSB0cnVlOworfQor
Citib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2VkKCkKK3sKKyAgICByZXR1cm4gbV9jbG9zZWQ7
Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KQoreworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
ZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CisgICAgICAgICAgICBtX2VudHJpZXMucmVtb3Zl
KGkpOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOworICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggfHwgbV9jdXJyZW50IDwgaSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPiBpKQorICAg
ICAgICAgICAgICAgIG1fY3VycmVudC0tOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgc2l6ZV90IGNvdW50ID0gbV9lbnRyaWVzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9jdXJyZW50ID49IGNvdW50KQorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBj
b3VudCA/IGNvdW50IC0gMSA6IE5vQ3VycmVudEl0ZW1JbmRleDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEJhY2tGb3J3YXJk
TGlzdDo6Y29udGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKK3sKKyAgICByZXR1cm4gbV9l
bnRyeUhhc2guY29udGFpbnMoZW50cnkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9CYWNrRm9yd2FyZExpc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZjgyOGZiYzc4MmExZGFkZmFlN2UwYzJiNDM4MWE3MmM2YWU0OWE4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0LmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIFZlY3RvcjxS
ZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CisK
K2NsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1YmxpYyBCYWNrRm9yd2FyZENsaWVudCB7CitwdWJs
aWM6IAorICAgIHN0YXRpYyBSZWY8QmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEJhY2tGb3J3YXJkTGlzdCgpKTsgfQorICAgIHZpcnR1YWwgfkJhY2tGb3J3
YXJkTGlzdCgpOworCisgICAgdm9pZCBhZGRJdGVtKFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnb0JhY2soKTsKKyAgICB2b2lkIGdvRm9yd2FyZCgpOwor
ICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKKyAgICAg
ICAgCisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7CisgICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGZv
cndhcmRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgSGlzdG9yeUl0ZW1W
ZWN0b3ImKTsKKyAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0KGludCwgSGlzdG9yeUl0ZW1W
ZWN0b3ImKTsKKworICAgIGludCBjYXBhY2l0eSgpOworICAgIHZvaWQgc2V0Q2FwYWNpdHkoaW50
KTsKKyAgICBib29sIGVuYWJsZWQoKTsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisgICAg
aW50IGJhY2tMaXN0Q291bnQoKSBvdmVycmlkZTsKKyAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgp
IG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7
CisKKyAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjbG9zZWQoKTsKKworICAg
IHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOworICAgIEhpc3RvcnlJdGVt
VmVjdG9yJiBlbnRyaWVzKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQmFja0ZvcndhcmRM
aXN0KCk7CisKKyAgICBIaXN0b3J5SXRlbVZlY3RvciBtX2VudHJpZXM7CisgICAgSGlzdG9yeUl0
ZW1IYXNoU2V0IG1fZW50cnlIYXNoOworICAgIHVuc2lnbmVkIG1fY3VycmVudDsKKyAgICB1bnNp
Z25lZCBtX2NhcGFjaXR5OworICAgIGJvb2wgbV9jbG9zZWQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuaAppbmRleCAwMjU0Zjg1OWIy
ZWYyNzU1MWIzZmFhYzBiM2M4YjMzNjNiNjBhZGU5Li45ZGU2OGIzOWRmMGZiNmUxMjUzZDk4YWY4
NDE1ZDg2Y2RjNmYwMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9y
d2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuaApA
QCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJCYWNr
Rm9yd2FyZExpc3RfSAotI2RlZmluZSBXZWJCYWNrRm9yd2FyZExpc3RfSAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJXZWJLaXQuaCIKIApAQCAtMzMsMTYgKzMyLDE0IEBACiAjaW5jbHVkZSA8
V1RGL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDxXVEYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7Ci19CitjbGFzcyBCYWNrRm9yd2Fy
ZExpc3Q7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdCA6IHB1YmxpYyBJV2ViQmFja0Zvcndh
cmRMaXN0LCBJV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZQogewogcHVibGljOgotICAgIHN0YXRp
YyBXZWJCYWNrRm9yd2FyZExpc3QqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0Pik7CisgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdCogY3JlYXRl
SW5zdGFuY2UoUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+KTsKIHByb3RlY3RlZDoKLSAgICBX
ZWJCYWNrRm9yd2FyZExpc3QoUGFzc1JlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q+KTsK
KyAgICBXZWJCYWNrRm9yd2FyZExpc3QoUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+KTsKICAg
ICB+V2ViQmFja0ZvcndhcmRMaXN0KCk7CiAKIHB1YmxpYzoKQEAgLTczLDcgKzcwLDUgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKKyAgICBSZWZQ
dHI8QmFja0ZvcndhcmRMaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKIH07Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAppbmRleCAzZGE0ZWYwZWRmMDk5YzNiMDgyNzYxMTllYWJmODBkMDgzYWE3
ZTNkLi5jMTBjMmRjOGQ2NDA4MzI2ODBjYzliOWI3Mjg2ZDZjNzdkYmY2YjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCi0j
aW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRM
aXN0LmgiCiAjaW5jbHVkZSAiQ09NVmFyaWFudFNldHRlci5oIgogI2luY2x1ZGUgIkRPTUNvcmVD
bGFzc2VzLmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgpAQCAtODQs
NyArODQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3
YXJkQ29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CkBAIC0zMDk5LDYgKzMwOTgsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtZSwgX0luXyBCU1RSIGZy
YW1lTmFtZSwgX0luXyBCU1RSIGdyb3VwTgogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdl
Ykluc3BlY3RvckNsaWVudCh0aGlzKTsKIAogICAgIFBhZ2VDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24obWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHRoaXMpLCBTb2NrZXRQcm92aWRl
cjo6Y3JlYXRlKCkpOworICAgIGNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRMaXN0ID0gQmFja0Zv
cndhcmRMaXN0OjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5l
dyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNs
aWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKICAgICBjb25maWd1cmF0aW9u
LmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKQEAgLTM0MzAsNyArMzQzMCw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6YmFja0ZvcndhcmRMaXN0KF9DT01fT3V0cHRyX29wdF8gSVdl
YkJhY2tGb3J3YXJkTGlzdCoqIGxpc3QpCiAgICAgaWYgKCFtX3VzZUJhY2tGb3J3YXJkTGlzdCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAKLSAgICAqbGlzdCA9IFdlYkJhY2tGb3J3YXJkTGlz
dDo6Y3JlYXRlSW5zdGFuY2Uoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Kj4o
bV9wYWdlLT5iYWNrRm9yd2FyZCgpLmNsaWVudCgpKSk7CisgICAgKmxpc3QgPSBXZWJCYWNrRm9y
d2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKHN0YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdCo+KG1f
cGFnZS0+YmFja0ZvcndhcmQoKS5jbGllbnQoKSkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291411</attachid>
            <date>2016-10-12 15:55:15 -0700</date>
            <delta_ts>2016-10-12 16:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163360-20161012155151.patch</filename>
            <type>text/plain</type>
            <size>17111</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZjRlNWYwZjY1NDE1NTZm
MTU3ODM1MWRlZjcxMDJmMTFhYWU4ZGYuLjAxNWNjOTFiNmFiMzg2MzhlNTEwY2UxODk1MzdkOGJi
NWI4ZDY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5IEJhY2tGb3J3YXJk
TGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGdl
dHRpbmcgcmlkIG9mIEJhY2tGb3J3YXJkTGlzdCBpbiBXZWJDb3JlLgorCisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTYtMTAtMTEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxNDNlOTA1MThiNzZi
NjNhZjI2YWNhMTU5ODhiYzBlM2ViMjk2ZTY5Li5hNmU1ODkyYTYwYmY2OTRhZDhkYWU1ZGJmY2Nh
ZjI1NTJkNzljOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5
IEJhY2tGb3J3YXJkTGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBsb2NhbCBCYWNrRm9y
d2FyZExpc3QgY2xhc3MgaW5zdGVhZCBvZiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QuCisKKyAg
ICAgICAgKiBCYWNrRm9yd2FyZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBCYWNrRm9yd2Fy
ZExpc3QuaDogQWRkZWQuCisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAg
ICAgKFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCk6CisKIDIwMTYtMTAtMTIgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjIwNzIxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGExNDc5NjU2
YjQ5YTljY2M1NDdlYTk3NzZmNzVkNDBkMDQ2MWQyYTIuLjcwNzkxNTIxMmNkMjIxMzAyNDQ0MmQx
MWEyM2RmMTVlZGMxNjEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTQ0LDYgKzE0
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTX0NsYXNzZXMKICAgICB3aW4vQWNjZXNz
aWJsZURvY3VtZW50LmNwcAogICAgIHdpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCiAgICAgd2luL0Fj
Y2Vzc2libGVUZXh0SW1wbC5jcHAKKyAgICB3aW4vQmFja0ZvcndhcmRMaXN0LmNwcAogICAgIHdp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKICAgICB3aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAK
ICAgICB3aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YjRmMjA0NGY2NjNlYzZlNzFjYmViZTQ4MTgyYzU0YjE0ZDA2NzFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0LmNw
cApAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiV2ViS2l0RExMLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorCitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVu
dEl0ZW1JbmRleCA9IFVJTlRfTUFYOworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQmFj
a0ZvcndhcmRMaXN0OjpCYWNrRm9yd2FyZExpc3QoKQorICAgIDogbV9jdXJyZW50KE5vQ3VycmVu
dEl0ZW1JbmRleCkKKyAgICAsIG1fY2FwYWNpdHkoRGVmYXVsdENhcGFjaXR5KQorICAgICwgbV9j
bG9zZWQodHJ1ZSkKKyAgICAsIG1fZW5hYmxlZCh0cnVlKQoreworfQorCitCYWNrRm9yd2FyZExp
c3Q6On5CYWNrRm9yd2FyZExpc3QoKQoreworICAgIEFTU0VSVChtX2Nsb3NlZCk7Cit9CisKK3Zv
aWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBuZXdJdGVtKQor
eworICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9yd2FyZCBsaXN0ICAgIAorICAgIGlm
IChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIHRh
cmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOworICAgICAgICB3aGlsZSAobV9lbnRyaWVzLnNpemUo
KSA+IHRhcmdldFNpemUpIHsKKyAgICAgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1f
ZW50cmllcy50YWtlTGFzdCgpOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0u
cHRyKCkpOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBs
aXN0IGlzIGdldHRpbmcgdG9vIGJpZywgYXMgbG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQKKyAg
ICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5KS4KKyAgICBp
ZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtX2NhcGFjaXR5ICYmIChtX2N1cnJlbnQgfHwgbV9jYXBh
Y2l0eSA9PSAxKSkgeworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBXVEZNb3ZlKG1f
ZW50cmllc1swXSk7CisgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7CisgICAgICAgIG1fZW50
cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmUoaXRlbSk7CisgICAgICAgIC0tbV9jdXJyZW50OworICAgIH0KKworICAgIG1fZW50
cnlIYXNoLmFkZChuZXdJdGVtLnB0cigpKTsKKyAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVu
dCArIDEsIFdURk1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OworfQorCit2b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50ID4gMCk7Cisg
ICAgaWYgKG1fY3VycmVudCA+IDApIHsKKyAgICAgICAgbV9jdXJyZW50LS07CisgICAgfQorfQor
Cit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Gb3J3YXJkKCkKK3sKKyAgICBBU1NFUlQobV9jdXJy
ZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpOworICAgIGlmIChtX2N1cnJlbnQgPCBtX2VudHJp
ZXMuc2l6ZSgpIC0gMSkgeworICAgICAgICBtX2N1cnJlbnQrKzsKKyAgICB9Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBpZiAo
IW1fZW50cmllcy5zaXplKCkgfHwgIWl0ZW0pCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKDsgaW5kZXggPCBtX2VudHJpZXMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBpZiAobV9lbnRyaWVzW2luZGV4XS5wdHIoKSA9PSBp
dGVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KSkgeworICAgICAgICBtX2N1cnJlbnQgPSBpbmRleDsKKyAgICB9Cit9CisKK0hpc3RvcnlJdGVt
KiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50ICYmIG1f
Y3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNb
bV9jdXJyZW50IC0gMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0hpc3RvcnlJ
dGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50
ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJl
bnRdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitIaXN0b3J5SXRlbSogQmFja0Zv
cndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCit7CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYg
bV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpCisgICAgICAgIHJldHVybiBtX2VudHJp
ZXNbbV9jdXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVt
VmVjdG9yJiBsaXN0KQoreworICAgIGxpc3QuY2xlYXIoKTsKKyAgICBpZiAobV9jdXJyZW50ICE9
IE5vQ3VycmVudEl0ZW1JbmRleCkgeworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKKyAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQorICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XS5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6
Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkK
K3sKKyAgICBBU1NFUlQobGltaXQgPiAtMSk7CisgICAgbGlzdC5jbGVhcigpOworICAgIGlmICgh
bV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICB1bnNpZ25l
ZCBsYXN0RW50cnkgPSBtX2VudHJpZXMuc2l6ZSgpIC0gMTsKKyAgICBpZiAobV9jdXJyZW50IDwg
bGFzdEVudHJ5KSB7CisgICAgICAgIGludCBsYXN0ID0gc3RkOjptaW4obV9jdXJyZW50ICsgbGlt
aXQsIGxhc3RFbnRyeSk7CisgICAgICAgIGxpbWl0ID0gbV9jdXJyZW50ICsgMTsKKyAgICAgICAg
Zm9yICg7IGxpbWl0IDw9IGxhc3Q7ICsrbGltaXQpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCht
X2VudHJpZXNbbGltaXRdLmdldCgpKTsKKyAgICB9Cit9CisKK2ludCBCYWNrRm9yd2FyZExpc3Q6
OmNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbV9jYXBhY2l0eTsKK30KKwordm9pZCBCYWNrRm9y
d2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaXplKQoreyAgICAKKyAgICB3aGlsZSAoc2l6ZSA8
IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAgICAgUmVmPEhpc3Rv
cnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7CisgICAgICAgIG1fZW50cnlIYXNo
LnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1v
dmUoaXRlbSk7CisgICAgfQorCisgICAgaWYgKCFzaXplKQorICAgICAgICBtX2N1cnJlbnQgPSBO
b0N1cnJlbnRJdGVtSW5kZXg7CisgICAgZWxzZSBpZiAobV9jdXJyZW50ID4gbV9lbnRyaWVzLnNp
emUoKSAtIDEpIHsKKyAgICAgICAgbV9jdXJyZW50ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7Cisg
ICAgfQorICAgIG1fY2FwYWNpdHkgPSBzaXplOworfQorCitib29sIEJhY2tGb3J3YXJkTGlzdDo6
ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fZW5hYmxlZDsKK30KKwordm9pZCBCYWNrRm9yd2Fy
ZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fZW5hYmxlZCA9IGVuYWJs
ZWQ7CisgICAgaWYgKCFlbmFibGVkKSB7CisgICAgICAgIGludCBjYXBhY2l0eSA9IG1fY2FwYWNp
dHk7CisgICAgICAgIHNldENhcGFjaXR5KDApOworICAgICAgICBzZXRDYXBhY2l0eShjYXBhY2l0
eSk7CisgICAgfQorfQorCitpbnQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkKK3sK
KyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBtX2N1cnJl
bnQ7Cit9CisKK2ludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQoreworICAg
IHJldHVybiBtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IChpbnQpbV9lbnRy
aWVzLnNpemUoKSAtIChtX2N1cnJlbnQgKyAxKTsKK30KKworSGlzdG9yeUl0ZW0qIEJhY2tGb3J3
YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQoreworICAgIC8vIERvIHJhbmdlIGNoZWNr
cyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCisgICAgaWYg
KGluZGV4IDwgLXN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgCisgICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgCisgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCAr
IG1fY3VycmVudF0ucHRyKCk7Cit9CisKK0hpc3RvcnlJdGVtVmVjdG9yJiBCYWNrRm9yd2FyZExp
c3Q6OmVudHJpZXMoKQoreworICAgIHJldHVybiBtX2VudHJpZXM7Cit9CisKKyNpZiBQTEFURk9S
TShJT1MpCit1bnNpZ25lZCBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnQoKQoreworICAgIHJldHVy
biBtX2N1cnJlbnQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDdXJyZW50KHVuc2ln
bmVkIG5ld0N1cnJlbnQpCit7CisgICAgbV9jdXJyZW50ID0gbmV3Q3VycmVudDsKK30KKworYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCit7CisgICAgYm9vbCBkaWRS
ZW1vdmVBdExlYXN0T25lSXRlbSA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50
cmllcykgeworICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CisgICAgICAgICAg
ICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7CisgICAgICAgICAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
ZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW07Cit9CisjZW5kaWYKKwordm9pZCBCYWNrRm9yd2FyZExp
c3Q6OmNsb3NlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCisgICAgICAg
IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgIG1fZW50cmllcy5jbGVh
cigpOworICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CisgICAgbV9jbG9zZWQgPSB0cnVlOworfQor
Citib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2VkKCkKK3sKKyAgICByZXR1cm4gbV9jbG9zZWQ7
Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KQoreworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
ZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CisgICAgICAgICAgICBtX2VudHJpZXMucmVtb3Zl
KGkpOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOworICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggfHwgbV9jdXJyZW50IDwgaSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPiBpKQorICAg
ICAgICAgICAgICAgIG1fY3VycmVudC0tOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgc2l6ZV90IGNvdW50ID0gbV9lbnRyaWVzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9jdXJyZW50ID49IGNvdW50KQorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBj
b3VudCA/IGNvdW50IC0gMSA6IE5vQ3VycmVudEl0ZW1JbmRleDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEJhY2tGb3J3YXJk
TGlzdDo6Y29udGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKK3sKKyAgICByZXR1cm4gbV9l
bnRyeUhhc2guY29udGFpbnMoZW50cnkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9CYWNrRm9yd2FyZExpc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYzE5ZTgwMDY4ZTZiYTAzM2I3ZWNkZjU4OTQ5YTM3NjA3NDRmYTJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0LmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIFZlY3RvcjxS
ZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CisK
K2NsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1YmxpYyBXZWJDb3JlOjpCYWNrRm9yd2FyZENsaWVu
dCB7CitwdWJsaWM6IAorICAgIHN0YXRpYyBSZWY8QmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tGb3J3YXJkTGlzdCgpKTsgfQorICAgIHZpcnR1YWwg
fkJhY2tGb3J3YXJkTGlzdCgpOworCisgICAgdm9pZCBhZGRJdGVtKFJlZjxXZWJDb3JlOjpIaXN0
b3J5SXRlbT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBnb0JhY2soKTsKKyAgICB2b2lkIGdvRm9y
d2FyZCgpOworICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlk
ZTsKKyAgICAgICAgCisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7CisgICAg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGZvcndhcmRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1BdElu
ZGV4KGludCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgSGlz
dG9yeUl0ZW1WZWN0b3ImKTsKKyAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0KGludCwgSGlz
dG9yeUl0ZW1WZWN0b3ImKTsKKworICAgIGludCBjYXBhY2l0eSgpOworICAgIHZvaWQgc2V0Q2Fw
YWNpdHkoaW50KTsKKyAgICBib29sIGVuYWJsZWQoKTsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCk7CisgICAgaW50IGJhY2tMaXN0Q291bnQoKSBvdmVycmlkZTsKKyAgICBpbnQgZm9yd2FyZExp
c3RDb3VudCgpIG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKik7CisKKyAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjbG9zZWQo
KTsKKworICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOworICAgIEhp
c3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQmFj
a0ZvcndhcmRMaXN0KCk7CisKKyAgICBIaXN0b3J5SXRlbVZlY3RvciBtX2VudHJpZXM7CisgICAg
SGlzdG9yeUl0ZW1IYXNoU2V0IG1fZW50cnlIYXNoOworICAgIHVuc2lnbmVkIG1fY3VycmVudDsK
KyAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OworICAgIGJvb2wgbV9jbG9zZWQ7CisgICAgYm9vbCBt
X2VuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5k
ZXggZGRkYjQ0Y2E3YjQ2ZDU3N2Q2ZTY1MWVlNjJiZjM3YzFjZjBkNjM2Yi4uMWMxZDNhMDI4OTQ3
NTlmZDljYTY1NWFlZjc5ZTA5NmJjZmYyODMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNr
Rm9yd2FyZExpc3QuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJXZWJLaXRETEwu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKIAorI2luY2x1ZGUgIkJhY2tGb3J3
YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvQmFja0Zvcndh
cmRMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5k
ZXggMDI1NGY4NTliMmVmMjc1NTFiM2ZhYWMwYjNjOGIzMzYzYjYwYWRlOS4uOWRlNjhiMzlkZjBm
YjZlMTI1M2Q5OGFmODQxNWQ4NmNkYzZmMDMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0Zv
cndhcmRMaXN0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgV2ViQmFja0ZvcndhcmRMaXN0X0gKLSNkZWZpbmUgV2ViQmFja0ZvcndhcmRMaXN0X0gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKQEAgLTMzLDE2ICszMiwxNCBA
QAogI2luY2x1ZGUgPFdURi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8V1RGL1JlZlB0ci5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQmFja0ZvcndhcmRMaXN0OwotfQorY2xh
c3MgQmFja0ZvcndhcmRMaXN0OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMg
SVdlYkJhY2tGb3J3YXJkTGlzdCwgSVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUKIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVm
UHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4pOworICAgIHN0YXRpYyBXZWJCYWNrRm9yd2Fy
ZExpc3QqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0Pik7CiBwcm90
ZWN0ZWQ6Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0KFBhc3NSZWZQdHI8V2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0Pik7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0KFBhc3NSZWZQdHI8QmFja0Zvcndh
cmRMaXN0Pik7CiAgICAgfldlYkJhY2tGb3J3YXJkTGlzdCgpOwogCiBwdWJsaWM6CkBAIC03Myw3
ICs3MCw1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAw
IH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExp
c3Q7CisgICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiB9Owot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggM2RhNGVmMGVkZjA5OWMzYjA4Mjc2MTE5
ZWFiZjgwZDA4M2FhN2UzZC4uYzEwYzJkYzhkNjQwODMyNjgwY2M5YjliNzI4NmQ2Yzc3ZGJmNmIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIldl
YlZpZXcuaCIKIAotI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
IkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIuaCIKICNpbmNs
dWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuaCIKQEAgLTg0LDcgKzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3
YXJkTGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgpAQCAtMzA5
OSw2ICszMDk4LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbWUs
IF9Jbl8gQlNUUiBmcmFtZU5hbWUsIF9Jbl8gQlNUUiBncm91cE4KICAgICBtX2luc3BlY3RvckNs
aWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKICAgICBQYWdlQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKSwg
U29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpKTsKKyAgICBjb25maWd1cmF0aW9uLmJhY2tGb3J3YXJk
TGlzdCA9IEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKCk7CiAgICAgY29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwogICAgIGNvbmZpZ3VyYXRpb24u
Y29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQodGhpcyk7CiAgICAg
Y29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CkBAIC0z
NDMwLDcgKzM0MzAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdChfQ09NX091
dHB0cl9vcHRfIElXZWJCYWNrRm9yd2FyZExpc3QqKiBsaXN0KQogICAgIGlmICghbV91c2VCYWNr
Rm9yd2FyZExpc3QpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgCi0gICAgKmxpc3QgPSBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdCo+KG1fcGFnZS0+YmFja0ZvcndhcmQoKS5jbGllbnQoKSkpOworICAgICpsaXN0
ID0gV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShzdGF0aWNfY2FzdDxCYWNrRm9y
d2FyZExpc3QqPihtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpKTsKIAogICAgIHJldHVy
biBTX09LOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291425</attachid>
            <date>2016-10-12 16:58:26 -0700</date>
            <delta_ts>2016-10-13 12:28:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163360-20161012165501.patch</filename>
            <type>text/plain</type>
            <size>17117</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZjRlNWYwZjY1NDE1NTZm
MTU3ODM1MWRlZjcxMDJmMTFhYWU4ZGYuLjAxNWNjOTFiNmFiMzg2MzhlNTEwY2UxODk1MzdkOGJi
NWI4ZDY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5IEJhY2tGb3J3YXJk
TGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGdl
dHRpbmcgcmlkIG9mIEJhY2tGb3J3YXJkTGlzdCBpbiBXZWJDb3JlLgorCisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTYtMTAtMTEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxNDNlOTA1MThiNzZi
NjNhZjI2YWNhMTU5ODhiYzBlM2ViMjk2ZTY5Li5hNmU1ODkyYTYwYmY2OTRhZDhkYWU1ZGJmY2Nh
ZjI1NTJkNzljOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5
IEJhY2tGb3J3YXJkTGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBsb2NhbCBCYWNrRm9y
d2FyZExpc3QgY2xhc3MgaW5zdGVhZCBvZiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QuCisKKyAg
ICAgICAgKiBCYWNrRm9yd2FyZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBCYWNrRm9yd2Fy
ZExpc3QuaDogQWRkZWQuCisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAg
ICAgKFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCk6CisKIDIwMTYtMTAtMTIgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjIwNzIxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGExNDc5NjU2
YjQ5YTljY2M1NDdlYTk3NzZmNzVkNDBkMDQ2MWQyYTIuLjcwNzkxNTIxMmNkMjIxMzAyNDQ0MmQx
MWEyM2RmMTVlZGMxNjEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTQ0LDYgKzE0
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTX0NsYXNzZXMKICAgICB3aW4vQWNjZXNz
aWJsZURvY3VtZW50LmNwcAogICAgIHdpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCiAgICAgd2luL0Fj
Y2Vzc2libGVUZXh0SW1wbC5jcHAKKyAgICB3aW4vQmFja0ZvcndhcmRMaXN0LmNwcAogICAgIHdp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKICAgICB3aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAK
ICAgICB3aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZWVjZDQwNGRlMGUxNDg0OTg5MDMxNGE0OWZkYjNkOGE0YzNjOGYw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0LmNw
cApAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiV2ViS2l0RExMLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorCitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVu
dEl0ZW1JbmRleCA9IFVJTlRfTUFYOworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQmFj
a0ZvcndhcmRMaXN0OjpCYWNrRm9yd2FyZExpc3QoKQorICAgIDogbV9jdXJyZW50KE5vQ3VycmVu
dEl0ZW1JbmRleCkKKyAgICAsIG1fY2FwYWNpdHkoRGVmYXVsdENhcGFjaXR5KQorICAgICwgbV9j
bG9zZWQodHJ1ZSkKKyAgICAsIG1fZW5hYmxlZCh0cnVlKQoreworfQorCitCYWNrRm9yd2FyZExp
c3Q6On5CYWNrRm9yd2FyZExpc3QoKQoreworICAgIEFTU0VSVChtX2Nsb3NlZCk7Cit9CisKK3Zv
aWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBuZXdJdGVtKQor
eworICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9yd2FyZCBsaXN0ICAgIAorICAgIGlm
IChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIHRh
cmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOworICAgICAgICB3aGlsZSAobV9lbnRyaWVzLnNpemUo
KSA+IHRhcmdldFNpemUpIHsKKyAgICAgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1f
ZW50cmllcy50YWtlTGFzdCgpOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0u
cHRyKCkpOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBs
aXN0IGlzIGdldHRpbmcgdG9vIGJpZywgYXMgbG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQKKyAg
ICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5KS4KKyAgICBp
ZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtX2NhcGFjaXR5ICYmIChtX2N1cnJlbnQgfHwgbV9jYXBh
Y2l0eSA9PSAxKSkgeworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBXVEZNb3ZlKG1f
ZW50cmllc1swXSk7CisgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7CisgICAgICAgIG1fZW50
cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmUoaXRlbSk7CisgICAgICAgIC0tbV9jdXJyZW50OworICAgIH0KKworICAgIG1fZW50
cnlIYXNoLmFkZChuZXdJdGVtLnB0cigpKTsKKyAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVu
dCArIDEsIFdURk1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OworfQorCit2b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50ID4gMCk7Cisg
ICAgaWYgKG1fY3VycmVudCA+IDApIHsKKyAgICAgICAgbV9jdXJyZW50LS07CisgICAgfQorfQor
Cit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Gb3J3YXJkKCkKK3sKKyAgICBBU1NFUlQobV9jdXJy
ZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpOworICAgIGlmIChtX2N1cnJlbnQgPCBtX2VudHJp
ZXMuc2l6ZSgpIC0gMSkgeworICAgICAgICBtX2N1cnJlbnQrKzsKKyAgICB9Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBpZiAo
IW1fZW50cmllcy5zaXplKCkgfHwgIWl0ZW0pCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKDsgaW5kZXggPCBtX2VudHJpZXMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBpZiAobV9lbnRyaWVzW2luZGV4XS5wdHIoKSA9PSBp
dGVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KSkgeworICAgICAgICBtX2N1cnJlbnQgPSBpbmRleDsKKyAgICB9Cit9CisKK0hpc3RvcnlJdGVt
KiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50ICYmIG1f
Y3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNb
bV9jdXJyZW50IC0gMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0hpc3RvcnlJ
dGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50
ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJl
bnRdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitIaXN0b3J5SXRlbSogQmFja0Zv
cndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCit7CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYg
bV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpCisgICAgICAgIHJldHVybiBtX2VudHJp
ZXNbbV9jdXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIDo6SGlzdG9yeUl0
ZW1WZWN0b3ImIGxpc3QpCit7CisgICAgbGlzdC5jbGVhcigpOworICAgIGlmIChtX2N1cnJlbnQg
IT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0ID0gc3RkOjpt
YXgoc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpIC0gbGltaXQsIDApOworICAgICAgICBmb3Ig
KDsgZmlyc3QgPCBtX2N1cnJlbnQ7ICsrZmlyc3QpCisgICAgICAgICAgICBsaXN0LmFwcGVuZCht
X2VudHJpZXNbZmlyc3RdLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0
Ojpmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIDo6SGlzdG9yeUl0ZW1WZWN0b3ImIGxp
c3QpCit7CisgICAgQVNTRVJUKGxpbWl0ID4gLTEpOworICAgIGxpc3QuY2xlYXIoKTsKKyAgICBp
ZiAoIW1fZW50cmllcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgdW5z
aWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7CisgICAgaWYgKG1fY3VycmVu
dCA8IGxhc3RFbnRyeSkgeworICAgICAgICBpbnQgbGFzdCA9IHN0ZDo6bWluKG1fY3VycmVudCAr
IGxpbWl0LCBsYXN0RW50cnkpOworICAgICAgICBsaW1pdCA9IG1fY3VycmVudCArIDE7CisgICAg
ICAgIGZvciAoOyBsaW1pdCA8PSBsYXN0OyArK2xpbWl0KQorICAgICAgICAgICAgbGlzdC5hcHBl
bmQobV9lbnRyaWVzW2xpbWl0XS5nZXQoKSk7CisgICAgfQorfQorCitpbnQgQmFja0ZvcndhcmRM
aXN0OjpjYXBhY2l0eSgpCit7CisgICAgcmV0dXJuIG1fY2FwYWNpdHk7Cit9CisKK3ZvaWQgQmFj
a0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKK3sgICAgCisgICAgd2hpbGUgKHNp
emUgPCBzdGF0aWNfY2FzdDxpbnQ+KG1fZW50cmllcy5zaXplKCkpKSB7CisgICAgICAgIFJlZjxI
aXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy50YWtlTGFzdCgpOworICAgICAgICBtX2VudHJ5
SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCku
cmVtb3ZlKGl0ZW0pOworICAgIH0KKworICAgIGlmICghc2l6ZSkKKyAgICAgICAgbV9jdXJyZW50
ID0gTm9DdXJyZW50SXRlbUluZGV4OworICAgIGVsc2UgaWYgKG1fY3VycmVudCA+IG1fZW50cmll
cy5zaXplKCkgLSAxKSB7CisgICAgICAgIG1fY3VycmVudCA9IG1fZW50cmllcy5zaXplKCkgLSAx
OworICAgIH0KKyAgICBtX2NhcGFjaXR5ID0gc2l6ZTsKK30KKworYm9vbCBCYWNrRm9yd2FyZExp
c3Q6OmVuYWJsZWQoKQoreworICAgIHJldHVybiBtX2VuYWJsZWQ7Cit9CisKK3ZvaWQgQmFja0Zv
cndhcmRMaXN0OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2VuYWJsZWQgPSBl
bmFibGVkOworICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICBpbnQgY2FwYWNpdHkgPSBtX2Nh
cGFjaXR5OworICAgICAgICBzZXRDYXBhY2l0eSgwKTsKKyAgICAgICAgc2V0Q2FwYWNpdHkoY2Fw
YWNpdHkpOworICAgIH0KK30KKworaW50IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgp
Cit7CisgICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggPyAwIDogbV9j
dXJyZW50OworfQorCitpbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkKK3sK
KyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiAoaW50KW1f
ZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7Cit9CisKK0hpc3RvcnlJdGVtKiBCYWNr
Rm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKK3sKKyAgICAvLyBEbyByYW5nZSBj
aGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJmbG93LgorICAg
IGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIAorICAgIGlmIChpbmRleCA+IGZvcndhcmRMaXN0Q291bnQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIAorICAgIHJldHVybiBtX2VudHJpZXNbaW5k
ZXggKyBtX2N1cnJlbnRdLnB0cigpOworfQorCis6Okhpc3RvcnlJdGVtVmVjdG9yJiBCYWNrRm9y
d2FyZExpc3Q6OmVudHJpZXMoKQoreworICAgIHJldHVybiBtX2VudHJpZXM7Cit9CisKKyNpZiBQ
TEFURk9STShJT1MpCit1bnNpZ25lZCBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnQoKQoreworICAg
IHJldHVybiBtX2N1cnJlbnQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDdXJyZW50
KHVuc2lnbmVkIG5ld0N1cnJlbnQpCit7CisgICAgbV9jdXJyZW50ID0gbmV3Q3VycmVudDsKK30K
KworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCit7CisgICAgYm9v
bCBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaXRlbSA6
IG1fZW50cmllcykgeworICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CisgICAg
ICAgICAgICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7CisgICAgICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW07Cit9CisjZW5kaWYKKwordm9pZCBCYWNrRm9y
d2FyZExpc3Q6OmNsb3NlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCisg
ICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgIG1fZW50cmll
cy5jbGVhcigpOworICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CisgICAgbV9jbG9zZWQgPSB0cnVl
OworfQorCitib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2VkKCkKK3sKKyAgICByZXR1cm4gbV9j
bG9zZWQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVt
KiBpdGVtKQoreworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKG1fZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CisgICAgICAgICAgICBtX2VudHJpZXMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOworICAgICAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggfHwgbV9jdXJyZW50IDwg
aSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPiBp
KQorICAgICAgICAgICAgICAgIG1fY3VycmVudC0tOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gbV9lbnRyaWVzLnNpemUoKTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9jdXJyZW50ID49IGNvdW50KQorICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnQgPSBjb3VudCA/IGNvdW50IC0gMSA6IE5vQ3VycmVudEl0ZW1JbmRleDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEJhY2tG
b3J3YXJkTGlzdDo6Y29udGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKK3sKKyAgICByZXR1
cm4gbV9lbnRyeUhhc2guY29udGFpbnMoZW50cnkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9CYWNrRm9yd2Fy
ZExpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYzE5ZTgwMDY4ZTZiYTAzM2I3ZWNkZjU4OTQ5YTM3NjA3NDRm
YTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vQmFja0ZvcndhcmRMaXN0
LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIFZl
Y3RvcjxSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbUhhc2hT
ZXQ7CisKK2NsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1YmxpYyBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZENsaWVudCB7CitwdWJsaWM6IAorICAgIHN0YXRpYyBSZWY8QmFja0ZvcndhcmRMaXN0PiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tGb3J3YXJkTGlzdCgpKTsgfQorICAgIHZp
cnR1YWwgfkJhY2tGb3J3YXJkTGlzdCgpOworCisgICAgdm9pZCBhZGRJdGVtKFJlZjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBnb0JhY2soKTsKKyAgICB2b2lk
IGdvRm9yd2FyZCgpOworICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBv
dmVycmlkZTsKKyAgICAgICAgCisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7
CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0
ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGlu
dCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsKKyAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0KGlu
dCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsKKworICAgIGludCBjYXBhY2l0eSgpOworICAgIHZvaWQg
c2V0Q2FwYWNpdHkoaW50KTsKKyAgICBib29sIGVuYWJsZWQoKTsKKyAgICB2b2lkIHNldEVuYWJs
ZWQoYm9vbCk7CisgICAgaW50IGJhY2tMaXN0Q291bnQoKSBvdmVycmlkZTsKKyAgICBpbnQgZm9y
d2FyZExpc3RDb3VudCgpIG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNJdGVtKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKik7CisKKyAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBj
bG9zZWQoKTsKKworICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwor
ICAgIEhpc3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgQmFja0ZvcndhcmRMaXN0KCk7CisKKyAgICBIaXN0b3J5SXRlbVZlY3RvciBtX2VudHJpZXM7
CisgICAgSGlzdG9yeUl0ZW1IYXNoU2V0IG1fZW50cnlIYXNoOworICAgIHVuc2lnbmVkIG1fY3Vy
cmVudDsKKyAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OworICAgIGJvb2wgbV9jbG9zZWQ7CisgICAg
Ym9vbCBtX2VuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKaW5kZXggZGRkYjQ0Y2E3YjQ2ZDU3N2Q2ZTY1MWVlNjJiZjM3YzFjZjBkNjM2Yi4uMWMxZDNh
MDI4OTQ3NTlmZDljYTY1NWFlZjc5ZTA5NmJjZmYyODMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJXZWJL
aXRETEwuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKIAorI2luY2x1ZGUgIkJh
Y2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViS2l0
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvQmFj
a0ZvcndhcmRMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0
LmgKaW5kZXggMDI1NGY4NTliMmVmMjc1NTFiM2ZhYWMwYjNjOGIzMzYzYjYwYWRlOS4uOWRlNjhi
MzlkZjBmYjZlMTI1M2Q5OGFmODQxNWQ4NmNkYzZmMDMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
QmFja0ZvcndhcmRMaXN0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgV2ViQmFja0ZvcndhcmRMaXN0X0gKLSNkZWZpbmUgV2ViQmFja0ZvcndhcmRM
aXN0X0gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKQEAgLTMzLDE2ICsz
MiwxNCBAQAogI2luY2x1ZGUgPFdURi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8V1RGL1JlZlB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQmFja0ZvcndhcmRMaXN0Owot
fQorY2xhc3MgQmFja0ZvcndhcmRMaXN0OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBw
dWJsaWMgSVdlYkJhY2tGb3J3YXJkTGlzdCwgSVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUKIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4pOworICAgIHN0YXRpYyBXZWJCYWNr
Rm9yd2FyZExpc3QqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0Pik7
CiBwcm90ZWN0ZWQ6Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0KFBhc3NSZWZQdHI8V2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0Pik7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0KFBhc3NSZWZQdHI8QmFj
a0ZvcndhcmRMaXN0Pik7CiAgICAgfldlYkJhY2tGb3J3YXJkTGlzdCgpOwogCiBwdWJsaWM6CkBA
IC03Myw3ICs3MCw1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291
bnQgeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9y
d2FyZExpc3Q7CisgICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7
CiB9OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggM2RhNGVmMGVkZjA5OWMzYjA4
Mjc2MTE5ZWFiZjgwZDA4M2FhN2UzZC4uYzEwYzJkYzhkNjQwODMyNjgwY2M5YjliNzI4NmQ2Yzc3
ZGJmNmIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIldlYlZpZXcuaCIKIAotI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIuaCIK
ICNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaCIKQEAgLTg0LDcgKzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Jh
Y2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgpA
QCAtMzA5OSw2ICszMDk4LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1Qg
ZnJhbWUsIF9Jbl8gQlNUUiBmcmFtZU5hbWUsIF9Jbl8gQlNUUiBncm91cE4KICAgICBtX2luc3Bl
Y3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKICAgICBQYWdlQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0
aGlzKSwgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpKTsKKyAgICBjb25maWd1cmF0aW9uLmJhY2tG
b3J3YXJkTGlzdCA9IEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKCk7CiAgICAgY29uZmlndXJhdGlv
bi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwogICAgIGNvbmZpZ3Vy
YXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQodGhpcyk7
CiAgICAgY29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7
CkBAIC0zNDMwLDcgKzM0MzAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdChf
Q09NX091dHB0cl9vcHRfIElXZWJCYWNrRm9yd2FyZExpc3QqKiBsaXN0KQogICAgIGlmICghbV91
c2VCYWNrRm9yd2FyZExpc3QpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgCi0gICAgKmxpc3Qg
PSBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKHN0YXRpY19jYXN0PFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdCo+KG1fcGFnZS0+YmFja0ZvcndhcmQoKS5jbGllbnQoKSkpOworICAg
ICpsaXN0ID0gV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShzdGF0aWNfY2FzdDxC
YWNrRm9yd2FyZExpc3QqPihtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpKTsKIAogICAg
IHJldHVybiBTX09LOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291505</attachid>
            <date>2016-10-13 12:28:09 -0700</date>
            <delta_ts>2016-10-13 12:56:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163360-20161013122447.patch</filename>
            <type>text/plain</type>
            <size>17133</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZjRlNWYwZjY1NDE1NTZm
MTU3ODM1MWRlZjcxMDJmMTFhYWU4ZGYuLjAxNWNjOTFiNmFiMzg2MzhlNTEwY2UxODk1MzdkOGJi
NWI4ZDY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5IEJhY2tGb3J3YXJk
TGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGdl
dHRpbmcgcmlkIG9mIEJhY2tGb3J3YXJkTGlzdCBpbiBXZWJDb3JlLgorCisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTYtMTAtMTEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBiOTM5YjcyNmU4OGQw
YTA1YjI0ZGFmMTk0ZTRiNzRlYTYyY2VmMmIwLi5jYmQyZGQwNjg5ZGMwZjQ3ZTRlZmFiOTQ3MzM3
MzFkODc0NTA5MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBDb3B5
IEJhY2tGb3J3YXJkTGlzdCBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0L3dpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBsb2NhbCBCYWNrRm9y
d2FyZExpc3QgY2xhc3MgaW5zdGVhZCBvZiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QuCisKKyAg
ICAgICAgKiBCYWNrRm9yd2FyZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBCYWNrRm9yd2Fy
ZExpc3QuaDogQWRkZWQuCisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAg
ICAgKFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCk6CisKIDIwMTYtMTAtMTMgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIHRoZSBIaXN0
b3J5SXRlbVZlY3RvciB0eXBlZGVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBhMTQ3OTY1
NmI0OWE5Y2NjNTQ3ZWE5Nzc2Zjc1ZDQwZDA0NjFkMmEyLi43MDc5MTUyMTJjZDIyMTMwMjQ0NDJk
MTFhMjNkZjE1ZWRjMTYxMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2lu
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTE0NCw2ICsx
NDQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFU19DbGFzc2VzCiAgICAgd2luL0FjY2Vz
c2libGVEb2N1bWVudC5jcHAKICAgICB3aW4vQWNjZXNzaWJsZUltYWdlLmNwcAogICAgIHdpbi9B
Y2Nlc3NpYmxlVGV4dEltcGwuY3BwCisgICAgd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAKICAgICB3
aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCiAgICAgd2luL0RPTUNTU0NsYXNzZXMuY3Bw
CiAgICAgd2luL0RPTUNvcmVDbGFzc2VzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0JhY2tGb3J3YXJkTGlz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTZmZGJiNDFjMDI1YTUyYzVmYmY3Mzg1OTA2MTcxZTBlYjUwNzRm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0JhY2tGb3J3YXJkTGlzdC5j
cHAKQEAgLTAsMCArMSwyOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBUb3Jj
aCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmls
ZS5jb20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgIldlYktpdERMTC5oIgorI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9IaXN0b3J5SXRlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKworc3RhdGljIGNvbnN0IHVuc2ln
bmVkIERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBOb0N1cnJl
bnRJdGVtSW5kZXggPSBVSU5UX01BWDsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0Jh
Y2tGb3J3YXJkTGlzdDo6QmFja0ZvcndhcmRMaXN0KCkKKyAgICA6IG1fY3VycmVudChOb0N1cnJl
bnRJdGVtSW5kZXgpCisgICAgLCBtX2NhcGFjaXR5KERlZmF1bHRDYXBhY2l0eSkKKyAgICAsIG1f
Y2xvc2VkKHRydWUpCisgICAgLCBtX2VuYWJsZWQodHJ1ZSkKK3sKK30KKworQmFja0ZvcndhcmRM
aXN0Ojp+QmFja0ZvcndhcmRMaXN0KCkKK3sKKyAgICBBU1NFUlQobV9jbG9zZWQpOworfQorCit2
b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgbmV3SXRlbSkK
K3sKKyAgICBpZiAoIW1fY2FwYWNpdHkgfHwgIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIC8vIFRvc3MgYW55dGhpbmcgaW4gdGhlIGZvcndhcmQgbGlzdCAgICAKKyAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkgeworICAgICAgICB1bnNpZ25lZCB0
YXJnZXRTaXplID0gbV9jdXJyZW50ICsgMTsKKyAgICAgICAgd2hpbGUgKG1fZW50cmllcy5zaXpl
KCkgPiB0YXJnZXRTaXplKSB7CisgICAgICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBt
X2VudHJpZXMudGFrZUxhc3QoKTsKKyAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVt
LnB0cigpKTsKKyAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0p
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVG9zcyB0aGUgZmlyc3QgaXRlbSBpZiB0aGUg
bGlzdCBpcyBnZXR0aW5nIHRvbyBiaWcsIGFzIGxvbmcgYXMgd2UncmUgbm90IHVzaW5nIGl0Cisg
ICAgLy8gKG9yIGV2ZW4gaWYgd2UgYXJlLCBpZiB3ZSBvbmx5IHdhbnQgMSBlbnRyeSkuCisgICAg
aWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9jdXJyZW50IHx8IG1fY2Fw
YWNpdHkgPT0gMSkpIHsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gV1RGTW92ZSht
X2VudHJpZXNbMF0pOworICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOworICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKKyAgICB9CisKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICArK21fY3VycmVudDsKK30KKwordm9pZCBC
YWNrRm9yd2FyZExpc3Q6OmdvQmFjaygpCit7CisgICAgQVNTRVJUKG1fY3VycmVudCA+IDApOwor
ICAgIGlmIChtX2N1cnJlbnQgPiAwKSB7CisgICAgICAgIG1fY3VycmVudC0tOworICAgIH0KK30K
Kwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvRm9yd2FyZCgpCit7CisgICAgQVNTRVJUKG1fY3Vy
cmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKTsKKyAgICBpZiAobV9jdXJyZW50IDwgbV9lbnRy
aWVzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgbV9jdXJyZW50Kys7CisgICAgfQorfQorCit2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit7CisgICAgaWYg
KCFtX2VudHJpZXMuc2l6ZSgpIHx8ICFpdGVtKQorICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CisgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0g
aXRlbSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXpl
KCkpIHsKKyAgICAgICAgbV9jdXJyZW50ID0gaW5kZXg7CisgICAgfQorfQorCitIaXN0b3J5SXRl
bSogQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpCit7CisgICAgaWYgKG1fY3VycmVudCAmJiBt
X2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQorICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudCAtIDFdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitIaXN0b3J5
SXRlbSogQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRlbSgpCit7CisgICAgaWYgKG1fY3VycmVu
dCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJy
ZW50XS5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQoreworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYm
IG1fY3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKQorICAgICAgICByZXR1cm4gbV9lbnRy
aWVzW21fY3VycmVudCArIDFdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIGxpc3QpCit7CisgICAgbGlzdC5jbGVhcigpOworICAgIGlmIChtX2N1
cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0ID0g
c3RkOjptYXgoc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpIC0gbGltaXQsIDApOworICAgICAg
ICBmb3IgKDsgZmlyc3QgPCBtX2N1cnJlbnQ7ICsrZmlyc3QpCisgICAgICAgICAgICBsaXN0LmFw
cGVuZChtX2VudHJpZXNbZmlyc3RdLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQmFja0Zvcndh
cmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIFZlY3RvcjxSZWY8SGlzdG9y
eUl0ZW0+PiYgbGlzdCkKK3sKKyAgICBBU1NFUlQobGltaXQgPiAtMSk7CisgICAgbGlzdC5jbGVh
cigpOworICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICB1bnNpZ25lZCBsYXN0RW50cnkgPSBtX2VudHJpZXMuc2l6ZSgpIC0gMTsKKyAgICBp
ZiAobV9jdXJyZW50IDwgbGFzdEVudHJ5KSB7CisgICAgICAgIGludCBsYXN0ID0gc3RkOjptaW4o
bV9jdXJyZW50ICsgbGltaXQsIGxhc3RFbnRyeSk7CisgICAgICAgIGxpbWl0ID0gbV9jdXJyZW50
ICsgMTsKKyAgICAgICAgZm9yICg7IGxpbWl0IDw9IGxhc3Q7ICsrbGltaXQpCisgICAgICAgICAg
ICBsaXN0LmFwcGVuZChtX2VudHJpZXNbbGltaXRdLmdldCgpKTsKKyAgICB9Cit9CisKK2ludCBC
YWNrRm9yd2FyZExpc3Q6OmNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbV9jYXBhY2l0eTsKK30K
Kwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaXplKQoreyAgICAKKyAg
ICB3aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAg
ICAgICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7CisgICAg
ICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7CisgICAgfQorCisgICAgaWYgKCFzaXplKQorICAgICAg
ICBtX2N1cnJlbnQgPSBOb0N1cnJlbnRJdGVtSW5kZXg7CisgICAgZWxzZSBpZiAobV9jdXJyZW50
ID4gbV9lbnRyaWVzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgbV9jdXJyZW50ID0gbV9lbnRyaWVz
LnNpemUoKSAtIDE7CisgICAgfQorICAgIG1fY2FwYWNpdHkgPSBzaXplOworfQorCitib29sIEJh
Y2tGb3J3YXJkTGlzdDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fZW5hYmxlZDsKK30KKwor
dm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFibGVkKSB7CisgICAgICAgIGludCBjYXBh
Y2l0eSA9IG1fY2FwYWNpdHk7CisgICAgICAgIHNldENhcGFjaXR5KDApOworICAgICAgICBzZXRD
YXBhY2l0eShjYXBhY2l0eSk7CisgICAgfQorfQorCitpbnQgQmFja0ZvcndhcmRMaXN0OjpiYWNr
TGlzdENvdW50KCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRl
eCA/IDAgOiBtX2N1cnJlbnQ7Cit9CisKK2ludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0
Q291bnQoKQoreworICAgIHJldHVybiBtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8g
MCA6IChpbnQpbV9lbnRyaWVzLnNpemUoKSAtIChtX2N1cnJlbnQgKyAxKTsKK30KKworSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQoreworICAgIC8v
IERvIHJhbmdlIGNoZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3Zl
cmZsb3cuCisgICAgaWYgKGluZGV4IDwgLXN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RD
b3VudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgCisgICAgcmV0dXJuIG1f
ZW50cmllc1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7Cit9CisKK1ZlY3RvcjxSZWY8SGlzdG9y
eUl0ZW0+PiYgQmFja0ZvcndhcmRMaXN0OjplbnRyaWVzKCkKK3sKKyAgICByZXR1cm4gbV9lbnRy
aWVzOworfQorCisjaWYgUExBVEZPUk0oSU9TKQordW5zaWduZWQgQmFja0ZvcndhcmRMaXN0Ojpj
dXJyZW50KCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50OworfQorCit2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6c2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KQoreworICAgIG1fY3VycmVudCA9
IG5ld0N1cnJlbnQ7Cit9CisKK2Jvb2wgQmFja0ZvcndhcmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNo
ZXMoKQoreworICAgIGJvb2wgZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW0gPSBmYWxzZTsKKyAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpIHsKKyAgICAgICAgaWYgKGl0ZW0tPmlzSW5QYWdl
Q2FjaGUoKSkgeworICAgICAgICAgICAgZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW0gPSB0cnVlOwor
ICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtOworfQorI2VuZGlm
CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpjbG9zZSgpCit7CisgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9lbnRyaWVzKQorICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVt
KTsKKyAgICBtX2VudHJpZXMuY2xlYXIoKTsKKyAgICBtX2VudHJ5SGFzaC5jbGVhcigpOworICAg
IG1fY2xvc2VkID0gdHJ1ZTsKK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCit7
CisgICAgcmV0dXJuIG1fY2xvc2VkOworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3Zl
SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChtX2VudHJpZXNbaV0ucHRyKCkgPT0gaXRlbSkgeworICAgICAg
ICAgICAgbV9lbnRyaWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92
ZShpdGVtKTsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4
IHx8IG1fY3VycmVudCA8IGkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAobV9jdXJyZW50ID4gaSkKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IG1fZW50cmllcy5zaXpl
KCk7CisgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA+PSBjb3VudCkKKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50ID0gY291bnQgPyBjb3VudCAtIDEgOiBOb0N1cnJlbnRJdGVtSW5k
ZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
K30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50
cnkpCit7CisgICAgcmV0dXJuIG1fZW50cnlIYXNoLmNvbnRhaW5zKGVudHJ5KTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0JhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktp
dC93aW4vQmFja0ZvcndhcmRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMxOWU4MDA2OGU2YmEwMzNiN2Vj
ZGY1ODk0OWEzNzYwNzQ0ZmEyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRD
bGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKwordHlwZWRlZiBWZWN0b3I8UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0
ZW1WZWN0b3I7Cit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPj4g
SGlzdG9yeUl0ZW1IYXNoU2V0OworCitjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgV2Vi
Q29yZTo6QmFja0ZvcndhcmRDbGllbnQgeworcHVibGljOiAKKyAgICBzdGF0aWMgUmVmPEJhY2tG
b3J3YXJkTGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYWNrRm9yd2FyZExp
c3QoKSk7IH0KKyAgICB2aXJ0dWFsIH5CYWNrRm9yd2FyZExpc3QoKTsKKworICAgIHZvaWQgYWRk
SXRlbShSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ29C
YWNrKCk7CisgICAgdm9pZCBnb0ZvcndhcmQoKTsKKyAgICB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CisgICAgICAgIAorICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBiYWNrSXRlbSgpOworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgp
OworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOworICAgIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOworCisgICAgdm9pZCBiYWNr
TGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CisgICAgdm9pZCBmb3J3YXJk
TGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CisKKyAgICBpbnQgY2FwYWNp
dHkoKTsKKyAgICB2b2lkIHNldENhcGFjaXR5KGludCk7CisgICAgYm9vbCBlbmFibGVkKCk7Cisg
ICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworICAgIGludCBiYWNrTGlzdENvdW50KCkgb3ZlcnJp
ZGU7CisgICAgaW50IGZvcndhcmRMaXN0Q291bnQoKSBvdmVycmlkZTsKKyAgICBib29sIGNvbnRh
aW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOworCisgICAgdm9pZCBjbG9zZSgpIG92ZXJy
aWRlOworICAgIGJvb2wgY2xvc2VkKCk7CisKKyAgICB2b2lkIHJlbW92ZUl0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qKTsKKyAgICBIaXN0b3J5SXRlbVZlY3RvciYgZW50cmllcygpOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IEJhY2tGb3J3YXJkTGlzdCgpOworCisgICAgSGlzdG9yeUl0ZW1W
ZWN0b3IgbV9lbnRyaWVzOworICAgIEhpc3RvcnlJdGVtSGFzaFNldCBtX2VudHJ5SGFzaDsKKyAg
ICB1bnNpZ25lZCBtX2N1cnJlbnQ7CisgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKKyAgICBib29s
IG1fY2xvc2VkOworICAgIGJvb2wgbV9lbmFibGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGQwODAxN2FhZDRlMTFlZjcxNzRkZmU4NzM0ZjkwMzdh
NDM3NTg4MTYuLjRlYTIwMGQxYmNkNWRiMmM5Y2E2YzE5Y2U3OTkwNmI1NDkxMTdkMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0Lmgi
CiAKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IDAyNTRmODU5YjJlZjI3NTUxYjNmYWFjMGIzYzhiMzM2
M2I2MGFkZTkuLjlkZTY4YjM5ZGYwZmI2ZTEyNTNkOThhZjg0MTVkODZjZGM2ZjAzMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFdlYkJhY2tGb3J3YXJkTGlzdF9ICi0jZGVmaW5l
IFdlYkJhY2tGb3J3YXJkTGlzdF9ICisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5o
IgogCkBAIC0zMywxNiArMzIsMTQgQEAKICNpbmNsdWRlIDxXVEYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPFdURi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEJh
Y2tGb3J3YXJkTGlzdDsKLX0KK2NsYXNzIEJhY2tGb3J3YXJkTGlzdDsKIAogY2xhc3MgV2ViQmFj
a0ZvcndhcmRMaXN0IDogcHVibGljIElXZWJCYWNrRm9yd2FyZExpc3QsIElXZWJCYWNrRm9yd2Fy
ZExpc3RQcml2YXRlCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdCog
Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q+KTsKKyAg
ICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJh
Y2tGb3J3YXJkTGlzdD4pOwogcHJvdGVjdGVkOgotICAgIFdlYkJhY2tGb3J3YXJkTGlzdChQYXNz
UmVmUHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4pOworICAgIFdlYkJhY2tGb3J3YXJkTGlz
dChQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4pOwogICAgIH5XZWJCYWNrRm9yd2FyZExpc3Qo
KTsKIAogcHVibGljOgpAQCAtNzMsNyArNzAsNSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OworICAgIFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IG1f
YmFja0ZvcndhcmRMaXN0OwogfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNk
YTRlZjBlZGYwOTljM2IwODI3NjExOWVhYmY4MGQwODNhYTdlM2QuLmMxMGMyZGM4ZDY0MDgzMjY4
MGNjOWI5YjcyODZkNmM3N2RiZjZiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0yNyw3ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKLSNpbmNsdWRlICJCYWNrRm9yd2FyZENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJDT01W
YXJpYW50U2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCkBAIC04NCw3ICs4NCw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0
cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1h
cEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29udGV4dE1lbnUuaD4KQEAgLTMwOTksNiArMzA5OCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5p
dFdpdGhGcmFtZShSRUNUIGZyYW1lLCBfSW5fIEJTVFIgZnJhbWVOYW1lLCBfSW5fIEJTVFIgZ3Jv
dXBOCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMp
OwogCiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbihtYWtlVW5pcXVlUmVmPFdl
YkVkaXRvckNsaWVudD4odGhpcyksIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSk7CisgICAgY29u
ZmlndXJhdGlvbi5iYWNrRm9yd2FyZExpc3QgPSBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgpOwog
ICAgIGNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlz
KTsKICAgICBjb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRN
ZW51Q2xpZW50KHRoaXMpOwogICAgIGNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9IG5ldyBXZWJE
cmFnQ2xpZW50KHRoaXMpOwpAQCAtMzQzMCw3ICszNDMwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpi
YWNrRm9yd2FyZExpc3QoX0NPTV9PdXRwdHJfb3B0XyBJV2ViQmFja0ZvcndhcmRMaXN0KiogbGlz
dCkKICAgICBpZiAoIW1fdXNlQmFja0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogIAotICAgICpsaXN0ID0gV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShzdGF0
aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqPihtX3BhZ2UtPmJhY2tGb3J3YXJkKCku
Y2xpZW50KCkpKTsKKyAgICAqbGlzdCA9IFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFu
Y2Uoc3RhdGljX2Nhc3Q8QmFja0ZvcndhcmRMaXN0Kj4obV9wYWdlLT5iYWNrRm9yd2FyZCgpLmNs
aWVudCgpKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
</data>
<flag name="review"
          id="314635"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>