<?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>79391</bug_id>
          
          <creation_ts>2012-02-23 12:49:44 -0800</creation_ts>
          <short_desc>[BlackBerry] Eliminate excessive BlackBerry::Platform use in SelectionHandler.</short_desc>
          <delta_ts>2012-02-24 07:34:39 -0800</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>528+ (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>0</everconfirmed>
          <reporter name="Mike Fenton">mifenton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563378</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-23 12:49:44 -0800</bug_when>
    <thetext>Reduce the usage of BlackBerry::Platform namespace usage in SelectionHandler.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563411</commentid>
    <comment_count>1</comment_count>
      <attachid>128543</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-23 13:29:07 -0800</bug_when>
    <thetext>Created attachment 128543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563430</commentid>
    <comment_count>2</comment_count>
      <attachid>128543</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-23 13:47:42 -0800</bug_when>
    <thetext>Comment on attachment 128543
Patch

79392 has to go in first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563431</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-23 13:48:00 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 128543 [details])
&gt; 79392 has to go in first.

we cq+ it once it goes it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563882</commentid>
    <comment_count>4</comment_count>
      <attachid>128543</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 20:35:49 -0800</bug_when>
    <thetext>Comment on attachment 128543
Patch

Rejecting attachment 128543 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
.
Hunk #41 succeeded at 855 (offset 2 lines).
Hunk #42 succeeded at 871 (offset 2 lines).
Hunk #43 succeeded at 896 (offset 1 line).
Hunk #44 succeeded at 913 (offset 1 line).
Hunk #45 succeeded at 935 (offset 1 line).
2 out of 45 hunks FAILED -- saving rejects to file Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Antonio Go...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11603673</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563934</commentid>
    <comment_count>5</comment_count>
      <attachid>128543</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 22:22:35 -0800</bug_when>
    <thetext>Comment on attachment 128543
Patch

Rejecting attachment 128543 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
unk #41 succeeded at 855 (offset 2 lines).
Hunk #42 succeeded at 871 (offset 2 lines).
Hunk #43 succeeded at 897 (offset 2 lines).
Hunk #44 succeeded at 914 (offset 2 lines).
Hunk #45 succeeded at 936 (offset 2 lines).
2 out of 45 hunks FAILED -- saving rejects to file Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Antonio Go...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11608709</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564267</commentid>
    <comment_count>6</comment_count>
      <attachid>128543</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 06:10:12 -0800</bug_when>
    <thetext>Comment on attachment 128543
Patch

Rejecting attachment 128543 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
unk #41 succeeded at 855 (offset 2 lines).
Hunk #42 succeeded at 871 (offset 2 lines).
Hunk #43 succeeded at 897 (offset 2 lines).
Hunk #44 succeeded at 914 (offset 2 lines).
Hunk #45 succeeded at 936 (offset 2 lines).
2 out of 45 hunks FAILED -- saving rejects to file Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Antonio Go...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11627005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564293</commentid>
    <comment_count>7</comment_count>
      <attachid>128726</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-24 06:46:58 -0800</bug_when>
    <thetext>Created attachment 128726
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564319</commentid>
    <comment_count>8</comment_count>
      <attachid>128726</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 07:34:29 -0800</bug_when>
    <thetext>Comment on attachment 128726
Rebased patch

Clearing flags on attachment: 128726

Committed r108796: &lt;http://trac.webkit.org/changeset/108796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564320</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 07:34:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128543</attachid>
            <date>2012-02-23 13:29:07 -0800</date>
            <delta_ts>2012-02-24 06:46:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-2012-02-23-Mike-Fenton-mifenton-rim.com.patch</filename>
            <type>text/plain</type>
            <size>42686</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA5ODY2ZWI1YTM0YzU0M2VkMjIzYmM4OThjNDQ3NDAzYWUwY2I3Y2VmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlmZW50b25AcmltLmNvbT4KRGF0ZTog
