<?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>206411</bug_id>
          
          <creation_ts>2020-01-17 05:11:21 -0800</creation_ts>
          <short_desc>[LFC][IFC] Allocate InlineItems in a vector</short_desc>
          <delta_ts>2020-01-17 08:17:14 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1607952</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-17 05:11:21 -0800</bug_when>
    <thetext>Even the largest InlineItem (InlineTextItem) is small (fits to 24 bytes), and they are allocated in large numbers (one per word and per whitespace typically). Reduce heap allocations by turning InlineItem into a fixed size type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607954</commentid>
    <comment_count>1</comment_count>
      <attachid>388031</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-17 05:22:11 -0800</bug_when>
    <thetext>Created attachment 388031
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607962</commentid>
    <comment_count>2</comment_count>
      <attachid>388031</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-17 06:18:54 -0800</bug_when>
    <thetext>Comment on attachment 388031
patch

v.nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607972</commentid>
    <comment_count>3</comment_count>
      <attachid>388031</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 07:07:06 -0800</bug_when>
    <thetext>Comment on attachment 388031
patch

Rejecting attachment 388031 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 388031, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=388031&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=206411&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Updating working directory
Processing patch 388031 from bug 206411.
Fetching: https://bugs.webkit.org/attachment.cgi?id=388031
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Zalan Bujtas&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 10 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp
patching file Source/WebCore/layout/inlineformatting/InlineFormattingState.h
patching file Source/WebCore/layout/inlineformatting/InlineItem.cpp
patching file Source/WebCore/layout/inlineformatting/InlineItem.h
patching file Source/WebCore/layout/inlineformatting/InlineSoftLineBreakItem.h
patching file Source/WebCore/layout/inlineformatting/InlineTextItem.cpp
patching file Source/WebCore/layout/inlineformatting/InlineTextItem.h
patching file Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp
Hunk #1 FAILED at 129.
Hunk #2 FAILED at 154.
Hunk #3 succeeded at 175 (offset -5 lines).
Hunk #4 succeeded at 325 (offset -5 lines).
Hunk #5 succeeded at 349 (offset -5 lines).
Hunk #6 succeeded at 357 (offset -5 lines).
2 out of 6 hunks FAILED -- saving rejects to file Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp.rej
patching file Source/WebCore/layout/inlineformatting/LineLayoutContext.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Zalan Bujtas&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 10 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp
patching file Source/WebCore/layout/inlineformatting/InlineFormattingState.h
patching file Source/WebCore/layout/inlineformatting/InlineItem.cpp
patching file Source/WebCore/layout/inlineformatting/InlineItem.h
patching file Source/WebCore/layout/inlineformatting/InlineSoftLineBreakItem.h
patching file Source/WebCore/layout/inlineformatting/InlineTextItem.cpp
patching file Source/WebCore/layout/inlineformatting/InlineTextItem.h
patching file Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp
Hunk #1 FAILED at 129.
Hunk #2 FAILED at 154.
Hunk #3 succeeded at 175 (offset -5 lines).
Hunk #4 succeeded at 325 (offset -5 lines).
Hunk #5 succeeded at 349 (offset -5 lines).
Hunk #6 succeeded at 357 (offset -5 lines).
2 out of 6 hunks FAILED -- saving rejects to file Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp.rej
patching file Source/WebCore/layout/inlineformatting/LineLayoutContext.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Zalan Bujtas&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
From https://git.webkit.org/git/WebKit
   2e7de0fa79e..72ae6f21987  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 254742 = 2e7de0fa79e3c832fbfc51cf243d794196e23b96
r254743 = 72ae6f21987c707abd9105bcdbc1bceae546c16f
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: https://webkit-queues.webkit.org/results/13306157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607981</commentid>
    <comment_count>4</comment_count>
      <attachid>388037</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-17 07:33:00 -0800</bug_when>
    <thetext>Created attachment 388037
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608004</commentid>
    <comment_count>5</comment_count>
      <attachid>388037</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 08:16:07 -0800</bug_when>
    <thetext>Comment on attachment 388037
patch

Clearing flags on attachment: 388037

Committed r254749: &lt;https://trac.webkit.org/changeset/254749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608005</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 08:16:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608006</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-17 08:17:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/58682783&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388031</attachid>
            <date>2020-01-17 05:22:11 -0800</date>
            <delta_ts>2020-01-17 07:33:00 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-inline-item-vector.patch</filename>
            <type>text/plain</type>
            <size>22473</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwN2EzMWNkMWEwMy4uMzMyNDNlZDE4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMC0wMS0xNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBBbGxvY2F0ZSBJbmxpbmVJdGVtcyBpbiBhIHZlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXZlbiB0aGUg
