<?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>141785</bug_id>
          
          <creation_ts>2015-02-18 18:09:03 -0800</creation_ts>
          <short_desc>Use references in more places in ImageBuffer</short_desc>
          <delta_ts>2015-02-19 10:28:06 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1070300</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 18:09:03 -0800</bug_when>
    <thetext>Use references in more places in ImageBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070303</commentid>
    <comment_count>1</comment_count>
      <attachid>246866</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 18:12:23 -0800</bug_when>
    <thetext>Created attachment 246866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070305</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 18:12:55 -0800</bug_when>
    <thetext>This won&apos;t apply without https://bugs.webkit.org/show_bug.cgi?id=141784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070432</commentid>
    <comment_count>3</comment_count>
      <attachid>246866</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-19 10:28:06 -0800</bug_when>
    <thetext>Comment on attachment 246866
Patch

Fabulous! r=me (assuming it builds.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246866</attachid>
            <date>2015-02-18 18:12:23 -0800</date>
            <delta_ts>2015-02-19 10:28:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141785-20150218181216.patch</filename>
            <type>text/plain</type>
            <size>79613</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVlNmY4OTRhMDA0NTg2
OGQwZjQxM2Y5MTA4YzRiZGZlMjFkNTI1NS4uNGU0NWMzOGNjMGFhODFhZmFmMDQzNjZmOGI0MTNm
YjMzMzQxOTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyMCBAQAogMjAxNS0wMi0xOCAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBVc2UgcmVmZXJl
bmNlcyBpbiBtb3JlIHBsYWNlcyBpbiBJbWFnZUJ1ZmZlcgorICAgICAgICBOZWVkIHRoZSBidWcg
VVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIHJldHVybiBhIEdyYXBoaWNzQ29udGV4
dCYsIGFuZAorICAgICAgICBjcmVhdGVDb21wYXRpYmxlQnVmZmVyIHRha2UgYSBHcmFwaGljc0Nv
bnRleHQmLgorCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVt
ZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1h
Z2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAgICAqIHBhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21w
YXRpYmxlV2l0aEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9E
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpj
b3B5TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9v
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWlu
dFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRlbnRJbnRv
TWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9y
VGV4dEdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpk
cmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisKKzIwMTUtMDItMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSB0aGUgc29mdHdhcmUtb25seSBJbWFnZUJ1
ZmZlcjo6bV9jb250ZXh0IHRvIEltYWdlQnVmZmVyRGF0YQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzg0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4
YjY2ZTM5Yjg0ODRmMGIxNDUxZTIwNjBhYTdkN2Q1YWRkZDBiNzA0Li4xMTIyMWU5ZTYzNTljZjYy
ZTg2MGY3ZDgyMzdlMTQwNTYwNzQxZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMDItMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIHJlZmVyZW5jZXMgaW4gbW9yZSBwbGFjZXMgaW4gSW1hZ2VCdWZmZXIKKyAg
ICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgQWRqdXN0IGFjY29yZGluZ2x5Lgor
CiAyMDE1LTAyLTE4ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZG9wdCBXZWJDb3JlOjpJT1N1cmZhY2UgaW4gSW1hZ2VCdWZmZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCA0Y2Q0MTgxYWVlYzFj
MzFhNzMxNWVkMjY5ZGU0ZThmOTNjNzRhMDhiLi5lYjM5NTIxOTNlMDg2MmIyZmY3NDdkMTkzNTli
ODFlZGViNTA0ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2EKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUpOwogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2Uo
KTsKLSAgICB0ZXh0dXJlLT5jb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFnZShp
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmNyZWF0ZSgpOwogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZShXVEY6Om1vdmUo
dGV4dHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCBlZDEyZTVkN2YzZWIyMzc5NWVhZDg5ODA5MGNiZDRmNmU5OGQ0MGY4Li4zNjE5OTJlOTQyMTA0
NTUyMmNhMjJkM2UyOTdlMDQxNjE5ZjVkZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNTY1LDEyICs1NjUsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5n
TW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgbV9p
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsK
LSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9s
YXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVu
dCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRDYW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1f
aW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBt
X2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2Nv
bnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVm
ZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNpemVfdCBudW1CeXRlcyA9IDQgKiBtX2ltYWdl
QnVmZmVyLT5pbnRlcm5hbFNpemUoKS53aWR0aCgpICogbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxT
aXplKCkuaGVpZ2h0KCk7CkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxDYW52
YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZlcigp
ID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVmZmVy
KCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhpY3ND
b250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAppbmRleCA0MmQ0ZTMxMmM3OGYzOTgxODU1Y2NlN2RmYTY4MGI1MDE4NmJh
YmFkLi41YjE5M2M1NzI4NzI2NzcwZjA4MDAzZDI4YWFkNWNkOTU5NjQxYjQ3IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKQEAgLTE2OTEsMTAgKzE2OTEsMTAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAg
ICBhZGp1c3RlZERlc3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIGVmZmVjdGl2ZVRyYW5zZm9ybSA9IGMtPmdldENUTSgpOwogICAgIEludFJlY3Qg
dHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGVmZmVjdGl2ZVRyYW5z
Zm9ybS5tYXBSZWN0KGFkanVzdGVkRGVzdCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFu
c2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkueCgpLCAtdHJhbnNmb3Jt
ZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50
cmFuc2xhdGUoY3JvcHBlZE9mZnNldC53aWR0aCgpLCBjcm9wcGVkT2Zmc2V0LmhlaWdodCgpKTsK
LSAgICBidWZmZXItPmNvbnRleHQoKS0+Y29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0g
ICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xv
clNwYWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgYnVm
ZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlv
bigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkueSgpKTsKKyAgICBi
dWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldC53aWR0aCgpLCBjcm9wcGVk
T2Zmc2V0LmhlaWdodCgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS5jb25jYXRDVE0oZWZmZWN0
aXZlVHJhbnNmb3JtKTsKKyAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsICZidWZmZXItPmNv
bnRleHQoKSwgc3R5bGVDb2xvclNwYWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291
cmNlT3Zlcik7CiAKICAgICBjb21wb3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0
LCBvcCk7CiB9CkBAIC0yMzYwLDI1ICsyMzYwLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxv
CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5j
cmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4
dCgpOwogCiAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRl
eHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tl
VGhpY2tuZXNzKCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZp
bGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNv
bnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0
cm9rZSk7CiAKICAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1h
Z2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlv
bi55KCkgLSBtYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFu
c2xhdGUobG9jYXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVj
dC55KCkpOwogICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNv
bXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAg
ICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/
ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRD
YXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFn
ZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdp
ZHRoKSA6IDApLCAxKSk7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4
dChmb250LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJh
Y2tJZkZvbnROb3RSZWFkeSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1h
Z2VDb250ZXh0LT50cmFuc2xhdGUoLW1hc2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAg
ICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9j
YXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55
KCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4
dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsK
ICAgICAgICAgfQogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDAzYjM2OGQ3MmNkNDgxZjA3OTMwN2ZiYTY4MTQ4
NzE1MzhiNTBhODMuLmY0YWU5OTAzY2Q4ZGZhYTk2YTI4M2RkZGFkNDM4MzQ1OWQwMWVmODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC0zMTg0LDcgKzMxODQsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFn
ZSwgaQogCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgp
KTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYt
PmNvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgc3JjUmVjdCk7CisgICAgYnVmLT5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUlt
YWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpKTsKIH0KIApAQCAtMzI0NSw3ICsz
MjQ1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlk
ZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCoKICAgICB9CiAgICAgSW50UmVjdCBkZXN0
UmVjdCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIC8vIEZJWE1FOiBU
dXJuIHRoaXMgaW50byBhIEdQVS1HUFUgdGV4dHVyZSBjb3B5IGluc3RlYWQgb2YgQ1BVIHJlYWRi
YWNrLgotICAgIHZpZGVvLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChidWYtPmNvbnRleHQo
KSwgZGVzdFJlY3QpOworICAgIHZpZGVvLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCgmYnVm
LT5jb250ZXh0KCksIGRlc3RSZWN0KTsKICAgICByZXR1cm4gYnVmLT5jb3B5SW1hZ2UoYmFja2lu
Z1N0b3JlQ29weSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCAyZDMzYjgxNjg4ZTAxZTY1M2EwZDI0NjZiZTU4
MTA0YzM1OTAwNjQwLi40NzQ0YWZiNjY4MTgxMmVlMjEyMmI4ZTZmZmM3NjU0ZDBhNDdkNmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCkBAIC0xMzgyLDcgKzEzODIsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbgogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGxheWVyLT5wYWlu
dChidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlvdXRTaXplKCksIFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMsIG51bGxwdHIsIFJlbmRlckxheWVyOjpQYWlu
dExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CisgICAgbGF5ZXItPnBhaW50KCZi
dWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlvdXRTaXplKCksIFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMsIG51bGxwdHIsIFJlbmRlckxheWVyOjpQYWludExh
eWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CiAKICAgICByZXR1cm4gYnVmZmVyLT5j
b3B5SW1hZ2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
aW5kZXggNDc3M2ZmYjU4YzljNGRiNTliYmQ2NTFlMWIwNDU5NDk0MDRhNzBhZS4uZjFmYWI5MWVl
YjZlNDI5YTE5MGQwYjk5OWE0NGU0ZmIyMDdiYjA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3Qm
IGltYWcKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtaW1hZ2VS
ZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0
ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwogCi0gICAgZnJhbWUudmlldygpLT5w
YWludENvbnRlbnRzRm9yU25hcHNob3QoYnVmZmVyLT5jb250ZXh0KCksIGltYWdlUmVjdCwgc2hv
dWxkSW5jbHVkZVNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKKyAgICBmcmFtZS52aWV3KCkt
PnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgmYnVmZmVyLT5jb250ZXh0KCksIGltYWdlUmVjdCwg
c2hvdWxkSW5jbHVkZVNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKaW5kZXggODc5MGFhNDRlNDE0NTFlZjI1MjA3YmMwZTg1MGI4OWFkYzE1MWQzNy4u
NGFkNDMxOTAyMzA4NWExNGNkYjM2ZjY4MWQ4ZWYyYTY0Y2FjMzI3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjI1LDcgKzYy
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwKICAgICAgICAgLy8gVGVtcG9yYXJpbHkgcmVz
ZXQgaW1hZ2Ugb2JzZXJ2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgY2hhbmdlSW5S
ZWN0KCkgY2FsbHMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCiAgICAgICAgIHNldEltYWdlT2JzZXJ2
ZXIoMCk7CiAKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3QsIHRpbGVS
ZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKKyAgICAgICAgZHJhdygmYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CiAKICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAg
ICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0NDlmMDMzOGY0MjljMTVmYTEwNWEuLjEy
YTk3MjdmM2EwZTcwMjEyOTQwMjQ1NmU4YTNjZDZmZDZmOGQ3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKQEAgLTEwMiw4ICsxMDIsOCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UgogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdpdGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgot
ICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKLSAgICBkcmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGRy
YXdDcm9zc2ZhZGUoJmdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHN0eWxlQ29sb3JTcGFjZSwg
Y29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDA1MjcxMjAwZWEzYjhi
NDJlZTZkOTg0MWU1Mjk1YWQyNDc3NjMyZmYuLmEyNTM1ZmJjMzMwMGEzZTI2NDIzNzYyMjMwYTEy
NGQwMjdmNGMxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRmlsbCB3aXRoIHRoZSBnZW5l
cmF0ZWQgaW1hZ2UuCi0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+Zmls
bFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWRqdXN0ZWRTaXplKSwgKm1fZ3JhZGllbnQp
OworICAgICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgYWRqdXN0ZWRTaXplKSwgKm1fZ3JhZGllbnQpOwogCiAgICAgICAg
IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCA9IGdlbmVyYXRvckhhc2g7CiAgICAgICAgIG1fY2FjaGVk
QWRqdXN0ZWRTaXplID0gYWRqdXN0ZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYmFlN2NlZWY5ZTFlYzMz
ODFhMGQ5Y2M5OTE0ZGQ5YzA4ODNlOGFiZS4uMmUyOTVlYjRlM2U2YmE1ZDQ4YzA2ZjdmMzFhMmM0
YTgzODc4MGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NzYsMjAgKzc3NiwyMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
b25zdCBGbG9hdAogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oRGVmaW5p
dGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgRmxvYXRTaXplIHNjYWxlZFNpemUoc3RhdGlj
X2Nhc3Q8aW50PihjZWlsKHNpemUud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJH
QiwgdGhpcywgaGFzQWxwaGEpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwg
Q29sb3JTcGFjZURldmljZVJHQiwgKnRoaXMsIGhhc0FscGhhKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBidWZmZXItPmNvbnRleHQoKS0+c2NhbGUo
RmxvYXRTaXplKHNjYWxlZFNpemUud2lkdGgoKSAvIHNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5o
ZWlnaHQoKSAvIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS5zY2FsZShG
bG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhl
aWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogYm9v
bCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1
ZmZlcikgY29uc3QKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlckNvbnRleHQgPSBidWZm
ZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlckNvbnRleHQgPSBidWZm
ZXItPmNvbnRleHQoKTsKIAotICAgIHJldHVybiBzY2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVy
Q29udGV4dC0+Z2V0Q1RNKCkpICYmIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPT0gYnVmZmVyQ29u
dGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKTsKKyAgICByZXR1cm4gc2NhbGVzTWF0Y2goZ2V0
Q1RNKCksIGJ1ZmZlckNvbnRleHQuZ2V0Q1RNKCkpICYmIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkg
PT0gYnVmZmVyQ29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOwogfQogCiAjaWYgIVVTRShD
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAppbmRleCBiMzg0MzcyZWYzZTExODZkZDRlNWZkZGQzMjljYjhkOTc5MDY4OTcxLi5jNGExMjM1
MjkzOWRlYzYxMWQ1NWFlMjE4NjljYmM5ZDQzNDNmMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xMTEsOSArMTExLDkgQEAg
Ym9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
JiwgUGxhdGZvcm0zRE9iamVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRl
eHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQp
OworICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBj
b250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0
ZWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAppbmRleCAyODc1N2E5M2ExZTE4ZWM3NzMzZDVlOWMxYTRhNDA2YjY0OGE4ZDQyLi5h
M2FjYzI3OTFmMjBmZDQ4MjYzOTZlYmYzNzI5NWNiNjc2N2UyYjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg1LDcgKzg1LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqLCBib29sIGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9v
bCBoYXNBbHBoYSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAt
OTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXplOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NS
ZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9y
ZSwgU2NhbGVCZWhhdmlvciA9IFNjYWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0
aGUgZmFzdGVyIGNvcHlJbWFnZSBNb2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYg
aXQgc3VwcG9ydHMgdGhlIERvbnRDb3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDA2NDgwMGRk
NzYwMzU5YzAxZWFiOTE4ZmNhNjJlYWU2NzU3MzVhYzkuLmY1N2NmNWEwYzgxYzBkZTkxNWQwMjVk
YmYzZTJkZDhlMDI0MDRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwCkBAIC01NzcsMTkgKzU3NywxOSBAQCB2b2lkIFNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMg
Y2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJvb2wgcmVkcmF3TmVl
ZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1f
Ymx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxh
dGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKICAg
ICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0Nv
bnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwogCiAg
ICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVyIGVkZ2UgYWxpYXNpbmcgd2hlbiBy
b3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKLSAg
ICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24p
OwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWko
KS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNoYWRvd2Vk
UmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUmVjdChzaGFkb3dl
ZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXRoIHBhdGg7CiAg
ICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd2VkUmVjdCk7Ci0gICAgICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBibHVyU2hhZG93QnVmZmVy
KGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAtNjE1LDEyICs2MTUsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjksOSArNjI5LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY4NywxMSArNjg3
LDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBT
Y3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2Js
dXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRl
SG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAg
ICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGlj
c0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250
ZXh0KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsK
LSAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAg
ICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5
ZXJJbWFnZS0+Y29udGV4dCgpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNo
YWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xl
YXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVs
ZShSVUxFX0VWRU5PREQpOworICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAg
ICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxhdGVIb2xlLCBob2xlUmVjdC5yYWRp
aSgpKSk7CiAKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAg
IHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICAgICAgYmx1ckFuZENvbG9yU2hh
ZG93QnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgfQpAQCAtNzUxLDE4ICs3NTEsMTggQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBib29sIHJlZHJhd05lZWRlZCA9IHNjcmF0Y2hCdWZm
ZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNw
YWNlLCB0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsK
ICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8vIERyYXcgc2hhZG93IGludG8gdGhl
IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBt
X2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2hhZG93U3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsK
IAotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBs
YXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgc2hhZG93
Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1wbGF0
ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgICAgIHNoYWRvd0Nv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgICAgIAogICAgICAgICBpZiAoc2hhZG93ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCi0gICAg
ICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CisgICAgICAg
ICAgICBzaGFkb3dDb250ZXh0LmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QodGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgp
KSk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAg
ICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBi
bHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxhdGVTaXplKTsKQEAgLTg3OCwxMSArODc4LDEx
IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0IEludFNp
emUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAK
ICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAgR3JhcGhp
Y3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAg
ICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4p
OwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2Up
OwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1wbGF0ZVNp
emUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNoYWRvd0Nv
bnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgIHNoYWRv
d0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0
ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0KiBTaGFkb3dCbHVy
OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpCkBAIC05MDAsMTkgKzkwMCwxOSBAQCBHcmFwaGljc0NvbnRleHQqIFNo
YWRvd0JsdXI6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBGbAogICAgIHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgp
LCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJbWFnZSA9IHNjcmF0
Y2hCdWZmZXIuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAotICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
IHNoYWRvd0NvbnRleHQtPnNhdmUoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRl
eHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAgICBzaGFkb3dDb250ZXh0LnNhdmUoKTsK
IAogICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVyIGVkZ2UgYWxpYXNpbmcgd2hlbiBy
b3RhdGVkLgotICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgbV9s
YXllclNpemUud2lkdGgoKSArIDEsIG1fbGF5ZXJTaXplLmhlaWdodCgpICsgMSkpOworICAgIHNo
YWRvd0NvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgp
ICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAKLSAgICBzaGFkb3dDb250ZXh0LT50
cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7Ci0gICAgcmV0dXJuIHNoYWRvd0Nv
bnRleHQ7CisgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xh
dGlvbik7CisgICAgcmV0dXJuICZzaGFkb3dDb250ZXh0OwogfQogCiB2b2lkIFNoYWRvd0JsdXI6
OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBtX2xheWVy
SW1hZ2UtPmNvbnRleHQoKS0+cmVzdG9yZSgpOworICAgIG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
LnJlc3RvcmUoKTsKIAogICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcihleHBhbmRlZEludFNp
emUobV9sYXllclNpemUpKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZSgqY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDY5NTg2OTY0OTY1ZjY1M2Nk
NTRmZTcxMGIzZTk1OWFhMDY3ZTZmYjIuLmEwYzlkYmI4ZjU5MzdhYzZhNGVjMzY1NmI0ZDRiNzUw
M2I3NzkzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xMjQsOSArMTI0LDEzIEBAIElt
YWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQogewogfQogCi1HcmFwaGljc0NvbnRleHQqIEltYWdl
QnVmZmVyOjpjb250ZXh0KCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAogeworPDw8PDw8PCBVcGRhdGVkIHVwc3RyZWFtCiAgICAgcmV0dXJuIG1f
ZGF0YS5tX2NvbnRleHQuZ2V0KCk7Cis9PT09PT09CisgICAgcmV0dXJuICptX2RhdGEubV9jb250
ZXh0OworPj4+Pj4+PiBTdGFzaGVkIGNoYW5nZXMKIH0KIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVC
ZWhhdmlvcikgY29uc3QKQEAgLTM3OCw3ICszODIsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqLCBDb29yZGluYXRl
UwogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5
cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9
IGNhaXJvX2dldF90YXJnZXQoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7Cisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhaXJvX2dldF90YXJnZXQoY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIAogICAgIFZlY3RvcjxjaGFyPiBlbmNvZGVkSW1hZ2U7
CiAgICAgaWYgKCFpbWFnZSB8fCAhZW5jb2RlSW1hZ2UoaW1hZ2UsIG1pbWVUeXBlLCAmZW5jb2Rl
ZEltYWdlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggZDk1MzZlOGQ3NzNlNGFlZDhjOGViN2JkN2EzNmE4ZDA0
ZmJiMzlhZi4uZDY0NDIyOWEwNGQ4N2U1NDBmOTRmNTAwNTdiYTA3ZGIwNGE0ZDRjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKQEAgLTE0Myw5ICsxNDMsOSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgICAg
ICBtX2RhdGEubV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChjZ0NvbnRl
eHQuZ2V0KCkpKTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAt
MSkpOwotICAgIGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0KCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9y
ZXNvbHV0aW9uU2NhbGUpOworICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsK
KyAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhl
aWdodCgpKTsKKyAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRp
b25TY2FsZSk7CiAKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KQEAgLTE1NCwxOCArMTU0LDIyIEBA
IEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQogewogfQogCi1HcmFwaGljc0NvbnRleHQqIElt
YWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXI6
OmNvbnRleHQoKSBjb25zdAogewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RP
UkUpCiAgICAgaWYgKG1fZGF0YS5tX3N1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLm1f
c3VyZmFjZS0+ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBtX2RhdGEu
bV9zdXJmYWNlLT5lbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKICNlbmRpZgorPDw8PDw8PCBVcGRh
dGVkIHVwc3RyZWFtCiAgICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7Cis9PT09PT09
CisgICAgcmV0dXJuICptX2RhdGEubV9jb250ZXh0OworPj4+Pj4+PiBTdGFzaGVkIGNoYW5nZXMK
IH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKIHsKLSAgICBDR0Nv
bnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBDR0NvbnRleHRG
bHVzaChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1h
Z2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKQEAgLTIxMCwxMyArMjE0LDEzIEBAIEJhY2tpbmdT
dG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yKSBjb25zdAogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAg
ICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgIGlmICghY29u
dGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgc3dpdGNoIChjb3B5QmVo
YXZpb3IpIHsKICAgICAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKICAgICAgICAgICAg
IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUu
d2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0
YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEu
bV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgICAg
ICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIzNCwxMCArMjM4LDEw
IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNjYWxlKTsKLSAgICBDb2xvclNw
YWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSA/IENvbG9yU3BhY2VE
ZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0g
KGRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkpID8gQ29sb3JTcGFjZURldmljZVJHQiA6IHN0eWxl
Q29sb3JTcGFjZTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICBpZiAo
ZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQorICAgIGlmIChkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShDb3B5QmFja2luZ1N0b3JlKTsgLy8gRHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVk
IHRvIGRlZXAgY29weS4KICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTI1Miw4ICsyNTYsOCBAQCB2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHNyYwogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAg
IGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2Nh
bGUpOwogCi0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAg
ICAgICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC0+aXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkgeworICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpIHsKKyAgICAgICAgaWYgKGRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENv
bnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbWFn
ZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsgLy8gRHJhd2luZyBpbnRvIG91
ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgIGNvcHktPmRyYXdQ
YXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTI4MywzMSArMjg3LDMxIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvCiAK
IFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtKSBjb25zdAogewotICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAg
ICBmbHVzaENvbnRleHQoKTsKIAogICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYg
KGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNy
Y1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXRE
YXRhKHNyY1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCksIHRydWUsIDEpOworICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRl
cm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIHRydWUsIDEpOwog
fQogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRleHQoKS0+aXNBY2NlbGVyYXRl
ZENvbnRleHQoKSkKKyAgICBpZiAoY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAg
ICAgICAgIGZsdXNoQ29udGV4dCgpOwogCiAgICAgSW50UmVjdCBzcmNSZWN0ID0gcmVjdDsKICAg
ICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkKICAgICAg
ICAgc3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKLSAgICByZXR1cm4gbV9kYXRh
LmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS0+aXNBY2NlbGVyYXRl
ZENvbnRleHQoKSwgZmFsc2UsIDEpOworICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0
LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNl
LCAxKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRp
cGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNp
emUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQs
IENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKIHsKLSAgICBpZiAoIWNvbnRleHQo
KS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgSW50UmVjdCBzY2FsZWRTb3VyY2VSZWN0ID0gc291
cmNlUmVjdDsKICAgICAgICAgSW50U2l6ZSBzY2FsZWRTb3VyY2VTaXplID0gc291cmNlU2l6ZTsK
ICAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0p
IHsKQEAgLTMyNiwxMCArMzMwLDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShN
dWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgaWYg
KCFzb3VyY2VDb3B5KQogICAgICAgICByZXR1cm47CiAKLSAgICBzb3VyY2VDb3B5LT5tX2RhdGEu
cHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VS
ZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+aW50ZXJuYWxTaXplKCksIHNv
dXJjZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9
PSBVbm11bHRpcGxpZWQsIDEpOworICAgIHNvdXJjZUNvcHktPm1fZGF0YS5wdXREYXRhKHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgSW50UG9pbnQoLXNvdXJjZVJlY3QueCgpLCAtc291
cmNlUmVjdC55KCkpLCBzb3VyY2VDb3B5LT5pbnRlcm5hbFNpemUoKSwgc291cmNlQ29weS0+Y29u
dGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVk
LCAxKTsKIAogICAgIC8vIFNldCB1cCBjb250ZXh0IGZvciB1c2luZyBkcmF3SW1hZ2UgYXMgYSBk
aXJlY3QgYml0IGNvcHkKLSAgICBDR0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBkZXN0Q29udGV4dCA9IGNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGRlc3RDb250
ZXh0KTsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3Rl
bSkKICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGRlc3RDb250ZXh0LCBBZmZpbmVUcmFuc2Zv
cm0od2tHZXRVc2VyVG9CYXNlQ1RNKGRlc3RDb250ZXh0KSkuaW52ZXJzZSgpKTsKQEAgLTQzMCw3
ICs0MzQsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIENvbwogewogICAgIEFTU0VSVChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkp
OwogCi0gICAgaWYgKGNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAo
Y29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgp
OwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSB1dGlGcm9tTUlNRVR5cGUobWlt
ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIx
NmI2MzBiM2E3NjY5Li44ZjQ3NzM0NjljZTkxN2FmOGI1ODZhOGU4MWZhMjkwZTBlNTk5ZjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcApAQCAtMTYwLDE0ICsxNjAsMTAgQEAgdm9pZCBQREZEb2N1bWVudElt
YWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QKICAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7
CiAgICAgICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1
ZmZlci0+Y29udGV4dCgpOwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAg
ICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2Fj
aGVkSW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKIAotICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9y
UGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgIGRyYXdQ
REZQYWdlKGJ1ZmZlckNvbnRleHQpOworICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRp
bmcoJmJ1ZmZlckNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICBkcmF3UERGUGFn
ZSgmYnVmZmVyQ29udGV4dCk7CiAKICAgICAgICAgbV9jYWNoZWRUcmFuc2Zvcm0gPSBjb250ZXh0
LT5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsK
ICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUgPSBkc3RSZWN0LnNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
CmluZGV4IDYyZjJmZDAyNDFmYTY3ZWM5MTkyMDVjNjg4MWM1YTFkMWM0NWFjZmYuLjU3MDAzMmU2
MDFkOTdjMzQzMmUxYjYzYmUzNzE5N2FlYWJlOGRhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNjgsMTUgKzY4
LDE1IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBJbWFnZUJ1
ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIGlmICgh
cmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRl
ckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYg
ZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIEltYWdlQnVmZmVyKiBp
bWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZm
ZXIpOwogICAgIEFTU0VSVChpbWFnZUJ1ZmZlcjIpOwogCi0gICAgZmlsdGVyQ29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICBmaWx0ZXJD
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRS
ZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFp
bnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IGQ3NWZhMzQwYjI4NmIwZGYxZTQ2OTkyNmJiZjdiZGEz
YzA5ZDgwMmMuLjNhNGVhZDYzZWJiYTE2MTc4OWFlZGJmZDU0NjY2YTA2NDkwMGMyZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4t
PmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
KTsKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0
KCkuc2l6ZSgpKTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBy
ZXN1bHRJbWFnZS0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGltYWdlUmVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuY3BwCmluZGV4IGYzZjk4Y2I4YmFjNjE5M2U5Mjk1MjRiODQ1YzkzZWMxNzJjODE1M2QuLjNi
M2VjYTBkYTNlZDM2NWMxNmQ5ZGM4NDY2MTc3M2U3MzllZTEzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBHcmFw
aGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7
CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwog
ICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKTsKQEAg
LTI4MCw4ICsyODAsOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9S
X09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
cjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46IHsK
ICAgICAgICAgLy8gQXBwbGllcyBvbmx5IHRvIHRoZSBpbnRlcnNlY3RlZCByZWdpb24uCkBAIC0y
OTUsMjEgKzI5NSwyMSBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25SZWN0Lnko
KSAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLnkoKSksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkp
OwogICAgICAgICBJbnRSZWN0IHNvdXJjZTJSZWN0KEludFBvaW50KGRlc3RpbmF0aW9uUmVjdC54
KCkgLSBpbjItPmFic29sdXRlUGFpbnRSZWN0KCkueCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uUmVjdC55KCkgLSBpbjItPmFic29sdXRlUGFpbnRS
ZWN0KCkueSgpKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7Ci0gICAgICAgIGZpbHRlckNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFJlY3QoZGVzdGluYXRpb25Qb2ludCwgc291cmNlMlJlY3Quc2l6ZSgpKSwgc291cmNlMlJlY3Qp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoZGVzdGluYXRpb25Qb2ludCwgc291cmNlUmVjdC5z
aXplKCkpLCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
SW50UmVjdChkZXN0aW5hdGlvblBvaW50LCBzb3VyY2UyUmVjdC5zaXplKCkpLCBzb3VyY2UyUmVj
dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KGRlc3RpbmF0aW9uUG9pbnQsIHNvdXJjZVJlY3Qu
c2l6ZSgpKSwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6Ci0gICAgICAgIGZpbHRl
ckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwot
ICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6
ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3Np
dGVEZXN0aW5hdGlvbk91dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVf
T1BFUkFUT1JfQVRPUDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOwor
ICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+
ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBv
c2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGlt
YWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggODJm
MmM2MDY2NzNlY2IyOGY0MmM1ZDA5NzIyZmNmMWRmYTQzN2U2Ny4uMmE4ODQzNTEzOGI3NmQ0YWFm
MDZkOWI0YzVhYThiZTA0MmM4MDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtODksMTEgKzg5
LDEwIEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAg
SW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBBU1NF
UlQoc291cmNlSW1hZ2UpOwotICAgIEdyYXBoaWNzQ29udGV4dCogcmVzdWx0Q29udGV4dCA9IHJl
c3VsdEltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKHJlc3VsdENvbnRleHQpOwotICAgIHJl
c3VsdENvbnRleHQtPnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0gICAgcmVzdWx0Q29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uV2l0aE9mZnNldCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEoMSk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KTsKKyAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7CisgICAgcmVz
dWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKKyAgICByZXN1bHRDb250ZXh0LnNldEFscGhh
KDEpOwogCiAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwg
bV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKQEAgLTEwNSwxMSArMTA0LDEx
IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgcmVz
dWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShQcmVtdWx0aXBsaWVkLCBzcmNQaXhlbEFycmF5LmdldCgp
LCBzaGFkb3dBcmVhLnNpemUoKSwgc2hhZG93QXJlYSwgSW50UG9pbnQoKSwgSW1hZ2VCdWZmZXI6
OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0pOwogCi0gICAgcmVzdWx0Q29udGV4dC0+c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKLSAgICByZXN1bHRDb250ZXh0
LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNp
emUoKSksIG1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHJlc3VsdENv
bnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwor
ICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUlu
KTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFi
c29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
RGVzdGluYXRpb25PdmVyKTsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFn
ZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7
CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFRHJvcFNo
YWRvdzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcAppbmRleCBiY2RiMjI0MWIxNzM3OWVkMzZiNGNjMDdiODUyZmIx
Yzg3Y2RjNmRjLi4wMGQwMjA0OTAxZmZlM2VjNDk5MjcxZDhjYjhkZDA4MjkyZTlkZjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9v
ZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBDb2xvciBjb2xvciA9IGNvbG9yV2l0aE92ZXJy
aWRlQWxwaGEoZmxvb2RDb2xvcigpLnJnYigpLCBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1
dGVQYWludFJlY3QoKS5zaXplKCkpLCBjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBh
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IH0KIAogdm9pZCBGRUZsb29kOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IDYwZmE1OWNkYjE0N2JjYzI4
Nzk5NGJiNDNhYWQ0NTNlMTQzZDFkNTYuLjlkNmVmMjIxNTkwNWVjNWJkNThkMjYwMjVlYTVjNzdm
NmY4ODFhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNZXJnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1lcmdlLmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBAIHZvaWQgRkVNZXJnZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdElt
YWdlLT5jb250ZXh0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7Ci0gICAgICAgIGZp
bHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0lt
YWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKaW5kZXgg
ZjE1M2RmNjljNDZjNWM1N2VlOGRiYTA3NmNhYmZiZWFmZWNiMTU1MC4uYTliM2FiYTI2MTE3MTE1
ZWUwYjFmNzY0YmU5YzNkZGQ2MDFhZmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAg
dm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJh
d2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2lu
Z1JlZ2lvbi5tb3ZlKGZpbHRlci5hcHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFw
cGx5VmVydGljYWxTY2FsZShtX2R5KSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJh
d0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb24pOworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVy
KGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24p
OwogfQogCiB2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA2MWU1OTk2YmI5YWFiN2Vj
NWQ2ODM0NGQxZTQ1ODk3YTRkNjQ0NWExLi44NzE1YTE3ZDNkZGU1ZTZkYjJhN2Q3ZmQ4NWIyN2M3
YTg5MTBkMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwCkBAIC02NywxOCArNjcsMTggQEAgdm9pZCBGRVRpbGU6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlckZvclBhdHRlcm4odGlsZVJlY3QsIHRpbGVSZWN0LCB0aWxlSW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+
Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RM
b2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdlQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOworICAgIHRp
bGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngoKSwgLWluTWF4
RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNy
ZWF0ZSh0aWxlSW1hZ2UtPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSwgdHJ1ZSwgdHJ1ZSk7
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJh
bnNmb3JtLnRyYW5zbGF0ZShpbk1heEVmZmVjdExvY2F0aW9uLngoKSAtIG1heEVmZmVjdExvY2F0
aW9uLngoKSwgaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi55KCkp
OwogICAgIHBhdHRlcm4uZ2V0KCkuc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5UcmFu
c2Zvcm0pOwotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdl
LT5jb250ZXh0KCk7Ci0gICAgZmlsdGVyQ29udGV4dC0+c2V0RmlsbFBhdHRlcm4oV1RGOjptb3Zl
KHBhdHRlcm4pKTsKLSAgICBmaWx0ZXJDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpOworICAgIEdyYXBoaWNzQ29udGV4
dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgZmlsdGVyQ29u
dGV4dC5zZXRGaWxsUGF0dGVybihXVEY6Om1vdmUocGF0dGVybikpOworICAgIGZpbHRlckNvbnRl
eHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5z
aXplKCkpKTsKIH0KIAogdm9pZCBGRVRpbGU6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4
IDBmOGU4YTY4Y2UyNTZhMTZmNjliZDI4NzlmNDNjMTJmYWE3MzJkYjcuLjdkZTBkN2ZiY2MxNWUw
NWRlYTMzYWYwMzYxNTNkY2FiOGEwNjc3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTQ2NCw3
ICs0NjQsNiBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCgpCiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpLCBtX3Jlc3Vs
dENvbG9yU3BhY2UsIG1fZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghbV9pbWFn
ZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKG1faW1hZ2VCdWZm
ZXJSZXN1bHQtPmNvbnRleHQoKSk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggZTk2OGNlYWU3MDY5ZTQ4YzE4ZmI3YTQ2NjI4
MjIzNjI2NjJmZWQ2ZS4uNmIyZDcxNGRjMTMxY2RlMTM4YzFiMDQ2YmYwZTIwNmMyYmE5YTdmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBzZXRJc0FscGhhSW1hZ2UodHJ1ZSk7CiAKICAgICBG
bG9hdFJlY3QgaW1hZ2VSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCkpOwotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFn
ZUJ1ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0
ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LmZp
bGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9
CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggNDcy
YWEyMjU0MDU2ODNjOTA5NjQ4YTFiY2VmZDUxZTcyMWIzMGViMC4uMDRmMzU5NDhkYzM3MmU4YjMz
ZjA2OGE0MTRiYjU4NmJlYzI5MzYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBp
ZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci5z
b3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cAppbmRleCA3N2M0MTM4NDY2MThhOGM2YzcxMmE2NGNiZWIyNTg1YmM3YmI5MmIwLi4xOWM5MzE0
OTVjODIwOGNhZjI1Zjg2NDkzNDAzZDBjNjA4MTc3NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlciwKIAogI2lmIFVTRShDRykKICAgICBwYWludFRvQ2FudmFzKHBpeGVs
cy5nZXQoKSwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS53aWR0aCgpLCBpbWFnZUJ1ZmZlci0+aW50
ZXJuYWxTaXplKCkuaGVpZ2h0KCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgICAgICAg
ICAgICAgICAgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGltYWdlQnVmZmVy
LT5pbnRlcm5hbFNpemUoKS5oZWlnaHQoKSwgJmltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogI2Vs
c2UKICAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQoKSwgbV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodCwKLSAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUo
KS53aWR0aCgpLCBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCksIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgIGlt
YWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS53aWR0aCgpLCBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxT
aXplKCkuaGVpZ2h0KCksICZpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQo
KSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGM1NWU3YWNhOWRiOGQ3NWUx
OTEwMmI1Nzg1OTQ5YTgyYjBiYmFlODAuLmMyMGEzNTMxYzJkMTlmMDViODBlYWVkNTNkMDNmNjA0
YWMzMzljYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcApAQCAtODEsNyArODEsNyBAQCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZp
bHRlckVmZmVjdFJlbmRlcmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcjo6aW5wdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJj
ZUltYWdlKCktPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291
cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0
LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDhlZWZj
MzI0MDAwMWRiMWZjOGQ3NWM3ZGY0NWUzNDIyMGZjODEyNmUuLjVhMjY0NTgyMDdmMzFhOTg3MzZm
ZDAwZDg2NTA5MTQ1Zjg3Y2Y4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNjEwLDE5ICs2MTAsMTkgQEAgc3RhdGljIHZv
aWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHMKIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9y
VGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1Jl
Y3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJl
Y3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdl
LT5jb250ZXh0KCk7Ci0gICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54
KCksIC1tYXNrUmVjdC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4
dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOworICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRl
KC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4
dCB0byB0aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFp
bnQgcGhhc2UgdGhhdCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhl
eSBzaG91bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCi0gICAgUGFpbnRJ
bmZvIGluZm8obWFza0ltYWdlQ29udGV4dCwgbWFza1JlY3QsIFBhaW50UGhhc2VUZXh0Q2xpcCwg
UGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0LCAwKTsKKyAgICBQYWludEluZm8gaW5mbygmbWFz
a0ltYWdlQ29udGV4dCwgbWFza1JlY3QsIFBhaW50UGhhc2VUZXh0Q2xpcCwgUGFpbnRCZWhhdmlv
ckZvcmNlQmxhY2tUZXh0LCAwKTsKICAgICBpZiAoYm94KSB7CiAgICAgICAgIGNvbnN0IFJvb3RJ
bmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKICAgICAgICAgYm94LT5wYWludChpbmZv
LCBMYXlvdXRQb2ludChzY3JvbGxlZFBhaW50UmVjdC54KCkgLSBib3gtPngoKSwgc2Nyb2xsZWRQ
YWludFJlY3QueSgpIC0gYm94LT55KCkpLCByb290Qm94LmxpbmVUb3AoKSwgcm9vdEJveC5saW5l
Qm90dG9tKCkpOwogICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRh
aW5lcigpKSB7CiAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAqZG93
bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqdGhpcykucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsK
ICAgICAgICAgaWYgKHJlZ2lvbi5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZWdpb24uZmxvd1Ro
cmVhZCgpLT5sYXllcigpLT5wYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihtYXNrSW1h
Z2VDb250ZXh0LCAmcmVnaW9uLCBtYXNrUmVjdCwgbWFza1JlY3QubG9jYXRpb24oKSwgUGFpbnRC
ZWhhdmlvckZvcmNlQmxhY2tUZXh0LCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNs
aXBSZWN0cyk7CisgICAgICAgICAgICByZWdpb24uZmxvd1RocmVhZCgpLT5sYXllcigpLT5wYWlu
dE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbigmbWFza0ltYWdlQ29udGV4dCwgJnJlZ2lvbiwg
bWFza1JlY3QsIG1hc2tSZWN0LmxvY2F0aW9uKCksIFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4
dCwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIExheW91dFNpemUgbG9jYWxPZmZzZXQgPSBpczxSZW5kZXJCb3g+KCp0aGlz
KSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpLmxvY2F0aW9uT2Zmc2V0KCkgOiBMYXlvdXRT
aXplKCk7CiAgICAgICAgIHBhaW50KGluZm8sIHNjcm9sbGVkUGFpbnRSZWN0LmxvY2F0aW9uKCkg
LSBsb2NhbE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KaW5kZXggZDQ5OTExNGRhNzgxZTM2YzE5NmUyOTg3Y2EyYzM0NTk0NzNhYzdlYy4uZGIzNjI1
MDc5OWM4Mjc1Yzg5MjQ5ZWE5MTliNTliYTFmYmI5ZWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTEwOCwxMSArMTEwOCwxMSBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
T2JqZWN0LCBjb25zdCBQYQogICAgIHRyYWNrSW5mby5yZXNlcnZlZCA9IDA7CiAgICAgdHJhY2tJ
bmZvLmZpbGxlcjEgPSAwOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVj
dC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwYWludElu
Zm8uY29udGV4dCwgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVj
dC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqcGFpbnRJ
bmZvLmNvbnRleHQsIHRydWUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgQ29udGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWluZXIoaW1hZ2VC
dWZmZXItPmNvbnRleHQoKSk7CisgICAgQ29udGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWlu
ZXIoJmltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgIEhJVGhlbWVEcmF3VHJhY2soJnRy
YWNrSW5mbywgMCwgY2dDb250ZXh0LCBrSElUaGVtZU9yaWVudGF0aW9uTm9ybWFsKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCBlNWE5YTc1YzE5ODNi
YzZjMDFhZmFhYTU1Y2U2YTQxMDRjNzY0MTgwLi5kNTBlNDJkMzQ3YTBiNWYwNTcyODA4OTRhZjdl
MTExOGRiMDJkYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cApAQCAtMTgyLDggKzE4Miw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0
ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
aW1hZ2VSZWN0LnNpemUoKSk7CiAKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAKICAgICAgICAg
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gaW1hZ2VCdWZmZXItPmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkp
KTsKICAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJyYXktPmxlbmd0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDAzZGQ1ZDBiMWNlYTlmMWY5YjMxYWNmM2M3MWY2
NDNhM2E2YWM3MmIuLjRmNzFlZTU2ZTM2ZTU5N2E0MjM2OGIxNGEyNDYzZmEyNTY1ZjgyMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKQEAgLTE1MCwxOSArMTUwLDE3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjCiAgICAgICAgIGlmICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBjbGlwcGVyRGF0YS0+Y2xpcE1hc2tJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrQ29udGV4dCA9IGNs
aXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIEFTU0VSVChtYXNr
Q29udGV4dCk7Ci0KLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENUTShhbmltYXRlZExvY2Fs
VHJhbnNmb3JtKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBw
ZXJEYXRhLT5jbGlwTWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIG1hc2tDb250ZXh0LmNv
bmNhdENUTShhbmltYXRlZExvY2FsVHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBjbGlwUGF0aCBj
YW4gYWxzbyBiZSBjbGlwcGVkIGJ5IGFub3RoZXIgY2xpcFBhdGguCiAgICAgICAgIGF1dG8qIHJl
c291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigq
dGhpcyk7CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcjsKICAgICAg
ICAgYm9vbCBzdWNjZWVkZWQ7CiAgICAgICAgIGlmIChyZXNvdXJjZXMgJiYgKGNsaXBwZXIgPSBy
ZXNvdXJjZXMtPmNsaXBwZXIoKSkpIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqbWFza0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1hc2tDb250ZXh0KTsKIAotICAgICAgICAgICAgaWYg
KCFjbGlwcGVyLT5hcHBseUNsaXBwaW5nVG9Db250ZXh0KCp0aGlzLCBvYmplY3RCb3VuZGluZ0Jv
eCwgcmVwYWludFJlY3QsIG1hc2tDb250ZXh0KSkKKyAgICAgICAgICAgIGlmICghY2xpcHBlci0+
YXBwbHlDbGlwcGluZ1RvQ29udGV4dCgqdGhpcywgb2JqZWN0Qm91bmRpbmdCb3gsIHJlcGFpbnRS
ZWN0LCAmbWFza0NvbnRleHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICAgICAgc3VjY2VlZGVkID0gZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKGNsaXBwZXJEYXRh
LCBvYmplY3RCb3VuZGluZ0JveCk7CkBAIC0xODYsMTQgKzE4NCwxMyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKENsaXBwZXJEYXRhKiBj
bGlwcGVyRGF0YQogICAgIEFTU0VSVChjbGlwcGVyRGF0YSk7CiAgICAgQVNTRVJUKGNsaXBwZXJE
YXRhLT5jbGlwTWFza0ltYWdlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQg
PSBjbGlwcGVyRGF0YS0+Y2xpcE1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNr
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJEYXRh
LT5jbGlwTWFza0ltYWdlLT5jb250ZXh0KCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWFza0Nv
bnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAoY2xpcFBhdGhFbGVtZW50KCkuY2xpcFBhdGhV
bml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkg
ewogICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0ZShvYmplY3RCb3Vu
ZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgIG1hc2tDb250ZW50
VHJhbnNmb3JtYXRpb24uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCks
IG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNh
dENUTShtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgbWFza0NvbnRleHQuY29u
Y2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogICAgIC8vIFN3aXRj
aCB0byBhIHBhaW50IGJlaGF2aW9yIHdoZXJlIGFsbCBjaGlsZHJlbiBvZiB0aGlzIDxjbGlwUGF0
aD4gd2lsbCBiZSByZW5kZXJlZCB1c2luZyBzcGVjaWFsIGNvbnN0cmFpbnRzOgpAQCAtMjMyLDcg
KzIyOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9N
YXNrSW1hZ2UoQ2xpcHBlckRhdGEqIGNsaXBwZXJEYXRhCiAgICAgICAgIGlmICghcmVuZGVyZXIt
PmlzU1ZHU2hhcGUoKSAmJiAhcmVuZGVyZXItPmlzU1ZHVGV4dCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgbWFza0NvbnRleHQtPnNldEZpbGxSdWxlKG5ld0NsaXBSdWxlKTsK
KyAgICAgICAgbWFza0NvbnRleHQuc2V0RmlsbFJ1bGUobmV3Q2xpcFJ1bGUpOwogCiAgICAgICAg
IC8vIEluIHRoZSBjYXNlIG9mIGEgPHVzZT4gZWxlbWVudCwgd2Ugb2J0YWluZWQgaXRzIHJlbmRl
cmVyZSBhYm92ZSwgdG8gcmV0cmlldmUgaXRzIGNsaXBSdWxlLgogICAgICAgICAvLyBXZSBoYXZl
IHRvIHBhc3MgdGhlIDx1c2U+IHJlbmRlcmVyIGl0c2VsZiB0byByZW5kZXJTdWJ0cmVlVG9JbWFn
ZUJ1ZmZlcigpIHRvIGFwcGx5IGl0J3MgeC95L3RyYW5zZm9ybS9ldGMuIHZhbHVlcyB3aGVuIHJl
bmRlcmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZWFjNjVlMDZhM2JiMmJlZDY2YjEyNzM4Zjk1
MDBlZmY5NTNjMTA2Zi4uYmNjYWVmMDUxODBkZGU5MTQ5ZmZmNjYwZDAyNDBkOTMxZmIxNGZjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIxNCwxMyArMjE0LDEyIEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IFJlbmRlCiAgICAgLy8gU2V0IHRoZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0
dGluZ3MuCiAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmlu
Z01vZGUpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNv
dXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoc291cmNlR3JhcGhpY0NvbnRleHQp
OwotICAKKyAgICBHcmFwaGljc0NvbnRleHQmIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNl
R3JhcGhpYy0+Y29udGV4dCgpOworCiAgICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZl
ciA9IFdURjo6bW92ZShzb3VyY2VHcmFwaGljKTsKICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRl
eHQgPSBjb250ZXh0OwogCi0gICAgY29udGV4dCA9IHNvdXJjZUdyYXBoaWNDb250ZXh0OworICAg
IGNvbnRleHQgPSAmc291cmNlR3JhcGhpY0NvbnRleHQ7CiAKICAgICBBU1NFUlQoIW1fZmlsdGVy
LmNvbnRhaW5zKCZyZW5kZXJlcikpOwogICAgIG1fZmlsdGVyLnNldCgmcmVuZGVyZXIsIFdURjo6
bW92ZShmaWx0ZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCAzYTIwZjY4NjI4MDA5
ZTBhZTY1Zjk5MDY3MjBkOWM0NTI2YWI5YjMzLi5iZjA0ZjVhNTQ4YzA2MTIzNmE0ZTg4ZTg1MmNk
ZThlYzUwMWIwNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTY2LDExICs2NiwxMCBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50
KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAgIGlmICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBtYXNrSW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxlcmF0ZWQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1hZ2Ut
PmNvbnRleHQoKTsKLSAgICBBU1NFUlQobWFza0ltYWdlQ29udGV4dCk7CiAgICAgQVNTRVJUKG1h
c2tJbWFnZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0lt
YWdlLT5jb250ZXh0KCk7CiAgICAgc2F2ZWRDb250ZXh0ID0gY29udGV4dDsKLSAgICBjb250ZXh0
ID0gbWFza0ltYWdlQ29udGV4dDsKKyAgICBjb250ZXh0ID0gJm1hc2tJbWFnZUNvbnRleHQ7CiAg
ICAgaW1hZ2VCdWZmZXIgPSBXVEY6Om1vdmUobWFza0ltYWdlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMDExODcxYmM3OTMzODY0NWFiZDg1M2ZmODhmNmM2OTVk
ZWQ3MmMzNi4uNzVkODRkNWQxOTE4Y2VmNjhkZGZlN2QzZDY5MjQ3NzBjYzMyYWQ5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5jcHAKQEAgLTk2LDggKzk2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAog
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1h
c2tlckRhdGEqIG1hc2tlckRhdGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFz
a2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKG1hc2tJbWFnZUNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEt
Pm1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgLy8gRXZlbnR1YWxseSBhZGp1c3QgdGhlIG1h
c2sgaW1hZ2UgY29udGV4dCBhY2NvcmRpbmcgdG8gdGhlIHRhcmdldCBvYmplY3RCb3VuZGluZ0Jv
eC4KICAgICBBZmZpbmVUcmFuc2Zvcm0gbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKQEAgLTEw
NSw3ICsxMDQsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudElu
dG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQwogICAgICAgICBGbG9hdFJlY3Qg
b2JqZWN0Qm91bmRpbmdCb3ggPSBvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAgICAg
IG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94Lngo
KSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1h
dGlvbi5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91
bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0o
bWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuY29u
Y2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogICAgIC8vIERyYXcg
dGhlIGNvbnRlbnQgaW50byB0aGUgSW1hZ2VCdWZmZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXgg
N2JiNmVmNmFjYjEwNGIxOTFlYzZhOWViNWFjNGI1MWMxMzRlMzI0OS4uZDE3ZjI2NmM4YTkyYWI4
ZTg0Y2UzNzQ3NmMwNWYyY2VhMWI0NTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMjQwLDE2
ICsyNDAsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXQKICAgICBpZiAoIVNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihhYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQo
KTsKLSAgICBBU1NFUlQodGlsZUltYWdlQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiB0
aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAKICAgICAvLyBUaGUgaW1h
Z2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRlcmVkIHNpemUsIHNvIHRoZSBjb250
ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVsYXRpb24pLgotICAgIHRpbGVJbWFn
ZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy53
aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKKyAgICB0aWxlSW1hZ2VDb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy53aWR0aCgpIC8gdGls
ZUJvdW5kYXJpZXMud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkgLyB0aWxlQm91bmRhcmll
cy5oZWlnaHQoKSkpOwogCiAgICAgLy8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMu
CiAgICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQotICAgICAgICB0aWxl
SW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsKKyAgICAgICAgdGls
ZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsKIAogICAgIEFmZmlu
ZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgaWYgKGF0dHJpYnV0ZXMucGF0
dGVybkNvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RC
T1VORElOR0JPWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZjMTJlMWM4NzE2NDJkMzE5MjE1MzRiMTc5YjhjM2Yw
OTU3YTFlOGUuLjk2NmI2M2YzNDFlYjU4Y2E1ZDM5NjFkOTVjYmFiMjEyZjhmYjYwYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMjUxLDEzICsyNTEsMTIgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEEKICAgICBp
ZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHcmFwaGljc0NvbnRleHQq
IGltYWdlQ29udGV4dCA9IGltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4
dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgp
OwogCi0gICAgaW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNsYW1wZWRTaXplLndpZHRoKCkpIC8gcGFpbnRSZWN0LndpZHRoKCksCisgICAgaW1hZ2VDb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oY2xhbXBlZFNpemUud2lkdGgo
KSkgLyBwYWludFJlY3Qud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oY2xhbXBlZFNpemUuaGVpZ2h0KCkpIC8gcGFpbnRSZWN0Lmhl
aWdodCgpKSk7Ci0gICAgaW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC54KCksIC1w
YWludFJlY3QueSgpKTsKLSAgICBpbWFnZUNvbnRleHQtPmNvbmNhdENUTShhYnNvbHV0ZVRyYW5z
Zm9ybSk7CisgICAgaW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtcGFpbnRSZWN0LngoKSwgLXBhaW50
UmVjdC55KCkpOworICAgIGltYWdlQ29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0p
OwogCiAgICAgaW1hZ2VCdWZmZXIgPSBXVEY6Om1vdmUoaW1hZ2UpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtMjc2LDExICsyNzUsMTAgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlckZvclBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVQKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGlt
YWdlQ29udGV4dCA9IGltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgpOwog
CiAgICAgLy8gQ29tcGVuc2F0ZSByb3VuZGluZyBlZmZlY3RzLCBhcyB0aGUgYWJzb2x1dGUgdGFy
Z2V0IHJlY3QgaXMgdXNpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbmQgdGhlIGltYWdlIGJ1
ZmZlciBzaXplIGlzIGludGVnZXIuCi0gICAgaW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUo
dW5jbGFtcGVkSW1hZ2VTaXplLndpZHRoKCkgLyBhYnNvbHV0ZVRhcmdldFJlY3Qud2lkdGgoKSwg
dW5jbGFtcGVkSW1hZ2VTaXplLmhlaWdodCgpIC8gYWJzb2x1dGVUYXJnZXRSZWN0LmhlaWdodCgp
KSk7CisgICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRJbWFnZVNpemUu
d2lkdGgoKSAvIGFic29sdXRlVGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNsYW1wZWRJbWFnZVNpemUu
aGVpZ2h0KCkgLyBhYnNvbHV0ZVRhcmdldFJlY3QuaGVpZ2h0KCkpKTsKIAogICAgIGltYWdlQnVm
ZmVyID0gV1RGOjptb3ZlKGltYWdlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4OSw5ICsyODcs
OCBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVy
bihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVAogdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpy
ZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIFJlbmRlckVsZW1l
bnQmIGl0ZW0sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3VidHJlZUNvbnRlbnRUcmFuc2Zvcm1h
dGlvbikKIHsKICAgICBBU1NFUlQoaW1hZ2UpOwotICAgIEFTU0VSVChpbWFnZS0+Y29udGV4dCgp
KTsKIAotICAgIFBhaW50SW5mbyBpbmZvKGltYWdlLT5jb250ZXh0KCksIExheW91dFJlY3Q6Omlu
ZmluaXRlUmVjdCgpLCBQYWludFBoYXNlRm9yZWdyb3VuZCwgUGFpbnRCZWhhdmlvck5vcm1hbCk7
CisgICAgUGFpbnRJbmZvIGluZm8oJmltYWdlLT5jb250ZXh0KCksIExheW91dFJlY3Q6OmluZmlu
aXRlUmVjdCgpLCBQYWludFBoYXNlRm9yZWdyb3VuZCwgUGFpbnRCZWhhdmlvck5vcm1hbCk7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0mIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IGN1cnJlbnRDb250
ZW50VHJhbnNmb3JtYXRpb24oKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gc2F2ZWRDb250ZW50VHJh
bnNmb3JtYXRpb24gPSBjb250ZW50VHJhbnNmb3JtYXRpb247CkBAIC0zNjAsMTAgKzM1NywxMCBA
QCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5k
IHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewog
ICAgICAgICBpZiAoKGltYWdlQnVmZmVyID0gbV9wYWludEluZm8tPmNvbnRleHQtPmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIHRydWUp
KSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZmZXJlZFJlbmRlcmluZ0NvbnRl
eHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICAgICAgYnVmZmVyZWRSZW5kZXJp
bmdDb250ZXh0LT50cmFuc2xhdGUoLWJvdW5kaW5nQm94LngoKSwgLWJvdW5kaW5nQm94LnkoKSk7
CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0Nv
bnRleHQudHJhbnNsYXRlKC1ib3VuZGluZ0JveC54KCksIC1ib3VuZGluZ0JveC55KCkpOwogICAg
ICAgICAgICAgUGFpbnRJbmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWludEluZm8pOwotICAgICAgICAg
ICAgYnVmZmVyZWRJbmZvLmNvbnRleHQgPSBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7CisgICAg
ICAgICAgICBidWZmZXJlZEluZm8uY29udGV4dCA9ICZidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7
CiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKm1fcmVuZGVyZXIpLnBhaW50
Rm9yZWdyb3VuZChidWZmZXJlZEluZm8pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4
IDhjYWZlNGI3OWRmYjdlZDE1NzkyOTdiMDgwZTVlMWQ3MTY4Y2Q4OTYuLmQzMWJhMGEwNDQ4MjE5
ODgwNmVlYTMwNTFhZjhhZDhlYjY1OGQxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlmICghYnVmZmVyKSAvLyBm
YWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBkcmF3KGJ1
ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgZHJhdygmYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhCdWcg
MTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAgIHJl
dHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKQEAgLTE5OCwxMCArMTk4LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRT
aXplCiAgICAgRmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7
CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1h
Z2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVk
SW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Y29udGV4dCwgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1h
Z2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsICpjb250ZXh0LCB0
cnVlKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAg
ICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNv
bnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFs
KTsKKyAgICBkcmF3Rm9yQ29udGFpbmVyKCZidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6
ZSwgem9vbSwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgIGlm
IChjb250ZXh0LT5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRU
b0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCA5MTY3ZGUxNDZjNjcxNGU3MjM1ZGYzMjE3NmM1
NzcwZjFlZmI4NTFiLi42ZjMzYmM4ZWViMDlkMjQzZWU4YjNjYmQ2NGNiNDkwNzY3MWNmNDI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKIAogICAgIGlmIChyZW5kZXJlcikgewogICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGFic29sdXRlVHJhbnNmb3JtID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKTsKLSAg
ICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3Jt
KTsKKyAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5jb25jYXRDVE0oYWJzb2x1dGVUcmFu
c2Zvcm0pOwogCiAgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHROb2RlID0gZG93bmNhc3Q8U1ZH
RWxlbWVudD4ocmVuZGVyZXItPmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChjb250ZXh0Tm9kZS0+
aGFzUmVsYXRpdmVMZW5ndGhzKCkpIHsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEZFSW1hZ2U6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSByZWZlcmVu
Y2luZyBhbiBlbGVtZW50IHdpdGggcGVyY2VudGFnZSB1bml0cywgZWcuIDxyZWN0IHdpdGg9IjMw
JSI+IHRob3NlIHZhbHVlcyB3ZXJlIHJlc29sdmVkIGFnYWluc3QgdGhlIHZpZXdwb3J0LgogICAg
ICAgICAgICAgLy8gQnVpbGQgdXAgYSB0cmFuc2Zvcm1hdGlvbiB0aGF0IG1hcHMgZnJvbSB0aGUg
dmlld3BvcnQgc3BhY2UgdG8gdGhlIGZpbHRlciBwcmltaXRpdmUgc3VicmVnaW9uLgogICAgICAg
ICAgICAgaWYgKGxlbmd0aENvbnRleHQuZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKSkK
LSAgICAgICAgICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5jb25jYXRDVE0obWFrZU1h
cEJldHdlZW5SZWN0cyhGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWV3cG9ydFNpemUpLCBkZXN0
UmVjdCkpOworICAgICAgICAgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuY29uY2F0Q1RN
KG1ha2VNYXBCZXR3ZWVuUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXpl
KSwgZGVzdFJlY3QpKTsKICAgICAgICAgfQogCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjb250
ZW50VHJhbnNmb3JtYXRpb247CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRy
YXdJbWFnZShtX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3Jj
UmVjdCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGQw
OGIxNzFiNjgzYTQ3YjcyMzU2NTVhZGQ1Y2JiMDA5NTUzM2U3MDMuLjAwNTVjZjIxYzc5MWE1NTY2
ZTk0YmFiMTA3ZDk5NjM2MDFhOTA1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC00NjQsOCArNDY0
LDggQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1
cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50
QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNl
dFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwogCi0gICAgYnVmZmVy
LT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtdG9GbG9hdFNpemUocmVjdC5sb2NhdGlvbigpKSk7Ci0g
ICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgpLCByb3VuZGVkSW50
UmVjdChyZWN0KSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10b0Zsb2F0U2l6
ZShyZWN0LmxvY2F0aW9uKCkpKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHMoJmJ1ZmZl
ci0+Y29udGV4dCgpLCByb3VuZGVkSW50UmVjdChyZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPmZy
YW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CiAgICAgZnJhbWVW
aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwo=
</data>
<flag name="review"
          id="271810"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>