VGh1LCAyMyBGZWIgMjAxMiAxNjowODoyMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDIt
MjMgIE1pa2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KCiAgICAgICAgQ2xlYW4gdXAgdXNh
Z2Ugb2YgQmxhY2tCZXJyeTo6UGxhdGZvcm0gaW4gU2VsZWN0aW9uSGFuZGxlciBhbmQKICAgICAg
ICBleHBsaWNpdGx5IGRlZmluZSB3aGF0IG5hbWVzcGFjZSB0byB1c2UgZm9yIGFtYmlndW91cyBv
YmplY3RzIGxpa2UKICAgICAgICBJbnRSZWN0IGFuZCBJbnRQb2ludC4KCiAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25I
YW5kbGVyLmNwcDoKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVy
OjpjYW5jZWxTZWxlY3Rpb24pOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlv
bkhhbmRsZXI6OmdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4dFF1YWRzRm9yU2VsZWN0aW9uKToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9y
aW5nQ2xpcHBpbmcpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmRpcmVjdGlvbk9mUG9p
bnRSZWxhdGl2ZVRvUmVjdCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9u
SGFuZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50KToKICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uKToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpkaXJlY3Rpb25hbFZpc2libGVQb3NpdGlvbkF0
RXh0ZW50T2ZCb3gpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OnBvaW50SXNPdXRzaWRl
T2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpT
ZWxlY3Rpb25IYW5kbGVyOjpleHRlbmRTZWxlY3Rpb25Ub0ZpZWxkQm91bmRhcnkpOgogICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5w
dXRTZWxlY3Rpb24pOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRs
ZXI6OmNsaXBQb2ludFRvRm9jdXNOb2RlKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpT
ZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24pOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdEF0UG9pbnQpOgogICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCk6CiAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6Y29tcGFyZVBvaW50c1RvUmVmZXJlbmNlUG9pbnQpOgogICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6Om1pblhNaW5ZQ29ybmVyKToKICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjptYXhYTWluWUNvcm5lcik6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6bWlu
WE1heFlDb3JuZXIpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Om1heFhNYXhZQ29ybmVy
KToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpjYXJldExvY2F0aW9uRm9yUmVjdCk6CiAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y2FyZXRDb21wYXJpc29uUG9pbnRGb3JSZWN0KToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjphZGp1c3RDYXJldFJlY3RzKToKICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpjbGlwUmVnaW9uVG9WaXNpYmxl
Q29udGFpbmVyKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpyZWZlcmVuY2VQb2ludCk6
CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9u
UG9zaXRpb25DaGFuZ2VkKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25I
YW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uQ29udGFpbnMpOgotLS0KIFNvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICA0MCArKysrCiAuLi4v
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwICB8ICAxOTcgKysr
KysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDk3
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDMwM2M0YTIu
LmJjMzdmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBA
CiAyMDEyLTAyLTIzICBNaWtlIEZlbnRvbiAgPG1pZmVudG9uQHJpbS5jb20+CiAKKyAgICAgICAg
W0JsYWNrQmVycnldIEVsaW1pbmF0ZSBleGNlc3NpdmUgQmxhY2tCZXJyeTo6UGxhdGZvcm0gdXNl
IGluIFNlbGVjdGlvbkhhbmRsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTM5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsZWFuIHVwIHVzYWdlIG9mIEJsYWNrQmVycnk6OlBsYXRmb3JtIGluIFNl
bGVjdGlvbkhhbmRsZXIgYW5kCisgICAgICAgIGV4cGxpY2l0bHkgZGVmaW5lIHdoYXQgbmFtZXNw
YWNlIHRvIHVzZSBmb3IgYW1iaWd1b3VzIG9iamVjdHMgbGlrZQorICAgICAgICBJbnRSZWN0IGFu
ZCBJbnRQb2ludC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OmNhbmNl
bFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRs
ZXI6OmdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4dFF1YWRzRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmluZ0Ns
aXBwaW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6ZGlyZWN0aW9uT2ZQb2ludFJl
bGF0aXZlVG9SZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFu
ZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmRpcmVjdGlvbmFsVmlzaWJsZVBvc2l0aW9uQXRF
eHRlbnRPZkJveCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OnBvaW50SXNPdXRzaWRl
T2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
U2VsZWN0aW9uSGFuZGxlcjo6ZXh0ZW5kU2VsZWN0aW9uVG9GaWVsZEJvdW5kYXJ5KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6dXBkYXRlT3JIYW5kbGVJ
bnB1dFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhh
bmRsZXI6OmNsaXBQb2ludFRvRm9jdXNOb2RlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6U2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0QXRQb2ludCk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbXBhcmVQb2ludHNUb1JlZmVyZW5jZVBvaW50KToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6bWluWE1pbllDb3JuZXIpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjptYXhYTWluWUNvcm5lcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6Om1pblhNYXhZQ29ybmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6bWF4
WE1heFlDb3JuZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpjYXJldExvY2F0aW9u
Rm9yUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNhcmV0Q29tcGFyaXNvblBv
aW50Rm9yUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmFkanVzdENhcmV0UmVj
dHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpjbGlw
UmVnaW9uVG9WaXNpYmxlQ29udGFpbmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
cmVmZXJlbmNlUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25I
YW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvbkNvbnRhaW5z
KToKKworMjAxMi0wMi0yMyAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBTZWxlY3Rpb24gaGFuZGxlciBoYXMgY29tcGlsZSBmYWlsdXJlIHdp
dGggbG9ncyBlbmFibGVkLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzkzOTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcAppbmRleCAxNDkwNmY4Li42ZTZh
MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
ZWxlY3Rpb25IYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcApAQCAtNDcsMTQgKzQ3LDE1IEBACiAKICNkZWZp
bmUgU0hPV0RFQlVHX1NFTEVDVElPTkhBTkRMRVIgMAogCit1c2luZyBuYW1lc3BhY2UgQmxhY2tC
ZXJyeTo6UGxhdGZvcm07Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogI2lmIFNIT1dERUJV
R19TRUxFQ1RJT05IQU5ETEVSCi0jZGVmaW5lIERFQlVHX1NFTEVDVElPTihzZXZlcml0eSwgZm9y
bWF0LCAuLi4pIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoc2V2ZXJpdHksIGZvcm1h
dCwgIyMgX19WQV9BUkdTX18pCisjZGVmaW5lIERFQlVHX1NFTEVDVElPTihzZXZlcml0eSwgZm9y
bWF0LCAuLi4pIGxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZBX0FSR1NfXykKICNl
bHNlCiAjZGVmaW5lIERFQlVHX1NFTEVDVElPTihzZXZlcml0eSwgZm9ybWF0LCAuLi4pCiAjZW5k
aWYgLy8gU0hPV0RFQlVHX1NFTEVDVElPTkhBTkRMRVIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC03
Myw5ICs3NCw5IEBAIFNlbGVjdGlvbkhhbmRsZXI6On5TZWxlY3Rpb25IYW5kbGVyKCkKIHZvaWQg
U2VsZWN0aW9uSGFuZGxlcjo6Y2FuY2VsU2VsZWN0aW9uKCkKIHsKICAgICBtX3NlbGVjdGlvbkFj
dGl2ZSA9IGZhbHNlOwotICAgIG1fbGFzdFNlbGVjdGlvblJlZ2lvbiA9IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7CisgICAgbV9sYXN0U2VsZWN0aW9uUmVnaW9uID0gSW50
UmVjdFJlZ2lvbigpOwogCi0gICAgREVCVUdfU0VMRUNUSU9OKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb24iKTsKKyAg
ICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FuY2Vs
U2VsZWN0aW9uIik7CiAKICAgICBpZiAobV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJbnB1
dE1vZGUoKSkKICAgICAgICAgbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+Y2FuY2VsU2VsZWN0
aW9uKCk7CkBAIC04OCw3ICs4OSw3IEBAIFdlYlN0cmluZyBTZWxlY3Rpb25IYW5kbGVyOjpzZWxl
Y3RlZFRleHQoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CiB9CiAKLXZvaWQgU2VsZWN0aW9uSGFuZGxl
cjo6Z2V0Q29uc29saWRhdGVkUmVnaW9uT2ZUZXh0UXVhZHNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJl
Z2lvbiYgcmVnaW9uKSBjb25zdAordm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpnZXRDb25zb2xpZGF0
ZWRSZWdpb25PZlRleHRRdWFkc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb24sIEludFJlY3RSZWdpb24mIHJlZ2lvbikgY29uc3QKIHsKICAgICBBU1NFUlQocmVn
aW9uLmlzRW1wdHkoKSk7CiAKQEAgLTEwNCwyNCArMTA1LDI0IEBAIHZvaWQgU2VsZWN0aW9uSGFu
ZGxlcjo6Z2V0Q29uc29saWRhdGVkUmVnaW9uT2ZUZXh0UXVhZHNGb3JTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsCiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKS0+dmlldygpOwogCiAgICAgICAgIC8vIGZyYW1lUmVjdCBpcyBpbiBmcmFt
ZSBjb29yZGluYXRlcy4KLSAgICAgICAgSW50UmVjdCBmcmFtZVJlY3QoSW50UG9pbnQoMCwgMCks
IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCkpOworICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGZy
YW1lUmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgZnJhbWVWaWV3LT5jb250ZW50c1NpemUo
KSk7CiAKICAgICAgICAgLy8gZnJhbWVQb3NpdGlvbiBpcyBpbiBtYWluIGZyYW1lIGNvb3JkaW5h
dGVzLgotICAgICAgICBJbnRQb2ludCBmcmFtZVBvc2l0aW9uID0gbV93ZWJQYWdlLT5mcmFtZU9m
ZnNldChtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpKTsKKyAgICAgICAgV2ViQ29yZTo6
SW50UG9pbnQgZnJhbWVQb3NpdGlvbiA9IG1fd2ViUGFnZS0+ZnJhbWVPZmZzZXQobV93ZWJQYWdl
LT5mb2N1c2VkT3JNYWluRnJhbWUoKSk7CiAKICAgICAgICAgLy8gVGhlIHJhbmdlcyByZWN0IGxp
c3QgaXMgYmFzZWQgb24gcmVuZGVyIGVsZW1lbnRzIGFuZCBtYXkgaW5jbHVkZSBtdWx0aXBsZSBh
ZGphY2VudCByZWN0cy4KLSAgICAgICAgLy8gVXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRS
ZWN0UmVnaW9uIHRvIGNvbnNvbGlkYXRlIHRoZXNlIHJlY3RzIGludG8gYmFuZHMgYXMgd2VsbCBh
cyBhIGNvbnRhaW5lciB0byBwYXNzCisgICAgICAgIC8vIFVzZSBJbnRSZWN0UmVnaW9uIHRvIGNv
bnNvbGlkYXRlIHRoZXNlIHJlY3RzIGludG8gYmFuZHMgYXMgd2VsbCBhcyBhIGNvbnRhaW5lciB0
byBwYXNzCiAgICAgICAgIC8vIHRvIHRoZSBjbGllbnQuCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBxdWFkTGlzdC5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgSW50UmVjdCBl
bmNsb3NpbmdSZWN0ID0gcXVhZExpc3RbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKKyAgICAg
ICAgICAgIFdlYkNvcmU6OkludFJlY3QgZW5jbG9zaW5nUmVjdCA9IHF1YWRMaXN0W2ldLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCk7CiAgICAgICAgICAgICBlbmNsb3NpbmdSZWN0LmludGVyc2VjdChm
cmFtZVJlY3QpOwogICAgICAgICAgICAgZW5jbG9zaW5nUmVjdC5tb3ZlKGZyYW1lUG9zaXRpb24u
eCgpLCBmcmFtZVBvc2l0aW9uLnkoKSk7Ci0gICAgICAgICAgICByZWdpb24gPSB1bmlvblJlZ2lv
bnMocmVnaW9uLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbihlbmNsb3NpbmdS
ZWN0KSk7CisgICAgICAgICAgICByZWdpb24gPSB1bmlvblJlZ2lvbnMocmVnaW9uLCBJbnRSZWN0
UmVnaW9uKGVuY2xvc2luZ1JlY3QpKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcoY29u
c3QgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKK3N0YXRpYyBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmluZ0NsaXBwaW5nKGNvbnN0
IEZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyYW1lUG9pbnQpCiB7CiAg
ICAgLy8gRnJhbWU6OnZpc2libGVQb3NpdGlvbkF0UG9pbnQgaGFyZC1jb2RlcyBpZ25vcmVDbGlw
cGluZz1mYWxzZSBpbiB0aGUKICAgICAvLyBjYWxsIHRvIGhpdFRlc3RSZXN1bHRBdFBvaW50LiBU
aGlzIGhhcyBhIGJ1ZyB3aGVyZSBzb21lIHBhZ2VzIChzdWNoIGFzCkBAIC0xNDYsNyArMTQ3LDcg
QEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5n
Q2xpcHBpbmcoY29uc3QgRnJhbWUmIGZyYW0KICAgICByZXR1cm4gdmlzaWJsZVBvczsKIH0KIAot
c3RhdGljIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbk9mUG9pbnRSZWxhdGl2ZVRvUmVjdChjb25z
dCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IGJvb2wgdXNlVG9w
UGFkZGluZyA9IHRydWUsIGNvbnN0IGJvb2wgdXNlQm90dG9tUGFkZGluZyA9IHRydWUpCitzdGF0
aWMgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uT2ZQb2ludFJlbGF0aXZlVG9SZWN0KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29u
c3QgYm9vbCB1c2VUb3BQYWRkaW5nID0gdHJ1ZSwgY29uc3QgYm9vbCB1c2VCb3R0b21QYWRkaW5n
ID0gdHJ1ZSkKIHsKICAgICBBU1NFUlQoIXJlY3QuY29udGFpbnMocG9pbnQpKTsKIApAQCAtMTY3
LDcgKzE2OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb25PZlBvaW50UmVsYXRp
dmVUb1JlY3QoY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zCiAgICAgcmV0dXJuIDA7CiB9CiAK
LWJvb2wgU2VsZWN0aW9uSGFuZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBv
aW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50UmVjdCYgY2FyZXRSZWN0LCBib29s
IHN0YXJ0Q2FyZXQpIGNvbnN0Citib29sIFNlbGVjdGlvbkhhbmRsZXI6OnNob3VsZFVwZGF0ZVNl
bGVjdGlvbk9yQ2FyZXRGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCwgYm9vbCBzdGFydENhcmV0KSBjb25zdAog
ewogICAgIEFTU0VSVChtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9kZSgpKTsK
IApAQCAtMTgyLDcgKzE4Myw3IEBAIGJvb2wgU2VsZWN0aW9uSGFuZGxlcjo6c2hvdWxkVXBkYXRl
U2VsZWN0aW9uT3JDYXJldEZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2luCiAgICAgYm9vbCBh
Ym92ZUNhcmV0ID0gcG9pbnQueSgpIDwgY2FyZXRSZWN0LnkoKTsKICAgICBib29sIGJlbG93Q2Fy
ZXQgPSBwb2ludC55KCkgPj0gY2FyZXRSZWN0Lm1heFkoKTsKIAotICAgIERFQlVHX1NFTEVDVElP
TihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6
c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50IG11bHRpbGluZSA9ICVzIGFib3Zl
ID0gJXMgYmVsb3cgPSAlcyBmaXJzdCBsaW5lID0gJXMgbGFzdCBsaW5lID0gJXMgc3RhcnQgPSAl
cyBcbiIKKyAgICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxl
cjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50IG11bHRpbGluZSA9ICVzIGFi
b3ZlID0gJXMgYmVsb3cgPSAlcyBmaXJzdCBsaW5lID0gJXMgbGFzdCBsaW5lID0gJXMgc3RhcnQg
PSAlcyBcbiIKICAgICAgICAgICAgICwgbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNNdWx0
aWxpbmVJbnB1dE1vZGUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIsIGFib3ZlQ2FyZXQgPyAidHJ1ZSIg
OiAiZmFsc2UiLCBiZWxvd0NhcmV0ID8gInRydWUiIDogImZhbHNlIgogICAgICAgICAgICAgLCBp
blNhbWVMaW5lKGN1cnJlbnRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIHN0YXJ0T2ZFZGl0YWJs
ZUNvbnRlbnQoY3VycmVudFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSkpID8gInRydWUiIDogImZh
bHNlIgogICAgICAgICAgICAgLCBpblNhbWVMaW5lKGN1cnJlbnRTZWxlY3Rpb24udmlzaWJsZUVu
ZCgpLCBlbmRPZkVkaXRhYmxlQ29udGVudChjdXJyZW50U2VsZWN0aW9uLnZpc2libGVFbmQoKSkp
ID8gInRydWUiIDogImZhbHNlIgpAQCAtMTk4LDE5ICsxOTksMTkgQEAgYm9vbCBTZWxlY3Rpb25I
YW5kbGVyOjpzaG91bGRVcGRhdGVTZWxlY3Rpb25PckNhcmV0Rm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIHBvaW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpz
ZXRDYXJldFBvc2l0aW9uKGNvbnN0IEludFBvaW50ICZwb3NpdGlvbikKK3ZvaWQgU2VsZWN0aW9u
SGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCAmcG9zaXRp
b24pCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9kZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NhcmV0QWN0aXZlID0gdHJ1ZTsKIAotICAgIERF
QlVHX1NFTEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0
aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbiByZXF1ZXN0ZWQgcG9pbnQgJWQsICVkIiwgcG9z
aXRpb24ueCgpLCBwb3NpdGlvbi55KCkpOworICAgIERFQlVHX1NFTEVDVElPTihMb2dMZXZlbElu
Zm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uIHJlcXVlc3RlZCBwb2ludCAl
ZCwgJWQiLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSk7CiAKICAgICBGcmFtZSogZm9jdXNl
ZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZVNlbGVj
dGlvbiogY29udHJvbGxlciA9IGZvY3VzZWRGcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgSW50UG9p
bnQgcmVsYXRpdmVQb2ludCA9IERPTVN1cHBvcnQ6OmNvbnZlcnRQb2ludFRvRnJhbWUobV93ZWJQ
YWdlLT5tYWluRnJhbWUoKSwgZm9jdXNlZEZyYW1lLCBwb3NpdGlvbik7Ci0gICAgSW50UmVjdCBj
dXJyZW50Q2FyZXRSZWN0ID0gY29udHJvbGxlci0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCku
YWJzb2x1dGVDYXJldEJvdW5kcygpOworICAgIFdlYkNvcmU6OkludFBvaW50IHJlbGF0aXZlUG9p
bnQgPSBET01TdXBwb3J0Ojpjb252ZXJ0UG9pbnRUb0ZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1l
KCksIGZvY3VzZWRGcmFtZSwgcG9zaXRpb24pOworICAgIFdlYkNvcmU6OkludFJlY3QgY3VycmVu
dENhcmV0UmVjdCA9IGNvbnRyb2xsZXItPnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLmFic29s
dXRlQ2FyZXRCb3VuZHMoKTsKIAogICAgIGlmIChyZWxhdGl2ZVBvaW50ID09IERPTVN1cHBvcnQ6
OkludmFsaWRQb2ludCB8fCAhc2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50KHJl
bGF0aXZlUG9pbnQsIGN1cnJlbnRDYXJldFJlY3QpKSB7CiAgICAgICAgIHNlbGVjdGlvblBvc2l0
aW9uQ2hhbmdlZCgpOwpAQCAtMjIxLDcgKzIyMiw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6
c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBJbnRQb2ludCAmcG9zaXRpb24pCiAKICAgICBpZiAoIURP
TVN1cHBvcnQ6OmlzUG9zaXRpb25Jbk5vZGUobV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSwgdmlzaWJsZUNhcmV0UG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKSkpIHsKICAgICAgICAgaWYgKHVuc2lnbmVkIHNob3J0IGNoYXJhY3RlciA9IGRp
cmVjdGlvbk9mUG9pbnRSZWxhdGl2ZVRvUmVjdChyZWxhdGl2ZVBvaW50LCBjdXJyZW50Q2FyZXRS
ZWN0KSkKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXItPmhhbmRsZU5hdmln
YXRpb25Nb3ZlKGNoYXJhY3RlciwgZmFsc2UgLyogc2hpZnREb3duICovLCBmYWxzZSAvKiBhbHRE
b3duICovLCBmYWxzZSAvKiBjYW5FeGl0RmllbGQgKi8pOworICAgICAgICAgICAgbV93ZWJQYWdl
LT5tX2lucHV0SGFuZGxlci0+aGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRF
dmVudChjaGFyYWN0ZXIpKTsKIAogICAgICAgICBzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDcgKzIzNiw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxl
cjo6c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBJbnRQb2ludCAmcG9zaXRpb24pCiAKICAgICBjb250
cm9sbGVyLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKIAotICAgIERFQlVHX1NFTEVDVElP
TihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6
c2V0Q2FyZXRQb3NpdGlvbiBwb2ludCB2YWxpZCwgY3Vyc29yIHVwZGF0ZWQiKTsKKyAgICBERUJV
R19TRUxFQ1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3Np
dGlvbiBwb2ludCB2YWxpZCwgY3Vyc29yIHVwZGF0ZWQiKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlv
biBtYWtlcyBzdXJlIHdlIGFyZSBub3QgcmVkdWNpbmcgdGhlIHNlbGVjdGlvbiB0byBhIGNhcmV0
IHNlbGVjdGlvbi4KQEAgLTI2OCw3ICsyNjksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRFeHRlbmRT
ZWxlY3Rpb25JbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sCiAg
ICAgcmV0dXJuIHRlbXBTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc2VsZWN0aW9uVHlwZSgpID09IFZp
c2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOwogfQogCi1zdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIGRpcmVjdGlvbmFsVmlzaWJsZVBvc2l0aW9uQXRFeHRlbnRPZkJveChGcmFtZSogZnJhbWUs
IGNvbnN0IEludFJlY3QmIGJvdW5kaW5nQm94LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGNv
bnN0IEludFBvaW50JiBiYXNlUG9pbnQpCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGRpcmVjdGlv
bmFsVmlzaWJsZVBvc2l0aW9uQXRFeHRlbnRPZkJveChGcmFtZSogZnJhbWUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGJvdW5kaW5nQm94LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBiYXNlUG9pbnQpCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsKIApA
QCAtMjc4LDI0ICsyNzksMjQgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBkaXJlY3Rpb25hbFZp
c2libGVQb3NpdGlvbkF0RXh0ZW50T2ZCb3goRnJhbWUqIGZyYW1lLCBjb24KICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewogICAgIGNhc2UgS0VZQ09ERV9MRUZUOgogICAgICAgICAvLyBFeHRlbmQg
eCB0byBzdGFydCB3aXRob3V0IG1vZGlmeWluZyB5LgotICAgICAgICByZXR1cm4gZnJhbWUtPnZp
c2libGVQb3NpdGlvbkZvclBvaW50KEludFBvaW50KGJvdW5kaW5nQm94LngoKSwgYmFzZVBvaW50
LnkoKSkpOworICAgICAgICByZXR1cm4gZnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KFdl
YkNvcmU6OkludFBvaW50KGJvdW5kaW5nQm94LngoKSwgYmFzZVBvaW50LnkoKSkpOwogICAgIGNh
c2UgS0VZQ09ERV9SSUdIVDoKICAgICAgICAgLy8gRXh0ZW5kIHggdG8gZW5kIHdpdGhvdXQgbW9k
aWZ5aW5nIHkuCi0gICAgICAgIHJldHVybiBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
SW50UG9pbnQoYm91bmRpbmdCb3gubWF4WCgpLCBiYXNlUG9pbnQueSgpKSk7CisgICAgICAgIHJl
dHVybiBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoYm91
bmRpbmdCb3gubWF4WCgpLCBiYXNlUG9pbnQueSgpKSk7CiAgICAgY2FzZSBLRVlDT0RFX1VQOgog
ICAgICAgICAvLyBFeHRlbmQgeSB0byB0b3Agd2l0aG91dCBtb2RpZnlpbmcgeC4KLSAgICAgICAg
cmV0dXJuIGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChJbnRQb2ludChiYXNlUG9pbnQu
eCgpLCBib3VuZGluZ0JveC55KCkpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lLT52aXNpYmxlUG9z
aXRpb25Gb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludChiYXNlUG9pbnQueCgpLCBib3VuZGluZ0Jv
eC55KCkpKTsKICAgICBjYXNlIEtFWUNPREVfRE9XTjoKICAgICAgICAgLy8gRXh0ZW5kIHkgdG8g
Ym90dG9tIHdpdGhvdXQgbW9kaWZ5aW5nIHguCi0gICAgICAgIHJldHVybiBmcmFtZS0+dmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoYmFzZVBvaW50LngoKSwgYm91bmRpbmdCb3gubWF4
WSgpKSk7CisgICAgICAgIHJldHVybiBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoV2Vi
Q29yZTo6SW50UG9pbnQoYmFzZVBvaW50LngoKSwgYm91bmRpbmdCb3gubWF4WSgpKSk7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIGZyYW1lLT52aXNp
YmxlUG9zaXRpb25Gb3JQb2ludChJbnRQb2ludChiYXNlUG9pbnQueCgpLCBiYXNlUG9pbnQueSgp
KSk7CisgICAgcmV0dXJuIGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChXZWJDb3JlOjpJ
bnRQb2ludChiYXNlUG9pbnQueCgpLCBiYXNlUG9pbnQueSgpKSk7CiB9CiAKLXN0YXRpYyBib29s
IHBvaW50SXNPdXRzaWRlT2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKHVuc2lnbmVkIGRpcmVjdGlv
biwgY29uc3QgSW50UG9pbnQmIHNlbGVjdGlvblBvaW50LCBjb25zdCBJbnRSZWN0JiBib3VuZGlu
Z0JveCkKK3N0YXRpYyBib29sIHBvaW50SXNPdXRzaWRlT2ZCb3VuZGluZ0JveEluRGlyZWN0aW9u
KHVuc2lnbmVkIGRpcmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNlbGVjdGlvblBv
aW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBib3VuZGluZ0JveCkKIHsKICAgICBpZiAoKGRp
cmVjdGlvbiA9PSBLRVlDT0RFX0xFRlQgJiYgc2VsZWN0aW9uUG9pbnQueCgpIDwgYm91bmRpbmdC
b3gueCgpKQogICAgICAgICB8fCAoZGlyZWN0aW9uID09IEtFWUNPREVfVVAgJiYgc2VsZWN0aW9u
UG9pbnQueSgpIDwgYm91bmRpbmdCb3gueSgpKQpAQCAtMzA2LDcgKzMwNyw3IEBAIHN0YXRpYyBi
b29sIHBvaW50SXNPdXRzaWRlT2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKHVuc2lnbmVkIGRpcmVj
dGlvbiwgY29uc3QgSW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi11bnNpZ25lZCBzaG9ydCBT
ZWxlY3Rpb25IYW5kbGVyOjpleHRlbmRTZWxlY3Rpb25Ub0ZpZWxkQm91bmRhcnkoYm9vbCBpc1N0
YXJ0SGFuZGxlLCBjb25zdCBJbnRQb2ludCYgc2VsZWN0aW9uUG9pbnQsIFZpc2libGVTZWxlY3Rp
b24mIG5ld1NlbGVjdGlvbikKK3Vuc2lnbmVkIHNob3J0IFNlbGVjdGlvbkhhbmRsZXI6OmV4dGVu
ZFNlbGVjdGlvblRvRmllbGRCb3VuZGFyeShib29sIGlzU3RhcnRIYW5kbGUsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBzZWxlY3Rpb25Qb2ludCwgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0
aW9uKQogewogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIGlmICghZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9k
ZSgpIHx8ICFmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVy
KCkpCkBAIC0zMTQsMTAgKzMxNSwxMCBAQCB1bnNpZ25lZCBzaG9ydCBTZWxlY3Rpb25IYW5kbGVy
OjpleHRlbmRTZWxlY3Rpb25Ub0ZpZWxkQm91bmRhcnkoYm9vbCBpc1N0YXJ0SGFuZAogCiAgICAg
RnJhbWVTZWxlY3Rpb24qIGNvbnRyb2xsZXIgPSBmb2N1c2VkRnJhbWUtPnNlbGVjdGlvbigpOwog
Ci0gICAgSW50UmVjdCBjYXJldFJlY3QgPSBpc1N0YXJ0SGFuZGxlID8gY29udHJvbGxlci0+c2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuYWJzb2x1dGVDYXJldEJvdW5kcygpCisgICAgV2ViQ29y
ZTo6SW50UmVjdCBjYXJldFJlY3QgPSBpc1N0YXJ0SGFuZGxlID8gY29udHJvbGxlci0+c2VsZWN0
aW9uKCkudmlzaWJsZVN0YXJ0KCkuYWJzb2x1dGVDYXJldEJvdW5kcygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogY29udHJvbGxlci0+c2VsZWN0aW9uKCkudmlzaWJs
ZUVuZCgpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKIAotICAgIEludFJlY3Qgbm9kZUJvdW5kaW5n
Qm94ID0gZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5kZXJlcigp
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIFdlYkNvcmU6OkludFJlY3Qgbm9kZUJv
dW5kaW5nQm94ID0gZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5k
ZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogICAgIG5vZGVCb3VuZGluZ0JveC5p
bmZsYXRlKC0xKTsKIAogICAgIC8vIFN0YXJ0IGhhbmRsZSBpcyBvdXRzaWRlIG9mIHRoZSBmaWVs
ZC4gVHJlYXQgaXQgYXMgdGhlIGNoYW5nZWQgaGFuZGxlIGFuZCBtb3ZlCkBAIC0zNTAsOCArMzUx
LDggQEAgdW5zaWduZWQgc2hvcnQgU2VsZWN0aW9uSGFuZGxlcjo6ZXh0ZW5kU2VsZWN0aW9uVG9G
aWVsZEJvdW5kYXJ5KGJvb2wgaXNTdGFydEhhbmQKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIGhh
bmRsZWQuCi1ib29sIFNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5wdXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBjb25zdCBJbnRQb2ludCYgcmVsYXRp
dmVTdGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgY29uc3QgSW50UG9pbnQmIHJlbGF0aXZlRW5kKQorYm9vbCBTZWxlY3Rpb25IYW5kbGVy
Ojp1cGRhdGVPckhhbmRsZUlucHV0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHJlbGF0aXZlU3RhcnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiByZWxhdGl2ZUVuZCkKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlLT5tX2lucHV0
SGFuZGxlci0+aXNJbnB1dE1vZGUoKSk7CiAKQEAgLTM2Miw4ICszNjMsOCBAQCBib29sIFNlbGVj
dGlvbkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5wdXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
biYgbmV3U2VsZWN0aQogCiAgICAgRnJhbWVTZWxlY3Rpb24qIGNvbnRyb2xsZXIgPSBmb2N1c2Vk
RnJhbWUtPnNlbGVjdGlvbigpOwogCi0gICAgSW50UmVjdCBjdXJyZW50U3RhcnRDYXJldFJlY3Qg
PSBjb250cm9sbGVyLT5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5hYnNvbHV0ZUNhcmV0Qm91
bmRzKCk7Ci0gICAgSW50UmVjdCBjdXJyZW50RW5kQ2FyZXRSZWN0ID0gY29udHJvbGxlci0+c2Vs
ZWN0aW9uKCkudmlzaWJsZUVuZCgpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IGN1cnJlbnRTdGFydENhcmV0UmVjdCA9IGNvbnRyb2xsZXItPnNlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IGN1cnJlbnRFbmRDYXJldFJlY3QgPSBjb250cm9sbGVyLT5zZWxlY3Rpb24oKS52aXNpYmxl
RW5kKCkuYWJzb2x1dGVDYXJldEJvdW5kcygpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGhhbmRs
ZSBtb3ZlbWVudCBpcyB2YWxpZC4KICAgICBpZiAoIXNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2Fy
ZXRGb3JQb2ludChyZWxhdGl2ZVN0YXJ0LCBjdXJyZW50U3RhcnRDYXJldFJlY3QsIHRydWUgLyog
c3RhcnRDYXJldCAqLykKQEAgLTM3Miw3ICszNzMsNyBAQCBib29sIFNlbGVjdGlvbkhhbmRsZXI6
OnVwZGF0ZU9ySGFuZGxlSW5wdXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0
aQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBJbnRSZWN0IG5vZGVCb3VuZGlu
Z0JveCA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIFdlYkNvcmU6OkludFJlY3Qgbm9kZUJvdW5kaW5nQm94ID0gZm9jdXNlZE5vZGUtPnJl
bmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAKICAgICAvLyBPbmx5IGRvIHNw
ZWNpYWwgaGFuZGxpbmcgaWYgb25lIGhhbmRsZSBpcyBvdXRzaWRlIG9mIHRoZSBub2RlLgogICAg
IGJvb2wgc3RhcnRJc091dHNpZGVPZkZpZWxkID0gcmVsYXRpdmVTdGFydCAhPSBET01TdXBwb3J0
OjpJbnZhbGlkUG9pbnQgJiYgIW5vZGVCb3VuZGluZ0JveC5jb250YWlucyhyZWxhdGl2ZVN0YXJ0
KTsKQEAgLTM5OCwxMCArMzk5LDEwIEBAIGJvb2wgU2VsZWN0aW9uSGFuZGxlcjo6dXBkYXRlT3JI
YW5kbGVJbnB1dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3RpCiAgICAgaWYg
KCFjaGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERFQlVHX1NFTEVDVElP
TihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6
c2V0U2VsZWN0aW9uIG1ha2luZyBzZWxlY3Rpb24gY2hhbmdlIGF0dGVtcHQgdXNpbmcgbmF2aWdh
dGlvbiIpOworICAgIERFQlVHX1NFTEVDVElPTihMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5k
bGVyOjpzZXRTZWxlY3Rpb24gbWFraW5nIHNlbGVjdGlvbiBjaGFuZ2UgYXR0ZW1wdCB1c2luZyBr
ZXkgZXZlbnQgJWQiLCBjaGFyYWN0ZXIpOwogCiAgICAgaWYgKHNob3VsZEV4dGVuZFNlbGVjdGlv
bkluRGlyZWN0aW9uKGNvbnRyb2xsZXItPnNlbGVjdGlvbigpLCBjaGFyYWN0ZXIpKQotICAgICAg
ICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5oYW5kbGVOYXZpZ2F0aW9uTW92ZShjaGFyYWN0
ZXIsIHRydWUgLyogc2hpZnREb3duICovLCBmYWxzZSAvKiBhbHREb3duICovLCBmYWxzZSAvKiBj
YW5FeGl0RmllbGQgKi8pOworICAgICAgICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5oYW5k
bGVLZXlib2FyZElucHV0KFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50KGNoYXJhY3RlciwgUGxhdGZv
cm06OktleWJvYXJkRXZlbnQ6OktleURvd24sIEtFWU1PRF9TSElGVCkpOwogCiAgICAgLy8gTXVz
dCBzZW5kIHRoZSBzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgZXZlcnkgdGltZSwgc29tZXRpbWVz
IHRoaXMgd2lsbCBkdXBsaWNhdGUgYnV0IGFuIGFjY2VwdGVkCiAgICAgLy8gaGFuZGxlTmF2aWdh
dGlvbk1vdmUgbWF5IG5vdCBtYWtlIGFuIGFjdHVhbCBzZWxlY3Rpb24gY2hhbmdlLgpAQCAtNDA5
LDI3ICs0MTAsMjkgQEAgYm9vbCBTZWxlY3Rpb25IYW5kbGVyOjp1cGRhdGVPckhhbmRsZUlucHV0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotSW50UG9pbnQgU2VsZWN0aW9uSGFuZGxlcjo6Y2xpcFBvaW50VG9Gb2N1c05vZGUoY29u
c3QgSW50UG9pbnQmIHBvaW50KQorV2ViQ29yZTo6SW50UG9pbnQgU2VsZWN0aW9uSGFuZGxlcjo6
Y2xpcFBvaW50VG9Gb2N1c05vZGUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQogewot
ICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIEZyYW1lU2VsZWN0aW9uKiBjb250cm9sbGVyID0gZm9jdXNlZEZyYW1lLT5zZWxlY3Rp
b24oKTsKKyAgICAvLyBDbGlwcGluZyBzaG91bGQgb25seSBoYXBwZW4gaWYgd2UgYXJlIGluIGFu
IGlucHV0IGZpZWxkLgorICAgIGlmICghbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJbnB1
dE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBvaW50OwogCisgICAgRnJhbWUqIGZvY3VzZWRGcmFt
ZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmb2N1c2VkRnJh
bWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgfHwgIWZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQo
KS0+Zm9jdXNlZE5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHBvaW50OwogCi0g
ICAgSW50UmVjdCBmb2N1c2VkTm9kZUJvdW5kaW5nQm94ID0gZm9jdXNlZEZyYW1lLT5kb2N1bWVu
dCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIFdlYkNvcmU6OkludFJlY3QgZm9jdXNlZE5vZGVCb3VuZGluZ0JveCA9IGZvY3VzZWRG
cmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKICAgICBmb2N1c2VkTm9kZUJvdW5kaW5nQm94LmluZmxhdGUoLTEpOwog
Ci0gICAgSW50UG9pbnQgY2xpcHBlZFBvaW50ID0gcG9pbnQ7CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgY2xpcHBlZFBvaW50ID0gcG9pbnQ7CiAgICAgaWYgKCFmb2N1c2VkTm9kZUJvdW5kaW5nQm94
LmNvbnRhaW5zKGNsaXBwZWRQb2ludCkpCi0gICAgICAgIGNsaXBwZWRQb2ludCA9IEludFBvaW50
KAorICAgICAgICBjbGlwcGVkUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCgKICAgICAgICAgICAg
IHBvaW50LngoKSA8IGZvY3VzZWROb2RlQm91bmRpbmdCb3gueCgpID8gZm9jdXNlZE5vZGVCb3Vu
ZGluZ0JveC54KCkgOiBzdGQ6Om1pbihmb2N1c2VkTm9kZUJvdW5kaW5nQm94Lm1heFgoKSwgcG9p
bnQueCgpKSwKICAgICAgICAgICAgIHBvaW50LnkoKSA8IGZvY3VzZWROb2RlQm91bmRpbmdCb3gu
eSgpID8gZm9jdXNlZE5vZGVCb3VuZGluZ0JveC55KCkgOiBzdGQ6Om1pbihmb2N1c2VkTm9kZUJv
dW5kaW5nQm94Lm1heFkoKSwgcG9pbnQueSgpKSk7CiAKICAgICByZXR1cm4gY2xpcHBlZFBvaW50
OwogfQogCi12b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbihjb25zdCBJbnRQb2lu
dCYgc3RhcnQsIGNvbnN0IEludFBvaW50JiBlbmQpCit2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNl
dFNlbGVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc3RhcnQsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBlbmQpCiB7CiAgICAgbV9zZWxlY3Rpb25BY3RpdmUgPSB0cnVlOwogCkBAIC00
NDAsNyArNDQzLDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24oY29uc3Qg
SW50UG9pbnQmIHN0YXJ0LCBjb25zdCBJbnRQb2ludCYgZW5kKQogICAgIEZyYW1lKiBmb2N1c2Vk
RnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEZyYW1lU2VsZWN0
aW9uKiBjb250cm9sbGVyID0gZm9jdXNlZEZyYW1lLT5zZWxlY3Rpb24oKTsKIAotICAgIERFQlVH
X1NFTEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9u
SGFuZGxlcjo6c2V0U2VsZWN0aW9uIGFkanVzdGVkIHBvaW50cyAlZCwgJWQsICVkLCAlZCIsIHN0
YXJ0LngoKSwgc3RhcnQueSgpLCBlbmQueCgpLCBlbmQueSgpKTsKKyAgICBERUJVR19TRUxFQ1RJ
T04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIGFkanVzdGVk
IHBvaW50cyAlZCwgJWQsICVkLCAlZCIsIHN0YXJ0LngoKSwgc3RhcnQueSgpLCBlbmQueCgpLCBl
bmQueSgpKTsKIAogICAgIC8vIE5vdGUgdGhhdCBJbnRQb2ludCgtMSwgLTEpIGlzIGJlaW5nIG91
ciBzZW50aW5lbCBzbyBmYXIgZm9yCiAgICAgLy8gY2xpcHBlZCBvdXQgc2VsZWN0aW9uIHN0YXJ0
aW5nIG9yIGVuZGluZyBsb2NhdGlvbi4KQEAgLTQ1MCw4ICs0NTMsOCBAQCB2b2lkIFNlbGVjdGlv
bkhhbmRsZXI6OnNldFNlbGVjdGlvbihjb25zdCBJbnRQb2ludCYgc3RhcnQsIGNvbnN0IEludFBv
aW50JiBlbmQpCiAgICAgLy8gQXQgbGVhc3Qgb25lIG9mIHRoZSBsb2NhdGlvbnMgbXVzdCBiZSB2
YWxpZC4KICAgICBBU1NFUlQoc3RhcnRJc1ZhbGlkIHx8IG1fbGFzdFVwZGF0ZWRFbmRQb2ludElz
VmFsaWQpOwogCi0gICAgSW50UG9pbnQgcmVsYXRpdmVTdGFydCA9IHN0YXJ0OwotICAgIEludFBv
aW50IHJlbGF0aXZlRW5kID0gZW5kOworICAgIFdlYkNvcmU6OkludFBvaW50IHJlbGF0aXZlU3Rh
cnQgPSBzdGFydDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCByZWxhdGl2ZUVuZCA9IGVuZDsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKGNvbnRyb2xsZXItPnNlbGVjdGlvbigp
KTsKIApAQCAtNDkyLDcgKzQ5NSw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0
aW9uKGNvbnN0IEludFBvaW50JiBzdGFydCwgY29uc3QgSW50UG9pbnQmIGVuZCkKICAgICAvLyBJ
ZiB0aGUgc2VsZWN0aW9uIHNpemUgaXMgcmVkdWNlIHRvIGxlc3MgdGhhbiBhIGNoYXJhY3Rlciwg
c2VsZWN0aW9uIHR5cGUgYmVjb21lcwogICAgIC8vIENhcmV0LiBBcyBsb25nIGFzIGl0IGlzIHN0
aWxsIGEgcmFuZ2UsIGl0J3MgYSB2YWxpZCBzZWxlY3Rpb24uIFNlbGVjdGlvbiBjYW5ub3QKICAg
ICAvLyBiZSBjYW5jZWxsZWQgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uLgotICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIHJlZ2lvbjsKKyAgICBJbnRSZWN0UmVnaW9uIHJlZ2lv
bjsKICAgICBnZXRDb25zb2xpZGF0ZWRSZWdpb25PZlRleHRRdWFkc0ZvclNlbGVjdGlvbihuZXdT
ZWxlY3Rpb24sIHJlZ2lvbik7CiAgICAgY2xpcFJlZ2lvblRvVmlzaWJsZUNvbnRhaW5lcihyZWdp
b24pOwogICAgIGlmICghcmVnaW9uLmlzRW1wdHkoKSkgewpAQCAtNTAyLDEyICs1MDUsMTIgQEAg
dm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24oY29uc3QgSW50UG9pbnQmIHN0YXJ0
LCBjb25zdCBJbnRQb2ludCYgZW5kKQogCiAgICAgICAgIGNvbnRyb2xsZXItPnNldFNlbGVjdGlv
bihuZXdTZWxlY3Rpb24pOwogCi0gICAgICAgIERFQlVHX1NFTEVDVElPTihCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNl
bGVjdGlvbiBwb2ludHMgdmFsaWQsIHNlbGVjdGlvbiB1cGRhdGVkIik7CisgICAgICAgIERFQlVH
X1NFTEVDVElPTihMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24g
c2VsZWN0aW9uIHBvaW50cyB2YWxpZCwgc2VsZWN0aW9uIHVwZGF0ZWQiKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBSZXF1ZXN0ZWQgc2VsZWN0aW9uIHJlc3VsdHMgaW4gYW4gZW1wdHkgc2Vs
ZWN0aW9uLCBza2lwIHRoaXMgY2hhbmdlLgogICAgICAgICBzZWxlY3Rpb25Qb3NpdGlvbkNoYW5n
ZWQoKTsKIAotICAgICAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06Okxv
Z0xldmVsV2FybiwgIlNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbiBzZWxlY3Rpb24gcG9p
bnRzIGludmFsaWQsIHNlbGVjdGlvbiBub3QgdXBkYXRlZCIpOworICAgICAgICBERUJVR19TRUxF
Q1RJT04oTG9nTGV2ZWxXYXJuLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNlbGVj
dGlvbiBwb2ludHMgaW52YWxpZCwgc2VsZWN0aW9uIG5vdCB1cGRhdGVkIik7CiAgICAgfQogfQog
CkBAIC01MjQsNyArNTI3LDcgQEAgc3RhdGljIE5vZGUqIGVuY2xvc2luZ0xpbmtFdmVudFBhcmVu
dEZvck5vZGUoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbGlua05vZGUgJiYgbGlua05vZGUtPmlz
TGluaygpID8gbGlua05vZGUgOiAwOwogfQogCi12b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVj
dEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQordm9pZCBTZWxlY3Rpb25IYW5kbGVy
OjpzZWxlY3RBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbikKIHsKICAg
ICAvLyBJZiBwb2ludCBpcyBpbnZhbGlkIHRyaWdnZXIgc2VsZWN0aW9uIGJhc2VkIGV4cGFuc2lv
bi4KICAgICBpZiAobG9jYXRpb24gPT0gRE9NU3VwcG9ydDo6SW52YWxpZFBvaW50KSB7CkBAIC01
MzMsNyArNTM2LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3RBdFBvaW50KGNvbnN0
IEludFBvaW50JiBsb2NhdGlvbikKICAgICB9CiAKICAgICBOb2RlKiB0YXJnZXROb2RlOwotICAg
IEludFBvaW50IHRhcmdldFBvc2l0aW9uOworICAgIFdlYkNvcmU6OkludFBvaW50IHRhcmdldFBv
c2l0aW9uOwogICAgIC8vIEZJWE1FOiBGYWN0b3J5IHRoaXMgZ2V0IHJpZ2h0IGZhdCBmaW5nZXIg
Y29kZSBpbnRvIGEgaGVscGVyLgogICAgIGNvbnN0IEZhdEZpbmdlcnNSZXN1bHQgbGFzdEZhdEZp
bmdlcnNSZXN1bHQgPSBtX3dlYlBhZ2UtPm1fdG91Y2hFdmVudEhhbmRsZXItPmxhc3RGYXRGaW5n
ZXJzUmVzdWx0KCk7CiAgICAgaWYgKGxhc3RGYXRGaW5nZXJzUmVzdWx0LnBvc2l0aW9uV2FzQWRq
dXN0ZWQoKSAmJiBsYXN0RmF0RmluZ2Vyc1Jlc3VsdC5ub2RlQXNFbGVtZW50SWZBcHBsaWNhYmxl
KCkpIHsKQEAgLTU4MiwxNSArNTg1LDE1IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRv
R3JhbnVsYXJpdHkoRnJhbWUqIGZyYW1lLCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvCiAgICAg
cmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogfQogCi12b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9i
amVjdChjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKK3ZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0T2JqZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBsb2NhdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIEFT
U0VSVChsb2NhdGlvbi54KCkgPj0gMCAmJiBsb2NhdGlvbi55KCkgPj0gMCk7CiAgICAgQVNTRVJU
KG1fd2ViUGFnZSAmJiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpICYmIG1fd2ViUGFn
ZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPnNlbGVjdGlvbigpKTsKICAgICBGcmFtZSogZm9jdXNl
ZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIERFQlVHX1NF
TEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFu
ZGxlcjo6c2VsZWN0T2JqZWN0IGFkanVzdGVkIHBvaW50cyAlZCwgJWQiLCBsb2NhdGlvbi54KCks
IGxvY2F0aW9uLnkoKSk7CisgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNlbGVj
dGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCBhZGp1c3RlZCBwb2ludHMgJWQsICVkIiwgbG9jYXRp
b24ueCgpLCBsb2NhdGlvbi55KCkpOwogCi0gICAgSW50UG9pbnQgcmVsYXRpdmVQb2ludCA9IERP
TVN1cHBvcnQ6OmNvbnZlcnRQb2ludFRvRnJhbWUobV93ZWJQYWdlLT5tYWluRnJhbWUoKSwgZm9j
dXNlZEZyYW1lLCBsb2NhdGlvbik7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgcmVsYXRpdmVQb2lu
dCA9IERPTVN1cHBvcnQ6OmNvbnZlcnRQb2ludFRvRnJhbWUobV93ZWJQYWdlLT5tYWluRnJhbWUo
KSwgZm9jdXNlZEZyYW1lLCBsb2NhdGlvbik7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvaW50TG9j
YXRpb24oZm9jdXNlZEZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChyZWxhdGl2ZVBvaW50
KSk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBv
aW50TG9jYXRpb24sIHBvaW50TG9jYXRpb24pOwogCkBAIC02MDcsNyArNjEwLDcgQEAgdm9pZCBT
ZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3RPYmplY3QoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQogICAgIEFTU0VSVChtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpICYmIG1fd2ViUGFn
ZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPnNlbGVjdGlvbigpKTsKICAgICBGcmFtZSogZm9jdXNl
ZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIERFQlVHX1NF
TEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFu
ZGxlcjo6c2VsZWN0T2JqZWN0IHVzaW5nIGN1cnJlbnQgc2VsZWN0aW9uIik7CisgICAgREVCVUdf
U0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCB1
c2luZyBjdXJyZW50IHNlbGVjdGlvbiIpOwogCiAgICAgLy8gVXNlIHRoZSBjdXJyZW50IHNlbGVj
dGlvbiBhcyB0aGUgc2VsZWN0aW9uIHBvaW50LgogICAgIEFTU0VSVChmb2N1c2VkRnJhbWUtPnNl
bGVjdGlvbigpLT5zZWxlY3Rpb25UeXBlKCkgIT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rp
b24pOwpAQCAtNjI0LDcgKzYyNyw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0T2Jq
ZWN0KE5vZGUqIG5vZGUpCiAgICAgQVNTRVJUKG1fd2ViUGFnZSAmJiBtX3dlYlBhZ2UtPmZvY3Vz
ZWRPck1haW5GcmFtZSgpICYmIG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPnNlbGVj
dGlvbigpKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIAotICAgIERFQlVHX1NFTEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0Tm9kZSIpOworICAgIERFQlVH
X1NFTEVDVElPTihMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3ROb2RlIik7
CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb246OnNl
bGVjdGlvbkZyb21Db250ZW50c09mTm9kZShub2RlKTsKICAgICBmb2N1c2VkRnJhbWUtPnNlbGVj
dGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKQEAgLTY0NSw3ICs2NDgsNyBAQCBzdGF0
aWMgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKEZyYW1lU2VsZWN0aW9u
KiBzZWxlY3Rpb24pCiAvLyBSZXR1cm5zID4gMCBpZiBwMSBpcyAiY2xvc2VyIiB0byByZWZlcmVu
Y2VQb2ludCwgPCAwIGlmIHAyIGlzICJjbG9zZXIiLCAwIGlmIHRoZXkgYXJlIGVxdWlkaXN0YW50
LgogLy8gQmVjYXVzZSB0ZXh0IGlzIHVzdWFsbHkgYXJyYW5nZWQgaW4gaG9yaXpvbnRhbCByb3dz
LCBkaXN0YW5jZSBpcyBtZWFzdXJlZCBhbG9uZyB0aGUgeS1heGlzLCB3aXRoIHgtYXhpcyB1c2Vk
IG9ubHkgdG8gYnJlYWsgdGllcy4KIC8vIElmIHJpZ2h0R3Jhdml0eSBpcyB0cnVlLCB0aGUgcmln
aHQtbW9zdCB4LWNvb3JkaW5hdGUgaXMgY2hvc2VuLCBvdGhlcndpc2UgdGVoIGxlZnQtbW9zdCBj
b29yZGluYXRlIGlzIGNob3Nlbi4KLXN0YXRpYyBpbmxpbmUgaW50IGNvbXBhcmVQb2ludHNUb1Jl
ZmVyZW5jZVBvaW50KGNvbnN0IEludFBvaW50JiBwMSwgY29uc3QgSW50UG9pbnQmIHAyLCBjb25z
dCBJbnRQb2ludCYgcmVmZXJlbmNlUG9pbnQsIGJvb2wgcmlnaHRHcmF2aXR5KQorc3RhdGljIGlu
bGluZSBpbnQgY29tcGFyZVBvaW50c1RvUmVmZXJlbmNlUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHAxLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcDIsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiByZWZlcmVuY2VQb2ludCwgYm9vbCByaWdodEdyYXZpdHkpCiB7CiAgICAgaW50IGR5
MSA9IGFicyhyZWZlcmVuY2VQb2ludC55KCkgLSBwMS55KCkpOwogICAgIGludCBkeTIgPSBhYnMo
cmVmZXJlbmNlUG9pbnQueSgpIC0gcDIueSgpKTsKQEAgLTY2NSwxMCArNjY4LDEwIEBAIHN0YXRp
YyBpbmxpbmUgaW50IGNvbXBhcmVQb2ludHNUb1JlZmVyZW5jZVBvaW50KGNvbnN0IEludFBvaW50
JiBwMSwgY29uc3QgSW50UG9pCiAvLyBOT1RFL0ZJWE1FOiBEdWUgdG8gcjc3Mjg2LCB3ZSBhcmUg
Z2V0dGluZyBvZmYtYnktb25lIHJlc3VsdHMgaW4gdGhlIEludFJlY3QgY2xhc3MgY291bnRlcnBh
cnQgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAvLyAgICAgICAgICAgICBtZXRob2RzIGJlbG93LiBB
cyBkb25lIGluIHI4OTgwMywgcjc3OTI4IGFuZCBhIGZldyBvdGhlcnMsIGxldHMgdXNlIGxvY2Fs
IG1ldGhvZCB0byBmaXggaXQuCiAvLyAgICAgICAgICAgICBXZSBzaG91bGQga2VlcCBvdXIgZXll
cyB2ZXJ5IG9wZW4gb24gaXQsIHNpbmNlIGl0IGNhbiBhZmZlY3QgQmFja2luZ1N0b3JlIHZlcnkg
YmFkbHkuCi1zdGF0aWMgSW50UG9pbnQgbWluWE1pbllDb3JuZXIoY29uc3QgSW50UmVjdCYgcmVj
dCkgeyByZXR1cm4gcmVjdC5sb2NhdGlvbigpOyB9IC8vIHR5cGljYWxseSB0b3BMZWZ0Ci1zdGF0
aWMgSW50UG9pbnQgbWF4WE1pbllDb3JuZXIoY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4g
SW50UG9pbnQocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSAxLCByZWN0LnkoKSk7IH0gLy8gdHlw
aWNhbGx5IHRvcFJpZ2h0Ci1zdGF0aWMgSW50UG9pbnQgbWluWE1heFlDb3JuZXIoY29uc3QgSW50
UmVjdCYgcmVjdCkgeyByZXR1cm4gSW50UG9pbnQocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5o
ZWlnaHQoKSAtIDEpOyB9IC8vIHR5cGljYWxseSBib3R0b21MZWZ0Ci1zdGF0aWMgSW50UG9pbnQg
bWF4WE1heFlDb3JuZXIoY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gSW50UG9pbnQocmVj
dC54KCkgKyByZWN0LndpZHRoKCkgLSAxLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLSAxKTsg
fSAvLyB0eXBpY2FsbHkgYm90dG9tUmlnaHQKK3N0YXRpYyBXZWJDb3JlOjpJbnRQb2ludCBtaW5Y
TWluWUNvcm5lcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0Lmxv
Y2F0aW9uKCk7IH0gLy8gdHlwaWNhbGx5IHRvcExlZnQKK3N0YXRpYyBXZWJDb3JlOjpJbnRQb2lu
dCBtYXhYTWluWUNvcm5lcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IHJldHVybiBX
ZWJDb3JlOjpJbnRQb2ludChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIDEsIHJlY3QueSgpKTsg
fSAvLyB0eXBpY2FsbHkgdG9wUmlnaHQKK3N0YXRpYyBXZWJDb3JlOjpJbnRQb2ludCBtaW5YTWF4
WUNvcm5lcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IHJldHVybiBXZWJDb3JlOjpJ
bnRQb2ludChyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpIC0gMSk7IH0gLy8gdHlw
aWNhbGx5IGJvdHRvbUxlZnQKK3N0YXRpYyBXZWJDb3JlOjpJbnRQb2ludCBtYXhYTWF4WUNvcm5l
cihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IHJldHVybiBXZWJDb3JlOjpJbnRQb2lu
dChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIDEsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAt
IDEpOyB9IC8vIHR5cGljYWxseSBib3R0b21SaWdodAogCiAvLyBUaGUgY2FyZXQgaXMgYSBvbmUt
cGl4ZWwgd2lkZSBsaW5lIGRvd24gZWl0aGVyIHRoZSByaWdodCBvciBsZWZ0IGVkZ2Ugb2YgYQog
Ly8gcmVjdCwgZGVwZW5kaW5nIG9uIHRoZSB0ZXh0IGRpcmVjdGlvbi4KQEAgLTY4MCwxMiArNjgz
LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYXJldElzT25MZWZ0KGJvb2wgaXNTdGFydENhcmV0
LCBib29sIGlzUlRMKQogICAgIHJldHVybiBpc1JUTDsKIH0KIAotc3RhdGljIGlubGluZSBJbnRQ
b2ludCBjYXJldExvY2F0aW9uRm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIGlzU3Rh
cnRDYXJldCwgYm9vbCBpc1JUTCkKK3N0YXRpYyBpbmxpbmUgV2ViQ29yZTo6SW50UG9pbnQgY2Fy
ZXRMb2NhdGlvbkZvclJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgYm9vbCBpc1N0
YXJ0Q2FyZXQsIGJvb2wgaXNSVEwpCiB7CiAgICAgcmV0dXJuIGNhcmV0SXNPbkxlZnQoaXNTdGFy
dENhcmV0LCBpc1JUTCkgPyBtaW5YTWluWUNvcm5lcihyZWN0KSA6IG1heFhNaW5ZQ29ybmVyKHJl
Y3QpOwogfQogCi1zdGF0aWMgaW5saW5lIEludFBvaW50IGNhcmV0Q29tcGFyaXNvblBvaW50Rm9y
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIGlzU3RhcnRDYXJldCwgYm9vbCBpc1JUTCkK
K3N0YXRpYyBpbmxpbmUgV2ViQ29yZTo6SW50UG9pbnQgY2FyZXRDb21wYXJpc29uUG9pbnRGb3JS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIGJvb2wgaXNTdGFydENhcmV0LCBib29s
IGlzUlRMKQogewogICAgIGlmIChpc1N0YXJ0Q2FyZXQpCiAgICAgICAgIHJldHVybiBjYXJldElz
T25MZWZ0KGlzU3RhcnRDYXJldCwgaXNSVEwpID8gbWluWE1pbllDb3JuZXIocmVjdCkgOiBtYXhY
TWluWUNvcm5lcihyZWN0KTsKQEAgLTY5MywxMSArNjk2LDExIEBAIHN0YXRpYyBpbmxpbmUgSW50
UG9pbnQgY2FyZXRDb21wYXJpc29uUG9pbnRGb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGJv
b2wgaXNTCiAgICAgcmV0dXJuIGNhcmV0SXNPbkxlZnQoaXNTdGFydENhcmV0LCBpc1JUTCkgPyBt
aW5YTWF4WUNvcm5lcihyZWN0KSA6IG1heFhNYXhZQ29ybmVyKHJlY3QpOwogfQogCi1zdGF0aWMg
dm9pZCBhZGp1c3RDYXJldFJlY3RzKEludFJlY3QmIHN0YXJ0Q2FyZXQsIGJvb2wgaXNTdGFydENh
cmV0Q2xpcHBlZE91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCYgZW5k
Q2FyZXQsIGJvb2wgaXNFbmRDYXJldENsaXBwZWRPdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0PiBy
ZWN0TGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIHN0
YXJ0UmVmZXJlbmNlUG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElu
dFBvaW50JiBlbmRSZWZlcmVuY2VQb2ludCwKK3N0YXRpYyB2b2lkIGFkanVzdENhcmV0UmVjdHMo
V2ViQ29yZTo6SW50UmVjdCYgc3RhcnRDYXJldCwgYm9vbCBpc1N0YXJ0Q2FyZXRDbGlwcGVkT3V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpJbnRSZWN0JiBlbmRDYXJl
dCwgYm9vbCBpc0VuZENhcmV0Q2xpcHBlZE91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGxhdGZvcm06OkludFJlY3Q+IHJlY3RMaXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc3RhcnRSZWZl
cmVuY2VQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGVuZFJlZmVyZW5jZVBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzUlRMKQogewogICAgIC8vIHN0YXJ0UmVmZXJlbmNlUG9pbnQgaXMgdGhlIGJlc3Qg
Z3Vlc3MgYXQgdGhlIHRvcCBsZWZ0IG9mIHRoZSBzZWxlY3Rpb247IGVuZFJlZmVyZW5jZVBvaW50
IGlzIHRoZSBiZXN0IGd1ZXNzIGF0IHRoZSBib3R0b20gcmlnaHQuCkBAIC03MjMsNyArNzI2LDcg
QEAgc3RhdGljIHZvaWQgYWRqdXN0Q2FyZXRSZWN0cyhJbnRSZWN0JiBzdGFydENhcmV0LCBib29s
IGlzU3RhcnRDYXJldENsaXBwZWRPdXQsCiAgICAgZW5kQ2FyZXQuc2V0V2lkdGgoMSk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcmVjdExpc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgSW50UmVjdCBjdXJyZW50UmVjdChyZWN0TGlzdFtpXSk7CisgICAgICAgIFdlYkNvcmU6Oklu
dFJlY3QgY3VycmVudFJlY3QocmVjdExpc3RbaV0pOwogCiAgICAgICAgIC8vIENvbXBhcmUgYW5k
IHVwZGF0ZSB0aGUgc3RhcnQgYW5kIGVuZCBjYXJldHMgd2l0aCB0aGVpciByZXNwZWN0aXZlIHJl
ZmVyZW5jZSBwb2ludHMuCiAgICAgICAgIGlmICghaXNTdGFydENhcmV0Q2xpcHBlZE91dCAmJiBj
b21wYXJlUG9pbnRzVG9SZWZlcmVuY2VQb2ludCgKQEAgLTc0NCw3ICs3NDcsNyBAQCBzdGF0aWMg
dm9pZCBhZGp1c3RDYXJldFJlY3RzKEludFJlY3QmIHN0YXJ0Q2FyZXQsIGJvb2wgaXNTdGFydENh
cmV0Q2xpcHBlZE91dCwKICAgICB9CiB9CiAKLXZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6Y2xpcFJl
Z2lvblRvVmlzaWJsZUNvbnRhaW5lcihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lv
biYgcmVnaW9uKQordm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpjbGlwUmVnaW9uVG9WaXNpYmxlQ29u
dGFpbmVyKEludFJlY3RSZWdpb24mIHJlZ2lvbikKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlLT5t
X21haW5GcmFtZSAmJiBtX3dlYlBhZ2UtPm1fbWFpbkZyYW1lLT52aWV3KCkpOwogCkBAIC03NTIs
MTAgKzc1NSwxMCBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OmNsaXBSZWdpb25Ub1Zpc2libGVD
b250YWluZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlYwogCiAgICAgLy8gRG9uJ3QgYWxs
b3cgdGhlIHJlZ2lvbiB0byBleHRlbmQgb3V0c2lkZSBvZiB0aGUgYWxsIGl0cyBhbmNlc3RvciBm
cmFtZXMnIHZpc2libGUgYXJlYS4KICAgICBpZiAoZnJhbWUgIT0gbV93ZWJQYWdlLT5tYWluRnJh
bWUoKSkgewotICAgICAgICBJbnRSZWN0IGNvbnRhaW5pbmdDb250ZW50UmVjdDsKKyAgICAgICAg
V2ViQ29yZTo6SW50UmVjdCBjb250YWluaW5nQ29udGVudFJlY3Q7CiAgICAgICAgIGNvbnRhaW5p
bmdDb250ZW50UmVjdCA9IG1fd2ViUGFnZS0+Z2V0UmVjdXJzaXZlVmlzaWJsZVdpbmRvd1JlY3Qo
ZnJhbWUtPnZpZXcoKSwgdHJ1ZSAvKiBubyBjbGlwIHRvIG1haW4gZnJhbWUgd2luZG93ICovKTsK
ICAgICAgICAgY29udGFpbmluZ0NvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLT5tX21haW5GcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGNvbnRhaW5pbmdDb250ZW50UmVjdCk7Ci0gICAgICAg
IHJlZ2lvbiA9IGludGVyc2VjdFJlZ2lvbnMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3RS
ZWdpb24oY29udGFpbmluZ0NvbnRlbnRSZWN0KSwgcmVnaW9uKTsKKyAgICAgICAgcmVnaW9uID0g
aW50ZXJzZWN0UmVnaW9ucyhJbnRSZWN0UmVnaW9uKGNvbnRhaW5pbmdDb250ZW50UmVjdCksIHJl
Z2lvbik7CiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIHJlZ2lvbiB0byBleHRlbmQg
b3V0c2lkZSBvZiB0aGUgaW5wdXQgZmllbGQuCkBAIC03NjQsMjAgKzc2NywyMCBAQCB2b2lkIFNl
bGVjdGlvbkhhbmRsZXI6OmNsaXBSZWdpb25Ub1Zpc2libGVDb250YWluZXIoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkludFJlYwogICAgICAgICAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5v
ZGUoKS0+cmVuZGVyZXIoKSkgewogCiAgICAgICAgIC8vIEFkanVzdCB0aGUgYm91bmRpbmcgYm94
IHRvIHRoZSBmcmFtZSBvZmZzZXQuCi0gICAgICAgIEludFJlY3QgYm91bmRpbmdCb3goZnJhbWUt
PmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkpOworICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kaW5nQm94KGZyYW1lLT5k
b2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKICAgICAgICAgYm91bmRpbmdCb3ggPSBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMoZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhi
b3VuZGluZ0JveCkpOwogCi0gICAgICAgIHJlZ2lvbiA9IGludGVyc2VjdFJlZ2lvbnMoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkludFJlY3RSZWdpb24oYm91bmRpbmdCb3gpLCByZWdpb24pOworICAg
ICAgICByZWdpb24gPSBpbnRlcnNlY3RSZWdpb25zKEludFJlY3RSZWdpb24oYm91bmRpbmdCb3gp
LCByZWdpb24pOwogICAgIH0KIH0KIAotc3RhdGljIEludFBvaW50IHJlZmVyZW5jZVBvaW50KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IEludFJlY3QmIGJvdW5kaW5nUmVj
dCwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zaXRpb24sIGJvb2wgaXNTdGFydENhcmV0LCBib29s
IGlzUlRMKQorc3RhdGljIFdlYkNvcmU6OkludFBvaW50IHJlZmVyZW5jZVBvaW50KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGJvdW5kaW5n
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyYW1lUG9zaXRpb24sIGJvb2wgaXNTdGFy
dENhcmV0LCBib29sIGlzUlRMKQogewogICAgIC8vIElmIG9uZSBvZiB0aGUgY2FyZXRzIGlzIGlu
dmFsaWQgKHRoaXMgaGFwcGVucywgZm9yIGluc3RhbmNlLCBpZiB0aGUKICAgICAvLyBzZWxlY3Rp
b24gZW5kcyBpbiBhbiBlbXB0eSBkaXYpIGZhbGwgYmFjayB0byB1c2luZyB0aGUgY29ybmVyIG9m
IHRoZQogICAgIC8vIGVudGlyZSByZWdpb24gKHdoaWNoIGlzIGFscmVhZHkgaW4gZnJhbWUgY29v
cmRpbmF0ZXMgc28gZG9lc24ndCBuZWVkCiAgICAgLy8gYWRqdXN0aW5nKS4KLSAgICBJbnRSZWN0
IHN0YXJ0Q2FyZXRCb3VuZHMocG9zaXRpb24uYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKKyAgICBX
ZWJDb3JlOjpJbnRSZWN0IHN0YXJ0Q2FyZXRCb3VuZHMocG9zaXRpb24uYWJzb2x1dGVDYXJldEJv
dW5kcygpKTsKICAgICBpZiAoc3RhcnRDYXJldEJvdW5kcy5pc0VtcHR5KCkpCiAgICAgICAgIHN0
YXJ0Q2FyZXRCb3VuZHMgPSBib3VuZGluZ1JlY3Q7CiAgICAgZWxzZQpAQCAtNzkwLDcgKzc5Myw3
IEBAIHN0YXRpYyBJbnRQb2ludCByZWZlcmVuY2VQb2ludChjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW9uLCBjb25zdCBJbnRSZWN0JiBiCiAvLyBzeXN0ZW0gaXMgbm90IGVudGlyZWx5IFdl
YktpdC4KIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJv
b2wgdmlzdWFsQ2hhbmdlT25seSkKIHsKLSAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0
aW9uQ2hhbmdlZCB2aXNpYmxlQ2hhbmdlT25seSA9ICVzIiwgdmlzdWFsQ2hhbmdlT25seSA/ICJ0
cnVlIiA6ICJmYWxzZSIpOworICAgIERFQlVHX1NFTEVDVElPTihMb2dMZXZlbEluZm8sICJTZWxl
Y3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgdmlzaWJsZUNoYW5nZU9ubHkg
PSAlcyIsIHZpc3VhbENoYW5nZU9ubHkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAgIC8vIFRo
aXMgbWV0aG9kIGNhbiBnZXQgY2FsbGVkIGR1cmluZyBXZWJQYWdlIHNodXRkb3duIHByb2Nlc3Mu
CiAgICAgLy8gSWYgdGhhdCBpcyB0aGUgY2FzZSwganVzdCBiYWlsIG91dCBzaW5jZSB0aGUgY2xp
ZW50IGlzIG5vdApAQCAtODExLDcgKzgxNCw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2Vs
ZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wgdmlzdWFsQ2hhbmdlT25seSkKICAgICAvLyBFbnRl
ciBzZWxlY3Rpb24gbW9kZSBpZiBzZWxlY3Rpb24gdHlwZSBpcyBSYW5nZVNlbGVjdGlvbiwgYW5k
IGRpc2FibGUgc2VsZWN0aW9uIGlmCiAgICAgLy8gc2VsZWN0aW9uIGlzIGFjdGl2ZSBhbmQgYmVj
b21lcyBjYXJldCBzZWxlY3Rpb24uCiAgICAgRnJhbWUqIGZyYW1lID0gbV93ZWJQYWdlLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBJbnRQb2ludCBmcmFtZVBvcyA9IG1fd2ViUGFnZS0+ZnJh
bWVPZmZzZXQoZnJhbWUpOworICAgIFdlYkNvcmU6OkludFBvaW50IGZyYW1lUG9zID0gbV93ZWJQ
YWdlLT5mcmFtZU9mZnNldChmcmFtZSk7CiAgICAgaWYgKG1fc2VsZWN0aW9uQWN0aXZlICYmICht
X2NhcmV0QWN0aXZlIHx8IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpKQogICAgICAgICBt
X3NlbGVjdGlvbkFjdGl2ZSA9IGZhbHNlOwogICAgIGVsc2UgaWYgKGZyYW1lLT5zZWxlY3Rpb24o
KS0+aXNSYW5nZSgpKQpAQCAtODE5LDExICs4MjIsMTEgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVy
OjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoYm9vbCB2aXN1YWxDaGFuZ2VPbmx5KQogICAgIGVs
c2UgaWYgKCFtX3NlbGVjdGlvbkFjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVj
dCBzdGFydENhcmV0OwotICAgIEludFJlY3QgZW5kQ2FyZXQ7CisgICAgV2ViQ29yZTo6SW50UmVj
dCBzdGFydENhcmV0OworICAgIFdlYkNvcmU6OkludFJlY3QgZW5kQ2FyZXQ7CiAKICAgICAvLyBH
ZXQgdGhlIHRleHQgcmVjdHMgZnJvbSB0aGUgc2VsZWN0aW9ucyByYW5nZS4KLSAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiByZWdpb247CisgICAgSW50UmVjdFJlZ2lvbiBy
ZWdpb247CiAgICAgZ2V0Q29uc29saWRhdGVkUmVnaW9uT2ZUZXh0UXVhZHNGb3JTZWxlY3Rpb24o
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgcmVnaW9uKTsKIAogICAgIC8vIElmIHRo
ZXJlIGlzIG5vIGNoYW5nZSBpbiBzZWxlY3RlZCB0ZXh0IGFuZCB0aGUgdmlzdWFsIHJlY3RzCkBA
IC04MzQsMTUgKzgzNywxNSBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0
aW9uQ2hhbmdlZChib29sIHZpc3VhbENoYW5nZU9ubHkpCiAgICAgbV9sYXN0U2VsZWN0aW9uUmVn
aW9uID0gcmVnaW9uOwogCiAgICAgaWYgKCFyZWdpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIElu
dFJlY3QgdW5jbGlwcGVkU3RhcnRDYXJldDsKLSAgICAgICAgSW50UmVjdCB1bmNsaXBwZWRFbmRD
YXJldDsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCB1bmNsaXBwZWRTdGFydENhcmV0OworICAg
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHVuY2xpcHBlZEVuZENhcmV0OwogCiAgICAgICAgIGJvb2wg
aXNSVEwgPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKGZyYW1lLT5zZWxlY3Rpb24oKSkgPT0g
UlRMOwogCi0gICAgICAgIHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0
PiByZWN0TGlzdCA9IHJlZ2lvbi5yZWN0cygpOworICAgICAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9y
bTo6SW50UmVjdD4gcmVjdExpc3QgPSByZWdpb24ucmVjdHMoKTsKIAotICAgICAgICBJbnRQb2lu
dCBzdGFydENhcmV0UmVmZXJlbmNlUG9pbnQgPSByZWZlcmVuY2VQb2ludChmcmFtZS0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCByZWdpb24uZXh0ZW50cygpLCBmcmFt
ZVBvcywgdHJ1ZSAvKiBpc1N0YXJ0Q2FyZXQgKi8sIGlzUlRMKTsKLSAgICAgICAgSW50UG9pbnQg
ZW5kQ2FyZXRSZWZlcmVuY2VQb2ludCA9IHJlZmVyZW5jZVBvaW50KGZyYW1lLT5zZWxlY3Rpb24o
KS0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCByZWdpb24uZXh0ZW50cygpLCBmcmFtZVBvcywg
ZmFsc2UgLyogaXNTdGFydENhcmV0ICovLCBpc1JUTCk7CisgICAgICAgIFdlYkNvcmU6OkludFBv
aW50IHN0YXJ0Q2FyZXRSZWZlcmVuY2VQb2ludCA9IHJlZmVyZW5jZVBvaW50KGZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCksIHJlZ2lvbi5leHRlbnRzKCksIGZy
YW1lUG9zLCB0cnVlIC8qIGlzU3RhcnRDYXJldCAqLywgaXNSVEwpOworICAgICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBlbmRDYXJldFJlZmVyZW5jZVBvaW50ID0gcmVmZXJlbmNlUG9pbnQoZnJhbWUt
PnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCksIHJlZ2lvbi5leHRlbnRzKCks
IGZyYW1lUG9zLCBmYWxzZSAvKiBpc1N0YXJ0Q2FyZXQgKi8sIGlzUlRMKTsKIAogICAgICAgICBh
ZGp1c3RDYXJldFJlY3RzKHVuY2xpcHBlZFN0YXJ0Q2FyZXQsIGZhbHNlIC8qIHVuY2xpcHBlZCAq
LywgdW5jbGlwcGVkRW5kQ2FyZXQsIGZhbHNlIC8qIHVuY2xpcHBlZCAqLywgcmVjdExpc3QsIHN0
YXJ0Q2FyZXRSZWZlcmVuY2VQb2ludCwgZW5kQ2FyZXRSZWZlcmVuY2VQb2ludCwgaXNSVEwpOwog
CkBAIC04NTAsOSArODUzLDkgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3Np
dGlvbkNoYW5nZWQoYm9vbCB2aXN1YWxDaGFuZ2VPbmx5KQogCiAjaWYgU0hPV0RFQlVHX1NFTEVD
VElPTkhBTkRMRVIgLy8gRG9uJ3QgcmVseSBqdXN0IG9uIERFQlVHX1NFTEVDVElPTiB0byBhdm9p
ZCBsb29wLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJlY3RMaXN0LnNp
emUoKTsgaSsrKQotICAgICAgICAgICAgREVCVUdfU0VMRUNUSU9OKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVjdCBsaXN0IC0gVW5tb2RpZmllZCAjJWQsICglZCwg
JWQpICglZCB4ICVkKSIsIGksIHJlY3RMaXN0W2ldLngoKSwgcmVjdExpc3RbaV0ueSgpLCByZWN0
TGlzdFtpXS53aWR0aCgpLCByZWN0TGlzdFtpXS5oZWlnaHQoKSk7CisgICAgICAgICAgICBERUJV
R19TRUxFQ1RJT04oTG9nTGV2ZWxDcml0aWNhbCwgIlJlY3QgbGlzdCAtIFVubW9kaWZpZWQgIyVk
LCAoJWQsICVkKSAoJWQgeCAlZCkiLCBpLCByZWN0TGlzdFtpXS54KCksIHJlY3RMaXN0W2ldLnko
KSwgcmVjdExpc3RbaV0ud2lkdGgoKSwgcmVjdExpc3RbaV0uaGVpZ2h0KCkpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJlZ2lvbi5udW1SZWN0cygpOyBpKyspCi0gICAg
ICAgICAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3Jp
dGljYWwsICJSZWN0IGxpc3QgIC0gQ29uc29saWRhdGVkICMlZCwgKCVkLCAlZCkgKCVkIHggJWQp
IiwgaSwgcmVnaW9uLnJlY3RzKClbaV0ueCgpLCByZWdpb24ucmVjdHMoKVtpXS55KCksIHJlZ2lv
bi5yZWN0cygpW2ldLndpZHRoKCksIHJlZ2lvbi5yZWN0cygpW2ldLmhlaWdodCgpKTsKKyAgICAg
ICAgICAgIERFQlVHX1NFTEVDVElPTihMb2dMZXZlbENyaXRpY2FsLCAiUmVjdCBsaXN0ICAtIENv
bnNvbGlkYXRlZCAjJWQsICglZCwgJWQpICglZCB4ICVkKSIsIGksIHJlZ2lvbi5yZWN0cygpW2ld
LngoKSwgcmVnaW9uLnJlY3RzKClbaV0ueSgpLCByZWdpb24ucmVjdHMoKVtpXS53aWR0aCgpLCBy
ZWdpb24ucmVjdHMoKVtpXS5oZWlnaHQoKSk7CiAjZW5kaWYKIAogICAgICAgICBib29sIHNob3Vs
ZENhcmVBYm91dFBvc3NpYmxlQ2xpcHBlZE91dFNlbGVjdGlvbiA9IGZyYW1lICE9IG1fd2ViUGFn
ZS0+bWFpbkZyYW1lKCkgfHwgbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJbnB1dE1vZGUo
KTsKQEAgLTg2Niw3ICs4NjksNyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBv
c2l0aW9uQ2hhbmdlZChib29sIHZpc3VhbENoYW5nZU9ubHkpCiAgICAgICAgICAgICBib29sIHNo
b3VsZENsaXBFbmRDYXJldCA9ICFyZWdpb24uaXNSZWN0SW5SZWdpb24odW5jbGlwcGVkRW5kQ2Fy
ZXQpOwogCiAgICAgICAgICAgICAvLyBGaW5kIHRoZSB0b3AgY29ybmVyIGFuZCBib3R0b20gY29y
bmVyLgotICAgICAgICAgICAgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJl
Y3Q+IGNsaXBwZWRSZWN0TGlzdCA9IHJlZ2lvbi5yZWN0cygpOworICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8UGxhdGZvcm06OkludFJlY3Q+IGNsaXBwZWRSZWN0TGlzdCA9IHJlZ2lvbi5yZWN0cygp
OwogICAgICAgICAgICAgYWRqdXN0Q2FyZXRSZWN0cyhzdGFydENhcmV0LCBzaG91bGRDbGlwU3Rh
cnRDYXJldCwgZW5kQ2FyZXQsIHNob3VsZENsaXBFbmRDYXJldCwgY2xpcHBlZFJlY3RMaXN0LCBz
dGFydENhcmV0UmVmZXJlbmNlUG9pbnQsIGVuZENhcmV0UmVmZXJlbmNlUG9pbnQsIGlzUlRMKTsK
IAogICAgICAgICAgICAgLy8gVHJhbnNsYXRlIHRoZSBjYXJldCB2YWx1ZXMgYXMgdGhleSBtdXN0
IGJlIGluIHRyYW5zZm9ybWVkIGNvb3JkaW5hdGVzLgpAQCAtODkyLDkgKzg5NSw5IEBAIHZvaWQg
U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wgdmlzdWFsQ2hh
bmdlT25seSkKIC8vIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgbm90IGluIFdlYktpdCBjb29yZGlu
YXRlcy4KIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNoYW5nZWQoKQogewot
ICAgIERFQlVHX1NFTEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAi
U2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNoYW5nZWQiKTsKKyAgICBERUJVR19TRUxF
Q1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNoYW5n
ZWQiKTsKIAotICAgIEludFJlY3QgY2FyZXRMb2NhdGlvbjsKKyAgICBXZWJDb3JlOjpJbnRSZWN0
IGNhcmV0TG9jYXRpb247CiAgICAgLy8gSWYgdGhlIGlucHV0IGZpZWxkIGlzIG5vdCBhY3RpdmUs
IHdlIG11c3QgYmUgdHVybmluZyBvZmYgdGhlIGNhcmV0LgogICAgIGlmICghbV93ZWJQYWdlLT5t
X2lucHV0SGFuZGxlci0+aXNJbnB1dE1vZGUoKSAmJiBtX2NhcmV0QWN0aXZlKSB7CiAgICAgICAg
IG1fY2FyZXRBY3RpdmUgPSBmYWxzZTsKQEAgLTkwOSwyMCArOTEyLDIwIEBAIHZvaWQgU2VsZWN0
aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNoYW5nZWQoKQogICAgIEFTU0VSVChtX3dlYlBhZ2Ut
Pm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9kZSgpKTsKIAogICAgIGlmIChtX3dlYlBhZ2UtPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uVHlwZSgpID09IFZpc2li
bGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uKSB7Ci0gICAgICAgIEludFBvaW50IGZyYW1lT2Zm
c2V0ID0gbV93ZWJQYWdlLT5mcmFtZU9mZnNldChtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFt
ZSgpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgZnJhbWVPZmZzZXQgPSBtX3dlYlBhZ2Ut
PmZyYW1lT2Zmc2V0KG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpOwogCiAgICAgICAg
IGNhcmV0TG9jYXRpb24gPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuYWJzb2x1dGVDYXJldEJvdW5kcygpOwog
ICAgICAgICBjYXJldExvY2F0aW9uLm1vdmUoZnJhbWVPZmZzZXQueCgpLCBmcmFtZU9mZnNldC55
KCkpOwogCiAgICAgICAgIC8vIENsaXAgYWdhaW5zdCB0aGUgY29udGFpbmluZyBmcmFtZSBhbmQg
bm9kZSBib3VuZGFyaWVzLgotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJl
Z2lvbiByZWdpb24oY2FyZXRMb2NhdGlvbik7CisgICAgICAgIEludFJlY3RSZWdpb24gcmVnaW9u
KGNhcmV0TG9jYXRpb24pOwogICAgICAgICBjbGlwUmVnaW9uVG9WaXNpYmxlQ29udGFpbmVyKHJl
Z2lvbik7CiAgICAgICAgIGNhcmV0TG9jYXRpb24gPSByZWdpb24uZXh0ZW50cygpOwogICAgIH0K
IAogICAgIG1fY2FyZXRBY3RpdmUgPSAhY2FyZXRMb2NhdGlvbi5pc0VtcHR5KCk7CiAKLSAgICBE
RUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNlbGVj
dGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkIGNhcmV0IFJlY3QgJWQsICVkLCAlZHgl
ZCIsCisgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6
OmNhcmV0UG9zaXRpb25DaGFuZ2VkIGNhcmV0IFJlY3QgJWQsICVkLCAlZHglZCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXJldExvY2F0aW9uLngoKSwgY2FyZXRMb2NhdGlvbi55KCksIGNh
cmV0TG9jYXRpb24ud2lkdGgoKSwgY2FyZXRMb2NhdGlvbi5oZWlnaHQoKSk7CiAKICAgICBjYXJl
dExvY2F0aW9uID0gbV93ZWJQYWdlLT5tYXBUb1RyYW5zZm9ybWVkKGNhcmV0TG9jYXRpb24pOwpA
QCAtOTMxLDcgKzkzNCw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNo
YW5nZWQoKQogICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPm5vdGlmeUNhcmV0Q2hhbmdlZChjYXJl
dExvY2F0aW9uLCBtX3dlYlBhZ2UtPm1fdG91Y2hFdmVudEhhbmRsZXItPmxhc3RGYXRGaW5nZXJz
UmVzdWx0KCkuaXNUZXh0SW5wdXQoKSAvKiB1c2VyVG91Y2hUcmlnZ2VyZWQgKi8pOwogfQogCi1i
b29sIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvbkNvbnRhaW5zKGNvbnN0IEludFBvaW50JiBw
b2ludCkKK2Jvb2wgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uQ29udGFpbnMoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50KQogewogICAgIEFTU0VSVChtX3dlYlBhZ2UgJiYgbV93ZWJQ
YWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKSAmJiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5zZWxlY3Rpb24oKSk7CiAgICAgcmV0dXJuIG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCktPnNlbGVjdGlvbigpLT5jb250YWlucyhwb2ludCk7Ci0tIAoxLjcuNS40Cgo=
</data>
<flag name="review"
          id="130961"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
    <flag name="commit-queue"
          id="130962"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128726</attachid>
            <date>2012-02-24 06:46:58 -0800</date>
            <delta_ts>2012-02-24 07:34:29 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>0001-2012-02-24-Mike-Fenton-mifenton-rim.com.patch</filename>
            <type>text/plain</type>
            <size>42648</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSAyOGIxYTkwYmRjOGVjMzNjOGNkMDM1MTYyYzI0MzNiZWQ4MGZkN2M5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlmZW50b25AcmltLmNvbT4KRGF0ZTog