bGFyZ2VzdCBJbmxpbmVJdGVtIChJbmxpbmVUZXh0SXRlbSkgaXMgc21hbGwgKGZpdHMgdG8gMjQg
Ynl0ZXMpLCBhbmQgdGhleSBhcmUgYWxsb2NhdGVkCisgICAgICAgIGluIGxhcmdlIG51bWJlcnMg
KG9uZSBwZXIgd29yZCBhbmQgcGVyIHdoaXRlc3BhY2UgdHlwaWNhbGx5KS4gUmVkdWNlIGhlYXAg
YWxsb2NhdGlvbnMgYnkgdHVybmluZworICAgICAgICBJbmxpbmVJdGVtIGludG8gYSBmaXhlZCBz
aXplIHR5cGUuCisKKyAgICAgICAgVGhlIElubGluZUl0ZW0gdmVjdG9yIGlzIGltbXV0YWJsZSBk
dXJpbmcgbGF5b3V0IHNvIHBvaW50ZXIgdG8gaXRlbXMgY2FuIHN0aWxsIGJlIHNhZmVseSB1c2Vk
LgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6YWRkSW5saW5lSXRlbSk6CisgICAgICAg
ICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW06OklubGluZUl0ZW0pOiBEZWxldGVkLgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lSXRlbTo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lSXRlbTo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVJdGVtOjpJbmxpbmVJdGVtKToKKworICAgICAgICBHYXRoZXIgbWVtYmVycyBm
cm9tIHRoZSBzdWJjbGFzc2VzIGFzIHByb3RlY3RlZCBmaWVsZHMuCisKKyAgICAgICAgKiBsYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oOgorCisgICAgICAg
IE1vdmUgdGhlIGZpZWxkIHRvIHRoZSBiYXNlIGNsYXNzLgorCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZVNvZnRMaW5lQnJlYWtJdGVtOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVNvZnRMaW5lQnJlYWtJdGVtOjpjcmVhdGVTb2Z0TGlu
ZUJyZWFrSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVNvZnRMaW5lQnJl
YWtJdGVtOjpJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbSk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZVdoaXRlc3BhY2VJ
dGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06
OmNyZWF0ZU5vbldoaXRlc3BhY2VJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZUVtcHR5SXRlbSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbSk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaDoK
KworICAgICAgICBNb3ZlIHRoZSBmaWVsZHMgdG8gdGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnN0YXJ0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OndpZHRoIGNvbnN0KToKKworICAgICAg
ICBQbGFjZSB3aWR0aCBvcHRpb25hbCBpbnRvIGEgc2VwYXJhdGUgYml0IGFuZCBhIHZhbHVlIGFz
IHRoaXMgYWxsb3dzIGJldHRlciBwYWNraW5nIG9mIG1lbWJlcnMuCisKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZVdoaXRlc3BhY2VJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZU5vbldoaXRlc3BhY2VJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0ZUVt
cHR5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpJbmxp
bmVUZXh0SXRlbSk6CisKKyAgICAgICAgSW5saW5lIGNvbnN0cnVjdGlvbiBmdW5jdGlvbnMuCisK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpuZXh0V3Jh
cE9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZUNv
bnRlbnQ6OmFwcGVuZEZsb2F0KToKKworICAgICAgICBVc2UgYSByYXcgcG9pbnRlciBpbnN0ZWFk
IG9mIGEgV2Vha1B0ci4gSW5saW5lSXRlbXMgYXJlIGltbXV0dGFibGUgZHVyaW5nIGxheW91dC4K
KworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6Y2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENvbnRlbnRG
b3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29u
dGV4dC5oOgorCiAyMDIwLTAxLTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29tcGFjdCBzaXplb2YoSFRNTEFuY2hvckVsZW1lbnQpIGFuZCBzaXplb2Yo
SFRNTExpbmtFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IDAyNzM2NjA2OTQzLi5hYjZjYzJlNGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQogICAgICAgICAgICAgaWYgKCF0cmVhdEFz
SW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcu
IDxzcGFuPikuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtl
VW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVy
U3RhcnQpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHsgbGF5
b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCB9KTsKICAgICAgICAgICAg
IGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAg
ICAgICAgIGlmICghY29udGFpbmVyLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzU2LDE3ICszNTYsMTcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpCiAgICAgICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgog
ICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAgICAg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGlu
ZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CisgICAg
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCB9KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxh
eW91dEJveC5pc0xpbmVCcmVha0JveCgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJ
dGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5l
QnJlYWsgfSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbSht
YWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQp
KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbSh7IGxheW91
dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQgfSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29udGVudCgpKQogICAgICAgICAgICAg
ICAgICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRp
bmdTdGF0ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkpOworICAg
ICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbSh7IGxheW91dEJv
eCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94IH0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdT
aWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggZjM1MTY1NGQ1MGIu
LjNjZjQ0NDI0YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMzUsNyArMzUs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXVzaW5nIElu
bGluZUl0ZW1zID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVJdGVtPiwgMzA+OwordXNp
bmcgSW5saW5lSXRlbXMgPSBWZWN0b3I8SW5saW5lSXRlbSwgMzA+OwogCiAvLyBJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUgaG9sZHMgdGhlIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgaW5saW5lIGZvcm1h
dHRpbmcgY29udGV4dCB0cmVlLgogY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlIDogcHVibGlj
IEZvcm1hdHRpbmdTdGF0ZSB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIElubGlu
ZUl0ZW1zJiBpbmxpbmVJdGVtcygpIHsgcmV0dXJuIG1faW5saW5lSXRlbXM7IH0KICAgICBjb25z
dCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW1z
OyB9Ci0gICAgdm9pZCBhZGRJbmxpbmVJdGVtKHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVJdGVtPiYm
IGlubGluZUl0ZW0pIHsgbV9pbmxpbmVJdGVtcy5hcHBlbmQoV1RGTW92ZShpbmxpbmVJdGVtKSk7
IH0KKyAgICB2b2lkIGFkZElubGluZUl0ZW0oSW5saW5lSXRlbSYmIGlubGluZUl0ZW0pIHsgbV9p
bmxpbmVJdGVtcy5hcHBlbmQoV1RGTW92ZShpbmxpbmVJdGVtKSk7IH0KIAogICAgIGNvbnN0IERp
c3BsYXk6OklubGluZUNvbnRlbnQqIGRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwbGF5SW5saW5lQ29udGVudC5nZXQoKTsgfQogICAgIERpc3BsYXk6OklubGluZUNv
bnRlbnQmIGVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uY3BwCmluZGV4IDUyZTRm
Y2FiMjA0Li41Y2E5ODgyNmFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5jcHAKQEAgLTMzLDExICszMywxNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLUlubGluZUl0ZW06OklubGlu
ZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUgdHlwZSkKLSAgICA6IG1fbGF5b3V0Qm94
KGxheW91dEJveCkKLSAgICAsIG1fdHlwZSh0eXBlKQotewotfQorc3RydWN0IFNhbWVTaXplQXNJ
bmxpbmVJdGVtIHsKKyAgICB2b2lkKiBsYXlvdXRCb3g7CisgICAgdWludDhfdCBlbnVtMTsKKyAg
ICB1aW50OF90IGVudW0yOworICAgIGJvb2wgd2lkdGhCb29sOworICAgIElubGluZUxheW91dFVu
aXQgd2lkdGg7CisgICAgdW5zaWduZWQgc3RhcnQ7CisgICAgdW5zaWduZWQgbGVuZ3RoOworfTsK
Kworc3RhdGljX2Fzc2VydChzaXplb2YoSW5saW5lSXRlbSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNJ
bmxpbmVJdGVtKSwgIiIpOwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKaW5kZXggZGFmMzU3NDcyM2YuLjEwNjRjZjk4
Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lSXRlbS5oCkBAIC0yOCwyMCArMjgsMTkgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCi1j
bGFzcyBJbmxpbmVJdGVtIDogcHVibGljIENhbk1ha2VXZWFrUHRyPElubGluZUl0ZW0+IHsKK2Ns
YXNzIElubGluZUl0ZW0gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGVudW0gY2xhc3MgVHlwZSB7IFRleHQsIEhhcmRMaW5lQnJlYWssIFNvZnRMaW5lQnJlYWss
IEJveCwgRmxvYXQsIENvbnRhaW5lclN0YXJ0LCBDb250YWluZXJFbmQgfTsKKyAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsgVGV4dCwgSGFyZExpbmVCcmVhaywgU29mdExpbmVCcmVhaywg
Qm94LCBGbG9hdCwgQ29udGFpbmVyU3RhcnQsIENvbnRhaW5lckVuZCB9OwogICAgIElubGluZUl0
ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9Ci0gICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dEJveDsgfQotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5b3V0Qm94LnN0eWxlKCk7IH0KKyAgICBjb25zdCBCb3gmIGxheW91dEJv
eCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQorICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCk7IH0KIAogICAgIGJv
b2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OlRleHQ7IH0KICAgICBi
b29sIGlzQm94KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OkJveDsgfQpAQCAtNTMs
MTAgKzUyLDI3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGFpbmVyRW5kKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFR5cGU6OkNvbnRhaW5lckVuZDsgfQogCiBwcml2YXRlOgotICAgIGNv
bnN0IEJveCYgbV9sYXlvdXRCb3g7Ci0gICAgY29uc3QgVHlwZSBtX3R5cGU7CisgICAgY29uc3Qg
Qm94KiBtX2xheW91dEJveCB7IG51bGxwdHIgfTsKKyAgICBUeXBlIG1fdHlwZSB7IH07CisKK3By
b3RlY3RlZDoKKyAgICAvLyBGb3IgSW5saW5lVGV4dEl0ZW0KKyAgICBlbnVtIGNsYXNzIFRleHRJ
dGVtVHlwZSAgOiB1aW50OF90IHsgVW5kZWZpbmVkLCBXaGl0ZXNwYWNlLCBOb25XaGl0ZXNwYWNl
IH07CisgICAgVGV4dEl0ZW1UeXBlIG1fdGV4dEl0ZW1UeXBlIHsgVGV4dEl0ZW1UeXBlOjpVbmRl
ZmluZWQgfTsKKyAgICBib29sIG1faGFzV2lkdGggeyBmYWxzZSB9OworICAgIElubGluZUxheW91
dFVuaXQgbV93aWR0aCB7IH07CisgICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07CisKKyAgICAv
LyBGb3IgSW5saW5lVGV4dEl0ZW0gYW5kIElubGluZVNvZnRMaW5lQnJlYWtJdGVtCisgICAgdW5z
aWduZWQgbV9zdGFydE9yUG9zaXRpb24geyAwIH07CiB9OwogCitpbmxpbmUgSW5saW5lSXRlbTo6
SW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJveCwgVHlwZSB0eXBlKQorICAgIDogbV9sYXlv
dXRCb3goJmxheW91dEJveCkKKyAgICAsIG1fdHlwZSh0eXBlKQoreworfQorCiAjZGVmaW5lIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfSU5MSU5FX0lURU0oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNh
dGUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6TGF5b3V0OjpUb1Zh
bHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKSB7IHJldHVybiBpbmxpbmVJdGVtLnByZWRpY2F0
ZTsgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaAppbmRleCA3MjBiNzVlZTRhNi4u
ZjZkMmMwZGJjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZVNvZnRMaW5lQnJlYWtJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaApAQCAtMzQsMjQg
KzM0LDIyIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVTb2Z0TGluZUJyZWFr
SXRlbSA6IHB1YmxpYyBJbmxpbmVJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElubGluZVNvZnRMaW5lQnJlYWtJdGVtPiBjcmVhdGVTb2Z0TGluZUJyZWFrSXRlbShj
b25zdCBCb3gmLCB1bnNpZ25lZCBwb3NpdGlvbik7CisgICAgc3RhdGljIElubGluZVNvZnRMaW5l
QnJlYWtJdGVtIGNyZWF0ZVNvZnRMaW5lQnJlYWtJdGVtKGNvbnN0IEJveCYsIHVuc2lnbmVkIHBv
c2l0aW9uKTsKIAotICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQorICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9y
UG9zaXRpb247IH0KIAogICAgIElubGluZVNvZnRMaW5lQnJlYWtJdGVtKGNvbnN0IEJveCYsIHVu
c2lnbmVkIHBvc2l0aW9uKTsKLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9wb3NpdGlvbiB7IDAg
fTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbT4gSW5saW5l
U29mdExpbmVCcmVha0l0ZW06OmNyZWF0ZVNvZnRMaW5lQnJlYWtJdGVtKGNvbnN0IEJveCYgaW5s
aW5lQm94LCB1bnNpZ25lZCBwb3NpdGlvbikKK2lubGluZSBJbmxpbmVTb2Z0TGluZUJyZWFrSXRl
bSBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbTo6Y3JlYXRlU29mdExpbmVCcmVha0l0ZW0oY29uc3Qg
Qm94JiBpbmxpbmVCb3gsIHVuc2lnbmVkIHBvc2l0aW9uKQogewotICAgIHJldHVybiBtYWtlVW5p
cXVlPElubGluZVNvZnRMaW5lQnJlYWtJdGVtPihpbmxpbmVCb3gsIHBvc2l0aW9uKTsKKyAgICBy
ZXR1cm4geyBpbmxpbmVCb3gsIHBvc2l0aW9uIH07CiB9CiAKLUlubGluZVNvZnRMaW5lQnJlYWtJ
dGVtOjpJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbShjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWdu
ZWQgcG9zaXRpb24pCitpbmxpbmUgSW5saW5lU29mdExpbmVCcmVha0l0ZW06OklubGluZVNvZnRM
aW5lQnJlYWtJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94LCB1bnNpZ25lZCBwb3NpdGlvbikKICAg
ICA6IElubGluZUl0ZW0oaW5saW5lQm94LCBUeXBlOjpTb2Z0TGluZUJyZWFrKQotICAgICwgbV9w
b3NpdGlvbihwb3NpdGlvbikKIHsKKyAgICBtX3N0YXJ0T3JQb3NpdGlvbiA9IHBvc2l0aW9uOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKaW5kZXggZGI1MWRkNGY2YmIuLjJmNzg5YTM3NzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVU
ZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lVGV4dEl0ZW0uY3BwCkBAIC0zNiw2ICszNiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAorc3RhdGljX2Fzc2VydChzaXplb2YoSW5saW5lSXRlbSkg
PT0gc2l6ZW9mKElubGluZVRleHRJdGVtKSwgIiIpOworCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNX
aGl0ZXNwYWNlQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlciwgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUp
CiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnICcgfHwgY2hhcmFjdGVyID09ICdcdCcgfHwg
KGNoYXJhY3RlciA9PSAnXG4nICYmICFwcmVzZXJ2ZU5ld2xpbmUpOwpAQCAtMTE5LDM1ICsxMjEs
NiBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5l
SXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgfQogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lVGV4dEl0ZW0+IElubGluZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRlbShjb25z
dCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgpCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5s
aW5lVGV4dEl0ZW0+KGlubGluZUJveCwgc3RhcnQsIGxlbmd0aCwgd2lkdGgsIFRleHRJdGVtVHlw
ZTo6V2hpdGVzcGFjZSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5s
aW5lVGV4dEl0ZW06OmNyZWF0ZU5vbldoaXRlc3BhY2VJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB3aWR0aCkKLXsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5s
aW5lQm94LCBzdGFydCwgbGVuZ3RoLCB3aWR0aCwgVGV4dEl0ZW1UeXBlOjpOb25XaGl0ZXNwYWNl
KTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6
Y3JlYXRlRW1wdHlJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94KQotewotICAgIHJldHVybiBtYWtl
VW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gpOwotfQotCi1JbmxpbmVUZXh0SXRlbTo6
SW5saW5lVGV4dEl0ZW0oY29uc3QgQm94JiBpbmxpbmVCb3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoLCBUZXh0SXRlbVR5
cGUgdGV4dEl0ZW1UeXBlKQotICAgIDogSW5saW5lSXRlbShpbmxpbmVCb3gsIFR5cGU6OlRleHQp
Ci0gICAgLCBtX3N0YXJ0KHN0YXJ0KQotICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV93
aWR0aCh3aWR0aCkKLSAgICAsIG1fdGV4dEl0ZW1UeXBlKHRleHRJdGVtVHlwZSkKLXsKLX0KLQot
SW5saW5lVGV4dEl0ZW06OklubGluZVRleHRJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94KQotICAg
IDogSW5saW5lSXRlbShpbmxpbmVCb3gsIFR5cGU6OlRleHQpCi17Ci19Ci0KIGJvb2wgSW5saW5l
VGV4dEl0ZW06OmlzRW1wdHlDb250ZW50KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGNoZWNrIGZvciBtb3JlIHplcm8gd2lkdGggY29udGVudCBhbmQgbm90IGp1c3QgVSsyMDBC
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lVGV4dEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmgKaW5kZXggNmVkNThhY2RjYWEuLjJmNzI0YTdhNTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJ
dGVtLmgKQEAgLTM3LDMzICszNyw1OCBAQCBjbGFzcyBJbmxpbmVUZXh0SXRlbSA6IHB1YmxpYyBJ
bmxpbmVJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBlbmRUZXh0
SXRlbXMoSW5saW5lSXRlbXMmLCBjb25zdCBCb3gmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IGNyZWF0ZVdoaXRlc3BhY2VJdGVtKGNvbnN0IEJveCYsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHdpZHRoKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBjcmVh
dGVOb25XaGl0ZXNwYWNlSXRlbShjb25zdCBCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCk7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gY3JlYXRlRW1wdHlJdGVtKGNvbnN0IEJveCYp
OworICAgIHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBC
b3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB3aWR0aCk7CisgICAgc3RhdGljIElubGluZVRleHRJdGVtIGNyZWF0ZU5vbldoaXRl
c3BhY2VJdGVtKGNvbnN0IEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMgSW5saW5lVGV4dEl0
ZW0gY3JlYXRlRW1wdHlJdGVtKGNvbnN0IEJveCYpOwogCi0gICAgdW5zaWduZWQgc3RhcnQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0T3JQb3NpdGlvbjsgfQogICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXJ0KCkgKyBsZW5ndGgoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICBib29sIGlzV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dEl0ZW1UeXBlID09IFRleHRJdGVtVHlwZTo6V2hpdGVzcGFjZTsgfQogICAgIGJv
b2wgaXNDb2xsYXBzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzV2hpdGVzcGFjZSgpICYmIHN0eWxl
KCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7IH0KLSAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0
PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICBPcHRpb25hbDxJbmxpbmVM
YXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lkdGggPyBtYWtlT3B0aW9u
YWwobV93aWR0aCkgOiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07IH0KICAgICBib29s
IGlzRW1wdHlDb250ZW50KCkgY29uc3Q7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4
dEl0ZW0+IGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lVGV4dEl0ZW0+IHJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKLSAgICBlbnVt
IGNsYXNzIFRleHRJdGVtVHlwZSB7IFVuZGVmaW5lZCwgV2hpdGVzcGFjZSwgTm9uV2hpdGVzcGFj
ZSB9OworICAgIHVzaW5nIElubGluZUl0ZW06OlRleHRJdGVtVHlwZTsKKwogICAgIElubGluZVRl
eHRJdGVtKGNvbnN0IEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE9wdGlv
bmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoLCBUZXh0SXRlbVR5cGUpOwogICAgIElubGluZVRl
eHRJdGVtKGNvbnN0IEJveCYpOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fc3RhcnQgeyAw
IH07Ci0gICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07Ci0gICAgT3B0aW9uYWw8SW5saW5lTGF5
b3V0VW5pdD4gbV93aWR0aDsKLSAgICBUZXh0SXRlbVR5cGUgbV90ZXh0SXRlbVR5cGUgeyBUZXh0
SXRlbVR5cGU6OlVuZGVmaW5lZCB9OwogfTsKIAoraW5saW5lIElubGluZVRleHRJdGVtIElubGlu
ZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBCb3gmIGlubGluZUJveCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
d2lkdGgpCit7CisgICAgcmV0dXJuIHsgaW5saW5lQm94LCBzdGFydCwgbGVuZ3RoLCB3aWR0aCwg
VGV4dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlIH07Cit9CisKK2lubGluZSBJbmxpbmVUZXh0SXRlbSBJ
bmxpbmVUZXh0SXRlbTo6Y3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgQm94JiBpbmxpbmVC
b3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IHdpZHRoKQoreworICAgIHJldHVybiB7IGlubGluZUJveCwgc3RhcnQsIGxlbmd0aCwg
d2lkdGgsIFRleHRJdGVtVHlwZTo6Tm9uV2hpdGVzcGFjZSB9OworfQorCitpbmxpbmUgSW5saW5l
VGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUVtcHR5SXRlbShjb25zdCBCb3gmIGlubGlu
ZUJveCkKK3sKKyAgICByZXR1cm4geyBpbmxpbmVCb3ggfTsKK30KKworaW5saW5lIElubGluZVRl
eHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgsIFRl
eHRJdGVtVHlwZSB0ZXh0SXRlbVR5cGUpCisgICAgOiBJbmxpbmVJdGVtKGlubGluZUJveCwgVHlw
ZTo6VGV4dCkKK3sKKyAgICBtX3N0YXJ0T3JQb3NpdGlvbiA9IHN0YXJ0OworICAgIG1fbGVuZ3Ro
ID0gbGVuZ3RoOworICAgIG1faGFzV2lkdGggPSAhIXdpZHRoOworICAgIG1fd2lkdGggPSB3aWR0
aC52YWx1ZU9yKDApOworICAgIG1fdGV4dEl0ZW1UeXBlID0gdGV4dEl0ZW1UeXBlOworfQorCitp
bmxpbmUgSW5saW5lVGV4dEl0ZW06OklubGluZVRleHRJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94
KQorICAgIDogSW5saW5lSXRlbShpbmxpbmVCb3gsIFR5cGU6OlRleHQpCit7Cit9CisKIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZUxheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuY3BwCmluZGV4IGRmYmY5Y2E4Nzc2Li5lZWM5ODM4MzgxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxh
eW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IG5leHRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNv
bnRlbnQsIHVuc2lnCiAgICAgYXV0byBuZXh0SW5saW5lSXRlbVdpdGhDb250ZW50ID0gWyZdIChh
dXRvIGluZGV4KSB7CiAgICAgICAgIC8vIEJyZWFrIGF0IHRoZSBmaXJzdCB0ZXh0L2JveC9saW5l
IGJyZWFrIGlubGluZSBpdGVtLgogICAgICAgICBmb3IgKDsgaW5kZXggPCBlbmQ7ICsraW5kZXgp
IHsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSAqaW5saW5lQ29udGVudFtpbmRleF07
CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gaW5saW5lQ29udGVudFtpbmRleF07CiAg
ICAgICAgICAgICBpZiAoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkg
fHwgaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgICAgIHJldHVybiBXcmFw
Q29udGVudCB7IGluZGV4LCBpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfTsKICAgICAgICAgfQpA
QCAtMTU0LDE0ICsxNTQsMTQgQEAgc3RhdGljIGlubGluZSBzaXplX3QgbmV4dFdyYXBPcHBvcnR1
bml0eShjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5zaWcKICAgICAgICAgICAg
IC8vIFdlIGFsd2F5cyBzdG9wIGF0IGxpbmUgYnJlYWtzLiBUaGUgd3JhcCBwb3NpdGlvbiBpcyBh
ZnRlciB0aGUgbGluZSBicmVhay4KICAgICAgICAgICAgIHJldHVybiAqbmV4dENvbnRlbnQgKyAx
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0F0U29mdFdyYXBPcHBvcnR1bml0eSgqaW5saW5l
Q29udGVudFsqc3RhcnRDb250ZW50XSwgKmlubGluZUNvbnRlbnRbKm5leHRDb250ZW50XSkpIHsK
KyAgICAgICAgaWYgKGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KGlubGluZUNvbnRlbnRbKnN0YXJ0
Q29udGVudF0sIGlubGluZUNvbnRlbnRbKm5leHRDb250ZW50XSkpIHsKICAgICAgICAgICAgIC8v
IFRoZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIHRo
ZSBuZXh0Q29udGVudC4KICAgICAgICAgICAgIC8vIE5vdyBmb3J3YXJkLWZpbmQgZnJvbSB0aGUg
c3RhcnQgcG9zaXRpb24gdG8gc2VlIHdoZXJlIHdlIGNhbiBhY3R1YWxseSB3cmFwLgogICAgICAg
ICAgICAgLy8gW2V4LV1bYW1wbGVdIHZzLiBbZXgtXVtjb250YWluZXIgc3RhcnRdW2NvbnRhaW5l
ciBlbmRdW2FtcGxlXQogICAgICAgICAgICAgLy8gd2hlcmUgW2V4LV0gaXMgc3RhcnRDb250ZW50
IGFuZCBbYW1wbGVdIGlzIHRoZSBuZXh0Q29udGVudC4KICAgICAgICAgICAgIGF1dG8gY2FuZGlk
YXRlSW5kZXggPSAqc3RhcnRDb250ZW50ICsgMTsKICAgICAgICAgICAgIGZvciAoOyBjYW5kaWRh
dGVJbmRleCA8ICpuZXh0Q29udGVudDsgKytjYW5kaWRhdGVJbmRleCkgewotICAgICAgICAgICAg
ICAgIGlmIChpbmxpbmVDb250ZW50W2NhbmRpZGF0ZUluZGV4XS0+aXNDb250YWluZXJTdGFydCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlubGluZUNvbnRlbnRbY2FuZGlkYXRlSW5kZXhdLmlz
Q29udGFpbmVyU3RhcnQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBpbmxpbmUgY29udGVu
dCBhbmQgW2NvbnRhaW5lciBzdGFydF0gYW5kIFtjb250YWluZXIgZW5kXSBmb3JtIHVuYnJlYWth
YmxlIGNvbnRlbnQuCiAgICAgICAgICAgICAgICAgICAgIC8vIGV4LTxzcGFuPjwvc3Bhbj5hbXBs
ZSAgOiB3cmFwIG9wcG9ydHVuaXR5IGlzIGFmdGVyICJleC0iLgogICAgICAgICAgICAgICAgICAg
ICAvLyBleC08L3NwYW4+PC9zcGFuPmFtcGxlIDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAi
ZXgtPC9zcGFuPjwvc3Bhbj4iLgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IG5leHRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQs
IHVuc2lnCiBzdHJ1Y3QgTGluZUNhbmRpZGF0ZUNvbnRlbnQgewogICAgIHZvaWQgYXBwZW5kSW5s
aW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGgpOwogICAgIHZvaWQgYXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0pIHsgc2V0VHJhaWxpbmdMaW5lQnJlYWsoaW5saW5lSXRlbSk7IH0KLSAgICB2b2lkIGFwcGVu
ZEZsb2F0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pIHsgbV9mbG9hdHMuYXBwZW5kKG1h
a2VXZWFrUHRyKGlubGluZUl0ZW0pKTsgfQorICAgIHZvaWQgYXBwZW5kRmxvYXQoY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSkgeyBtX2Zsb2F0cy5hcHBlbmQoJmlubGluZUl0ZW0pOyB9CiAK
ICAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0cygpIGNvbnN0IHsgcmV0dXJuICFtX2Zsb2F0cy5p
c0VtcHR5KCk7IH0KICAgICBjb25zdCBMaW5lQnJlYWtlcjo6UnVuTGlzdCYgaW5saW5lUnVucygp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lUnVuczsgfQpAQCAtMzMwLDcgKzMzMCw3IEBAIExpbmVM
YXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6Y2xvc2UoTGluZUJ1
aWxkZXImIGxpbmUsIHVuc2lnCiAgICAgICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6OklzTGFz
dExpbmVXaXRoSW5saW5lQ29udGVudDo6Tm87CiAgICAgICAgIC8vIE9taXQgZmxvYXRzIHRvIHNl
ZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGxpbmUgd2l0aCBpbmxpbmUgY29udGVudC4KICAgICAgICAg
Zm9yIChhdXRvIGkgPSBtX2lubGluZUl0ZW1zLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAg
aWYgKCFtX2lubGluZUl0ZW1zW2ldLT5pc0Zsb2F0KCkpCisgICAgICAgICAgICBpZiAoIW1faW5s
aW5lSXRlbXNbaV0uaXNGbG9hdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBpID09IHRyYWls
aW5nSW5saW5lSXRlbUluZGV4ID8gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudDo6WWVzIDogTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudDo6Tm87
CiAgICAgICAgIH0KICAgICAgICAgLy8gVGhlcmUgaGFzIHRvIGJlIGF0IGxlYXN0IG9uZSBub24t
ZmxvYXQgaXRlbS4KQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIExpbmVMYXlvdXRDb250ZXh0Ojpu
ZXh0Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZUNvbnRlbnQmIGNhbmRpZGF0ZUNvbnRlbgog
ICAgIGlmIChwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpIHsKICAgICAgICAgLy8gSGFuZGxl
IGxlYWRpbmcgcGFydGlhbCBjb250ZW50IGZpcnN0IChzcGxpdCB0ZXh0IGZyb20gdGhlIHByZXZp
b3VzIGxpbmUpLgogICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIGxlYWRpbmcgaW5saW5l
IGl0ZW0uCi0gICAgICAgIG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSA9IGRvd25jYXN0PElubGlu
ZVRleHRJdGVtPigqbV9pbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdKS5yaWdodCgqcGFydGlh
bExlYWRpbmdDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVt
ID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4
XSkucmlnaHQoKnBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CiAgICAgICAgIGF1dG8gaXRl
bVdpZHRoID0gaW5saW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJl
bnRMb2dpY2FsUmlnaHQpOwogICAgICAgICBjYW5kaWRhdGVDb250ZW50LmFwcGVuZElubGluZUNv
bnRlbnQoKm1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgaXRlbVdpZHRoKTsKICAgICAgICAgY3Vy
cmVudExvZ2ljYWxSaWdodCArPSBpdGVtV2lkdGg7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBM
aW5lTGF5b3V0Q29udGV4dDo6bmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGVDb250ZW50
JiBjYW5kaWRhdGVDb250ZW4KICAgICB9CiAKICAgICBmb3IgKGF1dG8gaW5kZXggPSBpbmxpbmVJ
dGVtSW5kZXg7IGluZGV4IDwgc29mdFdyYXBPcHBvcnR1bml0eUluZGV4OyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSAqbV9pbmxpbmVJdGVtc1tpbmRleF07CisgICAgICAg
IGF1dG8mIGlubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1zW2luZGV4XTsKICAgICAgICAgaWYgKGlu
bGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0NvbnRhaW5lclN0YXJ0KCkgfHwgaW5s
aW5lSXRlbS5pc0NvbnRhaW5lckVuZCgpKSB7CiAgICAgICAgICAgICBhdXRvIGlubGluZUl0ZW5t
V2lkdGggPSBpbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7
CiAgICAgICAgICAgICBjYW5kaWRhdGVDb250ZW50LmFwcGVuZElubGluZUNvbnRlbnQoaW5saW5l
SXRlbSwgaW5saW5lSXRlbm1XaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA5Y2M2NWEz
MmY5NC4uZWZkMjYxNDA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAtNDYsMTIgKzQ2LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRyYWls
aW5nSW5saW5lSXRlbUluZGV4OwogICAgICAgICBPcHRpb25hbDxQYXJ0aWFsQ29udGVudD4gcGFy
dGlhbENvbnRlbnQ7Ci0gICAgICAgIFZlY3RvcjxXZWFrUHRyPElubGluZUl0ZW0+PiBmbG9hdHM7
CisgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVJdGVtKj4gZmxvYXRzOwogICAgICAgICBjb25z
dCBMaW5lQnVpbGRlcjo6UnVuTGlzdCBydW5MaXN0OwogICAgICAgICBjb25zdCBEaXNwbGF5OjpM
aW5lQm94IGxpbmVCb3g7CiAgICAgfTsKICAgICBMaW5lQ29udGVudCBsYXlvdXRMaW5lKExpbmVC
dWlsZGVyJiwgdW5zaWduZWQgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7Ci0gICAgdXNpbmcgRmxvYXRMaXN0ID0g
VmVjdG9yPFdlYWtQdHI8SW5saW5lSXRlbT4+OworICAgIHVzaW5nIEZsb2F0TGlzdCA9IFZlY3Rv
cjxjb25zdCBJbmxpbmVJdGVtKj47CiAKIHByaXZhdGU6CiAgICAgdm9pZCBuZXh0Q29udGVudEZv
ckxpbmUoTGluZUNhbmRpZGF0ZUNvbnRlbnQmLCB1bnNpZ25lZCBpbmxpbmVJdGVtSW5kZXgsIE9w
dGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50
TG9naWNhbFJpZ2h0KTsK
</data>
<flag name="review"
          id="403791"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="403793"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388037</attachid>
            <date>2020-01-17 07:33:00 -0800</date>
            <delta_ts>2020-01-17 08:16:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-inline-item-vector-2.patch</filename>
            <type>text/plain</type>
            <size>22495</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YmY0OTQ1NjlmZC4uYjY5Yjg5OTcyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMC0wMS0xNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBBbGxvY2F0ZSBJbmxpbmVJdGVtcyBpbiBhIHZlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIEV2ZW4gdGhlIGxh
cmdlc3QgSW5saW5lSXRlbSAoSW5saW5lVGV4dEl0ZW0pIGlzIHNtYWxsIChmaXRzIHRvIDI0IGJ5
dGVzKSwgYW5kIHRoZXkgYXJlIGFsbG9jYXRlZAorICAgICAgICBpbiBsYXJnZSBudW1iZXJzIChv
bmUgcGVyIHdvcmQgYW5kIHBlciB3aGl0ZXNwYWNlIHR5cGljYWxseSkuIFJlZHVjZSBoZWFwIGFs
bG9jYXRpb25zIGJ5IHR1cm5pbmcKKyAgICAgICAgSW5saW5lSXRlbSBpbnRvIGEgZml4ZWQgc2l6
ZSB0eXBlLgorCisgICAgICAgIFRoZSBJbmxpbmVJdGVtIHZlY3RvciBpcyBpbW11dGFibGUgZHVy
aW5nIGxheW91dCBzbyBwb2ludGVyIHRvIGl0ZW1zIGNhbiBzdGlsbCBiZSBzYWZlbHkgdXNlZC4K
KworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmFkZElubGluZUl0ZW0pOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVJdGVtOjpJbmxpbmVJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUl0ZW06OmxheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUl0ZW06OnN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lSXRlbTo6SW5saW5lSXRlbSk6CisKKyAgICAgICAgR2F0aGVyIG1lbWJlcnMgZnJv
bSB0aGUgc3ViY2xhc3NlcyBhcyBwcm90ZWN0ZWQgZmllbGRzLgorCisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaDoKKworICAgICAgICBN
b3ZlIHRoZSBmaWVsZCB0byB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbTo6cG9zaXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbTo6Y3JlYXRlU29mdExpbmVC
cmVha0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVTb2Z0TGluZUJyZWFr
SXRlbTo6SW5saW5lU29mdExpbmVCcmVha0l0ZW0pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRl
bSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpj
cmVhdGVOb25XaGl0ZXNwYWNlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZVRleHRJdGVtOjpjcmVhdGVFbXB0eUl0ZW0pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4dEl0ZW0pOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmg6CisK
KyAgICAgICAgTW92ZSB0aGUgZmllbGRzIHRvIHRoZSBiYXNlIGNsYXNzLgorCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpzdGFydCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjp3aWR0aCBjb25zdCk6CisKKyAgICAgICAg
UGxhY2Ugd2lkdGggb3B0aW9uYWwgaW50byBhIHNlcGFyYXRlIGJpdCBhbmQgYSB2YWx1ZSBhcyB0
aGlzIGFsbG93cyBiZXR0ZXIgcGFja2luZyBvZiBtZW1iZXJzLgorCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpjcmVhdGVOb25XaGl0ZXNwYWNlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpjcmVhdGVFbXB0
eUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6SW5saW5l
VGV4dEl0ZW0pOgorCisgICAgICAgIElubGluZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zLgorCisg
ICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xp
bmVMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bmV4dFdyYXBP
cHBvcnR1bml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5kaWRhdGVDb250
ZW50OjphcHBlbmRGbG9hdCk6CisKKyAgICAgICAgVXNlIGEgcmF3IHBvaW50ZXIgaW5zdGVhZCBv
ZiBhIFdlYWtQdHIuIElubGluZUl0ZW1zIGFyZSBpbW11dHRhYmxlIGR1cmluZyBsYXlvdXQuCisK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6OmNsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50Rm9y
TGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRl
eHQuaDoKKwogMjAyMC0wMS0xNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gT3B0aW1pemUgbmV4dFdyYXBPcHBvcnR1bml0eS9pc0F0U29mdFdy
YXBPcHBvcnR1bml0eSBmb3IgdGhlIG1vc3QgY29tbW9uIGlubGluZSBjb250ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMDI3MzY2MDY5NDMuLmFiNmNjMmU0ZWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zNDUsNyArMzQ1LDcg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5l
ZWRlZCgpCiAgICAgICAgICAgICBpZiAoIXRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0
YXJ0IG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPHNwYW4+KS4KLSAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0
Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOworICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6
OkNvbnRhaW5lclN0YXJ0IH0pOwogICAgICAgICAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNh
c3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgICAgICAgICAgaWYgKCFjb250YWluZXIuaGFz
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTYs
MTcgKzM1NiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5l
Q29udGVudElmTmVlZGVkKCkKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRR
dWV1ZS50YWtlTGFzdCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGlu
bGluZSBjb250YWluZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBpZiAodHJlYXRBc0lu
bGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJ
dGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbSh7IGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVy
RW5kIH0pOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkp
Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1
ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWsp
KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbSh7IGxheW91
dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhayB9KTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5
b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkpOworICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHsgbGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpG
bG9hdCB9KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChsYXlv
dXRCb3guaXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94
Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIElubGluZVRleHRJdGVtOjpj
cmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGxh
eW91dEJveCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3Jt
YXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJv
eCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRp
bmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHsgbGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gg
fSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9
IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nU3RhdGUuaAppbmRleCBmMzUxNjU0ZDUwYi4uM2NmNDQ0MjRiNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5oCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotdXNpbmcgSW5saW5lSXRlbXMgPSBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPElubGluZUl0ZW0+LCAzMD47Cit1c2luZyBJbmxpbmVJdGVtcyA9IFZlY3RvcjxJ
bmxpbmVJdGVtLCAzMD47CiAKIC8vIElubGluZUZvcm1hdHRpbmdTdGF0ZSBob2xkcyB0aGUgc3Rh
dGUgZm9yIGEgcGFydGljdWxhciBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHRyZWUuCiBjbGFz
cyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKCkgeyBy
ZXR1cm4gbV9pbmxpbmVJdGVtczsgfQogICAgIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVt
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbXM7IH0KLSAgICB2b2lkIGFkZElubGluZUl0
ZW0oc3RkOjp1bmlxdWVfcHRyPElubGluZUl0ZW0+JiYgaW5saW5lSXRlbSkgeyBtX2lubGluZUl0
ZW1zLmFwcGVuZChXVEZNb3ZlKGlubGluZUl0ZW0pKTsgfQorICAgIHZvaWQgYWRkSW5saW5lSXRl
bShJbmxpbmVJdGVtJiYgaW5saW5lSXRlbSkgeyBtX2lubGluZUl0ZW1zLmFwcGVuZChXVEZNb3Zl
KGlubGluZUl0ZW0pKTsgfQogCiAgICAgY29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCogZGlz
cGxheUlubGluZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJbmxpbmVDb250ZW50
LmdldCgpOyB9CiAgICAgRGlzcGxheTo6SW5saW5lQ29udGVudCYgZW5zdXJlRGlzcGxheUlubGlu
ZUNvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lSXRlbS5jcHAKaW5kZXggNTJlNGZjYWIyMDQuLjVjYTk4ODI2YWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJ
dGVtLmNwcApAQCAtMzMsMTEgKzMzLDE3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAotSW5saW5lSXRlbTo6SW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJv
eCwgVHlwZSB0eXBlKQotICAgIDogbV9sYXlvdXRCb3gobGF5b3V0Qm94KQotICAgICwgbV90eXBl
KHR5cGUpCi17Ci19CitzdHJ1Y3QgU2FtZVNpemVBc0lubGluZUl0ZW0geworICAgIHZvaWQqIGxh
eW91dEJveDsKKyAgICB1aW50OF90IGVudW0xOworICAgIHVpbnQ4X3QgZW51bTI7CisgICAgYm9v
bCB3aWR0aEJvb2w7CisgICAgSW5saW5lTGF5b3V0VW5pdCB3aWR0aDsKKyAgICB1bnNpZ25lZCBz
dGFydDsKKyAgICB1bnNpZ25lZCBsZW5ndGg7Cit9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihJ
bmxpbmVJdGVtKSA9PSBzaXplb2YoU2FtZVNpemVBc0lubGluZUl0ZW0pLCAiIik7CiAKIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0
ZW0uaAppbmRleCBkYWYzNTc0NzIzZi4uMTA2NGNmOTgyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKQEAgLTI4LDIwICsy
OCwxOSBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVk
ZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLWNsYXNzIElubGluZUl0ZW0gOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8SW5saW5lSXRlbT4geworY2xhc3MgSW5saW5lSXRlbSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4
dCwgSGFyZExpbmVCcmVhaywgU29mdExpbmVCcmVhaywgQm94LCBGbG9hdCwgQ29udGFpbmVyU3Rh
cnQsIENvbnRhaW5lckVuZCB9OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBUZXh0
LCBIYXJkTGluZUJyZWFrLCBTb2Z0TGluZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250YWluZXJTdGFy
dCwgQ29udGFpbmVyRW5kIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJveCwg
VHlwZSk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBj
b25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94OyB9Ci0gICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3guc3R5
bGUoKTsgfQorICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5
b3V0Qm94OyB9CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0Qm94KCkuc3R5bGUoKTsgfQogCiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gVHlwZTo6VGV4dDsgfQogICAgIGJvb2wgaXNCb3goKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gVHlwZTo6Qm94OyB9CkBAIC01MywxMCArNTIsMjcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNDb250YWluZXJFbmQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6Q29u
dGFpbmVyRW5kOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQm94JiBtX2xheW91dEJveDsKLSAg
ICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBjb25zdCBCb3gqIG1fbGF5b3V0Qm94IHsgbnVsbHB0
ciB9OworICAgIFR5cGUgbV90eXBlIHsgfTsKKworcHJvdGVjdGVkOgorICAgIC8vIEZvciBJbmxp
bmVUZXh0SXRlbQorICAgIGVudW0gY2xhc3MgVGV4dEl0ZW1UeXBlICA6IHVpbnQ4X3QgeyBVbmRl
ZmluZWQsIFdoaXRlc3BhY2UsIE5vbldoaXRlc3BhY2UgfTsKKyAgICBUZXh0SXRlbVR5cGUgbV90
ZXh0SXRlbVR5cGUgeyBUZXh0SXRlbVR5cGU6OlVuZGVmaW5lZCB9OworICAgIGJvb2wgbV9oYXNX
aWR0aCB7IGZhbHNlIH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX3dpZHRoIHsgfTsKKyAgICB1
bnNpZ25lZCBtX2xlbmd0aCB7IDAgfTsKKworICAgIC8vIEZvciBJbmxpbmVUZXh0SXRlbSBhbmQg
SW5saW5lU29mdExpbmVCcmVha0l0ZW0KKyAgICB1bnNpZ25lZCBtX3N0YXJ0T3JQb3NpdGlvbiB7
IDAgfTsKIH07CiAKK2lubGluZSBJbmxpbmVJdGVtOjpJbmxpbmVJdGVtKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBUeXBlIHR5cGUpCisgICAgOiBtX2xheW91dEJveCgmbGF5b3V0Qm94KQorICAgICwg
bV90eXBlKHR5cGUpCit7Cit9CisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTkxJ
TkVfSVRFTShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpMYXlvdXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW0mIGlubGluZUl0
ZW0pIHsgcmV0dXJuIGlubGluZUl0ZW0ucHJlZGljYXRlOyB9IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVNvZnRMaW5lQnJlYWtJdGVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVTb2Z0TGlu
ZUJyZWFrSXRlbS5oCmluZGV4IDcyMGI3NWVlNGE2Li5mNmQyYzBkYmMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lU29mdExpbmVCcmVh
a0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVTb2Z0TGluZUJyZWFrSXRlbS5oCkBAIC0zNCwyNCArMzQsMjIgQEAgbmFtZXNwYWNlIExheW91
dCB7CiAKIGNsYXNzIElubGluZVNvZnRMaW5lQnJlYWtJdGVtIDogcHVibGljIElubGluZUl0ZW0g
ewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lU29mdExpbmVCcmVh
a0l0ZW0+IGNyZWF0ZVNvZnRMaW5lQnJlYWtJdGVtKGNvbnN0IEJveCYsIHVuc2lnbmVkIHBvc2l0
aW9uKTsKKyAgICBzdGF0aWMgSW5saW5lU29mdExpbmVCcmVha0l0ZW0gY3JlYXRlU29mdExpbmVC
cmVha0l0ZW0oY29uc3QgQm94JiwgdW5zaWduZWQgcG9zaXRpb24pOwogCi0gICAgdW5zaWduZWQg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgdW5zaWduZWQgcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T3JQb3NpdGlvbjsgfQogCiAgICAgSW5saW5l
U29mdExpbmVCcmVha0l0ZW0oY29uc3QgQm94JiwgdW5zaWduZWQgcG9zaXRpb24pOwotcHJpdmF0
ZToKLSAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uIHsgMCB9OwogfTsKIAotc3RkOjp1bmlxdWVfcHRy
PElubGluZVNvZnRMaW5lQnJlYWtJdGVtPiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbTo6Y3JlYXRl
U29mdExpbmVCcmVha0l0ZW0oY29uc3QgQm94JiBpbmxpbmVCb3gsIHVuc2lnbmVkIHBvc2l0aW9u
KQoraW5saW5lIElubGluZVNvZnRMaW5lQnJlYWtJdGVtIElubGluZVNvZnRMaW5lQnJlYWtJdGVt
OjpjcmVhdGVTb2Z0TGluZUJyZWFrSXRlbShjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQg
cG9zaXRpb24pCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lU29mdExpbmVCcmVha0l0
ZW0+KGlubGluZUJveCwgcG9zaXRpb24pOworICAgIHJldHVybiB7IGlubGluZUJveCwgcG9zaXRp
b24gfTsKIH0KIAotSW5saW5lU29mdExpbmVCcmVha0l0ZW06OklubGluZVNvZnRMaW5lQnJlYWtJ
dGVtKGNvbnN0IEJveCYgaW5saW5lQm94LCB1bnNpZ25lZCBwb3NpdGlvbikKK2lubGluZSBJbmxp
bmVTb2Z0TGluZUJyZWFrSXRlbTo6SW5saW5lU29mdExpbmVCcmVha0l0ZW0oY29uc3QgQm94JiBp
bmxpbmVCb3gsIHVuc2lnbmVkIHBvc2l0aW9uKQogICAgIDogSW5saW5lSXRlbShpbmxpbmVCb3gs
IFR5cGU6OlNvZnRMaW5lQnJlYWspCi0gICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogeworICAg
IG1fc3RhcnRPclBvc2l0aW9uID0gcG9zaXRpb247CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApp
bmRleCBkYjUxZGQ0ZjZiYi4uMmY3ODlhMzc3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKQEAgLTM2
LDYgKzM2LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihJbmxpbmVJdGVtKSA9PSBzaXplb2YoSW5saW5lVGV4dEl0ZW0p
LCAiIik7CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2VDaGFyYWN0ZXIoVUNoYXIg
Y2hhcmFjdGVyLCBib29sIHByZXNlcnZlTmV3bGluZSkKIHsKICAgICByZXR1cm4gY2hhcmFjdGVy
ID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JyB8fCAoY2hhcmFjdGVyID09ICdcbicgJiYgIXBy
ZXNlcnZlTmV3bGluZSk7CkBAIC0xMTksMzUgKzEyMSw2IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06
OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29u
c3QKICAgICB9CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4
dEl0ZW06OmNyZWF0ZVdoaXRlc3BhY2VJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0
aCkKLXsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBz
dGFydCwgbGVuZ3RoLCB3aWR0aCwgVGV4dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlKTsKLX0KLQotc3Rk
Ojp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlTm9uV2hp
dGVzcGFjZUl0ZW0oY29uc3QgQm94JiBpbmxpbmVCb3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKQotewotICAgIHJldHVy
biBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIHN0YXJ0LCBsZW5ndGgsIHdp
ZHRoLCBUZXh0SXRlbVR5cGU6Ok5vbldoaXRlc3BhY2UpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lVGV4dEl0ZW0+IElubGluZVRleHRJdGVtOjpjcmVhdGVFbXB0eUl0ZW0oY29uc3QgQm94
JiBpbmxpbmVCb3gpCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUJveCk7Ci19Ci0KLUlubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBCb3gm
IGlubGluZUJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gd2lkdGgsIFRleHRJdGVtVHlwZSB0ZXh0SXRlbVR5cGUpCi0gICAgOiBJ
bmxpbmVJdGVtKGlubGluZUJveCwgVHlwZTo6VGV4dCkKLSAgICAsIG1fc3RhcnQoc3RhcnQpCi0g
ICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgLCBtX3dpZHRoKHdpZHRoKQotICAgICwgbV90ZXh0
SXRlbVR5cGUodGV4dEl0ZW1UeXBlKQotewotfQotCi1JbmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4
dEl0ZW0oY29uc3QgQm94JiBpbmxpbmVCb3gpCi0gICAgOiBJbmxpbmVJdGVtKGlubGluZUJveCwg
VHlwZTo6VGV4dCkKLXsKLX0KLQogYm9vbCBJbmxpbmVUZXh0SXRlbTo6aXNFbXB0eUNvbnRlbnQo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgZm9yIG1vcmUgemVybyB3
aWR0aCBjb250ZW50IGFuZCBub3QganVzdCBVKzIwMEIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaAppbmRleCA2ZWQ1
OGFjZGNhYS4uMmY3MjRhN2E1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaApAQCAtMzcsMzMgKzM3LDU4IEBA
IGNsYXNzIElubGluZVRleHRJdGVtIDogcHVibGljIElubGluZUl0ZW0gewogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYsIGNvbnN0
IEJveCYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gY3Jl
YXRlV2hpdGVzcGFjZUl0ZW0oY29uc3QgQm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgpOwotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IGNyZWF0ZU5vbldoaXRlc3BhY2VJdGVtKGNvbnN0
IEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHdpZHRoKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJ
dGVtPiBjcmVhdGVFbXB0eUl0ZW0oY29uc3QgQm94Jik7CisgICAgc3RhdGljIElubGluZVRleHRJ
dGVtIGNyZWF0ZVdoaXRlc3BhY2VJdGVtKGNvbnN0IEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0
aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgQm94JiwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
d2lkdGgpOworICAgIHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVhdGVFbXB0eUl0ZW0oY29uc3Qg
Qm94Jik7CiAKLSAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0K
KyAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPclBvc2l0aW9uOyB9
CiAgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgpOyB9
CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAogICAg
IGJvb2wgaXNXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SXRlbVR5cGUgPT0gVGV4
dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlOyB9CiAgICAgYm9vbCBpc0NvbGxhcHNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gaXNXaGl0ZXNwYWNlKCkgJiYgc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsg
fQotICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aDsgfQorICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNXaWR0aCA/IG1ha2VPcHRpb25hbChtX3dpZHRoKSA6IE9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IHsgfTsgfQogICAgIGJvb2wgaXNFbXB0eUNvbnRlbnQoKSBjb25zdDsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gbGVmdCh1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gcmlnaHQodW5z
aWduZWQgbGVuZ3RoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgVGV4dEl0ZW1UeXBlIHsgVW5k
ZWZpbmVkLCBXaGl0ZXNwYWNlLCBOb25XaGl0ZXNwYWNlIH07CisgICAgdXNpbmcgSW5saW5lSXRl
bTo6VGV4dEl0ZW1UeXBlOworCiAgICAgSW5saW5lVGV4dEl0ZW0oY29uc3QgQm94JiwgdW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lk
dGgsIFRleHRJdGVtVHlwZSk7CiAgICAgSW5saW5lVGV4dEl0ZW0oY29uc3QgQm94Jik7Ci0KLXBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2xlbmd0
aCB7IDAgfTsKLSAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX3dpZHRoOwotICAgIFRl
eHRJdGVtVHlwZSBtX3RleHRJdGVtVHlwZSB7IFRleHRJdGVtVHlwZTo6VW5kZWZpbmVkIH07CiB9
OwogCitpbmxpbmUgSW5saW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06OmNyZWF0ZVdoaXRlc3Bh
Y2VJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCkKK3sKKyAgICByZXR1cm4geyBp
bmxpbmVCb3gsIHN0YXJ0LCBsZW5ndGgsIHdpZHRoLCBUZXh0SXRlbVR5cGU6OldoaXRlc3BhY2Ug
fTsKK30KKworaW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpjcmVhdGVOb25X
aGl0ZXNwYWNlSXRlbShjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgpCit7CisgICAgcmV0
dXJuIHsgaW5saW5lQm94LCBzdGFydCwgbGVuZ3RoLCB3aWR0aCwgVGV4dEl0ZW1UeXBlOjpOb25X
aGl0ZXNwYWNlIH07Cit9CisKK2lubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxpbmVUZXh0SXRlbTo6
Y3JlYXRlRW1wdHlJdGVtKGNvbnN0IEJveCYgaW5saW5lQm94KQoreworICAgIHJldHVybiB7IGlu
bGluZUJveCB9OworfQorCitpbmxpbmUgSW5saW5lVGV4dEl0ZW06OklubGluZVRleHRJdGVtKGNv
bnN0IEJveCYgaW5saW5lQm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBPcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCwgVGV4dEl0ZW1UeXBlIHRleHRJdGVtVHlwZSkK
KyAgICA6IElubGluZUl0ZW0oaW5saW5lQm94LCBUeXBlOjpUZXh0KQoreworICAgIG1fc3RhcnRP
clBvc2l0aW9uID0gc3RhcnQ7CisgICAgbV9sZW5ndGggPSBsZW5ndGg7CisgICAgbV9oYXNXaWR0
aCA9ICEhd2lkdGg7CisgICAgbV93aWR0aCA9IHdpZHRoLnZhbHVlT3IoMCk7CisgICAgbV90ZXh0
SXRlbVR5cGUgPSB0ZXh0SXRlbVR5cGU7Cit9CisKK2lubGluZSBJbmxpbmVUZXh0SXRlbTo6SW5s
aW5lVGV4dEl0ZW0oY29uc3QgQm94JiBpbmxpbmVCb3gpCisgICAgOiBJbmxpbmVJdGVtKGlubGlu
ZUJveCwgVHlwZTo6VGV4dCkKK3sKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAK
aW5kZXggNTA2MDk4M2YyNTEuLmI3YWFiMzE4NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3Bw
CkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgbmV4dFdyYXBPcHBvcnR1
bml0eShjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5zaWcKICAgICBhdXRvIGlu
bGluZUl0ZW1JbmRleFdpdGhDb250ZW50ID0gWyZdIChhdXRvIGluZGV4KSB7CiAgICAgICAgIC8v
IEJyZWFrIGF0IHRoZSBmaXJzdCB0ZXh0L2JveC9saW5lIGJyZWFrIGlubGluZSBpdGVtLgogICAg
ICAgICBmb3IgKDsgaW5kZXggPCBpbmxpbmVJdGVtQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAg
ICAgIGF1dG8mIGlubGluZUl0ZW0gPSAqaW5saW5lQ29udGVudFtpbmRleF07CisgICAgICAgICAg
ICBhdXRvJiBpbmxpbmVJdGVtID0gaW5saW5lQ29udGVudFtpbmRleF07CiAgICAgICAgICAgICBp
ZiAoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNMaW5lQnJl
YWsoKSkgewpAQCAtMTUwLDEzICsxNTAsMTMgQEAgc3RhdGljIGlubGluZSBzaXplX3QgbmV4dFdy
YXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5zaWcKICAg
ICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9wIGF0IGxpbmUgYnJlYWtzLiBUaGUgd3JhcCBwb3Np
dGlvbiBpcyBhZnRlciB0aGUgbGluZSBicmVhay4KICAgICAgICAgICAgIHJldHVybiBuZXh0Q29u
dGVudEluZGV4ICsgMTsKICAgICAgICAgfQotICAgICAgICBpZiAoaXNBdFNvZnRXcmFwT3Bwb3J0
dW5pdHkoKmlubGluZUNvbnRlbnRbc3RhcnRDb250ZW50SW5kZXhdLCAqaW5saW5lQ29udGVudFtu
ZXh0Q29udGVudEluZGV4XSkpIHsKKyAgICAgICAgaWYgKGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5
KGlubGluZUNvbnRlbnRbc3RhcnRDb250ZW50SW5kZXhdLCBpbmxpbmVDb250ZW50W25leHRDb250
ZW50SW5kZXhdKSkgewogICAgICAgICAgICAgLy8gVGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1
bml0eSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgdGhlIG5leHRDb250ZW50LgogICAgICAgICAgICAg
Ly8gTm93IGZvcndhcmQtZmluZCBmcm9tIHRoZSBzdGFydCBwb3NpdGlvbiB0byBzZWUgd2hlcmUg
d2UgY2FuIGFjdHVhbGx5IHdyYXAuCiAgICAgICAgICAgICAvLyBbZXgtXVthbXBsZV0gdnMuIFtl
eC1dW2NvbnRhaW5lciBzdGFydF1bY29udGFpbmVyIGVuZF1bYW1wbGVdCiAgICAgICAgICAgICAv
LyB3aGVyZSBbZXgtXSBpcyBzdGFydENvbnRlbnQgYW5kIFthbXBsZV0gaXMgdGhlIG5leHRDb250
ZW50LgogICAgICAgICAgICAgZm9yIChhdXRvIGNhbmRpZGF0ZUluZGV4ID0gc3RhcnRDb250ZW50
SW5kZXggKyAxOyBjYW5kaWRhdGVJbmRleCA8IG5leHRDb250ZW50SW5kZXg7ICsrY2FuZGlkYXRl
SW5kZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ29udGVudFtjYW5kaWRhdGVJbmRl
eF0tPmlzQ29udGFpbmVyU3RhcnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDb250
ZW50W2NhbmRpZGF0ZUluZGV4XS5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gaW5saW5lIGNvbnRlbnQgYW5kIFtjb250YWluZXIgc3RhcnRdIGFuZCBbY29udGFp
bmVyIGVuZF0gZm9ybSB1bmJyZWFrYWJsZSBjb250ZW50LgogICAgICAgICAgICAgICAgICAgICAv
LyBleC08c3Bhbj48L3NwYW4+YW1wbGUgIDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAiZXgt
Ii4KICAgICAgICAgICAgICAgICAgICAgLy8gZXgtPC9zcGFuPjwvc3Bhbj5hbXBsZSA6IHdyYXAg
b3Bwb3J0dW5pdHkgaXMgYWZ0ZXIgImV4LTwvc3Bhbj48L3NwYW4+Ii4KQEAgLTE3NSw3ICsxNzUs
NyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBuZXh0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGlu
ZUl0ZW1zJiBpbmxpbmVDb250ZW50LCB1bnNpZwogc3RydWN0IExpbmVDYW5kaWRhdGVDb250ZW50
IHsKICAgICB2b2lkIGFwcGVuZElubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbSYsIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZExpbmVCcmVhayhjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKSB7IHNldFRyYWlsaW5nTGluZUJyZWFrKGlubGluZUl0
ZW0pOyB9Ci0gICAgdm9pZCBhcHBlbmRGbG9hdChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
KSB7IG1fZmxvYXRzLmFwcGVuZChtYWtlV2Vha1B0cihpbmxpbmVJdGVtKSk7IH0KKyAgICB2b2lk
IGFwcGVuZEZsb2F0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pIHsgbV9mbG9hdHMuYXBw
ZW5kKCZpbmxpbmVJdGVtKTsgfQogCiAgICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdHMoKSBjb25z
dCB7IHJldHVybiAhbV9mbG9hdHMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3QgTGluZUJyZWFrZXI6
OlJ1bkxpc3QmIGlubGluZVJ1bnMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZVJ1bnM7IH0KQEAg
LTMyNSw3ICszMjUsNyBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91
dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCB1bnNpZwogICAgICAgICAgICAgcmV0
dXJuIExpbmVCdWlsZGVyOjpJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vOwogICAgICAg
ICAvLyBPbWl0IGZsb2F0cyB0byBzZWUgaWYgdGhpcyBpcyB0aGUgbGFzdCBsaW5lIHdpdGggaW5s
aW5lIGNvbnRlbnQuCiAgICAgICAgIGZvciAoYXV0byBpID0gbV9pbmxpbmVJdGVtcy5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgICAgIGlmICghbV9pbmxpbmVJdGVtc1tpXS0+aXNGbG9hdCgpKQor
ICAgICAgICAgICAgaWYgKCFtX2lubGluZUl0ZW1zW2ldLmlzRmxvYXQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gaSA9PSB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA/IExpbmVCdWlsZGVyOjpJ
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6OlllcyA6IExpbmVCdWlsZGVyOjpJc0xhc3RMaW5l
V2l0aElubGluZUNvbnRlbnQ6Ok5vOwogICAgICAgICB9CiAgICAgICAgIC8vIFRoZXJlIGhhcyB0
byBiZSBhdCBsZWFzdCBvbmUgbm9uLWZsb2F0IGl0ZW0uCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9p
ZCBMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGVDb250
ZW50JiBjYW5kaWRhdGVDb250ZW4KICAgICBpZiAocGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3Ro
KSB7CiAgICAgICAgIC8vIEhhbmRsZSBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBmaXJzdCAoc3Bs
aXQgdGV4dCBmcm9tIHRoZSBwcmV2aW91cyBsaW5lKS4KICAgICAgICAgLy8gQ29uc3RydWN0IGEg
cGFydGlhbCBsZWFkaW5nIGlubGluZSBpdGVtLgotICAgICAgICBtX3BhcnRpYWxMZWFkaW5nVGV4
dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oKm1faW5saW5lSXRlbXNbaW5saW5lSXRl
bUluZGV4XSkucmlnaHQoKnBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CisgICAgICAgIG1f
cGFydGlhbExlYWRpbmdUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihtX2lubGlu
ZUl0ZW1zW2lubGluZUl0ZW1JbmRleF0pLnJpZ2h0KCpwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5n
dGgpOwogICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGlubGluZUl0ZW1XaWR0aCgqbV9wYXJ0aWFs
TGVhZGluZ1RleHRJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKICAgICAgICAgY2FuZGlkYXRl
Q29udGVudC5hcHBlbmRJbmxpbmVDb250ZW50KCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGl0
ZW1XaWR0aCk7CiAgICAgICAgIGN1cnJlbnRMb2dpY2FsUmlnaHQgKz0gaXRlbVdpZHRoOwpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHZvaWQgTGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50Rm9yTGlu
ZShMaW5lQ2FuZGlkYXRlQ29udGVudCYgY2FuZGlkYXRlQ29udGVuCiAgICAgfQogCiAgICAgZm9y
IChhdXRvIGluZGV4ID0gaW5saW5lSXRlbUluZGV4OyBpbmRleCA8IHNvZnRXcmFwT3Bwb3J0dW5p
dHlJbmRleDsgKytpbmRleCkgewotICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gKm1faW5saW5l
SXRlbXNbaW5kZXhdOworICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtc1tp
bmRleF07CiAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlubGluZUl0ZW0uaXND
b250YWluZXJTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKSkgewogICAgICAg
ICAgICAgYXV0byBpbmxpbmVJdGVubVdpZHRoID0gaW5saW5lSXRlbVdpZHRoKGlubGluZUl0ZW0s
IGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAgICAgICAgICAgY2FuZGlkYXRlQ29udGVudC5hcHBl
bmRJbmxpbmVDb250ZW50KGlubGluZUl0ZW0sIGlubGluZUl0ZW5tV2lkdGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRD
b250ZXh0LmgKaW5kZXggOWNjNjVhMzJmOTQuLmVmZDI2MTQwNWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250
ZXh0LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIE9w
dGlvbmFsPHVuc2lnbmVkPiB0cmFpbGluZ0lubGluZUl0ZW1JbmRleDsKICAgICAgICAgT3B0aW9u
YWw8UGFydGlhbENvbnRlbnQ+IHBhcnRpYWxDb250ZW50OwotICAgICAgICBWZWN0b3I8V2Vha1B0
cjxJbmxpbmVJdGVtPj4gZmxvYXRzOworICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lSXRlbSo+
IGZsb2F0czsKICAgICAgICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgcnVuTGlzdDsKICAg
ICAgICAgY29uc3QgRGlzcGxheTo6TGluZUJveCBsaW5lQm94OwogICAgIH07CiAgICAgTGluZUNv
bnRlbnQgbGF5b3V0TGluZShMaW5lQnVpbGRlciYsIHVuc2lnbmVkIGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXgsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOwot
ICAgIHVzaW5nIEZsb2F0TGlzdCA9IFZlY3RvcjxXZWFrUHRyPElubGluZUl0ZW0+PjsKKyAgICB1
c2luZyBGbG9hdExpc3QgPSBWZWN0b3I8Y29uc3QgSW5saW5lSXRlbSo+OwogCiBwcml2YXRlOgog
ICAgIHZvaWQgbmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGVDb250ZW50JiwgdW5zaWdu
ZWQgaW5saW5lSXRlbUluZGV4LCBPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcmZsb3dMZW5ndGgsIElu
bGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxSaWdodCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>