RnJpLCAyNCBGZWIgMjAxMiAwOTozOTowMiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDIt
MjQgIE1pa2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KCiAgICAgICAgQ2xlYW4gdXAgdXNh
Z2Ugb2YgQmxhY2tCZXJyeTo6UGxhdGZvcm0gaW4gU2VsZWN0aW9uSGFuZGxlciBhbmQKICAgICAg
ICBleHBsaWNpdGx5IGRlZmluZSB3aGF0IG5hbWVzcGFjZSB0byB1c2UgZm9yIGFtYmlndW91cyBv
YmplY3RzIGxpa2UKICAgICAgICBJbnRSZWN0IGFuZCBJbnRQb2ludC4KCiAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25I
YW5kbGVyLmNwcDoKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVy
OjpjYW5jZWxTZWxlY3Rpb24pOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlv
bkhhbmRsZXI6OmdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4dFF1YWRzRm9yU2VsZWN0aW9uKToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9y
aW5nQ2xpcHBpbmcpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmRpcmVjdGlvbk9mUG9p
bnRSZWxhdGl2ZVRvUmVjdCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9u
SGFuZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50KToKICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uKToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpkaXJlY3Rpb25hbFZpc2libGVQb3NpdGlvbkF0
RXh0ZW50T2ZCb3gpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OnBvaW50SXNPdXRzaWRl
T2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpT
ZWxlY3Rpb25IYW5kbGVyOjpleHRlbmRTZWxlY3Rpb25Ub0ZpZWxkQm91bmRhcnkpOgogICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5w
dXRTZWxlY3Rpb24pOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRs
ZXI6OmNsaXBQb2ludFRvRm9jdXNOb2RlKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpT
ZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24pOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdEF0UG9pbnQpOgogICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCk6CiAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6Y29tcGFyZVBvaW50c1RvUmVmZXJlbmNlUG9pbnQpOgogICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6Om1pblhNaW5ZQ29ybmVyKToKICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjptYXhYTWluWUNvcm5lcik6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6bWlu
WE1heFlDb3JuZXIpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Om1heFhNYXhZQ29ybmVy
KToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpjYXJldExvY2F0aW9uRm9yUmVjdCk6CiAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y2FyZXRDb21wYXJpc29uUG9pbnRGb3JSZWN0KToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjphZGp1c3RDYXJldFJlY3RzKToKICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpjbGlwUmVnaW9uVG9WaXNpYmxl
Q29udGFpbmVyKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpyZWZlcmVuY2VQb2ludCk6
CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9u
UG9zaXRpb25DaGFuZ2VkKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25I
YW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uQ29udGFpbnMpOgotLS0KIFNvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICA0MCArKysrCiAuLi4v
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwICB8ICAxOTcgKysr
KysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDk3
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDYwZDM0MWEu
LmE1NTQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTAyLTI0ICBNaWtlIEZlbnRvbiAgPG1pZmVudG9uQHJpbS5jb20+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIEVsaW1pbmF0ZSBleGNlc3NpdmUgQmxhY2tCZXJyeTo6UGxhdGZvcm0gdXNl
IGluIFNlbGVjdGlvbkhhbmRsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTM5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsZWFuIHVwIHVzYWdlIG9mIEJsYWNrQmVycnk6OlBsYXRmb3JtIGluIFNl
bGVjdGlvbkhhbmRsZXIgYW5kCisgICAgICAgIGV4cGxpY2l0bHkgZGVmaW5lIHdoYXQgbmFtZXNw
YWNlIHRvIHVzZSBmb3IgYW1iaWd1b3VzIG9iamVjdHMgbGlrZQorICAgICAgICBJbnRSZWN0IGFu
ZCBJbnRQb2ludC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OmNhbmNl
bFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRs
ZXI6OmdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4dFF1YWRzRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmluZ0Ns
aXBwaW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6ZGlyZWN0aW9uT2ZQb2ludFJl
bGF0aXZlVG9SZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFu
ZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmRpcmVjdGlvbmFsVmlzaWJsZVBvc2l0aW9uQXRF
eHRlbnRPZkJveCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OnBvaW50SXNPdXRzaWRl
T2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
U2VsZWN0aW9uSGFuZGxlcjo6ZXh0ZW5kU2VsZWN0aW9uVG9GaWVsZEJvdW5kYXJ5KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6dXBkYXRlT3JIYW5kbGVJ
bnB1dFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhh
bmRsZXI6OmNsaXBQb2ludFRvRm9jdXNOb2RlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6U2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0QXRQb2ludCk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbXBhcmVQb2ludHNUb1JlZmVyZW5jZVBvaW50KToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6bWluWE1pbllDb3JuZXIpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjptYXhYTWluWUNvcm5lcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6Om1pblhNYXhZQ29ybmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6bWF4
WE1heFlDb3JuZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpjYXJldExvY2F0aW9u
Rm9yUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNhcmV0Q29tcGFyaXNvblBv
aW50Rm9yUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmFkanVzdENhcmV0UmVj
dHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpjbGlw
UmVnaW9uVG9WaXNpYmxlQ29udGFpbmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
cmVmZXJlbmNlUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25I
YW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvbkNvbnRhaW5z
KToKKwogMjAxMi0wMi0yNCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgU3BlbGxDaGVja1JlcXVlc3QgbmVlZHMgdG8ga25vdyB0aGUgY29udGV4dCB3
aGVyZSB0aGUgc3BlbGxjaGVjayBoYXBwZW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAKaW5kZXgg
MDcyM2M2NS4uZmRhNzFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAKQEAgLTQ5LDE0ICs0OSwx
NSBAQAogCiAjZGVmaW5lIFNIT1dERUJVR19TRUxFQ1RJT05IQU5ETEVSIDAKIAordXNpbmcgbmFt
ZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
ICNpZiBTSE9XREVCVUdfU0VMRUNUSU9OSEFORExFUgotI2RlZmluZSBERUJVR19TRUxFQ1RJT04o
c2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKHNl
dmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQorI2RlZmluZSBERUJVR19TRUxFQ1RJT04o
c2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBsb2dBbHdheXMoc2V2ZXJpdHksIGZvcm1hdCwgIyMgX19W
QV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBERUJVR19TRUxFQ1RJT04oc2V2ZXJpdHksIGZvcm1h
dCwgLi4uKQogI2VuZGlmIC8vIFNIT1dERUJVR19TRUxFQ1RJT05IQU5ETEVSCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtNzUsOSArNzYsOSBAQCBTZWxlY3Rpb25IYW5kbGVyOjp+U2VsZWN0aW9uSGFu
ZGxlcigpCiB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OmNhbmNlbFNlbGVjdGlvbigpCiB7CiAgICAg
bV9zZWxlY3Rpb25BY3RpdmUgPSBmYWxzZTsKLSAgICBtX2xhc3RTZWxlY3Rpb25SZWdpb24gPSBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbigpOworICAgIG1fbGFzdFNlbGVjdGlv
blJlZ2lvbiA9IEludFJlY3RSZWdpb24oKTsKIAotICAgIERFQlVHX1NFTEVDVElPTihCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FuY2VsU2Vs
ZWN0aW9uIik7CisgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhh
bmRsZXI6OmNhbmNlbFNlbGVjdGlvbiIpOwogCiAgICAgaWYgKG1fd2ViUGFnZS0+bV9pbnB1dEhh
bmRsZXItPmlzSW5wdXRNb2RlKCkpCiAgICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXIt
PmNhbmNlbFNlbGVjdGlvbigpOwpAQCAtOTAsNyArOTEsNyBAQCBXZWJTdHJpbmcgU2VsZWN0aW9u
SGFuZGxlcjo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJQYWdlLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwogfQogCi12b2lkIFNl
bGVjdGlvbkhhbmRsZXI6OmdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4dFF1YWRzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkludFJlY3RSZWdpb24mIHJlZ2lvbikgY29uc3QKK3ZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6
Z2V0Q29uc29saWRhdGVkUmVnaW9uT2ZUZXh0UXVhZHNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBJbnRSZWN0UmVnaW9uJiByZWdpb24pIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKHJlZ2lvbi5pc0VtcHR5KCkpOwogCkBAIC0xMDYsMjQgKzEwNywyNCBAQCB2b2lk
IFNlbGVjdGlvbkhhbmRsZXI6OmdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4dFF1YWRzRm9yU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libAogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2Vi
UGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPnZpZXcoKTsKIAogICAgICAgICAvLyBmcmFtZVJl
Y3QgaXMgaW4gZnJhbWUgY29vcmRpbmF0ZXMuCi0gICAgICAgIEludFJlY3QgZnJhbWVSZWN0KElu
dFBvaW50KDAsIDApLCBmcmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgV2ViQ29y
ZTo6SW50UmVjdCBmcmFtZVJlY3QoV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIGZyYW1lVmlldy0+
Y29udGVudHNTaXplKCkpOwogCiAgICAgICAgIC8vIGZyYW1lUG9zaXRpb24gaXMgaW4gbWFpbiBm
cmFtZSBjb29yZGluYXRlcy4KLSAgICAgICAgSW50UG9pbnQgZnJhbWVQb3NpdGlvbiA9IG1fd2Vi
UGFnZS0+ZnJhbWVPZmZzZXQobV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKSk7CisgICAg
ICAgIFdlYkNvcmU6OkludFBvaW50IGZyYW1lUG9zaXRpb24gPSBtX3dlYlBhZ2UtPmZyYW1lT2Zm
c2V0KG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpOwogCiAgICAgICAgIC8vIFRoZSBy
YW5nZXMgcmVjdCBsaXN0IGlzIGJhc2VkIG9uIHJlbmRlciBlbGVtZW50cyBhbmQgbWF5IGluY2x1
ZGUgbXVsdGlwbGUgYWRqYWNlbnQgcmVjdHMuCi0gICAgICAgIC8vIFVzZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiB0byBjb25zb2xpZGF0ZSB0aGVzZSByZWN0cyBpbnRvIGJh
bmRzIGFzIHdlbGwgYXMgYSBjb250YWluZXIgdG8gcGFzcworICAgICAgICAvLyBVc2UgSW50UmVj
dFJlZ2lvbiB0byBjb25zb2xpZGF0ZSB0aGVzZSByZWN0cyBpbnRvIGJhbmRzIGFzIHdlbGwgYXMg
YSBjb250YWluZXIgdG8gcGFzcwogICAgICAgICAvLyB0byB0aGUgY2xpZW50LgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVhZExpc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
ICAgIEludFJlY3QgZW5jbG9zaW5nUmVjdCA9IHF1YWRMaXN0W2ldLmVuY2xvc2luZ0JvdW5kaW5n
Qm94KCk7CisgICAgICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGVuY2xvc2luZ1JlY3QgPSBxdWFk
TGlzdFtpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICAgICAgZW5jbG9zaW5nUmVj
dC5pbnRlcnNlY3QoZnJhbWVSZWN0KTsKICAgICAgICAgICAgIGVuY2xvc2luZ1JlY3QubW92ZShm
cmFtZVBvc2l0aW9uLngoKSwgZnJhbWVQb3NpdGlvbi55KCkpOwotICAgICAgICAgICAgcmVnaW9u
ID0gdW5pb25SZWdpb25zKHJlZ2lvbiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3RSZWdp
b24oZW5jbG9zaW5nUmVjdCkpOworICAgICAgICAgICAgcmVnaW9uID0gdW5pb25SZWdpb25zKHJl
Z2lvbiwgSW50UmVjdFJlZ2lvbihlbmNsb3NpbmdSZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmlu
Z0NsaXBwaW5nKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQp
CitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvaW50SWdub3JpbmdD
bGlwcGluZyhjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcmFt
ZVBvaW50KQogewogICAgIC8vIEZyYW1lOjp2aXNpYmxlUG9zaXRpb25BdFBvaW50IGhhcmQtY29k
ZXMgaWdub3JlQ2xpcHBpbmc9ZmFsc2UgaW4gdGhlCiAgICAgLy8gY2FsbCB0byBoaXRUZXN0UmVz
dWx0QXRQb2ludC4gVGhpcyBoYXMgYSBidWcgd2hlcmUgc29tZSBwYWdlcyAoc3VjaCBhcwpAQCAt
MTQ4LDcgKzE0OSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnRJZ25vcmluZ0NsaXBwaW5nKGNvbnN0IEZyYW1lJiBmcmFtCiAgICAgcmV0dXJuIHZpc2li
bGVQb3M7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb25PZlBvaW50UmVsYXRp
dmVUb1JlY3QoY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBib29sIHVzZVRvcFBhZGRpbmcgPSB0cnVlLCBjb25zdCBib29sIHVzZUJvdHRvbVBhZGRpbmcg
PSB0cnVlKQorc3RhdGljIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbk9mUG9pbnRSZWxhdGl2ZVRv
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHJlY3QsIGNvbnN0IGJvb2wgdXNlVG9wUGFkZGluZyA9IHRydWUsIGNvbnN0IGJvb2wgdXNl
Qm90dG9tUGFkZGluZyA9IHRydWUpCiB7CiAgICAgQVNTRVJUKCFyZWN0LmNvbnRhaW5zKHBvaW50
KSk7CiAKQEAgLTE2OSw3ICsxNzAsNyBAQCBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
T2ZQb2ludFJlbGF0aXZlVG9SZWN0KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29ucwogICAgIHJl
dHVybiAwOwogfQogCi1ib29sIFNlbGVjdGlvbkhhbmRsZXI6OnNob3VsZFVwZGF0ZVNlbGVjdGlv
bk9yQ2FyZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFJlY3QmIGNh
cmV0UmVjdCwgYm9vbCBzdGFydENhcmV0KSBjb25zdAorYm9vbCBTZWxlY3Rpb25IYW5kbGVyOjpz
aG91bGRVcGRhdGVTZWxlY3Rpb25PckNhcmV0Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjYXJldFJlY3QsIGJvb2wgc3RhcnRD
YXJldCkgY29uc3QKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJ
bnB1dE1vZGUoKSk7CiAKQEAgLTE4NCw3ICsxODUsNyBAQCBib29sIFNlbGVjdGlvbkhhbmRsZXI6
OnNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9p
bgogICAgIGJvb2wgYWJvdmVDYXJldCA9IHBvaW50LnkoKSA8IGNhcmV0UmVjdC55KCk7CiAgICAg
Ym9vbCBiZWxvd0NhcmV0ID0gcG9pbnQueSgpID49IGNhcmV0UmVjdC5tYXhZKCk7CiAKLSAgICBE
RUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNlbGVj
dGlvbkhhbmRsZXI6OnNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludCBtdWx0aWxp
bmUgPSAlcyBhYm92ZSA9ICVzIGJlbG93ID0gJXMgZmlyc3QgbGluZSA9ICVzIGxhc3QgbGluZSA9
ICVzIHN0YXJ0ID0gJXMgXG4iCisgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNl
bGVjdGlvbkhhbmRsZXI6OnNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludCBtdWx0
aWxpbmUgPSAlcyBhYm92ZSA9ICVzIGJlbG93ID0gJXMgZmlyc3QgbGluZSA9ICVzIGxhc3QgbGlu
ZSA9ICVzIHN0YXJ0ID0gJXMgXG4iCiAgICAgICAgICAgICAsIG1fd2ViUGFnZS0+bV9pbnB1dEhh
bmRsZXItPmlzTXVsdGlsaW5lSW5wdXRNb2RlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCBhYm92ZUNh
cmV0ID8gInRydWUiIDogImZhbHNlIiwgYmVsb3dDYXJldCA/ICJ0cnVlIiA6ICJmYWxzZSIKICAg
ICAgICAgICAgICwgaW5TYW1lTGluZShjdXJyZW50U2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBz
dGFydE9mRWRpdGFibGVDb250ZW50KGN1cnJlbnRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpKSA/
ICJ0cnVlIiA6ICJmYWxzZSIKICAgICAgICAgICAgICwgaW5TYW1lTGluZShjdXJyZW50U2VsZWN0
aW9uLnZpc2libGVFbmQoKSwgZW5kT2ZFZGl0YWJsZUNvbnRlbnQoY3VycmVudFNlbGVjdGlvbi52
aXNpYmxlRW5kKCkpKSA/ICJ0cnVlIiA6ICJmYWxzZSIKQEAgLTIwMCwxOSArMjAxLDE5IEBAIGJv
b2wgU2VsZWN0aW9uSGFuZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50
KGNvbnN0IEludFBvaW50JiBwb2luCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2VsZWN0
aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBJbnRQb2ludCAmcG9zaXRpb24pCit2
b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNldENhcmV0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgJnBvc2l0aW9uKQogewogICAgIGlmICghbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+
aXNJbnB1dE1vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jYXJldEFjdGl2ZSA9IHRy
dWU7CiAKLSAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
SW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNldENhcmV0UG9zaXRpb24gcmVxdWVzdGVkIHBvaW50
ICVkLCAlZCIsIHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpKTsKKyAgICBERUJVR19TRUxFQ1RJ
T04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbiByZXF1
ZXN0ZWQgcG9pbnQgJWQsICVkIiwgcG9zaXRpb24ueCgpLCBwb3NpdGlvbi55KCkpOwogCiAgICAg
RnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgRnJhbWVTZWxlY3Rpb24qIGNvbnRyb2xsZXIgPSBmb2N1c2VkRnJhbWUtPnNlbGVjdGlvbigp
OwotICAgIEludFBvaW50IHJlbGF0aXZlUG9pbnQgPSBET01TdXBwb3J0Ojpjb252ZXJ0UG9pbnRU
b0ZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCksIGZvY3VzZWRGcmFtZSwgcG9zaXRpb24pOwot
ICAgIEludFJlY3QgY3VycmVudENhcmV0UmVjdCA9IGNvbnRyb2xsZXItPnNlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCByZWxhdGl2ZVBvaW50ID0gRE9NU3VwcG9ydDo6Y29udmVydFBvaW50VG9GcmFtZShtX3dlYlBh
Z2UtPm1haW5GcmFtZSgpLCBmb2N1c2VkRnJhbWUsIHBvc2l0aW9uKTsKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IGN1cnJlbnRDYXJldFJlY3QgPSBjb250cm9sbGVyLT5zZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAKICAgICBpZiAocmVsYXRpdmVQb2ludCA9
PSBET01TdXBwb3J0OjpJbnZhbGlkUG9pbnQgfHwgIXNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2Fy
ZXRGb3JQb2ludChyZWxhdGl2ZVBvaW50LCBjdXJyZW50Q2FyZXRSZWN0KSkgewogICAgICAgICBz
ZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoKTsKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFNlbGVj
dGlvbkhhbmRsZXI6OnNldENhcmV0UG9zaXRpb24oY29uc3QgSW50UG9pbnQgJnBvc2l0aW9uKQog
CiAgICAgaWYgKCFET01TdXBwb3J0Ojppc1Bvc2l0aW9uSW5Ob2RlKG1fd2ViUGFnZS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCksIHZpc2libGVDYXJldFBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIGlmICh1bnNpZ25lZCBzaG9ydCBj
aGFyYWN0ZXIgPSBkaXJlY3Rpb25PZlBvaW50UmVsYXRpdmVUb1JlY3QocmVsYXRpdmVQb2ludCwg
Y3VycmVudENhcmV0UmVjdCkpCi0gICAgICAgICAgICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVy
LT5oYW5kbGVLZXlib2FyZElucHV0KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50
KGNoYXJhY3RlcikpOworICAgICAgICAgICAgbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aGFu
ZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudChjaGFyYWN0ZXIpKTsKIAog
ICAgICAgICBzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjM3LDcgKzIzOCw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbihj
b25zdCBJbnRQb2ludCAmcG9zaXRpb24pCiAKICAgICBjb250cm9sbGVyLT5zZXRTZWxlY3Rpb24o
bmV3U2VsZWN0aW9uKTsKIAotICAgIERFQlVHX1NFTEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbiBwb2lu
dCB2YWxpZCwgY3Vyc29yIHVwZGF0ZWQiKTsKKyAgICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxJ
bmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbiBwb2ludCB2YWxpZCwgY3Vy
c29yIHVwZGF0ZWQiKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBtYWtlcyBzdXJlIHdlIGFyZSBu
b3QgcmVkdWNpbmcgdGhlIHNlbGVjdGlvbiB0byBhIGNhcmV0IHNlbGVjdGlvbi4KQEAgLTI3MCw3
ICsyNzEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRFeHRlbmRTZWxlY3Rpb25JbkRpcmVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sCiAgICAgcmV0dXJuIHRlbXBTZWxlY3Rp
b24uc2VsZWN0aW9uKCkuc2VsZWN0aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246OlJhbmdl
U2VsZWN0aW9uOwogfQogCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGRpcmVjdGlvbmFsVmlzaWJs
ZVBvc2l0aW9uQXRFeHRlbnRPZkJveChGcmFtZSogZnJhbWUsIGNvbnN0IEludFJlY3QmIGJvdW5k
aW5nQm94LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGNvbnN0IEludFBvaW50JiBiYXNlUG9p
bnQpCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGRpcmVjdGlvbmFsVmlzaWJsZVBvc2l0aW9uQXRF
eHRlbnRPZkJveChGcmFtZSogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGJvdW5kaW5n
Qm94LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBi
YXNlUG9pbnQpCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsKIApAQCAtMjgwLDI0ICsyODEsMjQgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBkaXJlY3Rpb25hbFZpc2libGVQb3NpdGlvbkF0RXh0ZW50
T2ZCb3goRnJhbWUqIGZyYW1lLCBjb24KICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNh
c2UgS0VZQ09ERV9MRUZUOgogICAgICAgICAvLyBFeHRlbmQgeCB0byBzdGFydCB3aXRob3V0IG1v
ZGlmeWluZyB5LgotICAgICAgICByZXR1cm4gZnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50
KEludFBvaW50KGJvdW5kaW5nQm94LngoKSwgYmFzZVBvaW50LnkoKSkpOworICAgICAgICByZXR1
cm4gZnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KFdlYkNvcmU6OkludFBvaW50KGJvdW5k
aW5nQm94LngoKSwgYmFzZVBvaW50LnkoKSkpOwogICAgIGNhc2UgS0VZQ09ERV9SSUdIVDoKICAg
ICAgICAgLy8gRXh0ZW5kIHggdG8gZW5kIHdpdGhvdXQgbW9kaWZ5aW5nIHkuCi0gICAgICAgIHJl
dHVybiBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoYm91bmRpbmdCb3gu
bWF4WCgpLCBiYXNlUG9pbnQueSgpKSk7CisgICAgICAgIHJldHVybiBmcmFtZS0+dmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoYm91bmRpbmdCb3gubWF4WCgpLCBiYXNl
UG9pbnQueSgpKSk7CiAgICAgY2FzZSBLRVlDT0RFX1VQOgogICAgICAgICAvLyBFeHRlbmQgeSB0
byB0b3Agd2l0aG91dCBtb2RpZnlpbmcgeC4KLSAgICAgICAgcmV0dXJuIGZyYW1lLT52aXNpYmxl
UG9zaXRpb25Gb3JQb2ludChJbnRQb2ludChiYXNlUG9pbnQueCgpLCBib3VuZGluZ0JveC55KCkp
KTsKKyAgICAgICAgcmV0dXJuIGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChXZWJDb3Jl
OjpJbnRQb2ludChiYXNlUG9pbnQueCgpLCBib3VuZGluZ0JveC55KCkpKTsKICAgICBjYXNlIEtF
WUNPREVfRE9XTjoKICAgICAgICAgLy8gRXh0ZW5kIHkgdG8gYm90dG9tIHdpdGhvdXQgbW9kaWZ5
aW5nIHguCi0gICAgICAgIHJldHVybiBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoSW50
UG9pbnQoYmFzZVBvaW50LngoKSwgYm91bmRpbmdCb3gubWF4WSgpKSk7CisgICAgICAgIHJldHVy
biBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoYmFzZVBv
aW50LngoKSwgYm91bmRpbmdCb3gubWF4WSgpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgcmV0dXJuIGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChJ
bnRQb2ludChiYXNlUG9pbnQueCgpLCBiYXNlUG9pbnQueSgpKSk7CisgICAgcmV0dXJuIGZyYW1l
LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludChiYXNlUG9pbnQueCgp
LCBiYXNlUG9pbnQueSgpKSk7CiB9CiAKLXN0YXRpYyBib29sIHBvaW50SXNPdXRzaWRlT2ZCb3Vu
ZGluZ0JveEluRGlyZWN0aW9uKHVuc2lnbmVkIGRpcmVjdGlvbiwgY29uc3QgSW50UG9pbnQmIHNl
bGVjdGlvblBvaW50LCBjb25zdCBJbnRSZWN0JiBib3VuZGluZ0JveCkKK3N0YXRpYyBib29sIHBv
aW50SXNPdXRzaWRlT2ZCb3VuZGluZ0JveEluRGlyZWN0aW9uKHVuc2lnbmVkIGRpcmVjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNlbGVjdGlvblBvaW50LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBib3VuZGluZ0JveCkKIHsKICAgICBpZiAoKGRpcmVjdGlvbiA9PSBLRVlDT0RFX0xF
RlQgJiYgc2VsZWN0aW9uUG9pbnQueCgpIDwgYm91bmRpbmdCb3gueCgpKQogICAgICAgICB8fCAo
ZGlyZWN0aW9uID09IEtFWUNPREVfVVAgJiYgc2VsZWN0aW9uUG9pbnQueSgpIDwgYm91bmRpbmdC
b3gueSgpKQpAQCAtMzA4LDcgKzMwOSw3IEBAIHN0YXRpYyBib29sIHBvaW50SXNPdXRzaWRlT2ZC
b3VuZGluZ0JveEluRGlyZWN0aW9uKHVuc2lnbmVkIGRpcmVjdGlvbiwgY29uc3QgSW50CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi11bnNpZ25lZCBzaG9ydCBTZWxlY3Rpb25IYW5kbGVyOjpleHRl
bmRTZWxlY3Rpb25Ub0ZpZWxkQm91bmRhcnkoYm9vbCBpc1N0YXJ0SGFuZGxlLCBjb25zdCBJbnRQ
b2ludCYgc2VsZWN0aW9uUG9pbnQsIFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikKK3Vu
c2lnbmVkIHNob3J0IFNlbGVjdGlvbkhhbmRsZXI6OmV4dGVuZFNlbGVjdGlvblRvRmllbGRCb3Vu
ZGFyeShib29sIGlzU3RhcnRIYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzZWxlY3Rp
b25Qb2ludCwgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uKQogewogICAgIEZyYW1lKiBm
b2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICgh
Zm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpIHx8ICFmb2N1c2VkRnJhbWUt
PmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVyKCkpCkBAIC0zMTYsMTAgKzMxNywx
MCBAQCB1bnNpZ25lZCBzaG9ydCBTZWxlY3Rpb25IYW5kbGVyOjpleHRlbmRTZWxlY3Rpb25Ub0Zp
ZWxkQm91bmRhcnkoYm9vbCBpc1N0YXJ0SGFuZAogCiAgICAgRnJhbWVTZWxlY3Rpb24qIGNvbnRy
b2xsZXIgPSBmb2N1c2VkRnJhbWUtPnNlbGVjdGlvbigpOwogCi0gICAgSW50UmVjdCBjYXJldFJl
Y3QgPSBpc1N0YXJ0SGFuZGxlID8gY29udHJvbGxlci0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCkuYWJzb2x1dGVDYXJldEJvdW5kcygpCisgICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3Qg
PSBpc1N0YXJ0SGFuZGxlID8gY29udHJvbGxlci0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCku
YWJzb2x1dGVDYXJldEJvdW5kcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogY29udHJvbGxlci0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLmFic29sdXRlQ2FyZXRC
b3VuZHMoKTsKIAotICAgIEludFJlY3Qgbm9kZUJvdW5kaW5nQm94ID0gZm9jdXNlZEZyYW1lLT5k
b2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOworICAgIFdlYkNvcmU6OkludFJlY3Qgbm9kZUJvdW5kaW5nQm94ID0gZm9jdXNlZEZy
YW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpOwogICAgIG5vZGVCb3VuZGluZ0JveC5pbmZsYXRlKC0xKTsKIAogICAgIC8v
IFN0YXJ0IGhhbmRsZSBpcyBvdXRzaWRlIG9mIHRoZSBmaWVsZC4gVHJlYXQgaXQgYXMgdGhlIGNo
YW5nZWQgaGFuZGxlIGFuZCBtb3ZlCkBAIC0zNTIsOCArMzUzLDggQEAgdW5zaWduZWQgc2hvcnQg
U2VsZWN0aW9uSGFuZGxlcjo6ZXh0ZW5kU2VsZWN0aW9uVG9GaWVsZEJvdW5kYXJ5KGJvb2wgaXNT
dGFydEhhbmQKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIGhhbmRsZWQuCi1ib29sIFNlbGVjdGlv
bkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5wdXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiYg
bmV3U2VsZWN0aW9uLCBjb25zdCBJbnRQb2ludCYgcmVsYXRpdmVTdGFydAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgY29uc3QgSW50UG9pbnQm
IHJlbGF0aXZlRW5kKQorYm9vbCBTZWxlY3Rpb25IYW5kbGVyOjp1cGRhdGVPckhhbmRsZUlucHV0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHJlbGF0aXZlU3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiByZWxhdGl2ZUVu
ZCkKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJbnB1dE1vZGUo
KSk7CiAKQEAgLTM2NCw4ICszNjUsOCBAQCBib29sIFNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9y
SGFuZGxlSW5wdXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aQogCiAgICAg
RnJhbWVTZWxlY3Rpb24qIGNvbnRyb2xsZXIgPSBmb2N1c2VkRnJhbWUtPnNlbGVjdGlvbigpOwog
Ci0gICAgSW50UmVjdCBjdXJyZW50U3RhcnRDYXJldFJlY3QgPSBjb250cm9sbGVyLT5zZWxlY3Rp
b24oKS52aXNpYmxlU3RhcnQoKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7Ci0gICAgSW50UmVjdCBj
dXJyZW50RW5kQ2FyZXRSZWN0ID0gY29udHJvbGxlci0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgp
LmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGN1cnJlbnRTdGFy
dENhcmV0UmVjdCA9IGNvbnRyb2xsZXItPnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLmFic29s
dXRlQ2FyZXRCb3VuZHMoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGN1cnJlbnRFbmRDYXJldFJl
Y3QgPSBjb250cm9sbGVyLT5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkuYWJzb2x1dGVDYXJldEJv
dW5kcygpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGhhbmRsZSBtb3ZlbWVudCBpcyB2YWxpZC4K
ICAgICBpZiAoIXNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludChyZWxhdGl2ZVN0
YXJ0LCBjdXJyZW50U3RhcnRDYXJldFJlY3QsIHRydWUgLyogc3RhcnRDYXJldCAqLykKQEAgLTM3
NCw3ICszNzUsNyBAQCBib29sIFNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5wdXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBJbnRSZWN0IG5vZGVCb3VuZGluZ0JveCA9IGZvY3VzZWROb2RlLT5y
ZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIFdlYkNvcmU6OkludFJl
Y3Qgbm9kZUJvdW5kaW5nQm94ID0gZm9jdXNlZE5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7CiAKICAgICAvLyBPbmx5IGRvIHNwZWNpYWwgaGFuZGxpbmcgaWYgb25l
IGhhbmRsZSBpcyBvdXRzaWRlIG9mIHRoZSBub2RlLgogICAgIGJvb2wgc3RhcnRJc091dHNpZGVP
ZkZpZWxkID0gcmVsYXRpdmVTdGFydCAhPSBET01TdXBwb3J0OjpJbnZhbGlkUG9pbnQgJiYgIW5v
ZGVCb3VuZGluZ0JveC5jb250YWlucyhyZWxhdGl2ZVN0YXJ0KTsKQEAgLTQwMCwxMCArNDAxLDEw
IEBAIGJvb2wgU2VsZWN0aW9uSGFuZGxlcjo6dXBkYXRlT3JIYW5kbGVJbnB1dFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3RpCiAgICAgaWYgKCFjaGFyYWN0ZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIERFQlVHX1NFTEVDVElPTihCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIG1ha2luZyBz
ZWxlY3Rpb24gY2hhbmdlIGF0dGVtcHQgdXNpbmcga2V5IGV2ZW50ICVkIiwgY2hhcmFjdGVyKTsK
KyAgICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0
U2VsZWN0aW9uIG1ha2luZyBzZWxlY3Rpb24gY2hhbmdlIGF0dGVtcHQgdXNpbmcga2V5IGV2ZW50
ICVkIiwgY2hhcmFjdGVyKTsKIAogICAgIGlmIChzaG91bGRFeHRlbmRTZWxlY3Rpb25JbkRpcmVj
dGlvbihjb250cm9sbGVyLT5zZWxlY3Rpb24oKSwgY2hhcmFjdGVyKSkKLSAgICAgICAgbV93ZWJQ
YWdlLT5tX2lucHV0SGFuZGxlci0+aGFuZGxlS2V5Ym9hcmRJbnB1dChCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6S2V5Ym9hcmRFdmVudChjaGFyYWN0ZXIsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXli
b2FyZEV2ZW50OjpLZXlEb3duLCBLRVlNT0RfU0hJRlQpKTsKKyAgICAgICAgbV93ZWJQYWdlLT5t
X2lucHV0SGFuZGxlci0+aGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVu
dChjaGFyYWN0ZXIsIFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duLCBLRVlNT0RfU0hJ
RlQpKTsKIAogICAgIC8vIE11c3Qgc2VuZCB0aGUgc2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkIGV2
ZXJ5IHRpbWUsIHNvbWV0aW1lcyB0aGlzIHdpbGwgZHVwbGljYXRlIGJ1dCBhbiBhY2NlcHRlZAog
ICAgIC8vIGhhbmRsZU5hdmlnYXRpb25Nb3ZlIG1heSBub3QgbWFrZSBhbiBhY3R1YWwgc2VsZWN0
aW9uIGNoYW5nZS4KQEAgLTQxMSwyNyArNDEyLDI5IEBAIGJvb2wgU2VsZWN0aW9uSGFuZGxlcjo6
dXBkYXRlT3JIYW5kbGVJbnB1dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUludFBvaW50IFNlbGVjdGlvbkhhbmRsZXI6OmNsaXBQ
b2ludFRvRm9jdXNOb2RlKGNvbnN0IEludFBvaW50JiBwb2ludCkKK1dlYkNvcmU6OkludFBvaW50
IFNlbGVjdGlvbkhhbmRsZXI6OmNsaXBQb2ludFRvRm9jdXNOb2RlKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCkKIHsKLSAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gbV93ZWJQYWdlLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBGcmFtZVNlbGVjdGlvbiogY29udHJvbGxlciA9IGZv
Y3VzZWRGcmFtZS0+c2VsZWN0aW9uKCk7CisgICAgLy8gQ2xpcHBpbmcgc2hvdWxkIG9ubHkgaGFw
cGVuIGlmIHdlIGFyZSBpbiBhbiBpbnB1dCBmaWVsZC4KKyAgICBpZiAoIW1fd2ViUGFnZS0+bV9p
bnB1dEhhbmRsZXItPmlzSW5wdXRNb2RlKCkpCisgICAgICAgIHJldHVybiBwb2ludDsKIAorICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIGlmICghZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpIHx8ICFmb2N1
c2VkRnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiBwb2ludDsKIAotICAgIEludFJlY3QgZm9jdXNlZE5vZGVCb3VuZGluZ0JveCA9IGZv
Y3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKS0+cmVuZGVyZXIoKS0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGZvY3VzZWROb2RlQm91
bmRpbmdCb3ggPSBmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRl
cmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgZm9jdXNlZE5vZGVCb3VuZGlu
Z0JveC5pbmZsYXRlKC0xKTsKIAotICAgIEludFBvaW50IGNsaXBwZWRQb2ludCA9IHBvaW50Owor
ICAgIFdlYkNvcmU6OkludFBvaW50IGNsaXBwZWRQb2ludCA9IHBvaW50OwogICAgIGlmICghZm9j
dXNlZE5vZGVCb3VuZGluZ0JveC5jb250YWlucyhjbGlwcGVkUG9pbnQpKQotICAgICAgICBjbGlw
cGVkUG9pbnQgPSBJbnRQb2ludCgKKyAgICAgICAgY2xpcHBlZFBvaW50ID0gV2ViQ29yZTo6SW50
UG9pbnQoCiAgICAgICAgICAgICBwb2ludC54KCkgPCBmb2N1c2VkTm9kZUJvdW5kaW5nQm94Lngo
KSA/IGZvY3VzZWROb2RlQm91bmRpbmdCb3gueCgpIDogc3RkOjptaW4oZm9jdXNlZE5vZGVCb3Vu
ZGluZ0JveC5tYXhYKCksIHBvaW50LngoKSksCiAgICAgICAgICAgICBwb2ludC55KCkgPCBmb2N1
c2VkTm9kZUJvdW5kaW5nQm94LnkoKSA/IGZvY3VzZWROb2RlQm91bmRpbmdCb3gueSgpIDogc3Rk
OjptaW4oZm9jdXNlZE5vZGVCb3VuZGluZ0JveC5tYXhZKCksIHBvaW50LnkoKSkpOwogCiAgICAg
cmV0dXJuIGNsaXBwZWRQb2ludDsKIH0KIAotdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxl
Y3Rpb24oY29uc3QgSW50UG9pbnQmIHN0YXJ0LCBjb25zdCBJbnRQb2ludCYgZW5kKQordm9pZCBT
ZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHN0
YXJ0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZW5kKQogewogICAgIG1fc2VsZWN0aW9uQWN0
aXZlID0gdHJ1ZTsKIApAQCAtNDQyLDcgKzQ0NSw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6
c2V0U2VsZWN0aW9uKGNvbnN0IEludFBvaW50JiBzdGFydCwgY29uc3QgSW50UG9pbnQmIGVuZCkK
ICAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBGcmFtZVNlbGVjdGlvbiogY29udHJvbGxlciA9IGZvY3VzZWRGcmFtZS0+c2VsZWN0
aW9uKCk7CiAKLSAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbiBhZGp1c3RlZCBwb2ludHMg
JWQsICVkLCAlZCwgJWQiLCBzdGFydC54KCksIHN0YXJ0LnkoKSwgZW5kLngoKSwgZW5kLnkoKSk7
CisgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNl
dFNlbGVjdGlvbiBhZGp1c3RlZCBwb2ludHMgJWQsICVkLCAlZCwgJWQiLCBzdGFydC54KCksIHN0
YXJ0LnkoKSwgZW5kLngoKSwgZW5kLnkoKSk7CiAKICAgICAvLyBOb3RlIHRoYXQgSW50UG9pbnQo
LTEsIC0xKSBpcyBiZWluZyBvdXIgc2VudGluZWwgc28gZmFyIGZvcgogICAgIC8vIGNsaXBwZWQg
b3V0IHNlbGVjdGlvbiBzdGFydGluZyBvciBlbmRpbmcgbG9jYXRpb24uCkBAIC00NTIsOCArNDU1
LDggQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24oY29uc3QgSW50UG9pbnQm
IHN0YXJ0LCBjb25zdCBJbnRQb2ludCYgZW5kKQogICAgIC8vIEF0IGxlYXN0IG9uZSBvZiB0aGUg
bG9jYXRpb25zIG11c3QgYmUgdmFsaWQuCiAgICAgQVNTRVJUKHN0YXJ0SXNWYWxpZCB8fCBtX2xh
c3RVcGRhdGVkRW5kUG9pbnRJc1ZhbGlkKTsKIAotICAgIEludFBvaW50IHJlbGF0aXZlU3RhcnQg
PSBzdGFydDsKLSAgICBJbnRQb2ludCByZWxhdGl2ZUVuZCA9IGVuZDsKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCByZWxhdGl2ZVN0YXJ0ID0gc3RhcnQ7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgcmVs
YXRpdmVFbmQgPSBlbmQ7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihjb250
cm9sbGVyLT5zZWxlY3Rpb24oKSk7CiAKQEAgLTQ5NCw3ICs0OTcsNyBAQCB2b2lkIFNlbGVjdGlv
bkhhbmRsZXI6OnNldFNlbGVjdGlvbihjb25zdCBJbnRQb2ludCYgc3RhcnQsIGNvbnN0IEludFBv
aW50JiBlbmQpCiAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBzaXplIGlzIHJlZHVjZSB0byBsZXNz
IHRoYW4gYSBjaGFyYWN0ZXIsIHNlbGVjdGlvbiB0eXBlIGJlY29tZXMKICAgICAvLyBDYXJldC4g
QXMgbG9uZyBhcyBpdCBpcyBzdGlsbCBhIHJhbmdlLCBpdCdzIGEgdmFsaWQgc2VsZWN0aW9uLiBT
ZWxlY3Rpb24gY2Fubm90CiAgICAgLy8gYmUgY2FuY2VsbGVkIHRocm91Z2ggdGhpcyBmdW5jdGlv
bi4KLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiByZWdpb247CisgICAg
SW50UmVjdFJlZ2lvbiByZWdpb247CiAgICAgZ2V0Q29uc29saWRhdGVkUmVnaW9uT2ZUZXh0UXVh
ZHNGb3JTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCByZWdpb24pOwogICAgIGNsaXBSZWdpb25Ub1Zp
c2libGVDb250YWluZXIocmVnaW9uKTsKICAgICBpZiAoIXJlZ2lvbi5pc0VtcHR5KCkpIHsKQEAg
LTUwNCwxMiArNTA3LDEyIEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uKGNv
bnN0IEludFBvaW50JiBzdGFydCwgY29uc3QgSW50UG9pbnQmIGVuZCkKIAogICAgICAgICBjb250
cm9sbGVyLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKIAotICAgICAgICBERUJVR19TRUxF
Q1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRs
ZXI6OnNldFNlbGVjdGlvbiBzZWxlY3Rpb24gcG9pbnRzIHZhbGlkLCBzZWxlY3Rpb24gdXBkYXRl
ZCIpOworICAgICAgICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFu
ZGxlcjo6c2V0U2VsZWN0aW9uIHNlbGVjdGlvbiBwb2ludHMgdmFsaWQsIHNlbGVjdGlvbiB1cGRh
dGVkIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVxdWVzdGVkIHNlbGVjdGlvbiByZXN1
bHRzIGluIGFuIGVtcHR5IHNlbGVjdGlvbiwgc2tpcCB0aGlzIGNoYW5nZS4KICAgICAgICAgc2Vs
ZWN0aW9uUG9zaXRpb25DaGFuZ2VkKCk7CiAKLSAgICAgICAgREVCVUdfU0VMRUNUSU9OKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxl
Y3Rpb24gc2VsZWN0aW9uIHBvaW50cyBpbnZhbGlkLCBzZWxlY3Rpb24gbm90IHVwZGF0ZWQiKTsK
KyAgICAgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsV2FybiwgIlNlbGVjdGlvbkhhbmRsZXI6
OnNldFNlbGVjdGlvbiBzZWxlY3Rpb24gcG9pbnRzIGludmFsaWQsIHNlbGVjdGlvbiBub3QgdXBk
YXRlZCIpOwogICAgIH0KIH0KIApAQCAtNTI2LDcgKzUyOSw3IEBAIHN0YXRpYyBOb2RlKiBlbmNs
b3NpbmdMaW5rRXZlbnRQYXJlbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGxpbmtO
b2RlICYmIGxpbmtOb2RlLT5pc0xpbmsoKSA/IGxpbmtOb2RlIDogMDsKIH0KIAotdm9pZCBTZWxl
Y3Rpb25IYW5kbGVyOjpzZWxlY3RBdFBvaW50KGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKK3Zv
aWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgbG9jYXRpb24pCiB7CiAgICAgLy8gSWYgcG9pbnQgaXMgaW52YWxpZCB0cmlnZ2VyIHNlbGVj
dGlvbiBiYXNlZCBleHBhbnNpb24uCiAgICAgaWYgKGxvY2F0aW9uID09IERPTVN1cHBvcnQ6Oklu
dmFsaWRQb2ludCkgewpAQCAtNTM1LDcgKzUzOCw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6
c2VsZWN0QXRQb2ludChjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiAgICAgfQogCiAgICAgTm9k
ZSogdGFyZ2V0Tm9kZTsKLSAgICBJbnRQb2ludCB0YXJnZXRQb3NpdGlvbjsKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCB0YXJnZXRQb3NpdGlvbjsKICAgICAvLyBGSVhNRTogRmFjdG9yeSB0aGlzIGdl
dCByaWdodCBmYXQgZmluZ2VyIGNvZGUgaW50byBhIGhlbHBlci4KICAgICBjb25zdCBGYXRGaW5n
ZXJzUmVzdWx0IGxhc3RGYXRGaW5nZXJzUmVzdWx0ID0gbV93ZWJQYWdlLT5tX3RvdWNoRXZlbnRI
YW5kbGVyLT5sYXN0RmF0RmluZ2Vyc1Jlc3VsdCgpOwogICAgIGlmIChsYXN0RmF0RmluZ2Vyc1Jl
c3VsdC5wb3NpdGlvbldhc0FkanVzdGVkKCkgJiYgbGFzdEZhdEZpbmdlcnNSZXN1bHQubm9kZUFz
RWxlbWVudElmQXBwbGljYWJsZSgpKSB7CkBAIC01ODQsMTUgKzU4NywxNSBAQCBzdGF0aWMgYm9v
bCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lKiBmcmFtZSwgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3RpbwogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGVk
UmFuZ2UobmV3UmFuZ2UuZ2V0KCksIGFmZmluaXR5LCB0cnVlKTsKIH0KIAotdm9pZCBTZWxlY3Rp
b25IYW5kbGVyOjpzZWxlY3RPYmplY3QoY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVj
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24sIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSkKIHsKICAgICBBU1NFUlQobG9jYXRpb24ueCgpID49IDAgJiYgbG9jYXRpb24ueSgp
ID49IDApOwogICAgIEFTU0VSVChtX3dlYlBhZ2UgJiYgbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKSAmJiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKSk7
CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAKLSAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
SW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCBhZGp1c3RlZCBwb2ludHMgJWQs
ICVkIiwgbG9jYXRpb24ueCgpLCBsb2NhdGlvbi55KCkpOworICAgIERFQlVHX1NFTEVDVElPTihM
b2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3RPYmplY3QgYWRqdXN0ZWQgcG9p
bnRzICVkLCAlZCIsIGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKTsKIAotICAgIEludFBvaW50
IHJlbGF0aXZlUG9pbnQgPSBET01TdXBwb3J0Ojpjb252ZXJ0UG9pbnRUb0ZyYW1lKG1fd2ViUGFn
ZS0+bWFpbkZyYW1lKCksIGZvY3VzZWRGcmFtZSwgbG9jYXRpb24pOworICAgIFdlYkNvcmU6Oklu
dFBvaW50IHJlbGF0aXZlUG9pbnQgPSBET01TdXBwb3J0Ojpjb252ZXJ0UG9pbnRUb0ZyYW1lKG1f
d2ViUGFnZS0+bWFpbkZyYW1lKCksIGZvY3VzZWRGcmFtZSwgbG9jYXRpb24pOwogICAgIFZpc2li
bGVQb3NpdGlvbiBwb2ludExvY2F0aW9uKGZvY3VzZWRGcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQocmVsYXRpdmVQb2ludCkpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0g
VmlzaWJsZVNlbGVjdGlvbihwb2ludExvY2F0aW9uLCBwb2ludExvY2F0aW9uKTsKIApAQCAtNjA5
LDcgKzYxMiw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0T2JqZWN0KFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSkKICAgICBBU1NFUlQobV93ZWJQYWdlLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKSAmJiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKSk7
CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAKLSAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
SW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCB1c2luZyBjdXJyZW50IHNlbGVj
dGlvbiIpOworICAgIERFQlVHX1NFTEVDVElPTihMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5k
bGVyOjpzZWxlY3RPYmplY3QgdXNpbmcgY3VycmVudCBzZWxlY3Rpb24iKTsKIAogICAgIC8vIFVz
ZSB0aGUgY3VycmVudCBzZWxlY3Rpb24gYXMgdGhlIHNlbGVjdGlvbiBwb2ludC4KICAgICBBU1NF
UlQoZm9jdXNlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uVHlwZSgpICE9IFZpc2libGVT
ZWxlY3Rpb246Ok5vU2VsZWN0aW9uKTsKQEAgLTYyNiw3ICs2MjksNyBAQCB2b2lkIFNlbGVjdGlv
bkhhbmRsZXI6OnNlbGVjdE9iamVjdChOb2RlKiBub2RlKQogICAgIEFTU0VSVChtX3dlYlBhZ2Ug
JiYgbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKSAmJiBtX3dlYlBhZ2UtPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKSk7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1f
d2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBERUJVR19TRUxFQ1RJT04oQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVj
dE5vZGUiKTsKKyAgICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFu
ZGxlcjo6c2VsZWN0Tm9kZSIpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBW
aXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUobm9kZSk7CiAgICAg
Zm9jdXNlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7CkBAIC02
NDcsNyArNjUwLDcgQEAgc3RhdGljIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uT2ZFbmNsb3NpbmdC
bG9jayhGcmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uKQogLy8gUmV0dXJucyA+IDAgaWYgcDEgaXMg
ImNsb3NlciIgdG8gcmVmZXJlbmNlUG9pbnQsIDwgMCBpZiBwMiBpcyAiY2xvc2VyIiwgMCBpZiB0
aGV5IGFyZSBlcXVpZGlzdGFudC4KIC8vIEJlY2F1c2UgdGV4dCBpcyB1c3VhbGx5IGFycmFuZ2Vk
IGluIGhvcml6b250YWwgcm93cywgZGlzdGFuY2UgaXMgbWVhc3VyZWQgYWxvbmcgdGhlIHktYXhp
cywgd2l0aCB4LWF4aXMgdXNlZCBvbmx5IHRvIGJyZWFrIHRpZXMuCiAvLyBJZiByaWdodEdyYXZp
dHkgaXMgdHJ1ZSwgdGhlIHJpZ2h0LW1vc3QgeC1jb29yZGluYXRlIGlzIGNob3Nlbiwgb3RoZXJ3
aXNlIHRlaCBsZWZ0LW1vc3QgY29vcmRpbmF0ZSBpcyBjaG9zZW4uCi1zdGF0aWMgaW5saW5lIGlu
dCBjb21wYXJlUG9pbnRzVG9SZWZlcmVuY2VQb2ludChjb25zdCBJbnRQb2ludCYgcDEsIGNvbnN0
IEludFBvaW50JiBwMiwgY29uc3QgSW50UG9pbnQmIHJlZmVyZW5jZVBvaW50LCBib29sIHJpZ2h0
R3Jhdml0eSkKK3N0YXRpYyBpbmxpbmUgaW50IGNvbXBhcmVQb2ludHNUb1JlZmVyZW5jZVBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwMSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHAy
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcmVmZXJlbmNlUG9pbnQsIGJvb2wgcmlnaHRHcmF2
aXR5KQogewogICAgIGludCBkeTEgPSBhYnMocmVmZXJlbmNlUG9pbnQueSgpIC0gcDEueSgpKTsK
ICAgICBpbnQgZHkyID0gYWJzKHJlZmVyZW5jZVBvaW50LnkoKSAtIHAyLnkoKSk7CkBAIC02Njcs
MTAgKzY3MCwxMCBAQCBzdGF0aWMgaW5saW5lIGludCBjb21wYXJlUG9pbnRzVG9SZWZlcmVuY2VQ
b2ludChjb25zdCBJbnRQb2ludCYgcDEsIGNvbnN0IEludFBvaQogLy8gTk9URS9GSVhNRTogRHVl
IHRvIHI3NzI4Niwgd2UgYXJlIGdldHRpbmcgb2ZmLWJ5LW9uZSByZXN1bHRzIGluIHRoZSBJbnRS
ZWN0IGNsYXNzIGNvdW50ZXJwYXJ0IGltcGxlbWVudGF0aW9uIG9mIHRoZQogLy8gICAgICAgICAg
ICAgbWV0aG9kcyBiZWxvdy4gQXMgZG9uZSBpbiByODk4MDMsIHI3NzkyOCBhbmQgYSBmZXcgb3Ro
ZXJzLCBsZXRzIHVzZSBsb2NhbCBtZXRob2QgdG8gZml4IGl0LgogLy8gICAgICAgICAgICAgV2Ug
c2hvdWxkIGtlZXAgb3VyIGV5ZXMgdmVyeSBvcGVuIG9uIGl0LCBzaW5jZSBpdCBjYW4gYWZmZWN0
IEJhY2tpbmdTdG9yZSB2ZXJ5IGJhZGx5Lgotc3RhdGljIEludFBvaW50IG1pblhNaW5ZQ29ybmVy
KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3QubG9jYXRpb24oKTsgfSAvLyB0eXBp
Y2FsbHkgdG9wTGVmdAotc3RhdGljIEludFBvaW50IG1heFhNaW5ZQ29ybmVyKGNvbnN0IEludFJl
Y3QmIHJlY3QpIHsgcmV0dXJuIEludFBvaW50KHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gMSwg
cmVjdC55KCkpOyB9IC8vIHR5cGljYWxseSB0b3BSaWdodAotc3RhdGljIEludFBvaW50IG1pblhN
YXhZQ29ybmVyKGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIEludFBvaW50KHJlY3QueCgp
LCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLSAxKTsgfSAvLyB0eXBpY2FsbHkgYm90dG9tTGVm
dAotc3RhdGljIEludFBvaW50IG1heFhNYXhZQ29ybmVyKGNvbnN0IEludFJlY3QmIHJlY3QpIHsg
cmV0dXJuIEludFBvaW50KHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gMSwgcmVjdC55KCkgKyBy
ZWN0LmhlaWdodCgpIC0gMSk7IH0gLy8gdHlwaWNhbGx5IGJvdHRvbVJpZ2h0CitzdGF0aWMgV2Vi
Q29yZTo6SW50UG9pbnQgbWluWE1pbllDb3JuZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVj
dCkgeyByZXR1cm4gcmVjdC5sb2NhdGlvbigpOyB9IC8vIHR5cGljYWxseSB0b3BMZWZ0CitzdGF0
aWMgV2ViQ29yZTo6SW50UG9pbnQgbWF4WE1pbllDb3JuZXIoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCkgeyByZXR1cm4gV2ViQ29yZTo6SW50UG9pbnQocmVjdC54KCkgKyByZWN0LndpZHRo
KCkgLSAxLCByZWN0LnkoKSk7IH0gLy8gdHlwaWNhbGx5IHRvcFJpZ2h0CitzdGF0aWMgV2ViQ29y
ZTo6SW50UG9pbnQgbWluWE1heFlDb3JuZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkg
eyByZXR1cm4gV2ViQ29yZTo6SW50UG9pbnQocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWln
aHQoKSAtIDEpOyB9IC8vIHR5cGljYWxseSBib3R0b21MZWZ0CitzdGF0aWMgV2ViQ29yZTo6SW50
UG9pbnQgbWF4WE1heFlDb3JuZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgeyByZXR1
cm4gV2ViQ29yZTo6SW50UG9pbnQocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSAxLCByZWN0Lnko
KSArIHJlY3QuaGVpZ2h0KCkgLSAxKTsgfSAvLyB0eXBpY2FsbHkgYm90dG9tUmlnaHQKIAogLy8g
VGhlIGNhcmV0IGlzIGEgb25lLXBpeGVsIHdpZGUgbGluZSBkb3duIGVpdGhlciB0aGUgcmlnaHQg
b3IgbGVmdCBlZGdlIG9mIGEKIC8vIHJlY3QsIGRlcGVuZGluZyBvbiB0aGUgdGV4dCBkaXJlY3Rp
b24uCkBAIC02ODIsMTIgKzY4NSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FyZXRJc09uTGVm
dChib29sIGlzU3RhcnRDYXJldCwgYm9vbCBpc1JUTCkKICAgICByZXR1cm4gaXNSVEw7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSW50UG9pbnQgY2FyZXRMb2NhdGlvbkZvclJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCwgYm9vbCBpc1N0YXJ0Q2FyZXQsIGJvb2wgaXNSVEwpCitzdGF0aWMgaW5saW5lIFdl
YkNvcmU6OkludFBvaW50IGNhcmV0TG9jYXRpb25Gb3JSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHJlY3QsIGJvb2wgaXNTdGFydENhcmV0LCBib29sIGlzUlRMKQogewogICAgIHJldHVybiBj
YXJldElzT25MZWZ0KGlzU3RhcnRDYXJldCwgaXNSVEwpID8gbWluWE1pbllDb3JuZXIocmVjdCkg
OiBtYXhYTWluWUNvcm5lcihyZWN0KTsKIH0KIAotc3RhdGljIGlubGluZSBJbnRQb2ludCBjYXJl
dENvbXBhcmlzb25Qb2ludEZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBpc1N0YXJ0
Q2FyZXQsIGJvb2wgaXNSVEwpCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkludFBvaW50IGNhcmV0
Q29tcGFyaXNvblBvaW50Rm9yUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBib29s
IGlzU3RhcnRDYXJldCwgYm9vbCBpc1JUTCkKIHsKICAgICBpZiAoaXNTdGFydENhcmV0KQogICAg
ICAgICByZXR1cm4gY2FyZXRJc09uTGVmdChpc1N0YXJ0Q2FyZXQsIGlzUlRMKSA/IG1pblhNaW5Z
Q29ybmVyKHJlY3QpIDogbWF4WE1pbllDb3JuZXIocmVjdCk7CkBAIC02OTUsMTEgKzY5OCwxMSBA
QCBzdGF0aWMgaW5saW5lIEludFBvaW50IGNhcmV0Q29tcGFyaXNvblBvaW50Rm9yUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sIGlzUwogICAgIHJldHVybiBjYXJldElzT25MZWZ0KGlzU3Rh
cnRDYXJldCwgaXNSVEwpID8gbWluWE1heFlDb3JuZXIocmVjdCkgOiBtYXhYTWF4WUNvcm5lcihy
ZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgYWRqdXN0Q2FyZXRSZWN0cyhJbnRSZWN0JiBzdGFydENh
cmV0LCBib29sIGlzU3RhcnRDYXJldENsaXBwZWRPdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEludFJlY3QmIGVuZENhcmV0LCBib29sIGlzRW5kQ2FyZXRDbGlwcGVkT3V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6SW50UmVjdD4gcmVjdExpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFBvaW50JiBzdGFydFJlZmVyZW5jZVBvaW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgZW5kUmVmZXJlbmNlUG9pbnQsCitzdGF0aWMgdm9p
ZCBhZGp1c3RDYXJldFJlY3RzKFdlYkNvcmU6OkludFJlY3QmIHN0YXJ0Q2FyZXQsIGJvb2wgaXNT
dGFydENhcmV0Q2xpcHBlZE91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6SW50UmVjdCYgZW5kQ2FyZXQsIGJvb2wgaXNFbmRDYXJldENsaXBwZWRPdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpJbnRSZWN0
PiByZWN0TGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHN0YXJ0UmVmZXJlbmNlUG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBlbmRSZWZlcmVuY2VQb2ludCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1JUTCkKIHsKICAgICAvLyBzdGFydFJlZmVyZW5j
ZVBvaW50IGlzIHRoZSBiZXN0IGd1ZXNzIGF0IHRoZSB0b3AgbGVmdCBvZiB0aGUgc2VsZWN0aW9u
OyBlbmRSZWZlcmVuY2VQb2ludCBpcyB0aGUgYmVzdCBndWVzcyBhdCB0aGUgYm90dG9tIHJpZ2h0
LgpAQCAtNzI1LDcgKzcyOCw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdENhcmV0UmVjdHMoSW50UmVj
dCYgc3RhcnRDYXJldCwgYm9vbCBpc1N0YXJ0Q2FyZXRDbGlwcGVkT3V0LAogICAgIGVuZENhcmV0
LnNldFdpZHRoKDEpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHJlY3RMaXN0LnNp
emUoKTsgaSsrKSB7Ci0gICAgICAgIEludFJlY3QgY3VycmVudFJlY3QocmVjdExpc3RbaV0pOwor
ICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGN1cnJlbnRSZWN0KHJlY3RMaXN0W2ldKTsKIAogICAg
ICAgICAvLyBDb21wYXJlIGFuZCB1cGRhdGUgdGhlIHN0YXJ0IGFuZCBlbmQgY2FyZXRzIHdpdGgg
dGhlaXIgcmVzcGVjdGl2ZSByZWZlcmVuY2UgcG9pbnRzLgogICAgICAgICBpZiAoIWlzU3RhcnRD
YXJldENsaXBwZWRPdXQgJiYgY29tcGFyZVBvaW50c1RvUmVmZXJlbmNlUG9pbnQoCkBAIC03NDYs
NyArNzQ5LDcgQEAgc3RhdGljIHZvaWQgYWRqdXN0Q2FyZXRSZWN0cyhJbnRSZWN0JiBzdGFydENh
cmV0LCBib29sIGlzU3RhcnRDYXJldENsaXBwZWRPdXQsCiAgICAgfQogfQogCi12b2lkIFNlbGVj
dGlvbkhhbmRsZXI6OmNsaXBSZWdpb25Ub1Zpc2libGVDb250YWluZXIoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkludFJlY3RSZWdpb24mIHJlZ2lvbikKK3ZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6Y2xp
cFJlZ2lvblRvVmlzaWJsZUNvbnRhaW5lcihJbnRSZWN0UmVnaW9uJiByZWdpb24pCiB7CiAgICAg
QVNTRVJUKG1fd2ViUGFnZS0+bV9tYWluRnJhbWUgJiYgbV93ZWJQYWdlLT5tX21haW5GcmFtZS0+
dmlldygpKTsKIApAQCAtNzU0LDEwICs3NTcsMTAgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpj
bGlwUmVnaW9uVG9WaXNpYmxlQ29udGFpbmVyKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWMK
IAogICAgIC8vIERvbid0IGFsbG93IHRoZSByZWdpb24gdG8gZXh0ZW5kIG91dHNpZGUgb2YgdGhl
IGFsbCBpdHMgYW5jZXN0b3IgZnJhbWVzJyB2aXNpYmxlIGFyZWEuCiAgICAgaWYgKGZyYW1lICE9
IG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCBjb250YWluaW5nQ29u
dGVudFJlY3Q7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY29udGFpbmluZ0NvbnRlbnRSZWN0
OwogICAgICAgICBjb250YWluaW5nQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UtPmdldFJlY3Vyc2l2
ZVZpc2libGVXaW5kb3dSZWN0KGZyYW1lLT52aWV3KCksIHRydWUgLyogbm8gY2xpcCB0byBtYWlu
IGZyYW1lIHdpbmRvdyAqLyk7CiAgICAgICAgIGNvbnRhaW5pbmdDb250ZW50UmVjdCA9IG1fd2Vi
UGFnZS0+bV9tYWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhjb250YWluaW5nQ29u
dGVudFJlY3QpOwotICAgICAgICByZWdpb24gPSBpbnRlcnNlY3RSZWdpb25zKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKGNvbnRhaW5pbmdDb250ZW50UmVjdCksIHJlZ2lvbik7
CisgICAgICAgIHJlZ2lvbiA9IGludGVyc2VjdFJlZ2lvbnMoSW50UmVjdFJlZ2lvbihjb250YWlu
aW5nQ29udGVudFJlY3QpLCByZWdpb24pOwogICAgIH0KIAogICAgIC8vIERvbid0IGFsbG93IHRo
ZSByZWdpb24gdG8gZXh0ZW5kIG91dHNpZGUgb2YgdGhlIGlucHV0IGZpZWxkLgpAQCAtNzY2LDIw
ICs3NjksMjAgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpjbGlwUmVnaW9uVG9WaXNpYmxlQ29u
dGFpbmVyKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWMKICAgICAgICAgJiYgZnJhbWUtPmRv
Y3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKIAogICAgICAgICAvLyBBZGp1
c3QgdGhlIGJvdW5kaW5nIGJveCB0byB0aGUgZnJhbWUgb2Zmc2V0LgotICAgICAgICBJbnRSZWN0
IGJvdW5kaW5nQm94KGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpLT5yZW5kZXJlcigp
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBi
b3VuZGluZ0JveChmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKS0+cmVuZGVyZXIoKS0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiAgICAgICAgIGJvdW5kaW5nQm94ID0gbV93ZWJQ
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzVG9XaW5kb3coYm91bmRpbmdCb3gpKTsKIAotICAgICAgICByZWdpb24gPSBpbnRl
cnNlY3RSZWdpb25zKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKGJvdW5kaW5n
Qm94KSwgcmVnaW9uKTsKKyAgICAgICAgcmVnaW9uID0gaW50ZXJzZWN0UmVnaW9ucyhJbnRSZWN0
UmVnaW9uKGJvdW5kaW5nQm94KSwgcmVnaW9uKTsKICAgICB9CiB9CiAKLXN0YXRpYyBJbnRQb2lu
dCByZWZlcmVuY2VQb2ludChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBJ
bnRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IEludFBvaW50JiBmcmFtZVBvc2l0aW9uLCBib29s
IGlzU3RhcnRDYXJldCwgYm9vbCBpc1JUTCkKK3N0YXRpYyBXZWJDb3JlOjpJbnRQb2ludCByZWZl
cmVuY2VQb2ludChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcmFtZVBv
c2l0aW9uLCBib29sIGlzU3RhcnRDYXJldCwgYm9vbCBpc1JUTCkKIHsKICAgICAvLyBJZiBvbmUg
b2YgdGhlIGNhcmV0cyBpcyBpbnZhbGlkICh0aGlzIGhhcHBlbnMsIGZvciBpbnN0YW5jZSwgaWYg
dGhlCiAgICAgLy8gc2VsZWN0aW9uIGVuZHMgaW4gYW4gZW1wdHkgZGl2KSBmYWxsIGJhY2sgdG8g
dXNpbmcgdGhlIGNvcm5lciBvZiB0aGUKICAgICAvLyBlbnRpcmUgcmVnaW9uICh3aGljaCBpcyBh
bHJlYWR5IGluIGZyYW1lIGNvb3JkaW5hdGVzIHNvIGRvZXNuJ3QgbmVlZAogICAgIC8vIGFkanVz
dGluZykuCi0gICAgSW50UmVjdCBzdGFydENhcmV0Qm91bmRzKHBvc2l0aW9uLmFic29sdXRlQ2Fy
ZXRCb3VuZHMoKSk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBzdGFydENhcmV0Qm91bmRzKHBvc2l0
aW9uLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CiAgICAgaWYgKHN0YXJ0Q2FyZXRCb3VuZHMuaXNF
bXB0eSgpKQogICAgICAgICBzdGFydENhcmV0Qm91bmRzID0gYm91bmRpbmdSZWN0OwogICAgIGVs
c2UKQEAgLTc5Miw3ICs3OTUsNyBAQCBzdGF0aWMgSW50UG9pbnQgcmVmZXJlbmNlUG9pbnQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgSW50UmVjdCYgYgogLy8gc3lzdGVt
IGlzIG5vdCBlbnRpcmVseSBXZWJLaXQuCiB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlv
blBvc2l0aW9uQ2hhbmdlZChib29sIHZpc3VhbENoYW5nZU9ubHkpCiB7Ci0gICAgREVCVUdfU0VM
RUNUSU9OKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5k
bGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgdmlzaWJsZUNoYW5nZU9ubHkgPSAlcyIsIHZp
c3VhbENoYW5nZU9ubHkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBERUJVR19TRUxFQ1RJT04o
TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2Vk
IHZpc2libGVDaGFuZ2VPbmx5ID0gJXMiLCB2aXN1YWxDaGFuZ2VPbmx5ID8gInRydWUiIDogImZh
bHNlIik7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBjYW4gZ2V0IGNhbGxlZCBkdXJpbmcgV2ViUGFn
ZSBzaHV0ZG93biBwcm9jZXNzLgogICAgIC8vIElmIHRoYXQgaXMgdGhlIGNhc2UsIGp1c3QgYmFp
bCBvdXQgc2luY2UgdGhlIGNsaWVudCBpcyBub3QKQEAgLTgxMyw3ICs4MTYsNyBAQCB2b2lkIFNl
bGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdlZChib29sIHZpc3VhbENoYW5n
ZU9ubHkpCiAgICAgLy8gRW50ZXIgc2VsZWN0aW9uIG1vZGUgaWYgc2VsZWN0aW9uIHR5cGUgaXMg
UmFuZ2VTZWxlY3Rpb24sIGFuZCBkaXNhYmxlIHNlbGVjdGlvbiBpZgogICAgIC8vIHNlbGVjdGlv
biBpcyBhY3RpdmUgYW5kIGJlY29tZXMgY2FyZXQgc2VsZWN0aW9uLgogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgSW50UG9pbnQgZnJhbWVQ
b3MgPSBtX3dlYlBhZ2UtPmZyYW1lT2Zmc2V0KGZyYW1lKTsKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBmcmFtZVBvcyA9IG1fd2ViUGFnZS0+ZnJhbWVPZmZzZXQoZnJhbWUpOwogICAgIGlmIChtX3Nl
bGVjdGlvbkFjdGl2ZSAmJiAobV9jYXJldEFjdGl2ZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSkKICAgICAgICAgbV9zZWxlY3Rpb25BY3RpdmUgPSBmYWxzZTsKICAgICBlbHNlIGlm
IChmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKQEAgLTgyMSwxMSArODI0LDExIEBAIHZv
aWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wgdmlzdWFs
Q2hhbmdlT25seSkKICAgICBlbHNlIGlmICghbV9zZWxlY3Rpb25BY3RpdmUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEludFJlY3Qgc3RhcnRDYXJldDsKLSAgICBJbnRSZWN0IGVuZENhcmV0Owor
ICAgIFdlYkNvcmU6OkludFJlY3Qgc3RhcnRDYXJldDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGVu
ZENhcmV0OwogCiAgICAgLy8gR2V0IHRoZSB0ZXh0IHJlY3RzIGZyb20gdGhlIHNlbGVjdGlvbnMg
cmFuZ2UuCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3RSZWdpb24gcmVnaW9uOwor
ICAgIEludFJlY3RSZWdpb24gcmVnaW9uOwogICAgIGdldENvbnNvbGlkYXRlZFJlZ2lvbk9mVGV4
dFF1YWRzRm9yU2VsZWN0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCksIHJlZ2lv
bik7CiAKICAgICAvLyBJZiB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gc2VsZWN0ZWQgdGV4dCBhbmQg
dGhlIHZpc3VhbCByZWN0cwpAQCAtODM2LDE1ICs4MzksMTUgQEAgdm9pZCBTZWxlY3Rpb25IYW5k
bGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoYm9vbCB2aXN1YWxDaGFuZ2VPbmx5KQogICAg
IG1fbGFzdFNlbGVjdGlvblJlZ2lvbiA9IHJlZ2lvbjsKIAogICAgIGlmICghcmVnaW9uLmlzRW1w
dHkoKSkgewotICAgICAgICBJbnRSZWN0IHVuY2xpcHBlZFN0YXJ0Q2FyZXQ7Ci0gICAgICAgIElu
dFJlY3QgdW5jbGlwcGVkRW5kQ2FyZXQ7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgdW5jbGlw
cGVkU3RhcnRDYXJldDsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCB1bmNsaXBwZWRFbmRDYXJl
dDsKIAogICAgICAgICBib29sIGlzUlRMID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayhmcmFt
ZS0+c2VsZWN0aW9uKCkpID09IFJUTDsKIAotICAgICAgICBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6SW50UmVjdD4gcmVjdExpc3QgPSByZWdpb24ucmVjdHMoKTsKKyAgICAgICAg
c3RkOjp2ZWN0b3I8UGxhdGZvcm06OkludFJlY3Q+IHJlY3RMaXN0ID0gcmVnaW9uLnJlY3RzKCk7
CiAKLSAgICAgICAgSW50UG9pbnQgc3RhcnRDYXJldFJlZmVyZW5jZVBvaW50ID0gcmVmZXJlbmNl
UG9pbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSwgcmVn
aW9uLmV4dGVudHMoKSwgZnJhbWVQb3MsIHRydWUgLyogaXNTdGFydENhcmV0ICovLCBpc1JUTCk7
Ci0gICAgICAgIEludFBvaW50IGVuZENhcmV0UmVmZXJlbmNlUG9pbnQgPSByZWZlcmVuY2VQb2lu
dChmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSwgcmVnaW9uLmV4
dGVudHMoKSwgZnJhbWVQb3MsIGZhbHNlIC8qIGlzU3RhcnRDYXJldCAqLywgaXNSVEwpOworICAg
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBzdGFydENhcmV0UmVmZXJlbmNlUG9pbnQgPSByZWZlcmVu
Y2VQb2ludChmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBy
ZWdpb24uZXh0ZW50cygpLCBmcmFtZVBvcywgdHJ1ZSAvKiBpc1N0YXJ0Q2FyZXQgKi8sIGlzUlRM
KTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgZW5kQ2FyZXRSZWZlcmVuY2VQb2ludCA9IHJl
ZmVyZW5jZVBvaW50KGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgp
LCByZWdpb24uZXh0ZW50cygpLCBmcmFtZVBvcywgZmFsc2UgLyogaXNTdGFydENhcmV0ICovLCBp
c1JUTCk7CiAKICAgICAgICAgYWRqdXN0Q2FyZXRSZWN0cyh1bmNsaXBwZWRTdGFydENhcmV0LCBm
YWxzZSAvKiB1bmNsaXBwZWQgKi8sIHVuY2xpcHBlZEVuZENhcmV0LCBmYWxzZSAvKiB1bmNsaXBw
ZWQgKi8sIHJlY3RMaXN0LCBzdGFydENhcmV0UmVmZXJlbmNlUG9pbnQsIGVuZENhcmV0UmVmZXJl
bmNlUG9pbnQsIGlzUlRMKTsKIApAQCAtODUyLDkgKzg1NSw5IEBAIHZvaWQgU2VsZWN0aW9uSGFu
ZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wgdmlzdWFsQ2hhbmdlT25seSkKIAog
I2lmIFNIT1dERUJVR19TRUxFQ1RJT05IQU5ETEVSIC8vIERvbid0IHJlbHkganVzdCBvbiBERUJV
R19TRUxFQ1RJT04gdG8gYXZvaWQgbG9vcC4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCByZWN0TGlzdC5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIERFQlVHX1NFTEVDVElP
TihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlY3QgbGlzdCAtIFVu
bW9kaWZpZWQgIyVkLCAoJWQsICVkKSAoJWQgeCAlZCkiLCBpLCByZWN0TGlzdFtpXS54KCksIHJl
Y3RMaXN0W2ldLnkoKSwgcmVjdExpc3RbaV0ud2lkdGgoKSwgcmVjdExpc3RbaV0uaGVpZ2h0KCkp
OworICAgICAgICAgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsQ3JpdGljYWwsICJSZWN0IGxp
c3QgLSBVbm1vZGlmaWVkICMlZCwgKCVkLCAlZCkgKCVkIHggJWQpIiwgaSwgcmVjdExpc3RbaV0u
eCgpLCByZWN0TGlzdFtpXS55KCksIHJlY3RMaXN0W2ldLndpZHRoKCksIHJlY3RMaXN0W2ldLmhl
aWdodCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByZWdpb24ubnVt
UmVjdHMoKTsgaSsrKQotICAgICAgICAgICAgREVCVUdfU0VMRUNUSU9OKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVjdCBsaXN0ICAtIENvbnNvbGlkYXRlZCAjJWQs
ICglZCwgJWQpICglZCB4ICVkKSIsIGksIHJlZ2lvbi5yZWN0cygpW2ldLngoKSwgcmVnaW9uLnJl
Y3RzKClbaV0ueSgpLCByZWdpb24ucmVjdHMoKVtpXS53aWR0aCgpLCByZWdpb24ucmVjdHMoKVtp
XS5oZWlnaHQoKSk7CisgICAgICAgICAgICBERUJVR19TRUxFQ1RJT04oTG9nTGV2ZWxDcml0aWNh
bCwgIlJlY3QgbGlzdCAgLSBDb25zb2xpZGF0ZWQgIyVkLCAoJWQsICVkKSAoJWQgeCAlZCkiLCBp
LCByZWdpb24ucmVjdHMoKVtpXS54KCksIHJlZ2lvbi5yZWN0cygpW2ldLnkoKSwgcmVnaW9uLnJl
Y3RzKClbaV0ud2lkdGgoKSwgcmVnaW9uLnJlY3RzKClbaV0uaGVpZ2h0KCkpOwogI2VuZGlmCiAK
ICAgICAgICAgYm9vbCBzaG91bGRDYXJlQWJvdXRQb3NzaWJsZUNsaXBwZWRPdXRTZWxlY3Rpb24g
PSBmcmFtZSAhPSBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpIHx8IG1fd2ViUGFnZS0+bV9pbnB1dEhh
bmRsZXItPmlzSW5wdXRNb2RlKCk7CkBAIC04NjgsNyArODcxLDcgQEAgdm9pZCBTZWxlY3Rpb25I
YW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoYm9vbCB2aXN1YWxDaGFuZ2VPbmx5KQog
ICAgICAgICAgICAgYm9vbCBzaG91bGRDbGlwRW5kQ2FyZXQgPSAhcmVnaW9uLmlzUmVjdEluUmVn
aW9uKHVuY2xpcHBlZEVuZENhcmV0KTsKIAogICAgICAgICAgICAgLy8gRmluZCB0aGUgdG9wIGNv
cm5lciBhbmQgYm90dG9tIGNvcm5lci4KLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpJbnRSZWN0PiBjbGlwcGVkUmVjdExpc3QgPSByZWdpb24ucmVjdHMoKTsK
KyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpJbnRSZWN0PiBjbGlwcGVkUmVjdExp
c3QgPSByZWdpb24ucmVjdHMoKTsKICAgICAgICAgICAgIGFkanVzdENhcmV0UmVjdHMoc3RhcnRD
YXJldCwgc2hvdWxkQ2xpcFN0YXJ0Q2FyZXQsIGVuZENhcmV0LCBzaG91bGRDbGlwRW5kQ2FyZXQs
IGNsaXBwZWRSZWN0TGlzdCwgc3RhcnRDYXJldFJlZmVyZW5jZVBvaW50LCBlbmRDYXJldFJlZmVy
ZW5jZVBvaW50LCBpc1JUTCk7CiAKICAgICAgICAgICAgIC8vIFRyYW5zbGF0ZSB0aGUgY2FyZXQg
dmFsdWVzIGFzIHRoZXkgbXVzdCBiZSBpbiB0cmFuc2Zvcm1lZCBjb29yZGluYXRlcy4KQEAgLTg5
NCw5ICs4OTcsOSBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hh
bmdlZChib29sIHZpc3VhbENoYW5nZU9ubHkpCiAvLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIG5v
dCBpbiBXZWJLaXQgY29vcmRpbmF0ZXMuCiB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9z
aXRpb25DaGFuZ2VkKCkKIHsKLSAgICBERUJVR19TRUxFQ1RJT04oQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkxvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2Vk
Iik7CisgICAgREVCVUdfU0VMRUNUSU9OKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6
OmNhcmV0UG9zaXRpb25DaGFuZ2VkIik7CiAKLSAgICBJbnRSZWN0IGNhcmV0TG9jYXRpb247Cisg
ICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldExvY2F0aW9uOwogICAgIC8vIElmIHRoZSBpbnB1dCBm
aWVsZCBpcyBub3QgYWN0aXZlLCB3ZSBtdXN0IGJlIHR1cm5pbmcgb2ZmIHRoZSBjYXJldC4KICAg
ICBpZiAoIW1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXItPmlzSW5wdXRNb2RlKCkgJiYgbV9jYXJl
dEFjdGl2ZSkgewogICAgICAgICBtX2NhcmV0QWN0aXZlID0gZmFsc2U7CkBAIC05MTEsMjAgKzkx
NCwyMCBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkKCkKICAg
ICBBU1NFUlQobV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJbnB1dE1vZGUoKSk7CiAKICAg
ICBpZiAobV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVj
dGlvblR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbikgewotICAgICAg
ICBJbnRQb2ludCBmcmFtZU9mZnNldCA9IG1fd2ViUGFnZS0+ZnJhbWVPZmZzZXQobV93ZWJQYWdl
LT5mb2N1c2VkT3JNYWluRnJhbWUoKSk7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGZyYW1l
T2Zmc2V0ID0gbV93ZWJQYWdlLT5mcmFtZU9mZnNldChtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5G
cmFtZSgpKTsKIAogICAgICAgICBjYXJldExvY2F0aW9uID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLmFic29s
dXRlQ2FyZXRCb3VuZHMoKTsKICAgICAgICAgY2FyZXRMb2NhdGlvbi5tb3ZlKGZyYW1lT2Zmc2V0
LngoKSwgZnJhbWVPZmZzZXQueSgpKTsKIAogICAgICAgICAvLyBDbGlwIGFnYWluc3QgdGhlIGNv
bnRhaW5pbmcgZnJhbWUgYW5kIG5vZGUgYm91bmRhcmllcy4KLSAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkludFJlY3RSZWdpb24gcmVnaW9uKGNhcmV0TG9jYXRpb24pOworICAgICAgICBJ
bnRSZWN0UmVnaW9uIHJlZ2lvbihjYXJldExvY2F0aW9uKTsKICAgICAgICAgY2xpcFJlZ2lvblRv
VmlzaWJsZUNvbnRhaW5lcihyZWdpb24pOwogICAgICAgICBjYXJldExvY2F0aW9uID0gcmVnaW9u
LmV4dGVudHMoKTsKICAgICB9CiAKICAgICBtX2NhcmV0QWN0aXZlID0gIWNhcmV0TG9jYXRpb24u
aXNFbXB0eSgpOwogCi0gICAgREVCVUdfU0VMRUNUSU9OKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCBjYXJl
dCBSZWN0ICVkLCAlZCwgJWR4JWQiLAorICAgIERFQlVHX1NFTEVDVElPTihMb2dMZXZlbEluZm8s
ICJTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCBjYXJldCBSZWN0ICVkLCAl
ZCwgJWR4JWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgY2FyZXRMb2NhdGlvbi54KCksIGNh
cmV0TG9jYXRpb24ueSgpLCBjYXJldExvY2F0aW9uLndpZHRoKCksIGNhcmV0TG9jYXRpb24uaGVp
Z2h0KCkpOwogCiAgICAgY2FyZXRMb2NhdGlvbiA9IG1fd2ViUGFnZS0+bWFwVG9UcmFuc2Zvcm1l
ZChjYXJldExvY2F0aW9uKTsKQEAgLTkzMyw3ICs5MzYsNyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRs
ZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkKCkKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5ub3Rp
ZnlDYXJldENoYW5nZWQoY2FyZXRMb2NhdGlvbiwgbV93ZWJQYWdlLT5tX3RvdWNoRXZlbnRIYW5k
bGVyLT5sYXN0RmF0RmluZ2Vyc1Jlc3VsdCgpLmlzVGV4dElucHV0KCkgLyogdXNlclRvdWNoVHJp
Z2dlcmVkICovKTsKIH0KIAotYm9vbCBTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Db250YWlu
cyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCitib29sIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlv
bkNvbnRhaW5zKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKIHsKICAgICBBU1NFUlQo
bV93ZWJQYWdlICYmIG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkgJiYgbV93ZWJQYWdl
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiBtX3dlYlBh
Z2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+Y29udGFpbnMocG9pbnQpOwot
LSAKMS43LjUuNAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>